Exemplo n.º 1
0
        private void CacheNextEdgeAndCornerWithOffset(int i, MapElement xMin, MapElement xMax, Vector3 minOffset, Vector3 maxOffset, Vector2Int minPos, Vector2Int maxPos)
        {
            bool    hasMeshElement = (elementEvaluator.IsMeshElement(xMin) || elementEvaluator.IsMeshElement(xMax));
            Vector3 wposMin        = new Vector3(minPos.x, 0f, minPos.y);
            Vector3 wposMax        = new Vector3(maxPos.x, 0f, maxPos.y);

            if (hasMeshElement && !IsEqual(xMin, xMax))
            {
                if (Wall != null)
                {
                    vertHasWall.Add(vertices.Count, Wall.VertexCount);
                }
                rowCacheMax[i + 1] = vertices.Count;
                vertices.Add(ToEdgePosX(wposMin) + minOffset);
                if (Wall != null)
                {
                    Wall.CacheXEdge(WallIndex(i), ToEdgePosX(wposMin) + minOffset);
                }
            }
            if (xMax != null && elementEvaluator.IsMeshElement(xMax))
            {
                rowCacheMax[i + 2] = vertices.Count;
                vertices.Add(wposMax + maxOffset);
            }
        }
Exemplo n.º 2
0
 private void CacheFirstCorner(MapElement a, Vector2Int pos)
 {
     if (a != null && elementEvaluator.IsMeshElement(a))
     {
         if (Wall != null)
         {
             vertHasWall.Add(vertices.Count, Wall.VertexCount);
         }
         rowCacheMax[0] = vertices.Count;
         vertices.Add(new Vector3(pos.x, 0f, pos.y));
         if (Wall != null)
         {
             Wall.CacheXEdge(WallIndex(0), new Vector3(pos.x, 0f, pos.y));
         }
     }
 }