Пример #1
0
        public int NextAxialIndex(int axialIndex, AxialDirection dir)
        {
            switch (dir)
            {
            case AxialDirection.Right:
                axialIndex++;
                break;

            default:
                axialIndex--;
                if (axialIndex < 0)
                {
                    axialIndex = AxialDirectionsCount - 1;
                }
                break;
            }

            axialIndex %= AxialDirectionsCount;

            return(axialIndex);
        }
Пример #2
0
    private static void AddTileToLevel(LevelEnvironmentData data, TileData tile, Vector3 worldPosition, byte bitmask)
    {
        int verticeCount = data.Vertices.Count;

        TileMeshData meshData = tile.Brush.GetMeshData(bitmask);

        // Vertices.
        foreach (Vector3 vertex in meshData.Vertices)
        {
            data.Vertices.Add(Utility.ScaleToHexagonalSize(vertex) + worldPosition);
        }

        // Triangles.
        int[][] rawTriangles = meshData.Triangles;
        for (int i = 0; i < rawTriangles.Length; i++)
        {
            int[] trianglesToSet = new int[rawTriangles[i].Length];

            // Offset the triangles
            for (int w = 0; w < rawTriangles[i].Length; w++)
            {
                trianglesToSet[w] = rawTriangles[i][w] + verticeCount;
            }

            data.SetTriangles(tile.BrushMaterials[i], trianglesToSet);
        }

        // UVs.
        foreach (Vector2 uv in meshData.UVs)
        {
            data.UVs.Add(uv);
        }

        // Edges.
        if (!AxialDirection.ContainsDirection(bitmask, AxialDirection.DownLeft) || !AxialDirection.ContainsDirection(bitmask, AxialDirection.DownRight))
        {
            EdgeBuilder.Build(data, tile, worldPosition, bitmask);
        }
    }
 private static float GetMovementCost(Node current, AxialDirection direction)
 {
     return(direction.Magnitude);
 }
Пример #4
0
        public Vector2Int NextAxial(int axialIndex, AxialDirection dir)
        {
            int nextIndex = NextAxialIndex(axialIndex, dir);

            return(NeighborAxialLocs[nextIndex]);
        }
Пример #5
0
 public static ref readonly Vector3 GetDirectionVector(this AxialDirection axialDirection)
 {
     return(ref DirectionVectors[(int)axialDirection]);