diff options
Diffstat (limited to '')
-rw-r--r-- | VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs | 107 | ||||
-rw-r--r-- | VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs.meta | 12 |
2 files changed, 119 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs b/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs new file mode 100644 index 00000000..be807fc3 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs @@ -0,0 +1,107 @@ +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +using System; +using System.Collections; +using System.Collections.Generic; + +[ExecuteInEditMode] +[DisallowMultipleComponent] +public class BakeryDirectLight : MonoBehaviour +{ + public Color color = Color.white; + public float intensity = 1.0f; + public float shadowSpread = 0.01f;//0.05f; + public int samples = 16; + //public uint bitmask = 1; + public int bitmask = 1; + public bool bakeToIndirect = false; + public bool shadowmask = false; + public bool shadowmaskDenoise = false; + public float indirectIntensity = 1.0f; + public Texture2D cloudShadow; + public float cloudShadowTilingX = 0.01f; + public float cloudShadowTilingY = 0.01f; + public float cloudShadowOffsetX, cloudShadowOffsetY; + + 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<BakerySkyLight>() != 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 = Color.yellow; + Gizmos.DrawSphere(transform.position, 0.1f); + + //Gizmos.DrawWireSphere(transform.position, 0.5f); + } + + void OnDrawGizmosSelected() + { + Gizmos.color = Color.yellow; + var endPoint = transform.position + transform.forward * 2; + Gizmos.DrawLine(transform.position, endPoint); + + //Gizmos.color = Color.blue; + Gizmos.DrawWireSphere(transform.position, 0.2f); + + Gizmos.DrawLine(endPoint, endPoint + (transform.position + transform.right - endPoint).normalized * 0.5f); + Gizmos.DrawLine(endPoint, endPoint + (transform.position - transform.right - endPoint).normalized * 0.5f); + Gizmos.DrawLine(endPoint, endPoint + (transform.position + transform.up - endPoint).normalized * 0.5f); + Gizmos.DrawLine(endPoint, endPoint + (transform.position - transform.up - endPoint).normalized * 0.5f); + } + +#endif +} + diff --git a/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs.meta b/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs.meta new file mode 100644 index 00000000..be67cf1e --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/BakeryDirectLight.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c74ce2158ae608549902afb4112fd042 +timeCreated: 1526382158 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |