Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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;
        }