Example #1
0
        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();
        }
Example #2
0
        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();
        }