Ejemplo n.º 1
0
    public void OnEventDispatch(EmotionEvent e)
    {
        EmotionStateMachineData data = new EmotionStateMachineData();

        data.associatedEvent = e;
        data.timestamp       = e.timestamp;
        EvaluateTransitions(data);
    }
Ejemplo n.º 2
0
    public void OnEventGroupDispatch(EmotionEventGroup g)
    {
        EmotionStateMachineData data = new EmotionStateMachineData();

        data.associatedEventGroup = g;
        data.timestamp            = ProceduralEngine.Instance.CurrentTimeNormalized;
        EvaluateTransitions(data);
    }
Ejemplo n.º 3
0
    public bool Evaluate(EmotionStateMachineData data)
    {
        bool canTrigger = true;

        foreach (EmotionStateMachineTrigger t in triggers)
        {
            canTrigger = canTrigger && t.Evaluate(sourceBehaviour, targetBehaviour, data);
        }

        return(canTrigger);
    }
Ejemplo n.º 4
0
    private void EvaluateTransitions(EmotionStateMachineData data)
    {
        List <EmotionStateMachineTransition> transitions = transitionMap[currentState];

        foreach (EmotionStateMachineTransition t in transitions)
        {
            if (t.Evaluate(data))
            {
                TriggerTransition(t);
                return;
            }
        }
    }
Ejemplo n.º 5
0
    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);
        }
    }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 8
0
 public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data)
 {
     return(ProceduralEngine.Instance.GetCurrentEmotion().GetTotalEnergy() > minEnergy);
 }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
 public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data)
 {
     // TODO: We need to specify track information on runtime
     return(false);
 }
Ejemplo n.º 11
0
    public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data)
    {
        if (data.associatedEvent.type != EmotionEvent.EmotionEventType.None)
        {
            return(data.associatedEvent.intensity > minIntensity);
        }

        return(false);
    }
Ejemplo n.º 12
0
 public override bool Evaluate(EmotionStateMachineState source, EmotionStateMachineState target, EmotionStateMachineData data)
 {
     return(source.StateTime >= minTime || ProceduralEngine.Instance.CurrentTimeNormalized > globalTimeNormalized);
 }
Ejemplo n.º 13
0
    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);
    }