summaryrefslogtreecommitdiff
path: root/Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs')
-rw-r--r--Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs b/Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs
new file mode 100644
index 00000000..47b1832a
--- /dev/null
+++ b/Assets/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs
@@ -0,0 +1,37 @@
+using UnityEngine;
+
+namespace MaterializationFX.Scripts
+{
+ internal sealed class ShaderParameterSetter
+ {
+ private Renderer[] _rends;
+
+ public void Init(GameObject targetObject, string shaderName, bool modifyChildren)
+ {
+ _rends = !modifyChildren
+ ? new[] {targetObject.GetComponent<Renderer>()}
+ : targetObject.GetComponentsInChildren<Renderer>();
+
+ foreach (var rend in _rends)
+ rend.material.shader = Shader.Find(shaderName);
+ }
+
+ public void SetFloat(string propertyName, float value)
+ {
+ foreach (var rend in _rends)
+ rend.material.SetFloat(propertyName, value);
+ }
+
+ public void SetInt(string propertyName, int value)
+ {
+ foreach (var rend in _rends)
+ rend.material.SetInt(propertyName, value);
+ }
+
+ public void SetVector(string propertyName, Vector3 value)
+ {
+ foreach (var rend in _rends)
+ rend.material.SetVector(propertyName, value);
+ }
+ }
+} \ No newline at end of file