using System.Collections.Generic; using Mtree; using UnityEngine; [ExecuteInEditMode] public class ExampleSceneManager : MonoBehaviour { private List BarkMaterials; private List LeafMaterials; private Material Floor; private GameObject Trees; private GameObject PostProcessing; private bool Setup = true; private void PostProcessActive() { } private void LegacySetup() { GameObject gameObject = Object.Instantiate(Resources.Load("Mtree/Examples/2017_4 Legacy") as GameObject, base.transform); gameObject.name = "Legacy 2017.4+"; Debug.Log("Legacy 2017.4+ was loaded!"); } private void LWRPSetup() { } private void HDRPSetup() { GameObject gameObject = Object.Instantiate(Resources.Load("Mtree/Examples/2018_4 HDRP") as GameObject, base.transform); gameObject.name = "HDRP 2018.4+"; Debug.Log("HDRP 2018.4+ Scene loaded!"); } private void URPSetup() { } private void Start() { if (!Setup) { return; } foreach (Transform item in base.transform) { Object.DestroyImmediate(item.gameObject); } switch (Utils.GetCurrentPipeline()) { case "legacy": LegacySetup(); break; case "lwrp": LWRPSetup(); break; case "hdrp": HDRPSetup(); break; case "urp": URPSetup(); break; } PostProcessActive(); UpdateMaterials(); Setup = false; } private void UpdateMaterials() { BarkMaterials = new List(); LeafMaterials = new List(); MeshRenderer[] componentsInChildren = GameObject.Find("Trees").GetComponentsInChildren(); Floor = base.transform.GetComponent().sharedMaterial; MeshRenderer[] array = componentsInChildren; foreach (MeshRenderer meshRenderer in array) { Material[] sharedMaterials = meshRenderer.sharedMaterials; foreach (Material material in sharedMaterials) { if (material.shader.name.Contains("Leafs")) { LeafMaterials.Add(material); } if (material.shader.name.Contains("Bark")) { BarkMaterials.Add(material); } } } for (int k = 0; k < BarkMaterials.Count; k++) { BarkMaterials[k].shader = Utils.GetBarkShader(); } for (int l = 0; l < LeafMaterials.Count; l++) { LeafMaterials[l].shader = Utils.GetLeafShader(); } switch (Utils.GetCurrentPipeline()) { case "legacy": Floor.shader = Shader.Find("Standard"); break; case "lwrp": Floor.shader = Shader.Find("Lightweight Render Pipeline/Lit"); break; case "hdrp": Floor.shader = Shader.Find("HDRP/Lit"); break; case "urp": Floor.shader = Shader.Find("Universal Render Pipeline/Lit"); break; } } }