public void BuildVertices() { var mesh = GetMesh(); mesh.Clear(false); Bounds.Clear(); var step = Terrain.NormalStep; if (Terrain.Normals == SgtTerrain.NormalType.QuadStep) { var verts = (2 << Terrain.Subdivisions) + 1; var scale = 1 << Depth; step = 1.0f / (verts * scale); } SgtTerrainCompute.BeginFace(Terrain.ForceCPU); SgtTerrainCompute.SetFaceCorners(Side, CornerBL, CornerBR, CornerTL); SgtTerrainCompute.SetMain(Terrain.Radius, step, Terrain.NormalStrength, Terrain.HeightMap, Terrain.HeightScale); SgtTerrainCompute.SetDetail(Terrain.MaskMap, Terrain.DetailTiling, Terrain.DetailMapA, Terrain.DetailScaleA, Terrain.DetailMapB, Terrain.DetailScaleB); SgtTerrainCompute.DispatchFace(mesh, Terrain.Subdivisions, ref Bounds, Terrain.CenterMesh); Terrain.PositionChanged(Terrain.transform, this); //mesh.RecalculateBounds(); }
public SgtTerrainCompute.Output SampleLocalOutput(SgtVector3D localPoint) { SgtTerrainCompute.BeginPoint(ForceCPU); SgtTerrainCompute.SetMain(Radius, NormalStep, NormalStrength, HeightMap, HeightScale); SgtTerrainCompute.SetDetail(MaskMap, DetailTiling, DetailMapA, DetailScaleA, DetailMapA, DetailScaleB); return(SgtTerrainCompute.DispatchPoint((Vector3)localPoint)); }
protected override void OnDisable() { base.OnDisable(); SgtHelper.OnCalculateDistance -= CalculateDistance; SgtFloatingCamera.OnSnap -= CameraSnapped; if (NegativeX != null) { NegativeX.gameObject.SetActive(false); } if (NegativeY != null) { NegativeY.gameObject.SetActive(false); } if (NegativeZ != null) { NegativeZ.gameObject.SetActive(false); } if (PositiveX != null) { PositiveX.gameObject.SetActive(false); } if (PositiveY != null) { PositiveY.gameObject.SetActive(false); } if (PositiveZ != null) { PositiveZ.gameObject.SetActive(false); } StopAllCoroutines(); SgtTerrainCompute.Destroy(); }