Exemplo n.º 1
0
 private void DestroyShadowVolumeCamera()
 {
     if (mainCam != null)
     {
         ShadowVolumeCamera svc = mainCam.GetComponent <ShadowVolumeCamera>();
         if (svc != null)
         {
             DestroyImmediate(svc);
         }
     }
 }
Exemplo n.º 2
0
 private void CreateShadowVolumeCamera()
 {
     if (mainCam != null)
     {
         ShadowVolumeCamera svc = mainCam.GetComponent <ShadowVolumeCamera>();
         if (svc == null)
         {
             mainCam.gameObject.AddComponent <ShadowVolumeCamera>();
         }
     }
 }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
0
    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
    }
Exemplo n.º 5
0
    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
    }
Exemplo n.º 6
0
    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
    }
Exemplo n.º 7
0
    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();
            }
        }
    }
Exemplo n.º 8
0
    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();
                }
            }
        }
    }
Exemplo n.º 9
0
    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();
            }
        }
    }
Exemplo n.º 10
0
 private void ShadowVolumeCameraDraw()
 {
     ShadowVolumeCamera.DrawAllCameras_Editor();
 }