/* godotVmcSharp Copyright (C) 2023 Cassandra de la Cruz-Munoz This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ using Godot; using godotOscSharp; namespace godotVmcSharp { public class VmcExtBlendVal : VmcMessage { public string name { get; } public float value { get; } public VmcExtBlendVal(godotOscSharp.OscMessage m) : base(m.Address) { if (m.Data.Count != 2) { GD.Print($"Invalid number of arguments for /VMC/Ext/Blend/Val. Expected 2, received {m.Data.Count}."); return; } if (m.Data[0].Type != 's') { GD.Print(InvalidArgumentType.GetErrorString(addr, "name", 's', m.Data[0].Type)); return; } if (m.Data[1].Type != 'f') { GD.Print(InvalidArgumentType.GetErrorString(addr, "value", 'f', m.Data[1].Type)); return; } var blendShape = (string)m.Data[0].Value; if (blendShape == "Joy" || blendShape == "Angry" || blendShape == "Sorrow" || blendShape == "Fun" || blendShape == "A" || blendShape == "I" || blendShape == "U" || blendShape == "E" || blendShape == "O" || blendShape == "Blink_L" || blendShape == "Blink_R") { name = blendShape; value = (float)m.Data[1].Value; return; } else if (blendShape == "happy" || blendShape == "angry" || blendShape == "sad" || blendShape == "relaxed" || blendShape == "aa" || blendShape == "ih" || blendShape == "ou" || blendShape == "ee" || blendShape == "oh" || blendShape == "blinkLeft" || blendShape == "blinkRight") { name = blendShape; value = (float)m.Data[1].Value; return; } else if (blendShape == "browInnerUp" || blendShape == "browDownLeft" || blendShape == "browDownRight" || blendShape == "browOuterUpLeft" || blendShape == "browOuterUpRight" || blendShape == "eyeLookUpLeft" || blendShape == "eyeLookUpRight" || blendShape == "eyeLookDownLeft" || blendShape == "eyeLookDownRight" || blendShape == "eyeLookInLeft" || blendShape == "eyeLookInRight" || blendShape == "eyeLookOutLeft" || blendShape == "eyeLookOutRight" || blendShape == "eyeBlinkLeft" || blendShape == "eyeBlinkRight" || blendShape == "eyeSquintLeft" || blendShape == "eyeSquintRight" || blendShape == "eyeWideLeft" || blendShape == "eyeWideRight" || blendShape == "cheekPuff" || blendShape == "cheekSquintLeft" || blendShape == "cheekSquintRight" || blendShape == "noseSneerLeft" || blendShape == "noseSneerRight" || blendShape == "jawOpen" || blendShape == "jawForward" || blendShape == "jawLeft" || blendShape == "jawRight" || blendShape == "mouthFunnel" || blendShape == "mouthPucker" || blendShape == "mouthLeft" || blendShape == "mouthRight" || blendShape == "mouthRollUpper" || blendShape == "mouthRollLower" || blendShape == "mouthShrugUpper" || blendShape == "mouthShrugLower" || blendShape == "mouthClose" || blendShape == "mouthSmileLeft" || blendShape == "mouthSmileRight" || blendShape == "mouthFrownLeft" || blendShape == "mouthFrownRight" || blendShape == "mouthDimpleLeft" || blendShape == "mouthDimpleRight" || blendShape == "mouthUpperUpLeft" || blendShape == "mouthUpperUpRight" || blendShape == "mouthLowerDownLeft" || blendShape == "mouthLowerDownRight" || blendShape == "mouthPressLeft" || blendShape == "mouthPressRight" || blendShape == "mouthStretchLeft" || blendShape == "mouthStretchRight" || blendShape == "tongueOut") { name = blendShape; value = (float)m.Data[1].Value; return; } else { GD.Print($"Invalid argument for /VMC/Ext/Blend/Val. BlendShape \"{blendShape}\" not in list."); return; } } } }