private MaterialPerInstanceProperties.IProperty DrawFloatProperty(MaterialPerInstanceProperties.IProperty property, int index, Rect nameRect, Rect sourceRect, Rect valueRect) { MaterialPerInstanceProperties.FloatProperty floatProperty = (MaterialPerInstanceProperties.FloatProperty)property; if (DrawPropertyIdDropdrop(nameRect, ref property)) { return(property); } floatProperty._source = (MaterialPerInstanceProperties.FloatProperty.ePropertySource)EditorGUI.EnumPopup(sourceRect, floatProperty._source); switch (floatProperty._source) { case MaterialPerInstanceProperties.FloatProperty.ePropertySource.Constant: floatProperty._value = EditorGUI.FloatField(valueRect, floatProperty._value); break; case MaterialPerInstanceProperties.FloatProperty.ePropertySource.RandomRange: floatProperty._valueRange = FloatRangeDrawer.FloatRangeField(valueRect, floatProperty._valueRange); break; case MaterialPerInstanceProperties.FloatProperty.ePropertySource.RandomCurve: floatProperty._valueCurve = EditorGUI.CurveField(valueRect, floatProperty._valueCurve); break; } return(floatProperty); }
private static MaterialPerInstanceProperties.IProperty GetPerInstanceProperty(MaterialProperty property) { MaterialPerInstanceProperties.IProperty perInstanceProperty = null; switch (property.type) { case MaterialProperty.PropType.Color: { perInstanceProperty = new MaterialPerInstanceProperties.ColorProperty() { _name = property.name, _value = property.colorValue, _valueGradient = new Gradient(), _source = MaterialPerInstanceProperties.ColorProperty.ePropertySource.Constant }; } break; case MaterialProperty.PropType.Vector: { perInstanceProperty = new MaterialPerInstanceProperties.Vector4Property() { _name = property.name, _value = property.vectorValue, _xValueCurve = new AnimationCurve(new Keyframe(0, property.vectorValue.x), new Keyframe(1, property.vectorValue.x)), _yValueCurve = new AnimationCurve(new Keyframe(0, property.vectorValue.y), new Keyframe(1, property.vectorValue.y)), _zValueCurve = new AnimationCurve(new Keyframe(0, property.vectorValue.w), new Keyframe(1, property.vectorValue.w)), _wValueCurve = new AnimationCurve(new Keyframe(0, property.vectorValue.z), new Keyframe(1, property.vectorValue.z)), _xValueRange = new FloatRange(property.vectorValue.x, property.vectorValue.x), _yValueRange = new FloatRange(property.vectorValue.y, property.vectorValue.y), _zValueRange = new FloatRange(property.vectorValue.w, property.vectorValue.w), _wValueRange = new FloatRange(property.vectorValue.z, property.vectorValue.z), _source = MaterialPerInstanceProperties.Vector4Property.ePropertySource.Constant }; } break; case MaterialProperty.PropType.Float: { perInstanceProperty = new MaterialPerInstanceProperties.FloatProperty() { _name = property.name, _value = property.floatValue, _valueCurve = new AnimationCurve(new Keyframe(0, property.floatValue), new Keyframe(1, property.floatValue)), _valueRange = new FloatRange(property.floatValue, property.floatValue), _source = MaterialPerInstanceProperties.FloatProperty.ePropertySource.Constant }; } break; case MaterialProperty.PropType.Texture: { perInstanceProperty = new MaterialPerInstanceProperties.TextureProperty() { _name = property.name, _value = property.textureValue, _valueArray = new Texture[] { property.textureValue }, _source = MaterialPerInstanceProperties.TextureProperty.ePropertySource.Constant }; } break; } return(perInstanceProperty); }