xfreeEntity
Всем привет. возникла следующая проблема
cube = xCreateCube() xPositionEntity cube,-5,0,0 xFreeEntity cube xPositionEntity cube,-10,0,0 a# = xEntityX(cube) этот код не выдает ошибку и a получает координату -10 в итоге. более того, если удаленный объект подвергается каким-то модификациям, информация обновляется.. как будто он просто стал невидимым. обнуление Cubу после xfreeentity тоже не дает нужного результата. объекты, обращающиеся к cube переходят к любому другому объекту и начинают брать информацию с него это становится проблемой, когда этот entity передался какому-то объекту аргументом и уловки вроде "if entity=0" или "if xentityClass<>"Null"" не помогают. объект переходит к любому другому объекту на свой выбор. помогите пожалуйста |
Ответ: xfreeEntity
Цитата:
Цитата:
|
Ответ: xfreeEntity
проблема то как раз в том, чтобы сообщить функции, что объект удален. на стандартном блитце хватало (if entity>0 then (делаем что-то) )
|
Ответ: xfreeEntity
то что ты делаешь - называется UB. вешать на авторов мультимедийного движка те проверки, которые ты сам должен делать в клиентском коде - это неправильно и дерзко.
Код:
cube = xCreateCube() если я правильно понимаю то все handle для хорса ето 32 битный инт. такчто должно работать. |
Ответ: xfreeEntity
у меня и в мыслях не было :) просто надеюсь, что вы мне поможете. вот накатал пример:
мне надо сделать так, чтобы красный объект оставался на месте после уничтожения target. не удалялся, а именно не двигался больше. надеюсь, пример понятный. просто на обычном блитце это работало.. Код:
;============================== |
Ответ: xfreeEntity
Ну у меня красный большой куб останавливается после того, как маленький исчезает. Что не так?
|
Ответ: xfreeEntity
через пару сек он снова начинает движение "верхом" уже на другом маленьком
|
Ответ: xfreeEntity
r\target тоже нужно в ноль сбрасывать.
ЗЫ. Вообще занятная тема. Возможно стоит перевести все это дело на некие идентификаторы, а не явные указатели на объекты. Муторно, конечно, и наивная реализация будет медленной, но, возможно, стоит поковыряться. |
Ответ: xfreeEntity
2.Squid: ты имеешь ввиду обнулить его в функции target_update(), когда ентити удаляется? При этом экземпляр должен не только знать, что на нём "сидит" Reader, но и иметь ссылку на этот объект (конечно я могу и ошибаться). а суть в том, чтобы Reader мог снимать координаты с любого entity(yt подготовленного для работы с Reader), к которому его применят, до того момента, пока этот объект существует
|
Ответ: xfreeEntity
Включи лог и посмотри на хендлы кубов. Они повторяются - новый куб может быть создан на месте старого, т.к. размеры объектов одинаковые и аллокатору удобно засунуть новый объект на место старого.
При этом в r\target все еще хранится указатель на объект, который может быть уже не тем первоначальным объектом. |
Ответ: xfreeEntity
Цитата:
|
Ответ: xfreeEntity
т.е. с "не подготовленными" для работы с reader'om объектами этого сделать не получится?
спасибо |
Ответ: xfreeEntity
Ну вообще в нормальных проектах, сам entity, это лишь мелкая визуальная составляющая, и логика крутится относительно самих данных объекта, где entity лишь визуальное отображение их.
|
Ответ: xfreeEntity
ну да, так оно и есть
|
Часовой пояс GMT +4, время: 05:21. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot