Ejemplo n.º 1
0
    private void Awake()
    {
        ui = FindObjectOfType <UI_Manager>();

        timer = TIMER_START;

        socialState = Social_State.interacting;

        moodState = Mood_State.neutral;
    }
Ejemplo n.º 2
0
    // Adds to current PAD Values
    public void gestureEffect(float p, float a, float d)
    {
        socialState = Social_State.interacting;

        pleasure  += p;
        arousal   += a;
        dominance += d;

        pleasure  = Mathf.Clamp(pleasure, -1.0f, 1.0f);
        arousal   = Mathf.Clamp(arousal, -1.0f, 1.0f);
        dominance = Mathf.Clamp(dominance, -1.0f, 1.0f);

        ui.UpdatePADText(pleasure.ToString("0.00"), arousal.ToString("0.00"), dominance.ToString("0.00"));
    }
Ejemplo n.º 3
0
 // Changes the current NPC social state (e.g. waiting, noInteraction, interacting)
 public void ChangeSocialState(Social_State state)
 {
     socialState = state;
 }
Ejemplo n.º 4
0
    // Performs behaviour adjustments based on current PAD
    private void EvaluatePAD()                                                               //***************************************
    {
        // ============== Materials ==============
        // Neutral
        if ((pleasure == 0.0f && arousal == 0.0f && dominance == 0.0f) && meshRenderer.material != emotiveMaterials[0])
        {
            meshRenderer.material = emotiveMaterials[0];
            moodState             = Mood_State.neutral;
        }
        //Happy
        else if ((pleasure > 0.0f && arousal > 0.0f && dominance < 0.0f) && meshRenderer.material != emotiveMaterials[1])
        {
            meshRenderer.material = emotiveMaterials[1];
            moodState             = Mood_State.happy;
        }
        //Scared
        else if ((pleasure < 0.0f && arousal > 0.0f && dominance < 0.0f) && meshRenderer.material != emotiveMaterials[2])
        {
            meshRenderer.material = emotiveMaterials[2];
            moodState             = Mood_State.sad;
        }
        //Angry
        else if ((pleasure < 0.0f && arousal > 0.0f && dominance > 0.0f) && meshRenderer.material != emotiveMaterials[3])
        {
            meshRenderer.material = emotiveMaterials[3];
            moodState             = Mood_State.angry;
        }

        aniManager.AnimationEvaluation(moodState);

        /* Check PAD values then:
         * - Change State Material                          [x]
         * - Change Animation emphasis(Sad = Sad Wave)      [x]
         * - Change Sound Files(Angry = Angry Speech)       [ ]
         */

        // Check Social state
        switch (socialState)
        {
        case Social_State.interacting:

            // Reset Bordem Timer
            timer = TIMER_START;

            socialState = Social_State.noInteraction;

            break;

        case Social_State.noInteraction:

            // Decrease timer for bordem
            if (timer >= 0.0f)
            {
                timer -= Time.deltaTime;
            }
            else if (arousal >= -1.0f)
            {
                BordemDecrease();
            }

            break;

        case Social_State.waiting:

            // Ignore this enum

            break;

        default:
            Debug.LogError("Social_State not initialised!");
            break;
        }
    }