public override void PostDeserialize(DeserializationContext deserializationContext) { Material = new Material(MaterialType, RenderQueue); Material.BlendMode = this.BlendMode; Material.Values.ForEach(_ => _.SetValue(deserializationContext.ConvertValue(UniformValues[_.Name], _.UniformType))); Material.Textures.ForEach(_ => _.Texture = (Texture)deserializationContext.ConvertValue(Textures[_.Name], typeof(Texture2))); }
public Component Create(DeserializationContext context, Node owner) { var type = Type.GetType(TypeName); var result = (Component)Activator.CreateInstance(type, owner); foreach (var keyValue in FieldValues) { var propName = keyValue.Key; var prop = type.GetProperty(propName, Flags); if (prop == null) { Log.Warning("Unknown field: " + propName); continue; } if (prop.CanWrite == false) { Log.Warning("Property is not writable: " + propName); continue; } var value = context.ConvertValue(keyValue.Value, prop.PropertyType); prop.SetValue(result, value); } result.IsEnabled = IsEnabled; result.Id = Id; return(result); }