Child in einer Hierachie finden
Übersicht

![]() |
MoepBetreff: Child in einer Hierachie finden |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich brauche eine Funktion,die alle entitys eines animmeshs durchgeht und nach einem child sucht.Die funktion soll soll den ersten treffer zurückgeben. Ich hab schon was angefangen aber das bringts nicht so wirklich , weil die funktion nur die ersten paar unterobjekte durchgeht. Code: [AUSKLAPPEN] Function SeekChild(entity,name$)
For i = 1 To CountChildren(entity) child=GetChild(entity,i) If EntityName(child)=name Return child Else For i2 = 1 To CountChildren(child) child2=GetChild(child,i2) If EntityName(child2)=name Return child2 Else For i3 = 1 To CountChildren(child2) child3=GetChild(child2,i3) If EntityName(child3)=name Return child3 EndIf Next EndIf Next EndIf Next End Function Naja bsl rumprobiert und es geht anscheinend ![]() Code: [AUSKLAPPEN] Function SeekChild(entity,name$)
For i = 1 To CountChildren(entity) child=GetChild(entity,i) If EntityName(child)=name Return child Else For i2 = 1 To CountChildren(child) child2=GetChild(child,i2) If EntityName(child2)=name Return child2 Else For i3= 1 To CountChildren(child2) child3=GetChild(child2,i3) If EntityName(child3)=name Or SeekChild(child3,name) Return child3 EndIf Next EndIf Next EndIf Next End Function mfg Moep |
||
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst deine Funktion Rekursiv machen, also immer, wenn ein Child mehrere Childs hat die Funktion aufrufen. | ||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist ql:findchild denn nicht rekursiv? | ||
MrKeks.net |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit obiger Implementation net, nein. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jo, FindChild macht auch rekursive Sucharbeit für dich, hier brauchst Du keine eigene Funktion(solange es Dir nur um das erste Auftreten geht)
Ansonsten hier wie Du es selbst mit Rekursion(Selbstaufruf einer Funktion) lösen könntest(ungetestet): Code: [AUSKLAPPEN] Function SeekChild(entity,name$) For i = 1 To CountChildren(entity) child=GetChild(entity,i) If EntityName(child)=name Return child Else SeekChild(child, name$) endif next end function |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
return seekChild(...) meinte er natürlich ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function EntityFindByName(e,Name$) Local ex=0 If e=0 Then Return 0 If EntityName(e)=Name$ Then Return e Local c,i For i=1 To CountChildren(e) c=GetChild(e,i) ex=EntityFindByName(c,Name$) If ex Then Exit Next Return ex End Function Anderes Beispiel wo man die Farbe setzt Code: [AUSKLAPPEN] Function EntityColorRec(e,r,g,b) If e=0 Then Return If EntityClass(e)="Mesh" Then EntityColor e,r,g,b Local c,i For i=1 To CountChildren(e) c=GetChild(e,i) EntityColorRec c,r,g,b Next End Function |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke fuer die viele hilfe ![]() Jetzt weiß ich auch endlich was man mit sonen Rekursiven Funktionen machen kann ^^ mfg Moep |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group