summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/MaterializeFX/MaterializationFX/Scripts/ShaderParameterSetter.cs
blob: 47b1832aa1a40e1c983cac1088bf38924f914121 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);
        }
    }
}