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); }
public override void ChangeMood(CharacterHead.Moods mood) { this.mood = mood; foreach (PlayerHead head in heads) { if (head /*&& head.isActiveAndEnabled*/) { head.SetMood((int)mood); } } }
public override void SetMood(int moodIndex) { mood = (CharacterHead.Moods)moodIndex; foreach (PlayerHead head in heads) { if (head && head.isActiveAndEnabled) { head.SetMood(moodIndex); } } }
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); } }
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 }
public MoodPosition(float pos, CharacterHead.Moods m) { position = pos; mood = m; }
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); }
public override void ChangeMood(CharacterHead.Moods mood) { SetMood((int)mood); }
public virtual void ChangeMood(CharacterHead.Moods mood) { Debug.Log("NOT IMPLEMENTED: public virtual void ChangeMood(...)"); }
public void ChangeMood(CharacterHead.Moods mood) { PlayerBrain.ChangeMood(mood); }