public static JobHandle ScheduleCalculateVerticesJob(Data data, ScaledInfo info, bool useHeightData, float cellSize, NativeArray <TopCellInfo> infoArray, NativeList <float3> vertices, NativeArray <EdgeNormals> edgeNormalsArray, JobHandle lastHandle) { if (!edgeNormalsArray.IsCreated) { return(TopCellMesher.ScheduleCalculateVerticesJob(data, info, useHeightData, cellSize, infoArray, vertices, lastHandle)); } if (useHeightData) { if (info.LerpToExactEdge == 1f) { var vertexCalculator = new ScaledBasicHeightVertexCalculator() { colNum = data.ColNum, cellSize = cellSize, heightOffset = info.OffsetY, heights = data.HeightsRawData, heightScale = info.HeightScale, edgeNormalsArray = edgeNormalsArray, sideOffsetScale = info.ScaledOffset }; return(TopCellMesher.ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle)); } else { var vertexCalculator = new ScaledLerpedHeightVertexCalculator() { colNum = data.ColNum, cellSize = cellSize, lerpToEdge = info.LerpToExactEdge, heightOffset = info.OffsetY, heights = data.HeightsRawData, heightScale = info.HeightScale, edgeNormalsArray = edgeNormalsArray, sideOffsetScale = info.ScaledOffset }; return(TopCellMesher.ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle)); } } else { if (info.LerpToExactEdge == 1f) { var vertexCalculator = new ScaledBasicVertexCalculator() { colNum = data.ColNum, cellSize = cellSize, heightOffset = info.OffsetY, edgeNormalsArray = edgeNormalsArray, sideOffsetScale = info.ScaledOffset }; return(TopCellMesher.ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle)); } else { var vertexCalculator = new ScaledLerpedVertexCalculator() { colNum = data.ColNum, cellSize = cellSize, lerpToEdge = info.LerpToExactEdge, heightOffset = info.OffsetY, edgeNormalsArray = edgeNormalsArray, sideOffsetScale = info.ScaledOffset }; return(TopCellMesher.ScheduleCalculateVerticesJob(vertexCalculator, infoArray, vertices, lastHandle)); } } }
public static ScaledInfo SunScale(double targetRadius) { ScaledInfo result = new ScaledInfo(); result.Radius = targetRadius; result.AproxDistance = SunAproxDistance / SunRadiusKm * targetRadius; return(result); }
public static ScaledInfo MoonScale(double targetRadius) { ScaledInfo result = new ScaledInfo(); result.Radius = targetRadius; result.AproxDistance = MoonAverageDistance / MoonRadiusKm * targetRadius; return(result); }
public void Init(Data data, float cellSize, ScaledInfo info) { this.data = data; this.cellSize = cellSize; this.info = info; CheckData(data, info); Inited(); }