Tanoda
FixMaterials.cs
Go to the documentation of this file.
2using UnityEngine;
3
4namespace TriLibCore.Samples
5{
9 public class FixMaterials : MonoBehaviour
10 {
11 private void Start()
12 {
13 MaterialMapper materialMapper = null;
14 foreach (var materialMapperName in MaterialMapper.RegisteredMappers)
15 if (TriLibSettings.GetBool(materialMapperName))
16 {
17 materialMapper = (MaterialMapper) ScriptableObject.CreateInstance(materialMapperName);
18 break;
19 }
20
21 if (materialMapper == null) return;
22 var meshRenderers = GetComponentsInChildren<MeshRenderer>();
23 foreach (var meshRenderer in meshRenderers)
24 {
25 var materials = meshRenderer.materials;
26 for (var i = 0; i < materials.Length; i++)
27 {
28 var color = meshRenderer.sharedMaterials[i].color;
29 materials[i] = Instantiate(materialMapper.MaterialPreset);
30 materials[i].color = color;
31 }
32
33 meshRenderer.materials = materials;
34 }
35
36 var skinnedMeshRenderers = GetComponentsInChildren<SkinnedMeshRenderer>();
37 foreach (var skinnedMeshRenderer in skinnedMeshRenderers)
38 {
39 var materials = skinnedMeshRenderer.materials;
40 for (var i = 0; i < materials.Length; i++)
41 {
42 var color = skinnedMeshRenderer.sharedMaterials[i].color;
43 materials[i] = Instantiate(materialMapper.MaterialPreset);
44 materials[i].color = color;
45 }
46
47 skinnedMeshRenderer.materials = materials;
48 }
49
50 Destroy(materialMapper);
51 }
52 }
53}
Represents a class used to fix TriLib sample models depending on the rendering pipeline.
Definition: FixMaterials.cs:10
Represents the TriLib project settings provider. You can override this behavior to store the settings...
static bool GetBool(string key)