![]() |
FreeEntity
Вылетает на данной команде Exception access violation. Пробовал и со своими моделями, и с ксорсовскими энтити (xCreateCube), не помогает.
Причем меш визуально удаляется, но потом сразу ошибка выскакивает. Может я что-то неправильно делаю ? БМакс 1.42. :SOS: |
Ответ: FreeEntity
Работал с ксорсом через шарп - проблем с удалением небыло. Ошибка выскакивает на чистом проекте, типа:
Код:
Graphics3D ... |
Ответ: FreeEntity
Меш удаляется, нему идет обращение(например переместить или повернуть его), а его уже нет. Место в памяти пустое. Вот и получаешь Exception access violation
|
Ответ: FreeEntity
Нда, не спал ночь. Ошибка оказалась там где я её меньше всего ждал. Вместо KeyHit стояло KeyDown, и пытался удалять несуществующий объект. ы.
Спасибо всем. |
Ответ: FreeEntity
Как проверить - был-ли энтити удалён ?
|
Ответ: FreeEntity
Цитата:
|
Ответ: FreeEntity
А как это работает ? Он мне что до, что после удаления всё показывает "Mesh".
|
Ответ: FreeEntity
spaset proverka mesh_ptr=Null
|
Ответ: FreeEntity
вы таки предлагаете вести список удаленных ентити в движке?
|
Ответ: FreeEntity
А чо, если на производительности не скажеться. Хотя поразмыслив минут 0, пришёл к выводу, что это нафиг не надо.
|
Ответ: FreeEntity
Присоединяюсь к NitE.
Ф-ция а-ля bool xEntityExists( int handle; ) была бы очень к месту. |
Ответ: FreeEntity
Ты отсоединяешься. "Хотя поразмыслив минут 0, пришёл к выводу, что это нафиг не надо."
Потому что и правда, случаи где это может понадобиться очень легко избегаются. Лучше-б сделали нормальный вывод текста (или загрузку шрифтов, незнаю что там щяс накручено.) |
Ответ: FreeEntity
Цитата:
|
Ответ: FreeEntity
это совсем не то что предложил Найт! Он предлагал функцию, которая бы возвращала true если заданные 32 бита были когда нибудь entity, но уже нет. Ты же хочешь функцию, которая бы возвращала true если заданные 32 бита есть в сценеграфе. Это нужная и полезная функция. И реализуется в 3 строчки кода.
|
Ответ: FreeEntity
На досуге подумаю, как можно сделать удобнее.
|
Ответ: FreeEntity
Тоже борюсь с этим недостатком, и тяжело найти проблему в 2к строк..
Лог пишет Invalid entity handle 00000000 Кто-нибудь знает как можно конкретнее найти ошибку, в логе пишется что 1931 строка к примеру. Но у меня несколько инклудных файлов. Как можно выщитать? |
Ответ: FreeEntity
Определись в какой момент такая ошибка выдаётся. Посмотри что ты при этом делаешь. Посмотри какой кусок кода отвечает за логику, ведущую к ошибке. Выяви подозрительное место и выведи инфу в дебаг.
2к строк - ты только в начале пути.;) |
Ответ: FreeEntity
Да эт понятно, просто не удобно когда не знаешь строку
Цитата:
|
Ответ: FreeEntity
Рекомендую при написании чего нибудь как можно больше всего выводить в дебаг ибо перелопачивать несколько тысяч строк кода не интересно. :) И есть большой шанс сразу заметить косяк.
|
Ответ: FreeEntity
Дебаг это тоже искусство(Ингка негодует), и качество его измеряется в скорости поиска. Думаю нет разницы, 2к кода или 20к. Найти ошибку можно очень легко если правильно все организовать.
Я незнаю как там у тебя организовано все, если все чистенько и с ооп, то думаю ошибку можно найти в один миг. Если же ты чисто процедурный прогер то будет немнго трудней имхо. |
Ответ: FreeEntity
Дело опыта. Ошибка с удаленным объектом - это неряшливый кривой код.
Не нужно костыли ставить проверками, нужно код правильно писать |
Часовой пояс GMT +4, время: 12:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot