diff --git a/Game/Assembly-CSharp-vs.csproj b/Game/Assembly-CSharp-vs.csproj
index 168fb4b..b24272a 100644
--- a/Game/Assembly-CSharp-vs.csproj
+++ b/Game/Assembly-CSharp-vs.csproj
@@ -80,7 +80,6 @@
-
diff --git a/Game/Assembly-CSharp.csproj b/Game/Assembly-CSharp.csproj
index a868770..a4a3057 100644
--- a/Game/Assembly-CSharp.csproj
+++ b/Game/Assembly-CSharp.csproj
@@ -80,7 +80,6 @@
-
diff --git a/Game/Assets/Scripts/Unity/BuildingMeshGenerator.cs b/Game/Assets/Scripts/Unity/BuildingMeshGenerator.cs
index 56f341d..eba1afe 100644
--- a/Game/Assets/Scripts/Unity/BuildingMeshGenerator.cs
+++ b/Game/Assets/Scripts/Unity/BuildingMeshGenerator.cs
@@ -55,22 +55,27 @@ namespace TransportGame.Unity
{
int k = (j + 1) % pts.Length;
+ // Side
vertices.Add(new Vector3(pts[j].Y, minY, pts[j].X));
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));
- 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(1, 0));
- uv.Add(new UnityEngine.Vector2(0.5f, 0.5f));
-
triangles.AddRange(new[] { vIndex, vIndex + 1, vIndex + 2 });
triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 3 });
- triangles.AddRange(new[] { vIndex + 4, vIndex + 3, vIndex + 2 }); // top side
+ vIndex = vertices.Count;
+ // Top side
+ vertices.Add(new Vector3(pts[k].Y, maxY, pts[k].X));
+ 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));
+ triangles.AddRange(new[] { vIndex + 2, vIndex + 1, vIndex + 0 });
vIndex = vertices.Count;
}
}
diff --git a/Game/Assets/Scripts/Unity/RoadMeshGenerator.cs b/Game/Assets/Scripts/Unity/RoadMeshGenerator.cs
index fffa4b7..28e96d7 100644
--- a/Game/Assets/Scripts/Unity/RoadMeshGenerator.cs
+++ b/Game/Assets/Scripts/Unity/RoadMeshGenerator.cs
@@ -259,48 +259,68 @@ namespace TransportGame.Unity
}
// Build road
- // Right side
+ // Right sidewalk cover
addV(p[furth, i], SidewalkHeight); // 0 - p0 raised
addV(sideCrns[cornerRight], SidewalkHeight); // 1 - side corner raised
addV(sideCrns[cornerRight], SidewalkHeight - SideCoverHeight); // 2 - side corner cover
addV(p[furth, i], SidewalkHeight - SideCoverHeight); // 3 - p0 cover
- addV(p[furth + 1, i], SidewalkHeight); // 4 - p1 raised
- addV(strCrns[cornerRight], SidewalkHeight); // 5 - street corner raised
- addV(strCrns[cornerRight], 0); // 6 - street corner
- addV(p[furth + 1, i], 0); // 7 - p1
-
- // Left side
- addV(p[furth + 2, i], 0); // 8 - p2
- addV(strCrns[cornerLeft], 0); // 9 - street corner
- addV(strCrns[cornerLeft], SidewalkHeight); //10 - street corner raised
- addV(p[furth + 2, i], SidewalkHeight); //11 - p2 raised
- addV(p[furth + 3, i], SidewalkHeight - SideCoverHeight); //12 - p3 cover
- addV(sideCrns[cornerLeft], SidewalkHeight - SideCoverHeight); //13 - side corner cover
- addV(sideCrns[cornerLeft], SidewalkHeight); //14 - side corner raised
- addV(p[furth + 3, i], SidewalkHeight); //15 - p3 raised
-
- // Right sidewalk
triangles.AddRange(new[] { vindex, vindex + 1, vindex + 2 }); // sidewalk side cover 0
triangles.AddRange(new[] { vindex, vindex + 2, vindex + 3 }); // sidewalk side cover 1
- triangles.AddRange(new[] { vindex, vindex + 4, vindex + 1 }); // sidewalk surface 0
- triangles.AddRange(new[] { vindex + 4, vindex + 5, vindex + 1 }); // sidewalk surface 1
- triangles.AddRange(new[] { vindex + 4, vindex + 7, vindex + 6 }); // sidewalk road raise 0
- triangles.AddRange(new[] { vindex + 4, vindex + 6, vindex + 5 }); // sidewalk road raise 1
+ vindex = vertices.Count;
+
+ // Right sidewalk surface
+ addV(p[furth, i], SidewalkHeight); // 0 - p0 raised
+ addV(sideCrns[cornerRight], SidewalkHeight); // 1 - side corner raised
+ addV(p[furth + 1, i], SidewalkHeight); // 2 - p1 raised
+ addV(strCrns[cornerRight], SidewalkHeight); // 3 - street corner raised
+ triangles.AddRange(new[] { vindex, vindex + 2, vindex + 1 }); // sidewalk surface 0
+ triangles.AddRange(new[] { vindex + 2, vindex + 3, vindex + 1 }); // sidewalk surface 1
+ vindex = vertices.Count;
+
+ // Right sidewalk raise from road
+ addV(p[furth + 1, i], SidewalkHeight); // 0 - p1 raised
+ addV(strCrns[cornerRight], SidewalkHeight); // 1 - street corner raised
+ addV(strCrns[cornerRight], 0); // 2 - street corner
+ addV(p[furth + 1, i], 0); // 3 - p1
+ triangles.AddRange(new[] { vindex, vindex + 3, vindex + 2 }); // sidewalk road raise 0
+ triangles.AddRange(new[] { vindex, vindex + 2, vindex + 1 }); // sidewalk road raise 1
+ vindex = vertices.Count;
// Road surface
- triangles.AddRange(new[] { vindex + 8, vindex + 6, vindex + 7 }); // road surface 0
- triangles.AddRange(new[] { vindex + 8, vindex + 9, vindex + 6 }); // road surface 0
- triangles.AddRange(new[] { vindex + 6, vindex + 9, 0 }); // road surface 0
+ addV(strCrns[cornerRight], 0); // 0 - street corner
+ addV(p[furth + 1, i], 0); // 1 - p1
+ addV(p[furth + 2, i], 0); // 2 - p2
+ addV(strCrns[cornerLeft], 0); // 3 - street corner
+ triangles.AddRange(new[] { vindex + 2, vindex, vindex + 1 }); // road surface 0
+ triangles.AddRange(new[] { vindex + 2, vindex + 3, vindex }); // road surface 0
+ triangles.AddRange(new[] { vindex, vindex + 3, 0 }); // road surface 0
+ vindex = vertices.Count;
- // Left sidewalk
- triangles.AddRange(new[] { vindex + 11, vindex + 10, vindex + 9 }); // sidewalk road raise 0
- triangles.AddRange(new[] { vindex + 11, vindex + 9, vindex + 8 }); // sidewalk road raise 1
- triangles.AddRange(new[] { vindex + 11, vindex + 14, vindex + 10 });// sidewalk surface 0
- triangles.AddRange(new[] { vindex + 11, vindex + 15, vindex + 14 });// sidewalk surface 1
- triangles.AddRange(new[] { vindex + 15, vindex + 12, vindex + 13 });// sidewalk side cover 0
- triangles.AddRange(new[] { vindex + 15, vindex + 13, vindex + 14 });// sidewalk side cover 1
+ // Left sidewalk raise from road
+ addV(p[furth + 2, i], 0); // 0 - p2
+ addV(strCrns[cornerLeft], 0); // 1 - street corner
+ addV(strCrns[cornerLeft], SidewalkHeight); // 2 - street corner raised
+ addV(p[furth + 2, i], SidewalkHeight); // 3 - p2 raised
+ triangles.AddRange(new[] { vindex + 3, vindex + 2, vindex + 1 }); // sidewalk road raise 0
+ triangles.AddRange(new[] { vindex + 3, vindex + 1, vindex }); // sidewalk road raise 1
+ vindex = vertices.Count;
- // update vindex
+ // Left sidewalk surface
+ addV(strCrns[cornerLeft], SidewalkHeight); // 0 - street corner raised
+ addV(p[furth + 2, i], SidewalkHeight); // 1 - p2 raised
+ addV(sideCrns[cornerLeft], SidewalkHeight); // 2 - side corner raised
+ addV(p[furth + 3, i], SidewalkHeight); // 3 - p3 raised
+ triangles.AddRange(new[] { vindex + 1, vindex + 2, vindex });// sidewalk surface 0
+ triangles.AddRange(new[] { vindex + 1, vindex + 3, vindex + 2 });// sidewalk surface 1
+ vindex = vertices.Count;
+
+ // Left sidewalk cover
+ addV(p[furth + 3, i], SidewalkHeight - SideCoverHeight); // 0 - p3 cover
+ addV(sideCrns[cornerLeft], SidewalkHeight - SideCoverHeight); // 1 - side corner cover
+ addV(sideCrns[cornerLeft], SidewalkHeight); // 2 - side corner raised
+ addV(p[furth + 3, i], SidewalkHeight); // 3 - p3 raised
+ triangles.AddRange(new[] { vindex + 3, vindex, vindex + 1 });// sidewalk side cover 0
+ triangles.AddRange(new[] { vindex + 3, vindex + 1, vindex + 2 });// sidewalk side cover 1
vindex = vertices.Count;
}
@@ -355,6 +375,7 @@ namespace TransportGame.Unity
List vertices = new List();
List uv = new List();
List triangles = new List();
+ int vIndex = 0;
// Helper function
Action addV = (v, h, term) =>
@@ -373,43 +394,69 @@ namespace TransportGame.Unity
Vector2[] pT1 = segmentTerminal1Limit[s.Id];
Vector2[] pT2 = segmentTerminal2Limit[s.Id];
-
- addV(pT1[0], SidewalkHeight - SideCoverHeight, 1);
- addV(pT1[0], SidewalkHeight, 1);
- addV(pT1[1], SidewalkHeight, 1);
- addV(pT1[1], 0, 1);
- addV(pT1[2], 0, 1);
- addV(pT1[2], SidewalkHeight, 1);
- addV(pT1[3], SidewalkHeight, 1);
- addV(pT1[3], SidewalkHeight - SideCoverHeight, 1);
- addV(pT2[0], SidewalkHeight - SideCoverHeight, 2);
- addV(pT2[0], SidewalkHeight, 2);
- addV(pT2[1], SidewalkHeight, 2);
- addV(pT2[1], 0, 2);
- addV(pT2[2], 0, 2);
- addV(pT2[2], SidewalkHeight, 2);
- addV(pT2[3], SidewalkHeight, 2);
- addV(pT2[3], SidewalkHeight - SideCoverHeight, 2);
+ // Left sidewalk side cover
+ addV(pT1[0], SidewalkHeight - SideCoverHeight, 1); // 0
+ addV(pT1[0], SidewalkHeight, 1); // 1
+ addV(pT2[3], SidewalkHeight, 2); // 2
+ addV(pT2[3], SidewalkHeight - SideCoverHeight, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk side cover 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk side cover 1
+ vIndex = vertices.Count;
- triangles.AddRange(new[] { 0, 15, 14 }); // sidewalk side cover 0
- triangles.AddRange(new[] { 0, 14, 1 }); // sidewalk side cover 1
- triangles.AddRange(new[] { 1, 14, 13 }); // sidewalk surface 0
- triangles.AddRange(new[] { 1, 13, 2 }); // sidewalk surface 1
- triangles.AddRange(new[] { 2, 12, 3 }); // sidewalk road raise 0
- triangles.AddRange(new[] { 2, 13, 12 }); // sidewalk road raise 1
+ // Left sidewalk surface
+ addV(pT1[0], SidewalkHeight, 1); // 0
+ addV(pT1[1], SidewalkHeight, 1); // 1
+ addV(pT2[2], SidewalkHeight, 2); // 2
+ addV(pT2[3], SidewalkHeight, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk surface 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk surface 1
+ vIndex = vertices.Count;
+
+ // Left sidewalk raise from road
+ addV(pT1[1], SidewalkHeight, 1); // 0
+ addV(pT1[1], 0, 1); // 1
+ addV(pT2[2], 0, 2); // 2
+ addV(pT2[2], SidewalkHeight, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk road raise 0
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk road raise 1
+ vIndex = vertices.Count;
// Road surface
- triangles.AddRange(new[] { 3, 12, 11 }); // road surface 0
- triangles.AddRange(new[] { 3, 11, 4 }); // road surface 0
+ addV(pT1[1], 0, 1); // 0
+ addV(pT1[2], 0, 1); // 1
+ addV(pT2[1], 0, 2); // 2
+ addV(pT2[2], 0, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // road surface 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // road surface 0
+ vIndex = vertices.Count;
- // Left sidewalk
- triangles.AddRange(new[] { 4, 11, 10 }); // sidewalk road raise 0
- triangles.AddRange(new[] { 4, 10, 5 }); // sidewalk road raise 1
- triangles.AddRange(new[] { 5, 10, 9 }); // sidewalk surface 0
- triangles.AddRange(new[] { 5, 9, 6 }); // sidewalk surface 1
- triangles.AddRange(new[] { 6, 9, 8 }); // sidewalk side cover 0
- triangles.AddRange(new[] { 6, 8, 7 }); // sidewalk side cover 1
+ // Right sidewalk raise from road
+ addV(pT1[2], 0, 1); // 0
+ addV(pT1[2], SidewalkHeight, 1); // 1
+ addV(pT2[1], SidewalkHeight, 2); // 2
+ addV(pT2[1], 0, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk road raise 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk road raise 1
+ vIndex = vertices.Count;
+
+ // Right sidewalk surface
+ addV(pT1[2], SidewalkHeight, 1); // 0
+ addV(pT1[3], SidewalkHeight, 1); // 1
+ addV(pT2[0], SidewalkHeight, 2); // 2
+ addV(pT2[1], SidewalkHeight, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk surface 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk surface 1
+ vIndex = vertices.Count;
+
+ // Right sidewalk cover
+ addV(pT1[3], SidewalkHeight, 1); // 0
+ addV(pT1[3], SidewalkHeight - SideCoverHeight, 1); // 1
+ addV(pT2[0], SidewalkHeight - SideCoverHeight, 2); // 2
+ addV(pT2[0], SidewalkHeight, 2); // 3
+ triangles.AddRange(new[] { vIndex, vIndex + 3, vIndex + 2 }); // sidewalk side cover 0
+ triangles.AddRange(new[] { vIndex, vIndex + 2, vIndex + 1 }); // sidewalk side cover 1
+ vIndex = vertices.Count;
// Construct mesh
Mesh mesh = new Mesh();
diff --git a/Game/Game-csharp.sln b/Game/Game-csharp.sln
index 39b9df1..2b2a083 100644
--- a/Game/Game-csharp.sln
+++ b/Game/Game-csharp.sln
@@ -23,7 +23,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
+ GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = Assembly-CSharp.csproj
Policies = $0
$0.TextStylePolicy = $1
diff --git a/Game/Game.sln b/Game/Game.sln
index a0df216..280fe4f 100644
--- a/Game/Game.sln
+++ b/Game/Game.sln
@@ -29,7 +29,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
+ GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = Assembly-CSharp.csproj
Policies = $0
$0.TextStylePolicy = $1