diff options
author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
---|---|---|
committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
commit | eb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch) | |
tree | efd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs | |
download | unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2 unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip |
move to self host
Diffstat (limited to 'VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs')
-rw-r--r-- | VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs new file mode 100644 index 00000000..5ba2fb51 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +// Example script, a counterpart to BakeryVolumeTrigger.cs (see that script for more info) +// +public class BakeryVolumeReceiver : MonoBehaviour +{ + public bool forceUsage = false; + + // used by triggers + internal int enterCounter = 0; + internal BakeryVolumeTrigger movableTrigger = null; + + Renderer[] renderers; + MaterialPropertyBlock current; + + // Cache renderers affected by volumes + void Awake() + { + if (renderers == null) renderers = GetComponentsInChildren<Renderer>() as Renderer[]; + if (forceUsage) + { + // HDRP can sometimes (?) fail to use globally set volumes when SRP batching is enabled, so disable it for this object. + SetPropertyBlock(new MaterialPropertyBlock()); + } + } + + // Called by triggers + public void SetPropertyBlock(MaterialPropertyBlock mb) + { + if (renderers == null) renderers = GetComponentsInChildren<Renderer>() as Renderer[]; + for(int i=0; i<renderers.Length; i++) + { + renderers[i].SetPropertyBlock(mb); + } + current = mb; + } + + // Update shader properties here if the volume is moving + void LateUpdate() + { + if (movableTrigger == null) return; + + movableTrigger.UpdateBounds(); + SetPropertyBlock(current); + } +} |