Render.ru

Как удалить из сцены все Dummy

Castello

Активный участник
Рейтинг
5
#1
Пробовал таким образом:

Код:
	for obj in objects where classOf obj == Dummy do
	(
		delete obj
	)
удаляются одиночный дамми, а также дамми которые находятся ввеху по иеархии, т.е. если к дамми присоеденены другие дамми, то они не удаляются.

Приходится повторять операцию, и рабочий скрипт выглядит так:

Код:
for i = 1 to 10 do
(
	for obj in objects where classOf obj == Dummy do
	(
		delete obj
	)
)
помогите написать грамотный код
 

1acc

Ведущий Анимационных конкурсов
Рейтинг
16
#4
Я могу объяснить. objects это не массив, а коллекция, которая обновляется сама собой. При стирании в цикле объектов коллекция самообновляется при каждом удалении, и никто не гарантирует, какой объект там на каком месте после обновления окажется, поэтому объекты запросто могут быть пропущены. Аналогично, если и из массива пытаться удалить объекты по порядку "for i=1 to arr.count do ..." - будет похожая ерунда. Поэтому, если требуется удалять по порядку, то из массивов элементы удалять нужно обратным циклом "for i=arr.count to 1 by -1 do ...". В вышеприведенном рабочем примере используется in, поэтому все работает.
Ну, а вообще удалять даммики лучше так: delete (for obj in helpers where classOf obj == Dummy collect obj)
 
Сверху