private void Awake() { ui = FindObjectOfType <UI_Manager>(); timer = TIMER_START; socialState = Social_State.interacting; moodState = Mood_State.neutral; }
public void AnimationEvaluation(Mood_State moodState) { switch (moodState) { case Mood_State.neutral: ani.SetBool("Neutral", true); ani.SetBool("Happy", false); ani.SetBool("Sad", false); ani.SetBool("Angry", false); break; case Mood_State.happy: ani.SetBool("Happy", true); ani.SetBool("Neutral", false); ani.SetBool("Sad", false); ani.SetBool("Angry", false); break; case Mood_State.sad: ani.SetBool("Neutral", false); ani.SetBool("Happy", false); ani.SetBool("Sad", true); ani.SetBool("Angry", false); break; case Mood_State.angry: ani.SetBool("Neutral", false); ani.SetBool("Happy", false); ani.SetBool("Sad", false); ani.SetBool("Angry", true); break; } }
// 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; } }