forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   CountChildren - ТРАБЛА! (http://forum.boolean.name/showthread.php?t=2744)

JVSh 18.02.2007 17:31

CountChildren - ТРАБЛА!
 
Кто знает, в чём может быть косяк?

В максе даю имена всем отдельным частям, всего их - 12, экспортирую в b3d,
Гружу в Blitz как LoadAnimMesh, делаю CountChildren и получаю число 4!

Причём, если просто обращаюсь по именам чилдов - всё нормально, отзываются все...

Но мне нужно их запихать в массив, чтоб не перебирать потом отдельно.

:''((

И вдогонку вопрос: а можно ли изменять свойства объекта загруженного как AnimMesh, не обращаясь к каждому из чилдов? (и как , если это возможно.)

И ещё один вопрос: как мне объявить массив внутри типа? И как с ним потом работать?

SBJoker 18.02.2007 18:55

Re: CountChildren - ТРАБЛА!
 
ну так у чилдов есть иерархия же...если ты в максе припарентил (link) один объект к другому то он стал чилдом того объекта а не сцены как до этого..

Так то...

Platon 18.02.2007 19:42

Re: CountChildren - ТРАБЛА!
 
Поэтому определять чайлды удобно рекурсией - находишь чайлд, после чего проверяешь если ли у этого чайлда свой чайлд и т.д.

Массив в типе определяется так
Код:

Type ИмяТипа
  Field ИмяМассива[Размер]
End Type

Такой массив может быть только одномерным и с квадратными скобками.
Обращение к нему - как к обычному полю, но по индексу соотвественно.
Код:

Указатель\ИмяМассива[индекс]

tormoz 18.02.2007 19:44

Re: CountChildren - ТРАБЛА!
 
Используй рекурсию для добавления в массив

правка: Платон уже опередил :)
тогда код:
Цитата:

Dim mass(1000)
Global x_mass
Function AddChid(ent)
For i=1 to CountChildren(ent)
child=GetCild(ent,i)
If child<>0
mass(x_mass)=child
x_mass=x_mass+1
If CountChildren(child)
AddChid(child)
EndIf
EndIf
Next
End Function

JVSh 18.02.2007 22:32

Re: CountChildren - ТРАБЛА!
 
Всем большое спасибо!:@

Пока ждал ответа, просмотрел кучу исходников, нашёл там поля с одномерными массивами.
И в максе каким-то чудом прилинковал объекты (наверно горячие клавиши зацепил :-) )

Жаль, что нельзя менять свойства анимированному мешу. Ведь перебор чайлдов всётаки занимаетпамять? :-)

tormoz 19.02.2007 06:14

Re: CountChildren - ТРАБЛА!
 
Память занимает подгруженные объекты.
А выполнение кода занимает время.
ты производишь перебор один раз при загрузке - почему это тебя волнует ? хоть сто тысяч их перебирай - будет загружаться на несколько сек дольше и все

JVSh 19.02.2007 13:31

Re: CountChildren - ТРАБЛА!
 
Я время и имел ввиду...

Когда приходится менять свойства (цвет, прозрачность) АнимМешу с большим количеством чайлдов, и в сцене не один АнимМеш, а куча...(юниты всякие)...

Ну да ладно... Попробовал на двух мешах (а мене больше и не надо), вроде ФПС не падает...


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

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