private void DestroyShadowVolumeCamera() { if (mainCam != null) { ShadowVolumeCamera svc = mainCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { DestroyImmediate(svc); } } }
private void CreateShadowVolumeCamera() { if (mainCam != null) { ShadowVolumeCamera svc = mainCam.GetComponent <ShadowVolumeCamera>(); if (svc == null) { mainCam.gameObject.AddComponent <ShadowVolumeCamera>(); } } }
private static void SyncShadowVolumeCamera(ShadowVolumeCamera source, ShadowVolumeCamera destination) { if (source == null || destination == null) { return; } destination.shadowColor = source.shadowColor; destination.isTwoSideStencil = source.isTwoSideStencil; destination.isRenderTextureComposite = source.isRenderTextureComposite; destination.anti_aliasing = source.anti_aliasing; destination.shadowDistance = source.shadowDistance; destination.shadowDistanceFade = source.shadowDistanceFade; destination.shadowDistanceFadeLength = source.shadowDistanceFadeLength; }
private void SetSceneViewCamsEnabled(bool enabled) { #if UNITY_EDITOR if (IsSceneViewCamera()) { return; } Camera[] sceneViewCams = SceneView.GetAllSceneCameras(); foreach (var sceneViewCam in sceneViewCams) { ShadowVolumeCamera svc = sceneViewCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { svc.enabled = enabled; } } #endif }
private void DestroySceneViewCameras() { #if UNITY_EDITOR if (IsSceneViewCamera()) { return; } Camera[] sceneViewCams = SceneView.GetAllSceneCameras(); foreach (var sceneViewCam in sceneViewCams) { ShadowVolumeCamera svc = sceneViewCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { DestroyImmediate(svc); } } #endif }
private void SetupSceneViewCameras() { #if UNITY_EDITOR if (IsSceneViewCamera()) { return; } Camera[] sceneViewCams = SceneView.GetAllSceneCameras(); foreach (var sceneViewCam in sceneViewCams) { ShadowVolumeCamera svc = sceneViewCam.GetComponent <ShadowVolumeCamera>(); if (svc == null) { svc = sceneViewCam.gameObject.AddComponent <ShadowVolumeCamera>(); } SyncShadowVolumeCamera(this, svc); } #endif }
public static void DrawAllCameras_Editor() { ShadowVolumeCamera asvc = null; ShadowVolumeCamera[] svcs = FindObjectsOfType <ShadowVolumeCamera>(); foreach (var svc in svcs) { svc.Update(); svc.UpdateCommandBuffers(); asvc = svc; } Camera[] sceneViewCams = SceneView.GetAllSceneCameras(); foreach (var sceneViewCam in sceneViewCams) { ShadowVolumeCamera svc = sceneViewCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { SyncShadowVolumeCamera(asvc, svc); svc.Update(); svc.UpdateCommandBuffers(); } } }
private void ImageEffectsChecking() { if (imageEffects == null) { return; } // Delete destroied ImageEffects int numEffects = imageEffects.Count; for (int i = 0; i < numEffects; ++i) { if (imageEffects[i].mono == null) { imageEffects.RemoveAt(i); --i; --numEffects; } } // Add new ImageEffects if (Selection.activeGameObject == gameObject) { CollectImageEffects(); Camera[] sceneViewCams = SceneView.GetAllSceneCameras(); foreach (var sceneViewCam in sceneViewCams) { ShadowVolumeCamera svc = sceneViewCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { svc.CollectImageEffectsDelay_Editor(); } } } }
private void OnGUI_Settings() { if (mainCam != null) { ShadowVolumeCamera svc = mainCam.GetComponent <ShadowVolumeCamera>(); if (svc != null) { BeginBox(); { // Shadow Color EditorGUI.BeginChangeCheck(); svc.shadowColor = EditorGUILayout.ColorField("Shadow Color", svc.shadowColor); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } // Two-Side Stencil EditorGUI.BeginChangeCheck(); svc.isTwoSideStencil = EditorGUILayout.Toggle("Two-Side Stencil", svc.isTwoSideStencil); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } // RenderTexture Composite EditorGUI.BeginChangeCheck(); svc.isRenderTextureComposite = EditorGUILayout.Toggle("RT Composite", svc.isRenderTextureComposite); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } // anti-aliasing EditorGUI.BeginChangeCheck(); svc.anti_aliasing = EditorGUILayout.Toggle("Anti-Aliasing", svc.anti_aliasing); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } // Lock Root EditorGUI.BeginChangeCheck(); Transform root = GetRoot(); bool svvb = root.gameObject.hideFlags == HideFlags.None; svvb = !EditorGUILayout.Toggle("Lock Root", !svvb); if (EditorGUI.EndChangeCheck()) { Selection.activeGameObject = null; root.gameObject.hideFlags = svvb ? HideFlags.None : HideFlags.HideInHierarchy | HideFlags.HideInInspector; MarkSceneAsDirty(); } BeginBox(); { // Shadow Distance EditorGUI.BeginChangeCheck(); svc.shadowDistance = Mathf.Max(EditorGUILayout.FloatField("Shadow Distance", svc.shadowDistance), 0.0f); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } // Shadow Distance Fade if (svc.IsShadowDistanceEnabled() && svc.isRenderTextureComposite) { EditorGUI.BeginChangeCheck(); svc.shadowDistanceFade = EditorGUILayout.Toggle("Fade", svc.shadowDistanceFade); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } EditorGUI.BeginChangeCheck(); svc.shadowDistanceFadeLength = Mathf.Min(Mathf.Max(EditorGUILayout.FloatField("Fade Length", svc.shadowDistanceFadeLength), 0.1f), svc.shadowDistance); if (EditorGUI.EndChangeCheck()) { ShadowVolumeCamera.DrawAllCameras_Editor(); RefreshSceneViews(); MarkSceneAsDirty(); } } } EndBox(); } EndBox(); } } }
private void ShadowVolumeCameraDraw() { ShadowVolumeCamera.DrawAllCameras_Editor(); }