protected override void ValueToOSCValues(List <OSCValue> values, object value) { var members = GetMembers(value.GetType()); foreach (var memberInfo in members) { var property = OSCReflectionProperty.Create(value, memberInfo); if (property != null) { var propertyValue = property.GetValue(); if (propertyValue == null) { values.Add(OSCValue.Null()); continue; } OSCSerializer.Pack(values, propertyValue); } else { throw new NullReferenceException("Property not found!"); } } }
protected override void ValueToOSCValues(List <OSCValue> values, Array value) { values.Add(OSCValue.Int(value.Length)); foreach (var element in value) { OSCSerializer.Pack(values, element); } }
protected override void ValueToOSCValues(List <OSCValue> values, IDictionary value) { values.Add(OSCValue.Int(value.Count)); for (var i = 0; i < value.Count; i++) { OSCSerializer.Pack(values, value.Keys.OfType <object>().ElementAt(i)); OSCSerializer.Pack(values, value.Values.OfType <object>().ElementAt(i)); } }
protected override Array OSCValuesToValue(List <OSCValue> values, ref int start, Type type) { var size = values[start++].IntValue; var elementType = type.GetElementType(); var value = Array.CreateInstance(elementType, size); for (var i = 0; i < size; i++) { value.SetValue(OSCSerializer.Unpack(values, ref start, elementType), i); } return(value); }
protected override IList OSCValuesToValue(List <OSCValue> values, ref int start, Type type) { var size = values[start++].IntValue; var elementType = type.GetGenericArguments()[0]; var value = (IList)Activator.CreateInstance(type, size); for (var i = 0; i < size; i++) { value.Add(OSCSerializer.Unpack(values, ref start, elementType)); } return(value); }
public void SendClass() { var exampleClass = new ExampleClass(); exampleClass.StringValue = TransmitterClassString.text; exampleClass.FloatValue = TransmitterClassFloat.value; exampleClass.BoolValue = TransmitterClassBool.isOn; exampleClass.VectorValue = TransmitterClassVector2.Value; var message = OSCSerializer.Serialize(_address, exampleClass); Transmitter.Send(message); }
protected override IDictionary OSCValuesToValue(List <OSCValue> values, ref int start, Type type) { var size = values[start++].IntValue; var keyElement = type.GetGenericArguments()[0]; var valueElement = type.GetGenericArguments()[1]; var value = (IDictionary)Activator.CreateInstance(type, size); for (var i = 0; i < size; i++) { value.Add(OSCSerializer.Unpack(values, ref start, keyElement), OSCSerializer.Unpack(values, ref start, valueElement)); } return(value); }
private void RefreshRemoteFields(REComponent remoteComponent) { // CLEAR remoteComponent.Fields.Clear(); // POPULATE var componentType = remoteComponent.Target.GetType(); var fieldsInfos = componentType.GetFields(BindingFlags.Instance | BindingFlags.Public); foreach (var fieldInfo in fieldsInfos) { if (!OSCSerializer.HasPacker(fieldInfo.FieldType)) { continue; } var remoteField = new REField(fieldInfo); remoteField.FieldType = REFieldType.Field; remoteField.TypeName = fieldInfo.FieldType.Name; remoteField.FieldName = fieldInfo.Name; remoteField.Parent = remoteComponent; remoteComponent.Fields.Add(remoteField); } var propertiesInfos = componentType.GetProperties(BindingFlags.Instance | BindingFlags.Public); foreach (var propertyInfo in propertiesInfos) { if (!propertyInfo.CanRead || !propertyInfo.CanWrite) { continue; } if (!OSCSerializer.HasPacker(propertyInfo.PropertyType)) { continue; } var remoteField = new REField(propertyInfo); remoteField.FieldType = REFieldType.Property; remoteField.TypeName = propertyInfo.PropertyType.Name; remoteField.FieldName = propertyInfo.Name; remoteField.Parent = remoteComponent; remoteComponent.Fields.Add(remoteField); } }
public void ReceiveClass(OSCMessage message) { var exampleClass = OSCSerializer.Deserialize <ExampleClass>(message); if (exampleClass != null) { ReceiverClassString.text = exampleClass.StringValue; ReceiverClassFloat.value = exampleClass.FloatValue; ReceiverClassBool.isOn = exampleClass.BoolValue; ReceiverClassVector2.Value = exampleClass.VectorValue; ReceiverClassFloatText.text = exampleClass.FloatValue.ToString(); ReceiverClassBoolText.text = exampleClass.BoolValue.ToString(); ReceiverClassVector2Text.text = exampleClass.VectorValue.ToString(); } }
protected override object OSCValuesToValue(List <OSCValue> values, ref int start, Type type) { var members = GetMembers(type); var value = Activator.CreateInstance(type); foreach (var memberInfo in members) { var oscValue = values[start]; var property = OSCReflectionProperty.Create(value, memberInfo); if (property != null && !oscValue.IsNull) { property.SetValue(OSCSerializer.Unpack(values, ref start, property.PropertyType)); } else { start++; } } return(value); }