Beispiel #1
0
        static void DrawGizmoForAuraCamera(AuraCamera component, GizmoType gizmoType)
        {
            bool isFaded = (int)gizmoType == (int)GizmoType.NonSelected || (int)gizmoType == (int)GizmoType.NotInSelectionHierarchy || (int)gizmoType == (int)GizmoType.NonSelected + (int)GizmoType.NotInSelectionHierarchy;

            if (isFaded && !AuraEditorPrefs.DisplayGizmosWhenUnselected || !isFaded && !AuraEditorPrefs.DisplayGizmosWhenSelected)
            {
                return;
            }

            float opacity = isFaded ? 0.5f : 1.0f;

            Camera    camera = component.GetComponent <Camera>();
            Matrix4x4 tmp    = Gizmos.matrix;

            Gizmos.matrix = camera.transform.localToWorldMatrix;
            Gizmos.color  = CustomGizmo.color * new Color(1.0f, 1.0f, 1.0f, opacity);
            Gizmos.DrawFrustum(Vector3.zero, camera.fieldOfView, component.frustumSettings.qualitySettings.farClipPlaneDistance, 0, camera.aspect);
            Gizmos.matrix = tmp;

            if (!isFaded && AuraEditorPrefs.DisplayCameraSlicesInEdition)
            {
                for (int i = 1; i < component.frustumSettings.qualitySettings.frustumGridResolution.z; ++i)
                {
                    float sliceRatio = (float)i / component.frustumSettings.qualitySettings.frustumGridResolution.z;
                    sliceRatio = 1.0f - Mathf.Pow(1.0f - sliceRatio, component.frustumSettings.qualitySettings.depthBiasCoefficient);
                    float     distance    = sliceRatio * component.frustumSettings.qualitySettings.farClipPlaneDistance;
                    Vector2   frustumSize = camera.GetFrustumSizeAtDistance(distance);
                    Matrix4x4 matrix      = Matrix4x4.TRS(component.transform.position + component.transform.forward * distance, component.transform.rotation * Quaternion.Euler(90, 0, 0), new Vector3(frustumSize.x, 1, frustumSize.y));
                    CustomGizmo.DrawSquare(matrix, CustomGizmo.color * new Color(1.0f, 1.0f, 1.0f, 0.5f), CustomGizmo.pixelWidth);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Draws a "Layer" gizmo
        /// </summary>
        /// <param name="component">The target component</param>
        /// <param name="alpha">The base opacity</param>
        private static void DrawLayer(AuraVolume component, float alpha)
        {
            Color color = CustomGizmo.color;

            color.a *= alpha;

            int count = 15;

            for (int i = 0; i < count; ++i)
            {
                float ratio       = 1.0f - ((float)i / (float)count);
                float scaleFactor = 1.0f; // Mathf.Lerp(0.5f, 10.0f, ratio);
                //ratio = 1 - Mathf.Pow(ratio, component.volumeShape.fading.falloffExponent);
                CustomGizmo.DrawSquare(component.transform.localToWorldMatrix, Matrix4x4.TRS(Vector3.up * ratio, Quaternion.identity, Vector3.one * scaleFactor), color, CustomGizmo.pixelWidth);
            }
        }