public static void ChangeWalkOnPlane(this ICubeWalker walker, Vector3 movementDirection) { Vector3 tilePosition = GridSystem.System.GetGridCoords(walker.transform.position + movementDirection.normalized * GridSystem.System.GridUnitSize, false); int count = GridSystem.System.Count - 1; if (tilePosition.x > count) { walker.CurrentWalkOnSide = CubeSide.right; } else if (tilePosition.x < 0) { walker.CurrentWalkOnSide = CubeSide.left; } else if (tilePosition.y > count) { walker.CurrentWalkOnSide = CubeSide.top; } else if (tilePosition.y < 0) { walker.CurrentWalkOnSide = CubeSide.bottom; } else if (tilePosition.z > count) { walker.CurrentWalkOnSide = CubeSide.front; } else if (tilePosition.z < 0) { walker.CurrentWalkOnSide = CubeSide.back; } }
public static Vector3 GetGridPosition(this ICubeWalker walker) { try { return(GridSystem.System.ToGridPosition(GridSystem.System.ToGridTilePosition(walker.transform.position, walker.CurrentWalkOnSide))); } catch { return(walker.GetGridPosition()); } }
public static Vector3 GetWalkOnPlaneNormal(this ICubeWalker walker) { return(GridSystem.System.GetPlaneNormal(walker.CurrentWalkOnSide)); }