Exemplo n.º 1
0
        CharacterHead.Moods GetMoodFromString(string moodString)
        {
            CharacterHead.Moods mood = CharacterHead.Moods.Neutral;

            switch (moodString)
            {
            case "Neutral":
                mood = CharacterHead.Moods.Neutral;
                break;

            case "Angry":
                mood = CharacterHead.Moods.Angry;
                break;

            case "Sad":
                mood = CharacterHead.Moods.Sad;
                break;

            case "Happy":
                mood = CharacterHead.Moods.Happy;
                break;

            case "Scared":
                mood = CharacterHead.Moods.Scared;
                break;

            case "Determined":
                mood = CharacterHead.Moods.Determined;
                break;
            }

            return(mood);
        }
Exemplo n.º 2
0
 public override void ChangeMood(CharacterHead.Moods mood)
 {
     this.mood = mood;
     foreach (PlayerHead head in heads)
     {
         if (head /*&& head.isActiveAndEnabled*/)
         {
             head.SetMood((int)mood);
         }
     }
 }
Exemplo n.º 3
0
        public override void SetMood(int moodIndex)
        {
            mood = (CharacterHead.Moods)moodIndex;

            foreach (PlayerHead head in heads)
            {
                if (head && head.isActiveAndEnabled)
                {
                    head.SetMood(moodIndex);
                }
            }
        }
Exemplo n.º 4
0
        public void LoadVoiceovers(string AudioClipFolder)
        {
            audioClips = Resources.LoadAll <AudioClip>("audio/voices-01/" + AudioClipFolder);

            foreach (AudioClip audioClip in audioClips)
            {
                string prefix = "audio/voices-01/" + AudioClipFolder + "/";

                TextAsset   text        = Resources.Load(prefix + audioClip.name + "_txt") as TextAsset;
                LipSyncData lipSyncData = Resources.Load <LipSyncData>(prefix + audioClip.name);


                string txt = "";

                if (text != null)
                {
                    txt = text.text;
                }
                TextAsset phonemes = Resources.Load("audio/voices-01/" + AudioClipFolder + "/" + audioClip.name + "_phonemes") as TextAsset;

                VoiceClip voiceClip = new VoiceClip();
                voiceClip.name = audioClip.name;

                CharacterHead.Moods mood = CharacterHead.Moods.Neutral;

                if (lipSyncData != null)
                {
                    voiceClip.phonemes = GetPhonemesFromLipSyncData(lipSyncData, audioClip.length);

                    Debug.Log("Lipsync Data " + voiceClip.phonemes);
                }
                else
                {
                    voiceClip.phonemes = GetPhonemesFromMohoText(phonemes.text);
                }

                voiceClip.audioClip = audioClip;
                voiceClip.mood      = mood;

                GameObject audioSource = (GameObject.Instantiate(audioSourceTemplate) as Transform).gameObject;

                audioSource.name = voiceClip.name;
                audioSource.GetComponent <AudioSource>().clip = voiceClip.audioClip;
                audioSource.transform.parent = audioSourceFolder;

                voiceClip.audioSource             = audioSource.GetComponent <AudioSource>();
                voiceClip.audioSource.playOnAwake = false;

                voiceClip.volume = 1;

                voiceClips.Add(voiceClip.name, voiceClip);
            }
        }
Exemplo n.º 5
0
            public void GetMood(float position, ref CharacterHead.Moods currentMood, ref bool change)
            {
                change = false;
                float currentPosition = -1;

                for (int i = 0; i < moodPositions.Count; i++)
                {
                    currentPosition = ((MoodPosition)moodPositions[i]).position;

                    if (position >= currentPosition && (i >= moodPositions.Count - 1 || position < ((MoodPosition)moodPositions[i + 1]).position))
                    {
                        if (currentMood != ((MoodPosition)moodPositions[i]).mood)
                        {
                            currentMood = ((MoodPosition)moodPositions[i]).mood;
                            change      = true;
                        }
                        return;
                    }
                }

                currentMood = CharacterHead.Moods.Neutral; // will not get picked up unless change==true
            }
Exemplo n.º 6
0
 public MoodPosition(float pos, CharacterHead.Moods m)
 {
     position = pos;
     mood     = m;
 }
Exemplo n.º 7
0
        protected virtual IEnumerator RunLipSyncProc(string charName, AudioSource src, AudioClip audioClip, int lineID, string message)
        {
            this.interruptFlag = false;
            IsTalking          = true;

            string      currentMode = "idle";
            LipSyncData lipSyncData = Resources.Load <LipSyncData>("Lipsync/" + charName + "/" + charName + lineID.ToString());

            if (audioClip == null || lipSyncData == null)
            {
                float fakeClipLength = 3f;
                float startTime      = Time.time;

                fakeClipLength = message.Length * 0.1f;

                // Simulate a talk cycle
                string[] talkCycle = { "AI", "AI", "O", "AI", "E", "AI", "O", "U" };
                int      i         = 0;
                while (Time.time - startTime < fakeClipLength && !interruptFlag)
                {
                    //if(character != null && !character.isTalking) interruptFlag = true;
                    string ph = talkCycle[i % talkCycle.Length];
                    i++;
                    ShowPhoneme(ph);
                    yield return(new WaitForSeconds(.09f));
                }

                ShowPhoneme("MBP");
            }
            else
            {
                VoiceClip voiceClip = new VoiceClip();
                voiceClip.name = audioClip.name;
                voiceClip.text = "text not needed here";
                CharacterHead.Moods mood = CharacterHead.Moods.Neutral;

                SetArmAnimationEnabled(true);

                if (lipSyncData != null)
                {
                    voiceClip.phonemes  = GetPhonemesFromLipSyncData(lipSyncData, audioClip.length);
                    voiceClip.audioClip = audioClip;
                    voiceClip.mood      = mood;

                    CharacterHead.Moods currentMood = CharacterHead.Moods.Neutral;

                    while (src.isPlaying && !interruptFlag)
                    {
                        //if(character != null && !character.isTalking) interruptFlag = true;
                        float time = src.time;

                        bool change = false;

                        voiceClip.phonemes.GetMode(time /*+ pause*/, ref currentMode, ref change);

                        if (change)
                        {
                            ChangeTalkMode(currentMode);
                        }

                        change = false;

                        voiceClip.phonemes.GetMood(time /*+ pause*/, ref currentMood, ref change);

                        if (change)
                        {
                            ChangeMood(currentMood);
                        }

                        string ph = voiceClip.phonemes.GetPhoneme(time /*+ pause*/).Trim();

                        ShowPhoneme(ph);

                        yield return(new WaitForSeconds(1 / 60f));
                    }
                }
            }

            ChangeTalkMode("idle");

            ShowPhoneme("MBP");

            ChangeMood(CharacterHead.Moods.Neutral);

            IsTalking = false;

            animator.SetBool("talking", false);

            ResetArmAnimationStatus();

            yield return(null);
        }
Exemplo n.º 8
0
 public override void ChangeMood(CharacterHead.Moods mood)
 {
     SetMood((int)mood);
 }
Exemplo n.º 9
0
 public virtual void ChangeMood(CharacterHead.Moods mood)
 {
     Debug.Log("NOT IMPLEMENTED: public virtual void ChangeMood(...)");
 }
Exemplo n.º 10
0
 public void ChangeMood(CharacterHead.Moods mood)
 {
     PlayerBrain.ChangeMood(mood);
 }