/// <summary> /// Return a vector with de orientation to move in the diagonal requiered indepent of the orientation of the level /// </summary> /// <param name="newDirection"></param> /// <returns></returns> Vector3 GetRampVectorDirector(Directions newDirection) { CameraMovement.Axes lateral = CameraMovement.Lateral; CameraMovement.Axes dLeft = CameraMovement.DiagonalLeft; CameraMovement.Axes dRight = CameraMovement.DiagonalRight; Vector3 newDirector = new Vector3(0, 0, 0); int xAdded = 0; int yAdded = 0; int zAdded = 0; switch (newDirection) { case Directions.leftUp: if (dRight == CameraMovement.Axes.xPos) { newDirector = new Vector3(1, 0, 0); } else if (dRight == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, 1, 0); } else if (dRight == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, 1); } else if (dRight == CameraMovement.Axes.xNeg) { newDirector = new Vector3(-1, 0, 0); } else if (dRight == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, -1, 0); } else if (dRight == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, -1); } break; case Directions.leftDown: if (dRight == CameraMovement.Axes.xPos) { newDirector = new Vector3(-1, 0, 0); } else if (dRight == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, -1, 0); } else if (dRight == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, -1); } else if (dRight == CameraMovement.Axes.xNeg) { newDirector = new Vector3(1, 0, 0); } else if (dRight == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, 1, 0); } else if (dRight == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, 1); } break; case Directions.rightUp: if (dLeft == CameraMovement.Axes.xPos) { newDirector = new Vector3(1, 0, 0); } else if (dLeft == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, 1, 0); } else if (dLeft == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, 1); } else if (dLeft == CameraMovement.Axes.xNeg) { newDirector = new Vector3(-1, 0, 0); } else if (dLeft == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, -1, 0); } else if (dLeft == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, -1); } break; case Directions.rightDown: if (dLeft == CameraMovement.Axes.xPos) { newDirector = new Vector3(-1, 0, 0); } else if (dLeft == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, -1, 0); } else if (dLeft == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, -1); } else if (dLeft == CameraMovement.Axes.xNeg) { newDirector = new Vector3(1, 0, 0); } else if (dLeft == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, 1, 0); } else if (dLeft == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, 1); } break; } switch (lateral) { case CameraMovement.Axes.xPos: xAdded = 1; break; case CameraMovement.Axes.xNeg: xAdded = -1; break; case CameraMovement.Axes.yPos: yAdded = 1; break; case CameraMovement.Axes.yNeg: yAdded = -1; break; case CameraMovement.Axes.zPos: zAdded = 1; break; case CameraMovement.Axes.zNeg: zAdded = -1; break; } newDirector = new Vector3(newDirector.x + xAdded, newDirector.y + yAdded, newDirector.z + zAdded); return(newDirector); }
/// <summary> /// Return a vector with de orientation to move in the diagonal requiered indepent of the orientation of the level /// </summary> /// <param name="newDirection"></param> /// <returns></returns> Vector3 GetVectorDirector(Directions newDirection) { CameraMovement.Axes lateral = CameraMovement.Lateral; CameraMovement.Axes dLeft = CameraMovement.DiagonalLeft; CameraMovement.Axes dRight = CameraMovement.DiagonalRight; Vector3 newDirector = new Vector3(0, 0, 0); switch (newDirection) { case Directions.leftUp: if (dRight == CameraMovement.Axes.xPos) { newDirector = new Vector3(1, 0, 0); } else if (dRight == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, 1, 0); } else if (dRight == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, 1); } else if (dRight == CameraMovement.Axes.xNeg) { newDirector = new Vector3(-1, 0, 0); } else if (dRight == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, -1, 0); } else if (dRight == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, -1); } break; case Directions.leftDown: if (dRight == CameraMovement.Axes.xPos) { newDirector = new Vector3(-1, 0, 0); } else if (dRight == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, -1, 0); } else if (dRight == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, -1); } else if (dRight == CameraMovement.Axes.xNeg) { newDirector = new Vector3(1, 0, 0); } else if (dRight == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, 1, 0); } else if (dRight == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, 1); } break; case Directions.rightUp: if (dLeft == CameraMovement.Axes.xPos) { newDirector = new Vector3(1, 0, 0); } else if (dLeft == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, 1, 0); } else if (dLeft == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, 1); } else if (dLeft == CameraMovement.Axes.xNeg) { newDirector = new Vector3(-1, 0, 0); } else if (dLeft == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, -1, 0); } else if (dLeft == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, -1); } break; case Directions.rightDown: if (dLeft == CameraMovement.Axes.xPos) { newDirector = new Vector3(-1, 0, 0); } else if (dLeft == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, -1, 0); } else if (dLeft == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, -1); } else if (dLeft == CameraMovement.Axes.xNeg) { newDirector = new Vector3(1, 0, 0); } else if (dLeft == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, 1, 0); } else if (dLeft == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, 1); } break; case Directions.up: if (lateral == CameraMovement.Axes.xPos) { newDirector = new Vector3(1, 0, 0); } else if (lateral == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, 1, 0); } else if (lateral == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, 1); } else if (lateral == CameraMovement.Axes.xNeg) { newDirector = new Vector3(-1, 0, 0); } else if (lateral == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, -1, 0); } else if (lateral == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, -1); } break; case Directions.down: if (lateral == CameraMovement.Axes.xPos) { newDirector = new Vector3(-1, 0, 0); } else if (lateral == CameraMovement.Axes.yPos) { newDirector = new Vector3(0, -1, 0); } else if (lateral == CameraMovement.Axes.zPos) { newDirector = new Vector3(0, 0, -1); } else if (lateral == CameraMovement.Axes.xNeg) { newDirector = new Vector3(1, 0, 0); } else if (lateral == CameraMovement.Axes.yNeg) { newDirector = new Vector3(0, 1, 0); } else if (lateral == CameraMovement.Axes.zNeg) { newDirector = new Vector3(0, 0, 1); } break; } return(newDirector); }