public override object OnChunkCreate(ChunkData cd, Vector3 pos) { if (cd == null) { return(null); } if (rainbow == null) { rainbow = PWUtils.CreateRainbowGradient(); } TopDown2DData chunk = (TopDown2DData)cd; //create the terrain texture: //TODO: bind the blendMap with biome maps to the terrain shader //TODO: bind all vertex datas from the mesh GameObject g = CreateChunkObject(pos * terrainScale); g.transform.rotation = Quaternion.identity; g.transform.localScale = Vector3.one * chunkSize * terrainScale; MeshRenderer mr = g.AddComponent <MeshRenderer>(); MeshFilter mf = g.AddComponent <MeshFilter>(); if (topDownTerrainMesh == null || topDownTerrainMeshSize != chunkSize) { GenerateTopDownTerrainMesh(); } UpdateMeshDatas(chunk.biomeMap); mf.sharedMesh = topDownTerrainMesh; Shader topDown2DBasicTerrainShader = Shader.Find("ProceduralWorlds/Basic terrain"); if (topDown2DBasicTerrainShader == null) { topDown2DBasicTerrainShader = Shader.Find("Standard"); } Material mat = new Material(topDown2DBasicTerrainShader); mat.SetTexture("_AlbedoMaps", chunk.albedoMaps); mr.sharedMaterial = mat; //TODO: vertex painting return(g); }
public override void OnChunkRender(ChunkData cd, object chunkGameObject, Vector3 pos) { if (cd == null) { return; } GameObject g = chunkGameObject as GameObject; TopDown2DData chunk = (TopDown2DData)cd; if (g == null) //if gameobject have been destroyed by user and reference was lost. { chunkGameObject = RequestCreate(cd, pos); g = chunkGameObject as GameObject; } g.GetComponent <MeshRenderer>().sharedMaterial.SetTexture("_MainTex", chunk.texture); }
public override void OnNodeCreate() { externalName = "2D TopDown terrain"; terrainOutput = new TopDown2DData(); }