public static IPhonemeGetter?GetGetter(this IFaceFxPhonemesGetter faceFx, Target target) { switch (target) { case FaceFxPhonemes.Target.Aah: return(faceFx.Aah_LipBigAah); case FaceFxPhonemes.Target.BigAah: return(faceFx.BigAah_LipDST); case FaceFxPhonemes.Target.BMP: return(faceFx.BMP_LipEee); case FaceFxPhonemes.Target.ChJSh: return(faceFx.ChJSh_LipFV); case FaceFxPhonemes.Target.DST: return(faceFx.DST_LipK); case FaceFxPhonemes.Target.Eee: return(faceFx.Eee_LipL); case FaceFxPhonemes.Target.Eh: return(faceFx.Eh_LipR); case FaceFxPhonemes.Target.FV: return(faceFx.FV_LipTh); case FaceFxPhonemes.Target.I: return(faceFx.I); case FaceFxPhonemes.Target.K: return(faceFx.K); case FaceFxPhonemes.Target.N: return(faceFx.N); case FaceFxPhonemes.Target.Oh: return(faceFx.Oh); case FaceFxPhonemes.Target.OohQ: return(faceFx.OohQ); case FaceFxPhonemes.Target.R: return(faceFx.R); case FaceFxPhonemes.Target.Th: return(faceFx.Th); case FaceFxPhonemes.Target.W: return(faceFx.W); default: throw new NotImplementedException(); } }
public static void WriteFaceFxPhonemes(MutagenWriter writer, IFaceFxPhonemesGetter item) { IPhonemeGetter?[] phonemes = new IPhonemeGetter?[FaceFxPhonemesBinaryCreateTranslation.TargetSize]; foreach (var target in FaceFxPhonemesBinaryCreateTranslation.Targets) { phonemes[(int)target] = item.GetGetter(target); } if (!phonemes.Any(p => p != null)) { return; } var force = item.ForceNames; var hasAll = phonemes.All(p => p != null); if (!hasAll || force) { for (int i = 0; i < phonemes.Length; i++) { var phoneme = phonemes[i]; if (phoneme == null) { continue; } var target = (Target)i; using (HeaderExport.Subrecord(writer, RecordTypes.PHTN)) { writer.Write(phoneme.Name, StringBinaryType.NullTerminate); } } } foreach (var slot in FaceFxPhonemesBinaryCreateTranslation.Slots) { using (HeaderExport.Subrecord(writer, RecordTypes.PHWT)) { foreach (var target in FaceFxPhonemesBinaryCreateTranslation.Targets) { IPhonemeGetter?phoneme = phonemes[(int)target]; if (phoneme == null) { continue; } writer.Write(phoneme.Get(slot)); } } } }