Esempio n. 1
0
 public static JobHandle ScheduleCalculateVerticesJob(Data data, Info info, bool useHeightData, float cellSize, NativeArray <TopCellInfo> infoArray, NativeList <float3> vertices, JobHandle lastHandle)
 {
     if (useHeightData)
     {
         if (info.LerpToExactEdge == 1f)
         {
             var vertexCalculator = new BasicHeightVertexCalculator()
             {
                 colNum = data.ColNum, cellSize = cellSize, heightOffset = info.OffsetY, heights = data.HeightsRawData, heightScale = info.HeightScale
             };
             return(ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle));
         }
         else
         {
             var vertexCalculator = new LerpedHeightVertexCalculator()
             {
                 colNum = data.ColNum, cellSize = cellSize, lerpToEdge = info.LerpToExactEdge, heightOffset = info.OffsetY, heights = data.HeightsRawData, heightScale = info.HeightScale
             };
             return(ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle));
         }
     }
     else
     {
         if (info.LerpToExactEdge == 1f)
         {
             var vertexCalculator = new BasicVertexCalculator()
             {
                 colNum = data.ColNum, cellSize = cellSize, heightOffset = info.OffsetY
             };
             return(ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle));
         }
         else
         {
             var vertexCalculator = new LerpedVertexCalculator()
             {
                 colNum = data.ColNum, cellSize = cellSize, lerpToEdge = info.LerpToExactEdge, heightOffset = info.OffsetY
             };
             return(ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle));
         }
     }
 }
Esempio n. 2
0
        private static IVertexCalculator SelectVertexCalculator(Data data, bool useHeightData, float heightOffset, float heightScale, float lerpToEdge, float cellSize, float sideOffset, NativeArray <EdgeNormals> edgeNormals)
        {
            IVertexCalculator selected;

            if (sideOffset > 0)
            {
                if (useHeightData)
                {
                    if (lerpToEdge == 1f)
                    {
                        selected = new ScaledBasicHeightVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, heightOffset = heightOffset, heights = data.HeightsRawData, heightScale = heightScale, sideOffsetScale = sideOffset, edgeNormalsArray = edgeNormals
                        };
                    }
                    else
                    {
                        selected = new ScaledLerpedHeightVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, lerpToEdge = lerpToEdge, heightOffset = heightOffset, heights = data.HeightsRawData, heightScale = heightScale, sideOffsetScale = sideOffset, edgeNormalsArray = edgeNormals
                        };
                    }
                }
                else
                {
                    if (lerpToEdge == 1f)
                    {
                        selected = new ScaledBasicVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, heightOffset = heightOffset, sideOffsetScale = sideOffset, edgeNormalsArray = edgeNormals
                        };
                    }
                    else
                    {
                        selected = new ScaledLerpedVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, lerpToEdge = lerpToEdge, heightOffset = heightOffset, sideOffsetScale = sideOffset, edgeNormalsArray = edgeNormals
                        };
                    }
                }
            }
            else
            {
                if (useHeightData)
                {
                    if (lerpToEdge == 1f)
                    {
                        selected = new BasicHeightVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, heightOffset = heightOffset, heights = data.HeightsRawData, heightScale = heightScale
                        };
                    }
                    else
                    {
                        selected = new LerpedHeightVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, lerpToEdge = lerpToEdge, heightOffset = heightOffset, heights = data.HeightsRawData, heightScale = heightScale
                        };
                    }
                }
                else
                {
                    if (lerpToEdge == 1f)
                    {
                        selected = new BasicVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, heightOffset = heightOffset
                        };
                    }
                    else
                    {
                        selected = new LerpedVertexCalculator()
                        {
                            colNum = data.ColNum, cellSize = cellSize, lerpToEdge = lerpToEdge, heightOffset = heightOffset
                        };
                    }
                }
            }
            return(selected);
        }