private void UpdateGridMode() { Vector3 forward = camera.SceneObject.Forward; if (camera.ProjectionType == ProjectionType.Perspective) sceneGrid.SetMode(GridMode.Perspective); else { float dotX = Vector3.Dot(forward, Vector3.XAxis); if (dotX >= 0.95f) sceneGrid.SetMode(GridMode.OrthoX); else if (dotX <= -0.95f) sceneGrid.SetMode(GridMode.OrthoNegX); else { float dotY = Vector3.Dot(forward, Vector3.YAxis); if (dotY >= 0.95f) sceneGrid.SetMode(GridMode.OrthoY); else if (dotY <= -0.95f) sceneGrid.SetMode(GridMode.OrthoNegY); else { float dotZ = Vector3.Dot(forward, Vector3.ZAxis); if (dotZ >= 0.95f) sceneGrid.SetMode(GridMode.OrthoZ); else if (dotZ <= -0.95f) sceneGrid.SetMode(GridMode.OrthoNegZ); else sceneGrid.SetMode(GridMode.Perspective); } } } }