using UnityEngine; using NaughtyAttributes; public class ToggleDynamicOcclusion : MonoBehaviour { #if UNITY_EDITOR [InfoBox("This script handles Enabling / Disabling \n " + "the dynamic occlusion checkbox on the Renderer component of each object within this relationship. \n\n" + "If you are baking an occlusion map. please make sure you disable FOG and 'PlayerBlockers' and 'MapBoundry' gameObjects.", InfoBoxType.Normal)] [SerializeField][ReadOnly] private string _; [Button("Enable Dynamic Occlusion")] private void EnableOcclusion() => TurnOffDynamicOcclusion(gameObject, true); [Button("Disable Dynamic Occlusion")] private void DisableOcclusion() => TurnOffDynamicOcclusion(gameObject, false); private void TurnOffDynamicOcclusion(GameObject obj, bool enabled) { if (obj == null) { return; } if (obj.transform.TryGetComponent(out Renderer rend)) { rend.allowOcclusionWhenDynamic = enabled; } foreach (Transform child in obj.transform) { TurnOffDynamicOcclusion(child.gameObject, enabled); } } #endif }