summaryrefslogtreecommitdiff
path: root/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
committertylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
commiteb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch)
treeefd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs
downloadunityprojects-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.cs48
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);
+ }
+}