public void CreateEasyAISystem() { if (SelectedObject != null) { if (!SelectedObject.GetComponent <EasyAIFSM>()) { coreSystem = SelectedObject.AddComponent <EasyAIFSM> (); coreSystem.Init(); Node node = ScriptableObject.CreateInstance <StartAINode>(); node.self = coreSystem.gameObject; node.Init(); node.rect.x = 100f; node.rect.y = 100f; coreSystem.nodes.Add(node); } else { coreSystem = SelectedObject.GetComponent <EasyAIFSM>(); } } else { // SelectedObject = new GameObject ("Easy AI Agent"); // coreSystem = SelectedObject.AddComponent<CoreSystem> (); // coreSystem.Init (); // } }
// Callback from Context Menu private void ContextCallback(object obj) { if (obj.ToString() == "Delete Node") { Node d_node = NodeAtPosition(mousePos); if (d_node != null) { Undo.RegisterCompleteObjectUndo(coreSystem, "Delete Node"); // Break opposite connections of this Nodes Connectors foreach (Connector c in d_node.connectors) { c.BreakOpposite(); } coreSystem.nodes.Remove(d_node); Undo.DestroyObjectImmediate(d_node); } } else if (obj.ToString() == "Duplicate Node") { Node dup_node = NodeAtPosition(mousePos); if (dup_node != null) { Node node = ScriptableObject.CreateInstance(dup_node.GetType().Name) as Node; node.Init(); node.rect.x = mousePos.x + 60f; node.rect.y = mousePos.y; coreSystem.nodes.Add(node); //EditorUtility.CopySerialized(dup_node, node); } } else if (obj.ToString() == "Create GameObject") { SelectedObject = new GameObject("Easy AI Agent"); coreSystem = SelectedObject.AddComponent <EasyAIFSM> (); coreSystem.Init(); Node node = ScriptableObject.CreateInstance <StartAINode>(); node.self = coreSystem.gameObject; node.Init(); node.rect.x = mousePos.x; node.rect.y = mousePos.y; coreSystem.nodes.Add(node); } else { Type typeData; if (nodes.TryGetValue(obj.ToString(), out typeData)) // Returns true. { Node node = ScriptableObject.CreateInstance(typeData.Name) as Node; node.self = coreSystem.gameObject; node.Init(); node.rect.x = mousePos.x; node.rect.y = mousePos.y; coreSystem.nodes.Add(node); } } }