public MaterialFloatController(FloatDesc desc) : base(desc) { material = desc.target as Material; }
public MaterialColorController(FloatDesc desc, Component comp) : base(desc) { material = desc.target as Material; component = comp; desc.min = 0; if (component == Component.Hue) { desc.max = 360; desc.speed = 10; } else { desc.max = 1; desc.speed = 0.1f; } }
public FloatController(FloatDesc d) { desc = d; }
public static void AddToList(FloatDesc desc, List<FloatController> floatControllers) { try { string[] tokens = desc.property.Split('.'); if (tokens.Length == 1) { System.Type type = desc.target.GetType(); if (type == typeof(Material)) { floatControllers.Add(new MaterialFloatController(desc)); } else { FieldInfo fi = type.GetField(desc.property); if (fi == null || fi.FieldType != typeof(float)) throw new PropertyError(); floatControllers.Add(new FieldFloatController(desc,fi)); } } else if (tokens.Length == 2) { if (desc.target is Material && tokens[1] == "hsv") { // special case: color desc.property = tokens[0]; floatControllers.Add(new MaterialColorController(desc.Clone(), MaterialColorController.Component.Hue)); floatControllers.Add(new MaterialColorController(desc.Clone(), MaterialColorController.Component.Saturation)); floatControllers.Add(new MaterialColorController(desc.Clone(), MaterialColorController.Component.Value)); } else { // the property name is ComponentName.PropertyName Component c = (desc.target as GameObject).GetComponent(tokens[0]); if (c==null) throw new PropertyError(); System.Type type = c.GetType(); FieldInfo fi = type.GetField(tokens[1]); if (fi == null || fi.FieldType != typeof(float)) throw new PropertyError(); desc.target = c; floatControllers.Add(new FieldFloatController(desc,fi)); } } } catch (PropertyError) { Debug.LogError("Error reflecting on property " + desc.property + " of " + desc.target); } }
public FieldFloatController(FloatDesc desc, FieldInfo fi) : base(desc) { field = fi; }