Показать сообщение отдельно
Старый 04.09.2005, 22:13   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Вопрос

Допустим необходимо удалить все чайлды заданного меша. Первым в голову может прийти решение:
For i=1 To CountChildren(parent_mesh)
	FreeEntity GetChild(parent_mesh,i)
Next
Но работать корректно оно не будет.
Всё дело в том, что стек соответствия номер_чайлда-хэндл обновится сразу после первого же удаления. Таким образом, место только что удалённого ребёнка будет занято следующим, обращение в цикле же будет ко второму ( т.е. получается к 3ьему - они же все сдвинулись влево). В результате удалён первый и третий, второй - остался и так далее.
Нам достаточно всё время удалять первый чайлд:
For i=1 To CountChildren(parent_mesh)
	FreeEntity GetChild(parent_mesh,1)
Next
Блитц сам разберётся, кого и куда надо подвинуть
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием