Ejemplo n.º 1
0
        private void OnEnable()
        {
            folder = target as HierarchyFolder;
            if (folder == null)
            {
                return;
            }

            folder.transform.hideFlags = HideFlags.NotEditable | HideFlags.HideInInspector;
            folder.hideFlags           = HideFlags.None;
        }
        private void UpdateHierarchy()
        {
            Scene[]         scenes = Engine.scenes;
            List <TreeNode> nodes  = new List <TreeNode>();

            for (int i = 0; i < scenes.Length; i++)
            {
                if (scenes[i] == null)
                {
                    continue;
                }

                List <TreeNode> sceneObjects = new List <TreeNode>();

                //Folders
                for (int e = 0; e < scenes[i].hierarchy.folders.Count; e++)
                {
                    HierarchyFolder f             = scenes[i].hierarchy.folders[e];
                    List <TreeNode> folderContent = new List <TreeNode>();

                    foreach (HierarchyItem item in f.content)
                    {
                        EngineObject obj = Engine.scenes[i].objects[item.engineId];

                        if (obj != null && obj.parent == -1)
                        {
                            List <TreeNode> children = new List <TreeNode>();

                            if (obj.child != -1)
                            {
                                EngineObject childEO = Engine.scenes[i].objects[obj.child];

                                TreeNode child = new TreeNode(childEO.Variable())
                                {
                                    Tag = i + "/" + obj.child
                                };

                                if (childEO.type == EngineObjectType.Sprite)
                                {
                                    child.ImageIndex = 3;
                                }
                                if (childEO.type == EngineObjectType.Script)
                                {
                                    child.ImageIndex = 6;
                                }

                                child.SelectedImageIndex = child.ImageIndex;
                                children.Add(child);
                            }

                            TreeNode eo = new TreeNode(obj.Variable(), children.ToArray())
                            {
                                Tag = i + "/" + item.engineId
                            };

                            if (obj.type == EngineObjectType.GameObject)
                            {
                                eo.ImageIndex = 2;
                            }
                            if (obj.type == EngineObjectType.Sprite)
                            {
                                eo.ImageIndex = 3;
                            }
                            if (obj.type == EngineObjectType.BoxCollider)
                            {
                                eo.ImageIndex = 4;
                            }
                            if (obj.type == EngineObjectType.Emitter)
                            {
                                eo.ImageIndex = 5;
                            }
                            if (obj.type == EngineObjectType.Script)
                            {
                                eo.ImageIndex = 6;
                            }
                            if (obj.type == EngineObjectType.Tilemap)
                            {
                                eo.ImageIndex = 7;
                            }
                            if (obj.type == EngineObjectType.Sound)
                            {
                                eo.ImageIndex = 9;
                            }

                            eo.SelectedImageIndex = eo.ImageIndex;
                            folderContent.Add(eo);
                        }
                    }

                    TreeNode ftn = new TreeNode(f.name, folderContent.ToArray())
                    {
                        ImageIndex = 1
                    };

                    ftn.SelectedImageIndex = ftn.ImageIndex;
                    sceneObjects.Add(ftn);
                }

                //Objects
                foreach (HierarchyItem item in scenes[i].hierarchy.items)
                {
                    EngineObject obj = Engine.scenes[i].objects[item.engineId];

                    if (obj != null && obj.parent == -1)
                    {
                        List <TreeNode> children = new List <TreeNode>();

                        if (obj.child != -1)
                        {
                            EngineObject childEO = Engine.scenes[i].objects[obj.child];

                            TreeNode child = new TreeNode(childEO.Variable())
                            {
                                Tag = i + "/" + obj.child
                            };

                            if (childEO.type == EngineObjectType.Sprite)
                            {
                                child.ImageIndex = 3;
                            }
                            if (childEO.type == EngineObjectType.Script)
                            {
                                child.ImageIndex = 6;
                            }

                            child.SelectedImageIndex = child.ImageIndex;
                            children.Add(child);
                        }

                        TreeNode eo = new TreeNode(obj.Variable(), children.ToArray())
                        {
                            Tag = i + "/" + item.engineId
                        };

                        if (obj.type == EngineObjectType.GameObject)
                        {
                            eo.ImageIndex = 2;
                        }
                        if (obj.type == EngineObjectType.Sprite)
                        {
                            eo.ImageIndex = 3;
                        }
                        if (obj.type == EngineObjectType.BoxCollider)
                        {
                            eo.ImageIndex = 4;
                        }
                        if (obj.type == EngineObjectType.Emitter)
                        {
                            eo.ImageIndex = 5;
                        }
                        if (obj.type == EngineObjectType.Script)
                        {
                            eo.ImageIndex = 6;
                        }
                        if (obj.type == EngineObjectType.Tilemap)
                        {
                            eo.ImageIndex = 7;
                        }
                        if (obj.type == EngineObjectType.Sound)
                        {
                            eo.ImageIndex = 9;
                        }

                        eo.SelectedImageIndex = eo.ImageIndex;
                        sceneObjects.Add(eo);
                    }
                }

                TreeNode node = new TreeNode(scenes[i].Variable(), sceneObjects.ToArray());

                node.ImageIndex         = 8;
                node.SelectedImageIndex = node.ImageIndex;

                nodes.Add(node);
            }

            hierarchy.Nodes.AddRange(nodes.ToArray());
        }