Example #1
0
        void OnGUI()
        {
            var originalColor = GUI.backgroundColor;

            graphEditor.Draw(position);

            Event e = Event.current;

            switch (e.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
                if (e.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();

                    foreach (var draggedObject in DragAndDrop.objectReferences)
                    {
                        if (draggedObject is GameObject)
                        {
                            var node = graphEditor.CreateNode <GameObjectNode>(e.mousePosition);
                            node.Template = draggedObject as GameObject;

                            var originalTransform = node.Template.transform;
                            node.offset = Matrix4x4.TRS(Vector3.zero, originalTransform.rotation, originalTransform.localScale);

                            graphEditor.SelectNode(node);
                        }
                        else if (draggedObject is Sprite)
                        {
                            var node = graphEditor.CreateNode <SpriteNode>(e.mousePosition);
                            node.sprite = draggedObject as Sprite;
                            graphEditor.SelectNode(node);
                        }
                    }
                }
                break;
            }

            GUI.backgroundColor = originalColor;
            DrawToolbar();

            HandleInput(Event.current);
        }
        void OnGUI()
        {
            var originalColor = GUI.backgroundColor;

            graphEditor.Draw(position);

            Event e = Event.current;

            switch (e.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
                if (e.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();

                    var gameObjects = new List <GameObject>();
                    var sprites     = new List <Sprite>();

                    foreach (var draggedObject in DragAndDrop.objectReferences)
                    {
                        if (draggedObject is GameObject)
                        {
                            gameObjects.Add(draggedObject as GameObject);
                        }
                        else if (draggedObject is Sprite)
                        {
                            sprites.Add(draggedObject as Sprite);
                        }
                    }

                    // Build the sprite nodes
                    foreach (var sprite in sprites)
                    {
                        var node = graphEditor.CreateNode <SpriteNode>(e.mousePosition);
                        node.sprite = sprite;
                        graphEditor.SelectNode(node);
                    }

                    // Build the game object nodes
                    if (gameObjects.Count > 0)
                    {
                        if (gameObjects.Count == 1)
                        {
                            // Build a game object node
                            var node = graphEditor.CreateNode <GameObjectNode>(e.mousePosition);
                            node.Template = gameObjects[0];

                            var originalTransform = node.Template.transform;
                            node.offset = Matrix4x4.TRS(Vector3.zero, originalTransform.rotation, originalTransform.localScale);

                            graphEditor.SelectNode(node);
                        }
                        else
                        {
                            // Build a game object array node
                            var node = graphEditor.CreateNode <GameObjectArrayNode>(e.mousePosition);
                            node.Templates = gameObjects.ToArray();
                            graphEditor.SelectNode(node);
                        }
                    }
                }
                break;
            }

            GUI.backgroundColor = originalColor;
            DrawToolbar();

            HandleInput(Event.current);
        }