From 4879cab7a450383ac5fa05c082065324bdbc62bd Mon Sep 17 00:00:00 2001 From: Cassandra de la Cruz-Munoz Date: Wed, 16 Aug 2023 15:36:02 -0400 Subject: [PATCH] create VmcExtSetPeriod and add to performer --- Performer.cs | 3 ++ VmcMessages/VmcExtSetPeriod.cs | 77 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 VmcMessages/VmcExtSetPeriod.cs diff --git a/Performer.cs b/Performer.cs index 8de6d7d..84810a3 100644 --- a/Performer.cs +++ b/Performer.cs @@ -54,6 +54,9 @@ namespace godotVmcSharp case "/VMC/Ext/Tra/Pos": new VmcExtDevicePos(m); break; + case "/VMC/Ext/Set/Period": + new VmcExtSetPeriod(m); + break; case "/VMC/Ext/Midi/CC/Val": new VmcExtMidiCcVal(m); break; diff --git a/VmcMessages/VmcExtSetPeriod.cs b/VmcMessages/VmcExtSetPeriod.cs new file mode 100644 index 0000000..7419af8 --- /dev/null +++ b/VmcMessages/VmcExtSetPeriod.cs @@ -0,0 +1,77 @@ +/* + 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 VmcExtSetPeriod : VmcMessage + { + public int status { get; } + public int root { get; } + public int bone { get; } + public int blendShape { get; } + public int camera { get; } + public int devices { get; } + + public VmcExtSetPeriod(godotOscSharp.OscMessage m) : base(m.Address) + { + if (m.Data.Count != 6) + { + GD.Print($"Invalid number of arguments for {addr}. Expecting 6, received {m.Data.Count}"); + } + if (m.Data[0].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "status", 'i', m.Data[0].Type)); + return; + } + if (m.Data[1].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "root", 'i', m.Data[1].Type)); + return; + } + if (m.Data[2].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "bone", 'i', m.Data[2].Type)); + return; + } + if (m.Data[3].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "blendShape", 'i', m.Data[3].Type)); + return; + } + if (m.Data[4].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "camera", 'i', m.Data[4].Type)); + return; + } + if (m.Data[5].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "devices", 'i', m.Data[5].Type)); + return; + } + status = (int)m.Data[0].Value; + root = (int)m.Data[1].Value; + bone = (int)m.Data[2].Value; + blendShape = (int)m.Data[3].Value; + camera = (int)m.Data[4].Value; + devices = (int)m.Data[5].Value; + } + } +} \ No newline at end of file