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/BakerySkyLight.cs | |
download | unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2 unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip |
move to self host
Diffstat (limited to 'VRCSDK3Worlds/Assets/Bakery/BakerySkyLight.cs')
-rw-r--r-- | VRCSDK3Worlds/Assets/Bakery/BakerySkyLight.cs | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Bakery/BakerySkyLight.cs b/VRCSDK3Worlds/Assets/Bakery/BakerySkyLight.cs new file mode 100644 index 00000000..fddd6cbb --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/BakerySkyLight.cs @@ -0,0 +1,120 @@ +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +using System; +using System.Collections; +using System.Collections.Generic; + +[ExecuteInEditMode] +[DisallowMultipleComponent] +public class BakerySkyLight : MonoBehaviour +{ + public string texName = "sky.dds"; + public Color color = Color.white; + public float intensity = 1.0f; + public int samples = 32; + public bool hemispherical = false; + public int bitmask = 1; + public bool bakeToIndirect = true; + public float indirectIntensity = 1.0f; + public bool tangentSH = false; + public bool correctRotation = false; + + public Cubemap cubemap; + + public int UID; + + public static int lightsChanged = 0; // 1 = const, 2 = full + +#if UNITY_EDITOR + void OnValidate() + { + if (lightsChanged == 0) lightsChanged = 1; + } + void OnEnable() + { + lightsChanged = 2; + } + void OnDisable() + { + lightsChanged = 2; + } + + public void Start() + { + if (gameObject.GetComponent<BakeryDirectLight>() != null || + gameObject.GetComponent<BakeryPointLight>() != null || + gameObject.GetComponent<BakeryLightMesh>() != null) + { + EditorUtility.DisplayDialog("Bakery", "Can't have more than one Bakery light on one object", "OK"); + DestroyImmediate(this); + return; + } + + if (EditorApplication.isPlayingOrWillChangePlaymode) return; + if (UID == 0) UID = Guid.NewGuid().GetHashCode(); + ftUniqueIDRegistry.Register(UID, gameObject.GetInstanceID()); + } + + void OnDestroy() + { + if (UID == 0) return; + if (EditorApplication.isPlayingOrWillChangePlaymode) return; + ftUniqueIDRegistry.Deregister(UID); + } + + void Update() + { + if (EditorApplication.isPlayingOrWillChangePlaymode) return; + if (!ftUniqueIDRegistry.Mapping.ContainsKey(UID)) ftUniqueIDRegistry.Register(UID, gameObject.GetInstanceID()); + if (gameObject.GetInstanceID() != ftUniqueIDRegistry.GetInstanceId(UID)) + { + UID = Guid.NewGuid().GetHashCode(); + ftUniqueIDRegistry.Register(UID, gameObject.GetInstanceID()); + } + } + + void OnDrawGizmos() + { + Gizmos.color = new Color(49/255.0f, 91/255.0f, 191/255.0f); + Gizmos.DrawSphere(transform.position, 0.1f); + } + + void OnDrawGizmosSelected() + { + Gizmos.color = new Color(49/255.0f, 91/255.0f, 191/255.0f); + Vector3 origin = transform.position; + const int segments = 16; + for(int i=0; i<segments; i++) + { + float p1 = i / (float)segments; + float p2 = (i+1) / (float)segments; + + float x1 = Mathf.Cos(p1 * Mathf.PI*2); + float y1 = Mathf.Sin(p1 * Mathf.PI*2); + + float x2 = Mathf.Cos(p2 * Mathf.PI*2); + float y2 = Mathf.Sin(p2 * Mathf.PI*2); + + Gizmos.DrawLine(origin + new Vector3(x1,0,y1), origin + new Vector3(x2,0,y2)); + + if (hemispherical) + { + x1 = Mathf.Cos(p1 * Mathf.PI); + y1 = Mathf.Sin(p1 * Mathf.PI); + + x2 = Mathf.Cos(p2 * Mathf.PI); + y2 = Mathf.Sin(p2 * Mathf.PI); + } + + Gizmos.DrawLine(origin + new Vector3(x1,y1,0), origin + new Vector3(x2,y2,0)); + Gizmos.DrawLine(origin + new Vector3(0,y1,x1), origin + new Vector3(0,y2,x2)); + } + } + +#endif +} + |