private List <TriggerEditorNode> GetChildrenNodes(GameObject root) { // Root is assumed to contain a Trigger component and maybe an EventSender or Function component. List <TriggerEditorNode> nodes = new List <TriggerEditorNode>(); foreach (Transform child in root.transform) { EventFilter filter = child.GetComponent <EventFilter>(); EventResponder responder = child.GetComponent <EventResponder>(); TriggerActionGroup actionGroup = child.GetComponent <TriggerActionGroup>(); if (filter) { FilterEditorNode filterNode = new FilterEditorNode(filter, _context); nodes.Add(filterNode); BuildTreeRec(filterNode); } else if (responder) { ActionEditorNode actionNode = new ActionEditorNode(responder, _context); nodes.Add(actionNode); BuildTreeRec(actionNode); } else if (actionGroup) { ActionGroupEditorNode groupNode = new ActionGroupEditorNode(actionGroup, _context); nodes.Add(groupNode); BuildTreeRec(groupNode); } } return(nodes); }
private void BuildTreeRec(TriggerEditorNode node) { foreach (Transform child in node.TriggerComponent.transform) { EventFilter filter = child.GetComponent <EventFilter>(); EventResponder responder = child.GetComponent <EventResponder>(); TriggerActionGroup actionGroup = child.GetComponent <TriggerActionGroup>(); if (filter) { FilterEditorNode filterNode = new FilterEditorNode(filter, _context); node.Add(filterNode); BuildTreeRec(filterNode); } else if (responder) { ActionEditorNode actionNode = new ActionEditorNode(responder, _context); node.Add(actionNode); BuildTreeRec(actionNode); } else if (actionGroup) { ActionGroupEditorNode groupNode = new ActionGroupEditorNode(actionGroup, _context); node.Add(groupNode); BuildTreeRec(groupNode); } } }
public static void DrawAddActionSelector(GameObject parent, Action addedActionCallback) { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Add Action:", GUILayout.ExpandWidth(false)); Type selectedActionType = null; selectedActionType = TriggerGUILayout.DrawActionSelector(selectedActionType); if (selectedActionType != null) { int ordinal = GetLastExecutionTime(parent) + 1; GameObject actionGameObject = new GameObject(selectedActionType.Name); actionGameObject.transform.parent = parent.gameObject.transform; EventResponder responder = (EventResponder)actionGameObject.AddComponent(selectedActionType); responder.Ordinal = ordinal; List <TriggerActionGroupDescriptor> actionGroupDescriptors = responder.GetTriggerActionGroups(); foreach (TriggerActionGroupDescriptor descriptor in actionGroupDescriptors) { TriggerActionGroup.CreateActionGroup(descriptor).transform.parent = responder.gameObject.transform; } addedActionCallback(); } GUILayout.EndHorizontal(); }
protected override void Awake() { base.Awake(); foreach (Transform child in transform) { TriggerActionGroup actionGroup = child.GetComponent <TriggerActionGroup>(); if (actionGroup) { // TODO make sure they all exist. _triggerActionGroups.Add(actionGroup.Descriptor.ActionGroupName, actionGroup); } } }
public ActionGroupEditorNode(TriggerActionGroup triggerActionGroup, EventEditorContext context) : base(context) { _actionGroup = triggerActionGroup; }