/* 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 VmcExtSetEye : VmcMessage { public readonly int Enable; public readonly Vector3 Position; public static VmcExtSetEye CreateFromMessage(OscMessage m) { if (m.Data.Count < 4) { throw new MissingArgumentsException(m.Address, "{4}", m.Data.Count); } if (m.Data[0].Type != 'i') { throw new InvalidDataTypeException(m.Address, 0, "enable", 'i', m.Data[0].Type); } if (m.Data[1].Type != 'f') { throw new InvalidDataTypeException(m.Address, 1, "p.x", 'f', m.Data[1].Type); } if (m.Data[2].Type != 'f') { throw new InvalidDataTypeException(m.Address, 2, "p.y", 'f', m.Data[2].Type); } if (m.Data[3].Type != 'f') { throw new InvalidDataTypeException(m.Address, 3, "p.z", 'f', m.Data[3].Type); } return new VmcExtSetEye(m.Data[0].GetAsInt32(), new Vector3(m.Data[1].GetAsFloat(), m.Data[2].GetAsFloat(), m.Data[3].GetAsFloat())); } public VmcExtSetEye(int enable, Vector3 position) : base(new OscAddress("/VMC/Ext/Set/Eye")) { Enable = enable; Position = position; } public new OscMessage ToMessage() { return new OscMessage(Addr, new System.Collections.Generic.List{ OscArgument.CreateFromParams(Enable, 'i')!, OscArgument.CreateFromParams(Position.X, 'f')!, OscArgument.CreateFromParams(Position.Y, 'f')!, OscArgument.CreateFromParams(Position.Z, 'f')!, }); } } }