From eb84bb298d2b95aec7b2ae12cbf25ac64f25379a Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 6 Nov 2022 15:12:42 -0500 Subject: move to self host --- .../examples/scripts/BakeryVolumeReceiver.cs | 48 +++++++++++++ .../examples/scripts/BakeryVolumeReceiver.cs.meta | 12 ++++ .../Bakery/examples/scripts/BakeryVolumeTrigger.cs | 78 ++++++++++++++++++++++ .../examples/scripts/BakeryVolumeTrigger.cs.meta | 12 ++++ .../Bakery/examples/scripts/VolumeTestScene2.cs | 52 +++++++++++++++ .../examples/scripts/VolumeTestScene2.cs.meta | 12 ++++ 6 files changed, 214 insertions(+) create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeReceiver.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeTrigger.cs create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeTrigger.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/VolumeTestScene2.cs create mode 100644 VRCSDK3Worlds/Assets/Bakery/examples/scripts/VolumeTestScene2.cs.meta (limited to 'VRCSDK3Worlds/Assets/Bakery/examples/scripts') 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() 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() as Renderer[]; + for(int i=0; i(); + mb = new MaterialPropertyBlock(); + if (vol.bakedTexture0 != null) + { + mb.SetTexture("_Volume0", vol.bakedTexture0); + mb.SetTexture("_Volume1", vol.bakedTexture1); + mb.SetTexture("_Volume2", vol.bakedTexture2); + if (vol.bakedTexture3 != null) mb.SetTexture("_Volume3", vol.bakedTexture3); + } + if (vol.bakedMask != null) mb.SetTexture("_VolumeMask", vol.bakedMask); + if (mVolumeMin == 0) mVolumeMin = Shader.PropertyToID("_VolumeMin"); + if (mVolumeInvSize == 0) mVolumeInvSize = Shader.PropertyToID("_VolumeInvSize"); + mb.SetVector(mVolumeMin, vol.GetMin()); + mb.SetVector(mVolumeInvSize, vol.GetInvSize()); + if (vol.supportRotationAfterBake) mb.SetMatrix("_VolumeMatrix", vol.GetMatrix()); + } + + // Apply MaterialPropertyBlock to renderers entering the trigger + void OnTriggerEnter(Collider c) + { + var rcv = c.GetComponent(); + if (rcv == null) return; + + Debug.Log(c.name + " entered " + this.name); + + rcv.enterCounter++; + rcv.movableTrigger = movable ? this : null; + rcv.SetPropertyBlock(mb); + } + + // Handle exiting the trigger + void OnTriggerExit(Collider c) + { + var rcv = c.GetComponent(); + if (rcv == null) return; + + Debug.Log(c.name + " exited " + this.name); + + // Only set empty property block, if the counter is 0 (= exited ALL volumes) + rcv.enterCounter--; + if (rcv.enterCounter == 0) rcv.SetPropertyBlock(mbEmpty); + } + + public void UpdateBounds() + { + vol.UpdateBounds(); + mb.SetVector(mVolumeMin, vol.GetMin()); + mb.SetVector(mVolumeInvSize, vol.GetInvSize()); + } +} diff --git a/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeTrigger.cs.meta b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeTrigger.cs.meta new file mode 100644 index 00000000..3261b37d --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/BakeryVolumeTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88131403915d92648ac25dbc4ffb0e1b +timeCreated: 1605889761 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Bakery/examples/scripts/VolumeTestScene2.cs b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/VolumeTestScene2.cs new file mode 100644 index 00000000..80d91b79 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/examples/scripts/VolumeTestScene2.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class VolumeTestScene2 : MonoBehaviour +{ + public Transform secondFloor; + public BakeryVolumeTrigger[] secondFloorVolumes; + public float secondFloorHeight; + public bool randomizeLastRoom; + public Transform baseRoom; + public Transform alternativeRoom; + + void SwapRooms() + { + var tmp = alternativeRoom.position; + alternativeRoom.position = baseRoom.position; + baseRoom.position = tmp; + } + + void UpdateRooms() + { + for(int i=0; i