public void UnregisterSceneTree(SceneNode node) { Queue <SceneNode> knodes = new Queue <SceneNode>(); knodes.Enqueue(node); while (knodes.Count != 0) { SceneNode head = knodes.Dequeue(); _registeredNodes.Remove(head); foreach (var child in head.Children) { knodes.Enqueue(child); } foreach (var attachable in head.Attachable) { LightAttachable lightAttachable = attachable as LightAttachable; if (lightAttachable != null) { _sceneLights.Remove(lightAttachable); } CameraAttachable cameraAttachable = attachable as CameraAttachable; if (cameraAttachable != null) { _sceneCameras.Remove(cameraAttachable); } } } SortByLayer(); }
public void RegisterSceneTree(SceneNode node) { Queue <SceneNode> knodes = new Queue <SceneNode>(); knodes.Enqueue(node); while (knodes.Count != 0) { SceneNode head = knodes.Dequeue(); /* protect against multiple register */ if (_registeredNodes.Contains(head)) { continue; } _registeredNodes.Add(head); foreach (var child in head.Children) { knodes.Enqueue(child); } foreach (var attachable in head.Attachable) { LightAttachable lightAttachable = attachable as LightAttachable; if (lightAttachable != null) { _sceneLights.Add(lightAttachable); } CameraAttachable cameraAttachable = attachable as CameraAttachable; if (cameraAttachable != null) { _sceneCameras.Add(cameraAttachable); } } } SortByLayer(); }