Added textures to buildings. Other small improvements.
This commit is contained in:
@ -11,18 +11,23 @@ namespace TransportGame.Unity
|
||||
public class BuildingMeshGenerator
|
||||
{
|
||||
public Material BuildingMaterial { get; set; }
|
||||
public Texture2D[] Textures { get; set; }
|
||||
|
||||
private GameObject parent = new GameObject("buildings");
|
||||
private Map map;
|
||||
private System.Random random = new System.Random();
|
||||
|
||||
public IEnumerable Generate(Map map)
|
||||
{
|
||||
this.map = map;
|
||||
int i = 0;
|
||||
|
||||
foreach (var building in map.Buildings)
|
||||
{
|
||||
GenerateBuilding(building);
|
||||
yield return null;
|
||||
|
||||
if (++i % 10 == 0)
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,10 +65,10 @@ namespace TransportGame.Unity
|
||||
vertices.Add(new Vector3(pts[k].Y, minY, pts[k].X));
|
||||
vertices.Add(new Vector3(pts[k].Y, maxY, pts[k].X));
|
||||
vertices.Add(new Vector3(pts[j].Y, maxY, pts[j].X));
|
||||
uv.Add(new UnityEngine.Vector2(0, 0));
|
||||
uv.Add(new UnityEngine.Vector2(0, 1));
|
||||
uv.Add(new UnityEngine.Vector2(1, 1));
|
||||
uv.Add(new UnityEngine.Vector2(1, 0));
|
||||
uv.Add(new UnityEngine.Vector2(pts[j].Y + pts[j].X, minY));
|
||||
uv.Add(new UnityEngine.Vector2(pts[k].Y + pts[k].X, minY));
|
||||
uv.Add(new UnityEngine.Vector2(pts[k].Y + pts[k].X, maxY));
|
||||
uv.Add(new UnityEngine.Vector2(pts[j].Y + pts[j].X, maxY));
|
||||
triangles.AddRange(new[] { vIndex, vIndex + 1, vIndex + 2 });
|
||||
triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 3 });
|
||||
vIndex = vertices.Count;
|
||||
@ -73,8 +78,8 @@ namespace TransportGame.Unity
|
||||
vertices.Add(new Vector3(pts[j].Y, maxY, pts[j].X));
|
||||
vertices.Add(new Vector3(center.Y, maxY, center.X));
|
||||
uv.Add(new UnityEngine.Vector2(0, 0));
|
||||
uv.Add(new UnityEngine.Vector2(0, 1));
|
||||
uv.Add(new UnityEngine.Vector2(1, 1));
|
||||
uv.Add(new UnityEngine.Vector2(0, 0));
|
||||
uv.Add(new UnityEngine.Vector2(0, 0));
|
||||
triangles.AddRange(new[] { vIndex + 2, vIndex + 1, vIndex + 0 });
|
||||
vIndex = vertices.Count;
|
||||
}
|
||||
@ -97,6 +102,13 @@ namespace TransportGame.Unity
|
||||
|
||||
MeshRenderer meshRenderer = inters.AddComponent<MeshRenderer>();
|
||||
meshRenderer.materials = new[] { BuildingMaterial };
|
||||
|
||||
// Pick random texture
|
||||
if (Textures != null)
|
||||
{
|
||||
int t = random.Next(Textures.Length);
|
||||
meshRenderer.material.mainTexture = Textures[t];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,8 @@ public class TerrainGeneratorScript : MonoBehaviour
|
||||
public int TerrainWidth = 1024;
|
||||
public int TerrainHeight = 1024;
|
||||
public GameObject WaterObject;
|
||||
public Texture2D[] Textures;
|
||||
public Texture2D[] TerrainTextures;
|
||||
public Texture2D[] BuildingTextures;
|
||||
public Material RoadMaterial;
|
||||
public Material BuildingMaterial;
|
||||
|
||||
@ -73,7 +74,7 @@ public class TerrainGeneratorScript : MonoBehaviour
|
||||
|
||||
for (int i = 0; i < map.Biome.Textures.Length; i++)
|
||||
{
|
||||
Texture2D texture = Textures.FirstOrDefault(tex => tex != null && tex.name == map.Biome.Textures[i].Source);
|
||||
Texture2D texture = TerrainTextures.FirstOrDefault(tex => tex != null && tex.name == map.Biome.Textures[i].Source);
|
||||
|
||||
if (texture == null)
|
||||
throw new Exception("Texture " + map.Biome.Textures[i].Source + " not found!");
|
||||
@ -137,6 +138,7 @@ public class TerrainGeneratorScript : MonoBehaviour
|
||||
|
||||
BuildingMeshGenerator buildingMeshGenerator = new BuildingMeshGenerator();
|
||||
buildingMeshGenerator.BuildingMaterial = BuildingMaterial;
|
||||
buildingMeshGenerator.Textures = BuildingTextures;
|
||||
|
||||
RoadMeshGenerator roadMeshGenerator = new RoadMeshGenerator();
|
||||
roadMeshGenerator.RoadMaterial = RoadMaterial;
|
||||
|
Reference in New Issue
Block a user