/// <summary> /// Creates an isometric camera /// </summary> /// <param name="axis">Isometric axis</param> /// <param name="interest">Interest point</param> /// <param name="distance">Distance from viewer to interest point</param> /// <returns>Returns the new camera</returns> public static Camera CreateIsometric(IsometricAxis axis, Vector3 interest, float distance) { Camera cam = new Camera(); cam.SetIsometric(axis, interest, distance); return(cam); }
/// <summary> /// Sets camera to isometric mode /// </summary> /// <param name="axis">Isometrix axis</param> /// <param name="newInterest">Interest point</param> /// <param name="distance">Distance to interest point from viewer point</param> private void SetIsometric(IsometricAxis axis, Vector3 newInterest, float distance) { this.StopTranslations(); Vector3 tmpPosition = Vector3.Zero; if (axis == IsometricAxis.NW) { tmpPosition = new Vector3(1, 1, 1); this.isoMetricForward = new Vector3(-1f, 0f, -1f); this.isoMetricBackward = new Vector3(1f, 0f, 1f); this.isoMetricLeft = new Vector3(1f, 0f, -1f); this.isoMetricRight = new Vector3(-1f, 0f, 1f); } else if (axis == IsometricAxis.NE) { tmpPosition = new Vector3(-1, 1, 1); this.isoMetricForward = new Vector3(1f, 0f, -1f); this.isoMetricBackward = new Vector3(-1f, 0f, 1f); this.isoMetricLeft = new Vector3(1f, 0f, 1f); this.isoMetricRight = new Vector3(-1f, 0f, -1f); } else if (axis == IsometricAxis.SW) { tmpPosition = new Vector3(1, 1, -1); this.isoMetricForward = new Vector3(-1f, 0f, 1f); this.isoMetricBackward = new Vector3(1f, 0f, -1f); this.isoMetricLeft = new Vector3(-1f, 0f, -1f); this.isoMetricRight = new Vector3(1f, 0f, 1f); } else if (axis == IsometricAxis.SE) { tmpPosition = new Vector3(-1, 1, -1); this.isoMetricForward = new Vector3(1f, 0f, 1f); this.isoMetricBackward = new Vector3(-1f, 0f, -1f); this.isoMetricLeft = new Vector3(-1f, 0f, 1f); this.isoMetricRight = new Vector3(1f, 0f, -1f); } this.mode = CameraModes.FreeIsometric; this.isometricAxis = axis; this.Position = Vector3.Normalize(tmpPosition) * distance; this.Position += newInterest; this.Interest = newInterest; }