예제 #1
0
        public static bool ToColor(this OSCMessage message, out Color value, bool force = false)
        {
            var values = message.FindValues(OSCValueType.Color);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.ColorValue;
                return(true);
            }

            if (force)
            {
                if (message.ToVector3(out var vector3))
                {
                    value = new Color(vector3.x, vector3.y, vector3.z);
                    return(true);
                }

                if (message.ToVector4(out var vector4))
                {
                    value = new Color(vector4.x, vector4.y, vector4.z, vector4.w);
                    return(true);
                }
            }

            value = Color.white;
            return(false);
        }
예제 #2
0
        public static bool ToVector4(this OSCMessage message, out Vector4 value, bool force = false)
        {
            var values = message.FindValues(OSCValueType.Float);

            if (values.Length >= 4)
            {
                var firstValue  = values[0];
                var secondValue = values[1];
                var thirdValue  = values[2];
                var fourthValue = values[3];

                value = new Vector4(firstValue.FloatValue, secondValue.FloatValue, thirdValue.FloatValue,
                                    fourthValue.FloatValue);

                return(true);
            }

            if (force)
            {
                if (message.ToVector2(out var vector2))
                {
                    value = vector2;
                    return(true);
                }

                if (message.ToVector3(out var vector3))
                {
                    value = vector3;
                    return(true);
                }
            }

            value = Vector4.zero;
            return(false);
        }
예제 #3
0
        public static bool ToArray(this OSCMessage message, out List <OSCValue> value)
        {
            var values = message.FindValues(OSCValueType.Array);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.ArrayValue;
                return(true);
            }

            value = new List <OSCValue>();
            return(false);
        }
예제 #4
0
        public static bool ToMidi(this OSCMessage message, out OSCMidi value)
        {
            var values = message.FindValues(OSCValueType.Midi);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.MidiValue;
                return(true);
            }

            value = default(OSCMidi);
            return(false);
        }
예제 #5
0
        public static bool ToTimeTag(this OSCMessage message, out DateTime value)
        {
            var values = message.FindValues(OSCValueType.TimeTag);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.TimeTagValue;
                return(true);
            }

            value = default(DateTime);
            return(false);
        }
예제 #6
0
        public static bool ToBlob(this OSCMessage message, out byte[] value)
        {
            var values = message.FindValues(OSCValueType.Blob);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.BlobValue;
                return(true);
            }

            value = default(byte[]);
            return(false);
        }
예제 #7
0
        public static bool ToString(this OSCMessage message, out string value)
        {
            var values = message.FindValues(OSCValueType.String);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.StringValue;
                return(true);
            }

            value = default(string);
            return(false);
        }
예제 #8
0
        public static bool ToChar(this OSCMessage message, out char value)
        {
            var values = message.FindValues(OSCValueType.Char);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.CharValue;
                return(true);
            }

            value = default(char);
            return(false);
        }
예제 #9
0
        public static bool ToBool(this OSCMessage message, out bool value)
        {
            var values = message.FindValues(OSCValueType.True, OSCValueType.False);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.BoolValue;
                return(true);
            }

            value = default(bool);
            return(false);
        }
예제 #10
0
        public static bool ToLong(this OSCMessage message, out long value)
        {
            var values = message.FindValues(OSCValueType.Long);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.LongValue;
                return(true);
            }

            value = 0;
            return(false);
        }
예제 #11
0
        public static bool ToDouble(this OSCMessage message, out double value)
        {
            var values = message.FindValues(OSCValueType.Double);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.DoubleValue;
                return(true);
            }

            value = 0;
            return(false);
        }
예제 #12
0
        public static bool ToFloat(this OSCMessage message, out float value)
        {
            var values = message.FindValues(OSCValueType.Float);

            if (values.Length > 0)
            {
                var firstValue = values[0];

                value = firstValue.FloatValue;
                return(true);
            }

            value = 0;
            return(false);
        }
예제 #13
0
 public static bool HasNull(this OSCMessage message)
 {
     return(message.FindValues(OSCValueType.Null).Length > 0);
 }
예제 #14
0
 public static bool HasImpulse(this OSCMessage message)
 {
     return(message.FindValues(OSCValueType.Impulse).Length > 0);
 }