UnityEditor.CameraEditor.GetFrustum C# (CSharp) Method

GetFrustum() private static method

private static GetFrustum ( Camera camera, Vector3 near, Vector3 far, float &frustumAspect ) : bool
camera UnityEngine.Camera
near Vector3
far Vector3
frustumAspect float
return bool
        private static bool GetFrustum(Camera camera, Vector3[] near, Vector3[] far, out float frustumAspect)
        {
            frustumAspect = GetFrustumAspectRatio(camera);
            if (frustumAspect < 0f)
            {
                return false;
            }
            if (far != null)
            {
                far[0] = new Vector3(0f, 0f, camera.farClipPlane);
                far[1] = new Vector3(0f, 1f, camera.farClipPlane);
                far[2] = new Vector3(1f, 1f, camera.farClipPlane);
                far[3] = new Vector3(1f, 0f, camera.farClipPlane);
                for (int i = 0; i < 4; i++)
                {
                    far[i] = camera.ViewportToWorldPoint(far[i]);
                }
            }
            if (near != null)
            {
                near[0] = new Vector3(0f, 0f, camera.nearClipPlane);
                near[1] = new Vector3(0f, 1f, camera.nearClipPlane);
                near[2] = new Vector3(1f, 1f, camera.nearClipPlane);
                near[3] = new Vector3(1f, 0f, camera.nearClipPlane);
                for (int j = 0; j < 4; j++)
                {
                    near[j] = camera.ViewportToWorldPoint(near[j]);
                }
            }
            return true;
        }

Usage Example

示例#1
0
        public void OnSceneGUI()
        {
            Camera camera = (Camera)base.target;

            if (CameraEditor.IsViewPortRectValidToRender(camera.rect))
            {
                SceneViewOverlay.Window(new GUIContent("Camera Preview"), new SceneViewOverlay.WindowFunction(this.OnOverlayGUI), -100, base.target, SceneViewOverlay.WindowDisplayOption.OneWindowPerTarget);
                Color color  = Handles.color;
                Color color2 = CameraEditor.kGizmoCamera;
                color2.a     *= 2f;
                Handles.color = color2;
                Vector3[] array = new Vector3[4];
                float     num;
                if (CameraEditor.GetFrustum(camera, null, array, out num))
                {
                    Vector3 vector  = array[0];
                    Vector3 vector2 = array[1];
                    Vector3 vector3 = array[2];
                    Vector3 vector4 = array[3];
                    bool    changed = GUI.changed;
                    Vector3 vector5 = Vector3.Lerp(vector, vector3, 0.5f);
                    float   num2    = -1f;
                    Vector3 a       = CameraEditor.MidPointPositionSlider(vector2, vector3, camera.transform.up);
                    if (!GUI.changed)
                    {
                        a = CameraEditor.MidPointPositionSlider(vector, vector4, -camera.transform.up);
                    }
                    if (GUI.changed)
                    {
                        num2 = (a - vector5).magnitude;
                    }
                    GUI.changed = false;
                    a           = CameraEditor.MidPointPositionSlider(vector4, vector3, camera.transform.right);
                    if (!GUI.changed)
                    {
                        a = CameraEditor.MidPointPositionSlider(vector, vector2, -camera.transform.right);
                    }
                    if (GUI.changed)
                    {
                        num2 = (a - vector5).magnitude / num;
                    }
                    if (num2 >= 0f)
                    {
                        Undo.RecordObject(camera, "Adjust Camera");
                        if (camera.orthographic)
                        {
                            camera.orthographicSize = num2;
                        }
                        else
                        {
                            Vector3 a2 = vector5 + camera.transform.up * num2;
                            camera.fieldOfView = Vector3.Angle(camera.transform.forward, a2 - camera.transform.position) * 2f;
                        }
                        changed = true;
                    }
                    GUI.changed   = changed;
                    Handles.color = color;
                }
            }
        }
All Usage Examples Of UnityEditor.CameraEditor::GetFrustum