public void Update() { _utTextureRendererProxy.Update(); _commonExecutor.Update(); _unityThreadComputeShaderExecutorObject.Update(); MyTexturePair texturePair; bool takeSucceded = _resultBag.TryTake(out texturePair); if (takeSucceded) { var unitySideLength = 10f; var realSideLength = 240 * 24; var metersPerUnit = realSideLength / unitySideLength; var gameObject = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Terrain_Debug")); gameObject.GetComponent <MeshRenderer>().material = material; gameObject.name = "Terrain"; gameObject.transform.localRotation = Quaternion.Euler(0, 0, 0); gameObject.transform.localScale = new Vector3(10, 6500 / metersPerUnit, 10); gameObject.transform.localPosition = new Vector3(0, 0, 0); gameObject.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); material.SetTexture("_HeightmapTex0", texturePair.Tex0); material.SetTexture("_HeightmapTex1", texturePair.Tex1); } }
/// <summary> /// Called everytime the inspected object is selected. /// </summary> private void OnEnable() { planeGenerator = (PlaneGenerator)target; serializedPlaneGenerator = new SerializedObject(planeGenerator); InitStyles(); }
private void Awake() { _mesh = PlaneGenerator.Generate(_gridSize, _cellSize, "OceanMesh"); _mesh.MarkDynamic(); _vertices = _mesh.vertices; }
public void Start() { //var heightTexture = SavingFileManager.LoadPngTextureFromFile(@"C:\inz\cont\smallCut.png", 240, // 240, TextureFormat.RGBA32, true, true); //_currentHeightmap = HeightmapUtils.CreateHeightmapArrayFromTexture(heightTexture); DiamondSquareCreator creator = new DiamondSquareCreator(new RandomProvider(22)); _currentHeightmap = creator.CreateDiamondSquareNoiseArray(new IntVector2(240, 240), 64); MyArrayUtils.Multiply(_currentHeightmap.HeightmapAsArray, 0.1f); _go = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Terrain_Debug")); _go.GetComponent <MeshRenderer>().material = material; _go.name = "Terrain"; _go.transform.localRotation = Quaternion.Euler(0, 0, 0); _go.transform.localScale = new Vector3(10, 10, 10); _go.transform.localPosition = new Vector3(0, 0, 0); _go.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); var doneTexture = HeightmapUtils.CreateTextureFromHeightmap(_currentHeightmap); _go.GetComponent <MeshRenderer>().material.SetTexture("_HeightmapTex0", doneTexture); _go.GetComponent <MeshRenderer>().material.SetTexture("_HeightmapTex1", doneTexture); _oldDoneTexture = doneTexture; }
void updateMesh(int index, int idz, GameObject terrainObject, Transform gO, int lod, MeshFilter mf, float xDisp, float yDisp, float interval2, bool update) { //if (mf.sharedMesh!=null)mf.sharedMesh.Clear(); MeshData meshData = PlaneGenerator.Generate(interval2 * 2, interval2 * 2, textQual / lod - 2, textQual / lod - 2); if (sphere) { meshData.vertices = spheritize(meshData.vertices, new Vector3(xDisp, radius, yDisp)); } if (useNoise) { meshData.vertices = addNormalNoise(meshData.vertices, planetInfo.nmArray [index], meshHeightMultiplier); } Vector3 movement = meshAverage(meshData.vertices); gO.localPosition += translateByPivot(idz, new Vector2(movement.x, movement.z), movement.y); meshData.vertices = translateMesh(meshData.vertices, -movement); //Debug.Log (mesh.vertices.Length.ToString()); Mesh mesh = meshData.CreateMesh(); if (!update) { mf.sharedMesh = mesh; } else { mf.mesh = mesh; } planetInfo.mcArray [index].sharedMesh = mesh; }
void Start() { GameObject thePlayer = GameObject.Find("GameManager"); PlaneGenerator generatorScript = thePlayer.GetComponent <PlaneGenerator>(); x = (generatorScript.row - 1) * 10; y = (generatorScript.col - 1) * 10; }
public HeightPyramidSegmentShapeGroup CreateGroup(HeightPyramidLevelTemplate pyramidLevelTemplate, HeightPyramidLevel level, GameObject pyramidRootGo) { var parentGO = new GameObject("ETerrainParent " + level); var center = pyramidLevelTemplate.Center; parentGO.transform.localPosition = new Vector3(center.x, 0, center.y); var ringTemplateElementMesh = _meshGenerator.AddOrder(() => PlaneGenerator.CreateETerrainSegmentMesh(_perLevelConfiguration.RingObjectMeshVertexLength.X, _perLevelConfiguration.RingObjectMeshVertexLength.Y)) .Result; //todo var centerMesh = _meshGenerator.AddOrder(() => PlaneGenerator.CreateETerrainSegmentMesh(_perLevelConfiguration.CenterObjectMeshVertexLength.X, _perLevelConfiguration.CenterObjectMeshVertexLength.Y)) .Result; //todo var shapeMeshesToCombine = new List <CombineInstance>(); foreach (var shapeTemplate in pyramidLevelTemplate.ShapeTemplates) { Mesh thisSegmentMesh = null; if (shapeTemplate.RingIndex == 0) //center { thisSegmentMesh = centerMesh; } else { thisSegmentMesh = ringTemplateElementMesh; } var trs = CreateTrsMatrixForShape(shapeTemplate); shapeMeshesToCombine.Add(new CombineInstance() { transform = trs, mesh = thisSegmentMesh }); } var finalMesh = _meshGenerator.AddOrder(() => { var m = MeshGenerationUtils.CreateMeshAsSum(shapeMeshesToCombine); MeshGenerationUtils.RecalculateUvAsInPlane(m); return(m); }).Result; //TODO MeshGenerationUtils.SetYBoundsToInfinity(finalMesh); var mainObject = CreateShapeObject(finalMesh, "MainObject", center, pyramidLevelTemplate.FlatSize); mainObject.transform.SetParent(parentGO.transform); parentGO.transform.localScale = new Vector3(1, _commonConfiguration.YScale, 1); parentGO.transform.SetParent(pyramidRootGo.transform); return(new HeightPyramidSegmentShapeGroup() { CentralShape = mainObject, ParentGameObject = parentGO, }); }
public void Start() { TaskUtils.SetGlobalMultithreading(false); var rgbaMainTexture = SavingFileManager.LoadPngTextureFromFile(@"C:\inz\cont\n49_e019_1arc_v3.png", 3600, 3600, TextureFormat.ARGB32, true, false); MainTexture = _transformator.EncodedHeightTextureToPlainAsync(new TextureWithSize() { Size = new IntVector2(3600, 3600), Texture = rgbaMainTexture }).Result; //var heightArray = HeightmapUtils.CreateHeightmapArrayFromTexture(MainTexture); //for (int x = 0; x < 5; x++) //{ // for (int y = 0; y < 5; y++) // { // heightArray.HeightmapAsArray[x, y] = 0.3f; // } //} //MainTexture = HeightmapUtils.CreateTextureFromHeightmap(heightArray); InitializeFields(); var unitySideLength = 10f; var realSideLength = 240 * 24; var metersPerUnit = realSideLength / unitySideLength; _gameObject = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Terrain_Debug_Plain")); _gameObject.GetComponent <MeshRenderer>().material = material; _gameObject.name = "Terrain"; _gameObject.transform.localRotation = Quaternion.Euler(0, 0, 0); //_gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) , 10); //_gameObject.transform.localPosition = new Vector3(0 , 0, 0); //_gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) * 8, 10); //_gameObject.transform.localPosition = new Vector3(0, 0, 0); _gameObject.transform.localScale = new Vector3(10, 1 / 64f * (6500 / metersPerUnit) * 8 * 8, 10); _gameObject.transform.localPosition = new Vector3(0, -30, 0); _gameObject.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); RegenerateTextures(); //Camera.main.transform.localPosition = new Vector3(10,2,0); //Camera.main.transform.eulerAngles = new Vector3(30,-45,0); Camera.main.transform.localPosition = new Vector3(-1, -25, 10); Camera.main.transform.eulerAngles = new Vector3(30, 132, 0); }
private void OnTriggerEnter(Collider other) { PlaneGenerator planeGenerator = other.GetComponent <PlaneGenerator>(); if (planeGenerator == null) { Debug.LogError("Deform tool was triggered by something that isn't deformable."); return; } planeGenerators.Add(planeGenerator); }
void updateMesh(int lod, MeshFilter mf, float[,] noiseMap, float interval2) { if (mf.sharedMesh != null) { mf.sharedMesh.Clear(); } MeshData mesh = PlaneGenerator.Generate(interval2 * 2, interval2 * 2, textQual / lod - 2, textQual / lod - 2); mesh.vertices = addNormalNoise(mesh.vertices, noiseMap, meshHeightMultiplier, false); mf.sharedMesh = mesh.CreateMesh(); }
public void Start() { TaskUtils.SetGlobalMultithreading(false); var rgbaMainTexture = SavingFileManager.LoadPngTextureFromFile(@"C:\inz\cont\n49_e019_1arc_v3.png", 3600, 3600, TextureFormat.ARGB32, true, false); TerrainTextureFormatTransformator transformator = new TerrainTextureFormatTransformator(new CommonExecutorUTProxy()); var mainTexture = transformator.EncodedHeightTextureToPlainAsync(new TextureWithSize() { Size = new IntVector2(3600, 3600), Texture = rgbaMainTexture }).Result; var gameObject = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Ring1")); TerrainAndNormalTexture pair = CreateTerrainAndNormalTexture(mainTexture); material.SetTexture("_HeightmapTex", pair.HeightTexture); material.SetTexture("_NormalmapTex", pair.NormalTexture); gameObject.GetComponent <MeshRenderer>().material = material; gameObject.name = "Terrain"; gameObject.transform.localRotation = Quaternion.Euler(0, 0, 0); var unitySideLength = 10f; var realSideLength = 240 * 24; var metersPerUnit = realSideLength / unitySideLength; if (_terrainResolution == TerrainCardinalResolution.MIN_RESOLUTION) { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit), 10); gameObject.transform.localPosition = new Vector3(0, 0, 0); } else if (_terrainResolution == TerrainCardinalResolution.MID_RESOLUTION) { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) * 8, 10); gameObject.transform.localPosition = new Vector3(0, 0, 0); } else { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) * 8 * 8, 10); gameObject.transform.localPosition = new Vector3(0, -30, 0); } gameObject.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); }
void Start() { // Generate Plane p = GetComponent <PlaneGenerator>(); p.Generate(); // Attach Wave Material & Remove Shadow Casting MeshRenderer mR = GetComponent <MeshRenderer>(); mR.material = wave; mR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; m = GetComponent <MeshFilter>().mesh; }
protected void Plane(PlaneGenerator planeGen) { var kernel = compute.FindKernel("Plane"); compute.SetMatrix("_Transform", transform.localToWorldMatrix); compute.SetFloat("_DT", Time.deltaTime); var plane = planeGen.GetPlane(); compute.SetVector("_PlaneNormal", plane.normal); compute.SetFloat("_PlaneDistance", plane.distance); compute.SetFloat("_PlaneWidth", planeGen.Width); KernelGrids(kernel); }
public static void CreateTerrainShowingGameObject(Texture2D conventionalRing1Texture, float heightDelta) { _terrainGameObject = GameObject.CreatePrimitive(PrimitiveType.Plane); _terrainGameObject.name = "Terrain"; var terrainMaterial = new Material(Shader.Find("Custom/Terrain/Terrain1")); terrainMaterial.SetTexture("_HeightmapTex", conventionalRing1Texture); terrainMaterial.SetFloat("_MaxHeight", heightDelta); _terrainGameObject.GetComponent <Renderer>().material = terrainMaterial; _terrainGameObject.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(256, 250); GameObject.Destroy(_terrainGameObject.GetComponent <MeshCollider>()); _terrainGameObject.transform.localScale = new Vector3(100, 100.0f / 712.0f, 100); _terrainGameObject.transform.localPosition = new Vector3(10.0f, -60f, 0f); }
public async Task <GRingMeshDetail> ProvideMeshDetailsAsync() { var mesh = await _meshGenerator.AddOrder( () => PlaneGenerator.CreateFlatPlaneMesh(_gameObjectMeshResolution.X, _gameObjectMeshResolution.Y)); var pack = new UniformsPack(); pack.SetUniform("_HeightmapLodOffset", _heightmapLodOffset); return(new GRingMeshDetail() { Mesh = mesh, Uniforms = pack, HeightmapLod = _heightmapLodOffset }); }
public void CreateTerrainObject(TextureWithSize textureWithSize, Vector2 startPosition) { var go = GameObject.CreatePrimitive(PrimitiveType.Plane); go.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(241, 241); var material = new Material(Shader.Find("Custom/Debug/SimpleTerrain")); material.SetTexture("_HeightmapTex", textureWithSize.Texture); material.SetFloat("_HeightmapTexWidth", 241); go.GetComponent <MeshRenderer>().material = material; go.transform.localPosition = new Vector3(startPosition.x, 0, startPosition.y); go.transform.localScale = new Vector3(90, 10, 90); go.name = $"TerrainAt" + startPosition; }
public void Update() { _utTextureRendererProxy.Update(); _commonExecutorUtProxy.Update(); _computeShaderExecutorObject.Update(); GeneratedTerrainElements generatedElement; if (_generatedElements.TryTake(out generatedElement)) { var heightElement = generatedElement.HeightElement; var normalElement = generatedElement.NormalElement; var gameObject = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Ring1")); material.SetTexture("_HeightmapTex", heightElement.TokenizedElement.DetailElement.Texture.Texture); material.SetVector("_HeightmapUv", heightElement.UvBase.ToVector4()); material.SetTexture("_NormalmapTex", normalElement.TokenizedElement.DetailElement.Texture.Texture); material.SetVector("_NormalmapUv", normalElement.UvBase.ToVector4()); gameObject.GetComponent <MeshRenderer>().material = material; gameObject.name = "Terrain"; gameObject.transform.localRotation = Quaternion.Euler(0, 0, 0); var unitySideLength = 10f; var realSideLength = 240 * 24; var metersPerUnit = realSideLength / unitySideLength; if (_terrainResolution == TerrainCardinalResolution.MIN_RESOLUTION) { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit), 10); gameObject.transform.localPosition = new Vector3(0, 0, 0); } else if (_terrainResolution == TerrainCardinalResolution.MID_RESOLUTION) { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) * 8, 10); gameObject.transform.localPosition = new Vector3(0, 0, 0); } else { gameObject.transform.localScale = new Vector3(10, (6500 / metersPerUnit) * 8 * 8, 10); gameObject.transform.localPosition = new Vector3(0, -30, 0); } gameObject.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); } }
public HeightPyramidSegmentShapeGroup CreateGroup(HeightPyramidLevelTemplate pyramidLevelTemplate, HeightPyramidLevel level, GameObject pyramidRootGo) { var parentGO = new GameObject("ETerrainParent " + level); var center = pyramidLevelTemplate.Center; parentGO.transform.localPosition = new Vector3(center.x, 0, center.y); var objectsPerRing = pyramidLevelTemplate.PerRingTemplates.Keys.ToDictionary(c => c, c => new List <GameObject>()); GameObject centerObject = null; var ring1ElementMesh = _meshGenerator.AddOrder(() => PlaneGenerator.CreateETerrainSegmentMesh( _perLevelConfiguration.RingObjectMeshVertexLength.X, _perLevelConfiguration.RingObjectMeshVertexLength.Y)).Result; //todo ring1ElementMesh.RecalculateBounds(); MeshGenerationUtils.SetYBounds(ring1ElementMesh, 0f, 1f); foreach (var shapeTemplate in pyramidLevelTemplate.ShapeTemplates) { if (shapeTemplate.RingIndex == 0) //center { var centerMesh = _meshGenerator.AddOrder(() => PlaneGenerator.CreateETerrainSegmentMesh(_perLevelConfiguration.CenterObjectMeshVertexLength.X, _perLevelConfiguration.CenterObjectMeshVertexLength.Y)) .Result; //todo MeshGenerationUtils.SetYBounds(centerMesh, 0f, 1f); centerObject = CreateShapeObject(centerMesh, shapeTemplate, "Center"); centerObject.transform.SetParent(parentGO.transform); } else { var shape = CreateShapeObject(ring1ElementMesh, shapeTemplate, "Ring " + shapeTemplate.RingIndex); shape.transform.SetParent(parentGO.transform); objectsPerRing[shapeTemplate.RingIndex].Add(shape); } } parentGO.transform.localScale = new Vector3(1, _commonConfiguration.YScale, 1); parentGO.transform.SetParent(pyramidRootGo.transform); return(new HeightPyramidSegmentShapeGroup() { CentralShape = centerObject, ParentGameObject = parentGO, ShapesPerRing = objectsPerRing }); }
private void CreateComparisionObject() { _go = GameObject.CreatePrimitive(PrimitiveType.Quad); var material = new Material(Shader.Find("Custom/Terrain/Terrain_Debug")); _go.GetComponent <MeshRenderer>().material = material; _go.name = "Terrain"; _go.transform.localRotation = Quaternion.Euler(0, 0, 0); _go.transform.localScale = new Vector3(10, 1, 10); _go.transform.localPosition = new Vector3(0, 0, 0); _go.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(240, 240); var doneTexture = HeightmapUtils.CreateTextureFromHeightmap(_currentHeightmap); _go.GetComponent <MeshRenderer>().material.SetTexture("_HeightmapTex0", doneTexture); _go.GetComponent <MeshRenderer>().material.SetTexture("_HeightmapTex1", doneTexture); }
public void Start3() { var length = 50; float[,] heightArray = new float[length, length]; for (int x = 0; x < length; x++) { for (int y = 0; y < length; y++) { var ax = x / (float)length * 2 * Mathf.PI; var ay = y / (float)length * 2 * Mathf.PI; heightArray[x, y] = Mathf.Sin(ax) / 10; } } var mesh = PlaneGenerator.CreatePlaneMesh(1, 1, heightArray); MyAssetDatabase.CreateAndSaveAsset(mesh, "Assets/NPRResources/SimpleMesh1.asset"); }
public static GameObject CreateFlatTerrainPlane(Point2D gameObjectSize, MyRectangle inGamePosition, UniformsPack pack) { var gameObject = new GameObject("Ring1 terrain object " + inGamePosition.ToString()); var terrainMaterial = new Material(Shader.Find("Custom/Terrain/Terrain1")); pack.SetUniformsToMaterial(terrainMaterial); gameObject.AddComponent <MeshRenderer>(); gameObject.GetComponent <Renderer>().material = terrainMaterial; gameObject.AddComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(gameObjectSize.X, gameObjectSize.Y); gameObject.transform.localScale = new Vector3(inGamePosition.Width, 1, inGamePosition.Height); gameObject.transform.localPosition = new Vector3(inGamePosition.X, 0, inGamePosition.Y); return(gameObject); }
void RandomGenerateMap() { GameObject planeObject = new GameObject("Plane Object"); PlaneGenerator myPlaneGen = planeObject.AddComponent <PlaneGenerator>(); myPlaneGen.Size = new Vector3(40f, 0f, 40f); planeObject.transform.position = new Vector3(-450f, -1f, -450f); GameObject roadObject = new GameObject("Road_Object"); myRoadGen = roadObject.AddComponent <RoadGenerator>(); myRoadGen.RoadRadius = Random.Range(80, 111); myRoadGen.RoadSegments = Random.Range(260, 360); myRoadGen.RoadWaviness = Random.Range(80, 201); myRoadGen.WaveScale = Random.Range(1.6f, 2.4f); myRoadGen.WaveOffset = new Vector2(Random.Range(0.65f, 1.65f), Random.Range(1.35f, 2.5f)); myRoadGen.WaveStep = new Vector2(Random.Range(0.01f, 0.02f), Random.Range(0.01f, 0.03f)); }
// Use this for initialization void Start() { anchor = GameObject.Find("Anchor"); giboData = GameObject.Find("GiboData").GetComponent <GiboData>(); publicVariable = GameObject.Find("PublicVariable").GetComponent <PublicVariable>(); PlaneGenerator.SetActive(false); for (i = 1; i <= 9; i++) { for (j = 1; j <= 10; j++) { position_name = "w" + i + "h" + j; mal_object = GameObject.Find(position_name); mal_position[i, j] = mal_object.transform.position; attackedPosition[i, j] = false; } } ReadDate(); CreateDefaultMal(); }
public static GameObject CreateHeightedTerrainPlane(Point2D gameObjectSize, MyRectangle inGamePosition, UniformsPack pack, HeightmapArray simplifiedMap) { var gameObject = new GameObject("Ring1 terrain object " + inGamePosition.ToString()); var terrainMaterial = new Material(Shader.Find("Custom/Terrain/Ring1DirectHeight")); pack.SetUniformsToMaterial(terrainMaterial); gameObject.AddComponent <MeshRenderer>(); gameObject.GetComponent <Renderer>().material = terrainMaterial; gameObject.AddComponent <MeshFilter>(); PlaneGenerator.createPlaneMeshFilter(gameObject.GetComponent <MeshFilter>(), 1, 1, simplifiedMap.HeightmapAsArray); gameObject.transform.localScale = new Vector3(inGamePosition.Width, 1, inGamePosition.Height); gameObject.transform.localPosition = new Vector3(inGamePosition.X, 0, inGamePosition.Y); return(gameObject); }
public static SubmapPlane CreatePlaneObject(float[,] heightArray) { var planeObj = new GameObject { name = "myTestPlane" }; PlaneGenerator.createPlaneMeshFilter(planeObj.AddComponent <MeshFilter>(), 1, 1, heightArray); var renderer = planeObj.AddComponent <MeshRenderer>(); renderer.material.shader = Shader.Find("Particles/Additive"); Texture2D tex = new Texture2D(1, 1); tex.SetPixel(0, 0, Color.green); tex.Apply(); renderer.material.mainTexture = tex; renderer.material.color = Color.green; return(new SubmapPlane(planeObj)); }
private async Task <GRingTerrainId> CreateTerrainAsync() { var triplet = _tripletProvider.ProvideTriplet(); var mesh = await _meshGeneratorUtProxy.AddOrder(() => PlaneGenerator.CreateFlatPlaneMesh(65, 65)); var creationTemplatesList = new List <Ring1GroundPieceCreationTemplate>(); int layerIndex = 0; UniformsPack pack = new UniformsPack(); pack.SetUniform("_LodLevel", _flatLod.ScalarValue); pack.SetUniform("_NodeId", LastId); var groundShapeDetails = await _groundShapeProvider.ProvideGroundTextureDetail(); _groundShapeToken = groundShapeDetails.GroundShapeToken; pack.MergeWith(groundShapeDetails.Uniforms); creationTemplatesList.Add( new Ring1GroundPieceCreationTemplate() { Name = $"TerrainElementLayer l:{layerIndex} fl:{_flatLod.ScalarValue}, X:{LastId++}", ParentGameObject = _parentObject, PieceMesh = mesh, TransformTriplet = triplet, ShaderName = "Custom/Terrain/DebugTerrainedLod", //ShaderName = "Custom/Terrain/Ring0", ShaderKeywordSet = groundShapeDetails.ShaderKeywordSet, Uniforms = pack, Modifier = new Ring1GroundPieceModifier() }); var toReturn = new GRingTerrainId() { ElementsIds = creationTemplatesList.Select(c => _orderGrabber.AddCreationOrder(c)).ToList() }; return(toReturn); }
protected override async Task <UInt32> CreateTerrainAsync() { var ring1Position = Ring1Node.Ring1Position; var xOffset = _globalHeightmap.Width * ring1Position.X; var yOffset = _globalHeightmap.Height * ring1Position.Y; var width = _globalHeightmap.Width * ring1Position.Width; var height = _globalHeightmap.Height * ring1Position.Height; var subArray = slicer.GetSubarrayWithEmptyMarginsSafe(_globalHeightmap.HeightmapAsArray, (int)xOffset, (int)yOffset, (int)width, (int)height); Point2D newGameObjectSize = new Point2D(33, 33); var simplifiedMap = simplyfyer.SimplyfyHeightmap(new HeightmapArray(subArray), newGameObjectSize.X - 1, newGameObjectSize.Y - 1); var mesh = await _meshGenerator.AddOrder( () => PlaneGenerator.CreatePlaneMesh(1, 1, simplifiedMap.HeightmapAsArray)); UniformsPack pack = await CreateUniformsPack(Ring1Node); var inGamePosition = _coordsCalculator.CalculateGlobalObjectPosition(Ring1Node.Ring1Position); var triplet = new MyTransformTriplet(new Vector3(inGamePosition.X, 0, inGamePosition.Y), Vector3.zero, new Vector3(inGamePosition.Width, 1, inGamePosition.Height)); var creationTemplate = new Ring1GroundPieceCreationTemplate() { Name = "Ring1 terrain object " + inGamePosition.ToString(), ParentGameObject = ParentObject, PieceMesh = mesh, ShaderName = "Custom/Terrain/Ring1DirectHeight", TransformTriplet = triplet, Uniforms = pack }; var objectId = OrderGrabber.AddCreationOrder(creationTemplate); return(objectId); }
public override void OnInspectorGUI() { DrawDefaultInspector(); PlaneGenerator script = (PlaneGenerator)target; if (GUI.changed) { } if (GUILayout.Button("Generate Plane")) { script.GeneratePlane(); } if (GUILayout.Button("Destroy Planes")) { //foreach(GameObject go in GameObject.FindGameObjectsWithTag("root")) // GameObject.DestroyImmediate(go); } }
private void CreateDebugObject(DebugObjectSpecification specification, Texture weldTexture, TerrainWeldUvs uvs) { var go = GameObject.CreatePrimitive(PrimitiveType.Plane); go.GetComponent <MeshFilter>().mesh = PlaneGenerator.CreateFlatPlaneMesh(specification.MeshResolution.X, specification.MeshResolution.Y); Material material = new Material(Shader.Find("Custom/Test/TerrainWelding")); material.SetTexture("_HeightmapTex", specification.HeightTexture.Texture); material.SetVector("_HeightmapUv", specification.HeightmapUv); material.SetFloat("_HeightmapLodOffset", specification.HeightmapLodOffset); material.SetTexture("_WeldTexture", weldTexture); material.SetVector("_LeftWeldTextureUvRange", uvs.LeftUv); material.SetVector("_RightWeldTextureUvRange", uvs.RightUv); material.SetVector("_TopWeldTextureUvRange", uvs.TopUv); material.SetVector("_BottomWeldTextureUvRange", uvs.BottomUv); go.GetComponent <MeshRenderer>().material = material; go.transform.localPosition = new Vector3(specification.StartPos.x, 0, specification.StartPos.y); go.transform.localScale = specification.LocalScale; }
void GenerateWorld() { // Divide the big terrain in smaller parts. There is a limit of vertices per mesh int numGrids = TOTAL_GRID_SIZE / GRID_SIZE; gridLand = new GameObject[numGrids * numGrids]; gridWater = new GameObject[numGrids * numGrids]; for (int x = 0; x < numGrids; x++) { for (int y = 0; y < numGrids; y++) { int idx = x + y * numGrids; // Calculate the offsets int posX = x * (GRID_SIZE - 1); int posY = y * (GRID_SIZE - 1); // Delegate generation of planes to a static class Mesh mesh = PlaneGenerator.GeneratePlane(GRID_SIZE, TOTAL_GRID_SIZE, posX, posY).CreateMesh(); mesh.bounds = new Bounds(new Vector3(GRID_SIZE / 2, 0, GRID_SIZE / 2), new Vector3(GRID_SIZE, TERRAIN_HEIGHT * 2, GRID_SIZE)); gridLand[idx] = new GameObject("Grid Land " + idx.ToString()); gridLand[idx].AddComponent <MeshFilter>(); gridLand[idx].AddComponent <MeshRenderer>(); gridLand[idx].GetComponent <Renderer>().material = landMat; gridLand[idx].GetComponent <MeshFilter>().mesh = mesh; gridLand[idx].transform.localPosition = new Vector3(-TOTAL_GRID_SIZE / 2 + posX, 0, -TOTAL_GRID_SIZE / 2 + posY); gridWater[idx] = new GameObject("Grid Water " + idx.ToString()); gridWater[idx].AddComponent <MeshFilter>(); gridWater[idx].AddComponent <MeshRenderer>(); gridWater[idx].GetComponent <Renderer>().material = waterMat; gridWater[idx].GetComponent <MeshFilter>().mesh = mesh; gridWater[idx].transform.localPosition = new Vector3(-TOTAL_GRID_SIZE / 2 + posX, 0, -TOTAL_GRID_SIZE / 2 + posY); } } }