using UnityEngine; using UnityEngine.Rendering; namespace NatureManufacture.RAM { public static class LodSystemGenerator { public static void GenerateLodSystem(GameObject go, Material meshMaterial, MeshFilter meshFilter, bool receiveShadows, ShadowCastingMode shadowCastingMode, bool generateLodGPU, Vector4 lodDistance, float lodRefreshTime) { GameObject gameObject = new GameObject(go.name + "- MeshPartLOD_" + (generateLodGPU ? "GPU" : "CPU")); gameObject.transform.SetParent(go.transform, worldPositionStays: false); gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localEulerAngles = Vector3.zero; gameObject.transform.localScale = Vector3.one; gameObject.AddComponent(); MeshRenderer meshRenderer = gameObject.AddComponent(); meshRenderer.sharedMaterial = meshMaterial; meshRenderer.receiveShadows = receiveShadows; meshRenderer.shadowCastingMode = shadowCastingMode; gameObject.SetActive(value: false); if (generateLodGPU) { GPULodManager gPULodManager = gameObject.AddComponent(); gPULodManager.SourceMeshFilter = meshFilter; gPULodManager.LODDistance = lodDistance; gPULodManager.RefreshTime = lodRefreshTime; } else { LodManager lodManager = gameObject.AddComponent(); lodManager.SourceMeshFilter = meshFilter; lodManager.LODDistance = lodDistance; lodManager.RefreshTime = lodRefreshTime; } gameObject.SetActive(value: true); } } }