Hier die funktion um alle glscene objekte aufzulisten dannnach noch die liste abarbeiten und die objekte freigeben, am besten mit findchild und einer abfrage auf <>nil.
Delphi-Quellcode:
type
TElement = class(TObject)
Node : TTreeNode;
Obj : TGLBaseSceneObject;
constructor create(Node : TTreeNode; Obj : TGLBaseSceneObject);
end;
constructor TElement.create(Node : TTreeNode; Obj : TGLBaseSceneObject);
begin
self.Node := Node;
self.Obj := Obj;
end;
function scenetolist: tstringlist;
var i : Integer;
List : TObjectList;
element : TElement;
buffer : TTreeNode;
begin
result:=tstringlist.Create;
List := TObjectList.Create;
if root.Count > 0 then
begin
for i := 0 to root.Count - 1 do
begin
List.Add(TElement.Create(nil, root.Children[i]));
end;
end;
while List.Count > 0 do
begin
element := TElement(List.Extract(List.First));
result.Add(element.Obj.Name);
if element.Obj.Count > 0 then
begin
for i := 0 to element.Obj.Count - 1 do
begin
List.Add(TElement.Create(nil, element.Obj.Children[i]));
end;
end;
element.Free;
end;
end;