forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   FreeEntity (http://forum.boolean.name/showthread.php?t=15034)

NitE 01.07.2011 13:55

FreeEntity
 
Вылетает на данной команде Exception access violation. Пробовал и со своими моделями, и с ксорсовскими энтити (xCreateCube), не помогает.
Причем меш визуально удаляется, но потом сразу ошибка выскакивает.

Может я что-то неправильно делаю ? БМакс 1.42.

:SOS:

Dream 01.07.2011 14:33

Ответ: FreeEntity
 
Работал с ксорсом через шарп - проблем с удалением небыло. Ошибка выскакивает на чистом проекте, типа:
Код:

Graphics3D ...
cube=xCreateCube()
xFreeEntity(cube)

?

Reks888 01.07.2011 14:34

Ответ: FreeEntity
 
Меш удаляется, нему идет обращение(например переместить или повернуть его), а его уже нет. Место в памяти пустое. Вот и получаешь Exception access violation

NitE 01.07.2011 14:52

Ответ: FreeEntity
 
Нда, не спал ночь. Ошибка оказалась там где я её меньше всего ждал. Вместо KeyHit стояло KeyDown, и пытался удалять несуществующий объект. ы.

Спасибо всем.

NitE 01.07.2011 20:12

Ответ: FreeEntity
 
Как проверить - был-ли энтити удалён ?

Nerd 01.07.2011 20:42

Ответ: FreeEntity
 
Цитата:

Сообщение от NitE (Сообщение 193891)
Как проверить - был-ли энтити удалён ?

Не быдлокодить xEntityClass.

NitE 01.07.2011 21:46

Ответ: FreeEntity
 
А как это работает ? Он мне что до, что после удаления всё показывает "Mesh".

Reks888 01.07.2011 21:54

Ответ: FreeEntity
 
spaset proverka mesh_ptr=Null

HolyDel 02.07.2011 09:34

Ответ: FreeEntity
 
вы таки предлагаете вести список удаленных ентити в движке?

NitE 02.07.2011 12:32

Ответ: FreeEntity
 
А чо, если на производительности не скажеться. Хотя поразмыслив минут 0, пришёл к выводу, что это нафиг не надо.

Randomize 02.07.2011 18:25

Ответ: FreeEntity
 
Присоединяюсь к NitE.
Ф-ция а-ля bool xEntityExists( int handle; ) была бы очень к месту.

NitE 02.07.2011 18:33

Ответ: FreeEntity
 
Ты отсоединяешься. "Хотя поразмыслив минут 0, пришёл к выводу, что это нафиг не надо."

Потому что и правда, случаи где это может понадобиться очень легко избегаются. Лучше-б сделали нормальный вывод текста (или загрузку шрифтов, незнаю что там щяс накручено.)

Randomize 02.07.2011 18:45

Ответ: FreeEntity
 
Цитата:

Сообщение от NitE (Сообщение 193991)
Ты отсоединяешься.

Обхожу вскользь. Реквест оставляю благо данная ф-ция будет крайне полезна и применений у неё много.

HolyDel 02.07.2011 20:29

Ответ: FreeEntity
 
это совсем не то что предложил Найт! Он предлагал функцию, которая бы возвращала true если заданные 32 бита были когда нибудь entity, но уже нет. Ты же хочешь функцию, которая бы возвращала true если заданные 32 бита есть в сценеграфе. Это нужная и полезная функция. И реализуется в 3 строчки кода.

.Squid 02.07.2011 22:00

Ответ: FreeEntity
 
На досуге подумаю, как можно сделать удобнее.

burovalex 22.08.2012 22:09

Ответ: FreeEntity
 
Тоже борюсь с этим недостатком, и тяжело найти проблему в 2к строк..
Лог пишет Invalid entity handle 00000000
Кто-нибудь знает как можно конкретнее найти ошибку, в логе пишется что 1931 строка к примеру. Но у меня несколько инклудных файлов. Как можно выщитать?

Жека 23.08.2012 07:06

Ответ: FreeEntity
 
Определись в какой момент такая ошибка выдаётся. Посмотри что ты при этом делаешь. Посмотри какой кусок кода отвечает за логику, ведущую к ошибке. Выяви подозрительное место и выведи инфу в дебаг.
2к строк - ты только в начале пути.;)

burovalex 23.08.2012 19:30

Ответ: FreeEntity
 
Да эт понятно, просто не удобно когда не знаешь строку
Цитата:

Сообщение от Жека (Сообщение 237004)
2к строк - ты только в начале пути.;)

Согласен.....

Nex 23.08.2012 19:40

Ответ: FreeEntity
 
Рекомендую при написании чего нибудь как можно больше всего выводить в дебаг ибо перелопачивать несколько тысяч строк кода не интересно. :) И есть большой шанс сразу заметить косяк.

Dzirt 24.08.2012 14:43

Ответ: FreeEntity
 
Дебаг это тоже искусство(Ингка негодует), и качество его измеряется в скорости поиска. Думаю нет разницы, 2к кода или 20к. Найти ошибку можно очень легко если правильно все организовать.
Я незнаю как там у тебя организовано все, если все чистенько и с ооп, то думаю ошибку можно найти в один миг. Если же ты чисто процедурный прогер то будет немнго трудней имхо.

tormoz 24.08.2012 16:36

Ответ: FreeEntity
 
Дело опыта. Ошибка с удаленным объектом - это неряшливый кривой код.
Не нужно костыли ставить проверками, нужно код правильно писать


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

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