void DrawSceneGrid(SceneView view) { var currentEvent = Event.current; if (m_DrawGrid && (currentEvent.type == EventType.Repaint || m_DoGridRepaint)) { Vector3 previousPivot = m_Pivot; CalculateGridPlacement(view); if (gridIsOrthographic) { Axis camAxis = EnumExtension.AxisWithVector(Camera.current.transform.TransformDirection(Vector3.forward).normalized); if (m_RenderPlane != camAxis) { SetRenderPlane(camAxis); } GridRenderer.DrawOrthographic(view.camera, camAxis, SnapValueInUnityUnits, m_DrawAngles ? AngleValue : -1f); } else { float camDistance = Vector3.Distance(view.camera.transform.position, previousPivot); if (m_DoGridRepaint || m_Pivot != previousPivot || Mathf.Abs(camDistance - m_LastDistanceCameraToPivot) > m_LastDistanceCameraToPivot / 2 || m_CameraDirection != m_PreviousCameraDirection) { m_PreviousCameraDirection = m_CameraDirection; m_DoGridRepaint = false; m_LastDistanceCameraToPivot = camDistance; if (FullGridEnabled) { GridRenderer.SetPerspective3D(view.camera, m_Pivot, m_SnapSettings.SnapValueInUnityUnits()); } else { m_PlaneGridDrawDistance = GridRenderer.SetPerspective(view.camera, m_RenderPlane, m_SnapSettings.SnapValueInUnityUnits(), m_Pivot, GridRenderOffset); } } GridRenderer.Repaint(); } } }
internal static float SetPerspective(Camera cam, Axis axis, float snapValue, Vector3 position, float offset) { if ((axis & Axis.X) == Axis.X) { return(GridRenderer.SetPerspective(cam, position + Vector3.right * offset, Vector3.up, Vector3.forward, snapValue, gridColorX)); } if ((axis & Axis.Y) == Axis.Y) { return(GridRenderer.SetPerspective(cam, position + Vector3.up * offset, Vector3.right, Vector3.forward, snapValue, gridColorY)); } if ((axis & Axis.Z) == Axis.Z) { return(GridRenderer.SetPerspective(cam, position + Vector3.forward * offset, Vector3.up, Vector3.right, snapValue, gridColorZ)); } return(0f); }