void DisplayHeader(CGME.Action action, CGME.ActionGroup parent) { EditorGUILayout.BeginHorizontal(); if (parent != null) { EditorGUILayout.LabelField(action.CGType); } else { EditorGUILayout.LabelField(action.CGType + " (root)"); } if (action is CGME.ActionGroup && GUILayout.Button("+child " + action.CGType)) { AddChild(action as CGME.ActionGroup, GetAction(action_components[index])); //(action as CGME.ActionGroup).AddAction(GetAction (secondary_options[index2])); } if (parent != null && GUILayout.Button("delete " + action.CGType)) { RemoveChild(parent, action); //parent.RemoveAction(action); } EditorGUILayout.EndHorizontal(); }
void AddChildrenToSerializedNodes(CGME.ActionGroup parent_action, SerialNode parent_node) { // Create a NODE for each ACTION CHILD and add them to the list // save the index of each CHILDREN NODE to the PARENT NODE foreach (CGME.Action child in parent_action.Children) { //parent_node.children_indexes.Add(serial_nodes.Count); AddNode(child, parent_node); } // For every child that can have children (actiongroup), // call the funcion again sending its index int i = 0; foreach (CGME.Action child in parent_action.Children) { int child_index = parent_node.children_indexes[i++]; SerialNode child_node = serial_nodes[child_index]; if (child is CGME.ActionGroup) { AddChildrenToSerializedNodes(child as CGME.ActionGroup, child_node); } else if (child is CGME.ActionIfThenElse) { //CGME.ActionIfThenElse child_ite = AddChildrenToSerializedNodes(child as CGME.ActionIfThenElse, child_node); } //ind++; } }
protected override void CleanUp() { if (CGME_action_root.Cleanup() == true) { CGME_action_root = null; Destroy(gameObject); } }
void DisplayAction(CGME.Action action, CGME.ActionGroup parent) { DisplayHeader(action, parent); if (action is CGME.ActionSelect) { DisplayBody(action as CGME.ActionSelect); } else if (action is CGME.ActionTransferObject) { DisplayBody(action as CGME.ActionTransferObject); } else if (action is CGME.ActionDestroyObject) { DisplayBody(action as CGME.ActionDestroyObject); } else if (action is CGME.ActionModifyResource) { DisplayBody(action as CGME.ActionModifyResource); } else if (action is CGME.ActionIfThenElse) { DisplayBody(action as CGME.ActionIfThenElse); } else if (action is CGME.ActionConditionIsValid) { DisplayBody(action as CGME.ActionConditionIsValid); } else if (action is CGME.ActionConditionCompareResource) { DisplayBody(action as CGME.ActionConditionCompareResource); } else if (action is CGME.ActionConditionCompareParent) { DisplayBody(action as CGME.ActionConditionCompareParent); } else if (action is CGME.ActionEvent) { DisplayBody(action as CGME.ActionEvent); // } DisplayFoot(action, parent); // STANDARD }
CGME.Action InstantiateNodes() { List <CGME.Action> actions = new List <CGME.Action>(); //INSTANTIATE int i = 0; foreach (SerialNode node in serial_nodes) { CGME.Action act = CGME.CGFactory.CreateCGInstance(node.type_string) as CGME.Action; act.Read(node.data); actions.Add(act); } foreach (SerialNode node in serial_nodes) { if (node.children_indexes.Count > 0) { //Debug.Log ("3"); if (actions[node.index] is CGME.ActionGroup) { CGME.ActionGroup actiongroup = actions[node.index] as CGME.ActionGroup; foreach (int index in node.children_indexes) { // Debug.Log ("4"); actiongroup.AddAction(actions[index]); } } else if (actions[node.index] is CGME.ActionIfThenElse) { CGME.ActionIfThenElse action_ite = actions[node.index] as CGME.ActionIfThenElse; action_ite.SetIF(actions[node.children_indexes[0]] as CGME.ActionGroup); action_ite.SetTHEN(actions[node.children_indexes[1]] as CGME.ActionGroup); action_ite.SetELSE(actions[node.children_indexes[2]] as CGME.ActionGroup); } } } if (actions.Count > 0) { return(actions[0]); } return(null); }
void DisplayFoot(CGME.Action action, CGME.ActionGroup parent) { if (action is CGME.ActionGroup) { CGME.ActionGroup group = (CGME.ActionGroup)action; EditorGUI.indentLevel++; { for (int i = 0; i < group.Actions_Size; i++) { DisplayAction(group.GetAction(i), group); } } EditorGUI.indentLevel--; } }
protected void Register(Game game) { RegisterResources(); game.CGME_Game.AddPhase(CGME_phase); manager = FindObjectOfType <GameManager>(); // for (int i = 0; i<transform.childCount; i++){ // transform.GetChild(i).SendMessage("Register", this, SendMessageOptions.DontRequireReceiver); // } foreach (int action_index in action_sequence) { CGME.ActionGroup new_action = new CGME.ActionGroup(); //if (manager.Actions[action_index].CGME_ActionRoot == null) Debug.Log ("Action null"); new_action.CopyFrom(manager.CGME_Lib.actionLibrary[action_index]); CGME_phase.AddAction(new_action); } SetListener(); }
void RemoveChild(CGME.ActionGroup parent, CGME.Action child) { parent.RemoveAction(child); Target.SetSerialize(true); }
void AddChild(CGME.ActionGroup parent, CGME.Action child) { parent.AddAction(child); Target.SetSerialize(true); }
public override void SetObject(CGME.CGObject cgobj) { CGME_action_root = (CGME.ActionGroup)cgobj; }
void ISerializationCallbackReceiver.OnAfterDeserialize() { CGME_action_root = InstantiateNodes() as CGME.ActionGroup; }
//ISerializationCallbackReceiver. public void OnAfterDeserialize() { CGME_action_root = InstantiateNodes() as CGME.ActionGroup; }