public AnimationTriggerNode(string triggerName, AnimationTriggerNode parent) { m_triggerName = triggerName; m_parent = parent; m_childs = new List <AnimationTriggerNode>(); m_isActived = false; }
public AnimationTriggerManager(Animator animator, string root) { m_triggers = new Dictionary <string, AnimationTriggerNode>(); m_animator = animator; m_root = new AnimationTriggerNode(root); m_triggers[root] = m_root; }
public void OnTrigger(string trigger) { if (m_root == null) { return; } if (m_triggers.ContainsKey(trigger)) { //触发器链 //不触发root节点的Trigger,触发就返回root了 AnimationTriggerNode node = m_triggers[trigger]; if (node == m_root) { m_animator.SetTrigger(node.triggerName); node.isActived = true; return; } while (node != null && node != root) { m_animator.SetTrigger(node.triggerName); node.isActived = true; node = node.Parent; } } }
public AnimationTriggerNode CreateAnimationTriggerNode(string trigger, string target, Vector2 mousePosition) { var animationTriggerNode = new AnimationTriggerNode { title = "AnimationTriggerNode", TriggerName = trigger, TargetPlayer = target, GUID = Guid.NewGuid().ToString() }; var inputPort = GeneratePort(animationTriggerNode, Direction.Input, Port.Capacity.Multi); inputPort.portName = "Input"; animationTriggerNode.inputContainer.Add(inputPort); var generatedPort = GeneratePort(animationTriggerNode, Direction.Output); generatedPort.portName = "Next"; generatedPort.name = "Next"; animationTriggerNode.outputContainer.Add(generatedPort); animationTriggerNode.styleSheets.Add(Resources.Load <StyleSheet>("FlagNode")); var textFieldTarget = new TextField { name = "Target", value = target, label = "Target\n" }; textFieldTarget.RegisterValueChangedCallback(evt => { animationTriggerNode.TargetPlayer = evt.newValue; }); animationTriggerNode.mainContainer.Add(textFieldTarget); var textField = new TextField { name = "Trigger", value = trigger, label = "Trigger\n" }; textField.RegisterValueChangedCallback(evt => { animationTriggerNode.TriggerName = evt.newValue; //dialogueNode.title = evt.newValue; }); //textField.SetValueWithoutNotify(dialogueNode.title); animationTriggerNode.mainContainer.Add(textField); animationTriggerNode.RefreshExpandedState(); animationTriggerNode.RefreshPorts(); animationTriggerNode.SetPosition(new Rect(mousePosition, defaultNodeSize)); return(animationTriggerNode); }
public bool GetTriggerState(string tname) { AnimationTriggerNode node = m_triggerMgr.GetTrigger(tname); if (node != null) { return(node.isActived); } return(false); }
public void Remove(string trigger) { if (m_triggers.ContainsKey(trigger)) { AnimationTriggerNode node = m_triggers[trigger]; if (node != null) { node.Parent.Childs.Remove(node); for (int i = 0; i < node.Childs.Count; i++) { node.Childs[i].Parent = node.Parent; } m_triggers.Remove(trigger); } } }
public void Add(string trigger, string parentTrigger) { if (m_triggers.ContainsKey(trigger)) { return; } AnimationTriggerNode node = new AnimationTriggerNode(trigger); if (m_triggers.ContainsKey(parentTrigger)) { AnimationTriggerNode parent = m_triggers[parentTrigger]; if (parent != null) { node.Parent = parent; m_triggers[trigger] = node; return; } } node.Parent = m_root; m_triggers[trigger] = node; }
public void Clear() { m_root = null; m_triggers.Clear(); }