public void OnEventDispatch(EmotionEvent e) { EmotionStateMachineData data = new EmotionStateMachineData(); data.associatedEvent = e; data.timestamp = e.timestamp; EvaluateTransitions(data); }
public void OnEventGroupDispatch(EmotionEventGroup g) { EmotionStateMachineData data = new EmotionStateMachineData(); data.associatedEventGroup = g; data.timestamp = ProceduralEngine.Instance.CurrentTimeNormalized; EvaluateTransitions(data); }
public bool Evaluate(EmotionStateMachineData data) { bool canTrigger = true; foreach (EmotionStateMachineTrigger t in triggers) { canTrigger = canTrigger && t.Evaluate(sourceBehaviour, targetBehaviour, data); } return(canTrigger); }
private void EvaluateTransitions(EmotionStateMachineData data) { List <EmotionStateMachineTransition> transitions = transitionMap[currentState]; foreach (EmotionStateMachineTransition t in transitions) { if (t.Evaluate(data)) { TriggerTransition(t); return; } } }
public void Update() { if (currentTransition != null && currentTransition.HasFinished()) { currentState = currentTransition.targetBehaviour; currentTransition = null; } else if (currentTransition == null) { EmotionStateMachineData data = new EmotionStateMachineData(); data.associatedEvent = new EmotionEvent(); data.associatedEvent.type = EmotionEvent.EmotionEventType.None; data.timestamp = ProceduralEngine.Instance.CurrentTimeNormalized; EvaluateTransitions(data); } }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { return(ProceduralEngine.Instance.RNG.NextDouble() > randomThreshold); }
public virtual bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { return(false); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { return(ProceduralEngine.Instance.GetCurrentEmotion().GetTotalEnergy() > minEnergy); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { bool result = true; foreach (EmotionStateMachineState s in states) { result = result && s.CurrentState == expectedState; } return(result); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { // TODO: We need to specify track information on runtime return(false); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { if (data.associatedEvent.type != EmotionEvent.EmotionEventType.None) { return(data.associatedEvent.intensity > minIntensity); } return(false); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { return(source.StateTime >= minTime || ProceduralEngine.Instance.CurrentTimeNormalized > globalTimeNormalized); }
public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data) { if (target.GlobalEmotionIncidence > source.GlobalEmotionIncidence) { return((target.GlobalEmotionIncidence - source.GlobalEmotionIncidence) > globalThreshold); } if (target.TrackEmotionIncidence > source.TrackEmotionIncidence) { return((target.TrackEmotionIncidence - source.TrackEmotionIncidence) > globalThreshold); } return(false); }