ClientServer/Client/Assets/Scripts/Util/ToggleDynamicOcclusion.cs

31 lines
1.1 KiB
C#
Raw Normal View History

2025-09-06 17:17:39 +04:00
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
}