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); } } }
/// <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); } }