forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Удаление типа и ссылок на него. (http://forum.boolean.name/showthread.php?t=17713)

RBK 04.01.2013 14:23

Ответ: Удаление типа и ссылок на него.
 
Цитата:

Как только корова начинает его есть - его сразу же необходимо удалять из списка, чтоб другая корова не смогла сьесть по сути уже жующийся куст.
возможен вариант что несколько коров могут есть один и тот-же куст.

Цитата:

Мож есть какие способы понять удален ли энтитя?
Ответ на этот вопрос я тут пока не видел, потому отвечу.
Код:

;создаем обьект
cube = CreateCube()

;удаляем
FreeEntity cube
cube = 0

;проверяем существование
if cube <> 0
  ;обьект существует
end if

P.S. список можно также проверять:
Код:

Type Mytype
 Field ent
End Type

;создаем обьект
tmp.Mytype = new Mytype

;удаляем
Delete tmp

;проверяем существование
if tmp <> Null
  ;обьект существует
end if


tormoz 04.01.2013 17:27

Ответ: Удаление типа и ссылок на него.
 
Цитата:

Сообщение от Diablo1909 (Сообщение 248260)
2tormoz

Предже, чем сьесть куст - его надо еще найти... перебирать всю поляну?

Если куст находится в списке - значит он еще не сьеден. Как только корова начинает его есть - его сразу же необходимо удалять из списка, чтоб другая корова не смогла сьесть по сути уже жующийся куст. ( ну или флаг состояния менять )

2CRASHER

Правильно. Но можно и обойти это ограничение, путем сдвига координат.

не надо.
Правильно организованный код:
в апдейте травы только трава, рост и тд. Лучше по таймеру.
в апдейте коров - поиск травы, еда, удаление. Запуск функции удаления ТОЛЬКО по условию (не каждый цикл).
перебирать траву в функции удаления не обязательно, экземпляр типа находить можно обжектхендлом, а вот перебрать коров придется, но тормозов не будет - функция вызывается по событию.

CRASHER 05.01.2013 02:53

Ответ: Удаление типа и ссылок на него.
 
Народ, я решил переделать на хендлы. При попытке коровы назначить ближайщий куст "аппетитным" происходит проверка хендла на Null. Дописал еще возможность 3 коровам одновременно кушать один куст.

RBK, об этом и еж в тумане осведомлен)) А вот трабла то с ссылкой. Прированяй элемент массива из типа "корова" к типу "трава", то есть...
Тип корова
филд вкусные кусты[99]
енд тип

вкусные кусты[i]=трава\Энтити

удали трава\Энтити и проверь трава\Энтити и ссылку на него
имеем
трава\Энтити=0
кусты[i]=432579357

следственно только хендлы или через пивот, что наверно все таки сложнее чем хендл.

CRASHER 05.01.2013 02:57

Ответ: Удаление типа и ссылок на него.
 
Diablo1909, При сдвиге наверно нужно будет переназначать секторам где какая трава была. Тоесть в секторе (0,0) было 3 куста, в секторе (1,1) 2 куста. Смещаем, получается в новом (0,0) нет кустов, в (1,1) 3 куста, в (2,2) 2 куста. так?)

CRASHER 05.01.2013 03:02

Ответ: Удаление типа и ссылок на него.
 
tormoz, а что ты имеешь в виду говоря "Лучше по таймеру" ?
Я сделал на апдейт коров ограничение, если превышен лимит времени, то выполняется Exit из For и записывается последний индекс, с которого в следующем глобальном проходе продолжается цикл. Ты не это хотел сказать?

RBK 05.01.2013 03:37

Ответ: Удаление типа и ссылок на него.
 
Цитата:

Сообщение от CRASHER (Сообщение 248332)

RBK, об этом и еж в тумане осведомлен)) А вот трабла то с ссылкой. Прированяй элемент массива из типа "корова" к типу "трава", то есть...
Тип корова
филд вкусные кусты[99]
енд тип

вкусные кусты[i]=трава\Энтити

удали трава\Энтити и проверь трава\Энтити и ссылку на него
имеем
трава\Энтити=0
кусты[i]=432579357

Что-то ты не то придумал
Код:

Type grass
Field ent ;модель травы
End Type

Type cow
Field eat.grass[99]
End Type

;создаем траву
mygrass.grass=New grass

;создаем корову
my.cow=New cow

;запоминаем траву
my\eat[1]=mygrass

;удаляем траву
Delete mygrass

;здесь my\eat[1] будет равно Nul
If my\eat[1] <> Null
  ;обьект существует если не удалили
 my\eat[1]\ent  ;модель травы
End If

спрашивай если что не понятно.

tormoz 05.01.2013 04:08

Ответ: Удаление типа и ссылок на него.
 
Цитата:

Сообщение от CRASHER (Сообщение 248334)
tormoz, а что ты имеешь в виду говоря "Лучше по таймеру" ?
Я сделал на апдейт коров ограничение, если превышен лимит времени, то выполняется Exit из For и записывается последний индекс, с которого в следующем глобальном проходе продолжается цикл. Ты не это хотел сказать?

Заведи таймер и апдейть траву не каждый проход, а каждые 200-400 мс.
А сектора и прочие извраты тут не нужны- попытайся вкурить что я выше написал

CRASHER 05.01.2013 04:40

Ответ: Удаление типа и ссылок на него.
 
RBK, вопрос звучит как?) "Удаление типа и ссылки на него". В первом посте сказал что делал не через хендлы. Теперь уже переделал на хендлы, и да, проверить их на Null легко. Я думал что ссылку моно тоже как то... того... при ошибке(не выводя саму ошибку). А я элемент как у тебя my\eat[1] приравнивал к самому энтиту. Из за этого и еррор. Спасибо конечно)) За старание!)

Черный крыс 05.01.2013 04:44

Ответ: Удаление типа и ссылок на него.
 
CRASHER

Все кусты заносятся в сектора на стадии инициализации. И все смещения определяются заранее.

Цитата:

А сектора и прочие извраты тут не нужны- попытайся вкурить что я выше написал
Не спорю, в случае с Blitz3D - это будет извратом. =)

CRASHER 05.01.2013 05:11

Ответ: Удаление типа и ссылок на него.
 
Diablo1909, а ты знашыт меня на из врат толкаешь да?)

Черный крыс 05.01.2013 05:19

Ответ: Удаление типа и ссылок на него.
 
CRASHER

Я тебя толкаю бросить этот недо-язык, и пересесть хотя бы на BlitzMAX. Там такой метод не будет извратом.

CRASHER 05.01.2013 05:56

Ответ: Удаление типа и ссылок на него.
 
Diablo1909, не но ведь B3D для чего то же существует? Ведь есть же разница между ними, и что же в Бмаксе такого особенного чего нет в B3D? Хors с директом в B3D есть и вроде достатошно))

Черный крыс 05.01.2013 06:55

Ответ: Удаление типа и ссылок на него.
 
Запорожец тоже для чего то существовал... но сегодня на нем почти никто не ездит.

Все тонкости описаны здесь : http://g3d-program.narod.ru/stat/beginer_blitz.htm

CRASHER 05.01.2013 17:41

Ответ: Удаление типа и ссылок на него.
 
Diablo1909, мне кажется или на БМ мало кто сидит? Я какой пример ни качну с булки, все на B3D)))


Часовой пояс GMT +4, время: 08:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot