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); }