protected override void Construct() { name = "Start Node"; position = new Rect(CanvasGUI.CanvasToScreenPosition(CanvasGUI.CanvasRect.center), ResourceManager.START_NODE_SIZE); nodules = NoduleDatabase.CreateNew(this); nodules.Add(BaseNodule.Create <OutputNodule> (this)); DialogueEditorGUI.Cache.SaveNewObject(this, false); }
public override void Init() { base.Init(); if (nodules.Count == 0) { nodules.Add(BaseNodule.Create <OutputNodule> (nodules.NextItemName("OutputNodule"), this)); } else { OutputNodule output = nodules.First(i => i is OutputNodule) as OutputNodule; if (!output) { nodules.Insert(0, BaseNodule.Create <OutputNodule> (nodules.NextItemName("OutputNodule"), this)); } } }
public static void OnMakingConnection(EditorStates states) { EditorState state = states.curState; if (state.makeConnection) { switch (states.curSpace) { case EventSpace.Node: BaseNode node = state.selectedObject as BaseNode; state.endNodule = node.Nodules.Find(i => i.GetType() == (state.startNodule is OutputNodule ? typeof(InputNodule) : typeof(OutputNodule))) ?? BaseNodule.Create(state.startNodule is OutputNodule ? "InputNodule" : "OutputNodule", node); if (!state.endNodule.MainNode) { goto default; } if (state.startNodule && state.endNodule) { node.Nodules.Add(state.endNodule); state.startNodule.Nodules.Add(state.endNodule); } goto default; case EventSpace.Nodule: state.endNodule = state.selectedObject as BaseNodule; if (state.startNodule && state.endNodule) { state.startNodule.Nodules.Add(state.endNodule); } goto default; default: state.startNodule = null; state.endNodule = null; state.makeConnection = false; break; } } }
public static void ConnectionCallBack(object callBackObj) { EditorStates states = callBackObj as EditorStates; if (states == null) { throw new UnityException(); } EditorState state = states.curState; switch (states.curSpace) { case EventSpace.Nodule: if (!state.makeConnection) { state.startNodule = state.selectedObject as BaseNodule; state.makeConnection = true; } else { goto default; } break; case EventSpace.Node: if (!state.makeConnection) { BaseNode node = (state.selectedObject as BaseNode); state.startNodule = node.Nodules.Find(i => i.GetType().ToString().Contains(states.info)) ?? BaseNodule.Create(states.info, node.Nodules.NextItemName(states.info), node); if (state.startNodule.MainNode) { node.Nodules.Add(state.startNodule); } else { state.startNodule.Delete(); } if (state.startNodule) { state.makeConnection = true; } else { goto default; } } else { goto default; } break; default: state.startNodule = null; state.endNodule = null; state.makeConnection = false; break; } }
static void AddCallBack(object callBackObj) { EditorStates states = callBackObj as EditorStates; if (states == null) { throw new UnityException(); } EditorState state = states.curState; if (states.info.Contains("Node")) { switch (states.curSpace) { case EventSpace.Node: if (states.info == "OptionNode") { if (state.selectedObject is MainNode) { MainNode main = state.selectedObject as MainNode; main.Options.Add(OptionNode.Create(main.Options.NextItemName("Option"), main)); } else { goto default; } } else if (states.info == "MainNode") { goto default; } else { Debug.LogError("Cannot recognise name of 'Node'. Add More Error here"); return; } break; default: EditorCache cache = DialogueEditorGUI.Cache; cache.Nodes.Add(DialogueNode.Create(states.info, cache.Nodes.NextItemName(states.info), CanvasGUI.CanvasToScreenPosition(state, states.mousePos), cache.Actors.DefaultActor)); break; } } else if (states.info.Contains("Nodule")) { BaseNode node = (states.curSpace == EventSpace.Node) ? state.selectedObject as BaseNode : (states.curSpace == EventSpace.Nodule) ? (state.selectedObject as BaseNodule).MainNode : null; if (node) { node.Nodules.Add(BaseNodule.Create(states.info, node.Nodules.NextItemName(states.info), node)); } } else { throw new UnityException(); } }