aboutsummaryrefslogtreecommitdiff
path: root/client/map/tiles
diff options
context:
space:
mode:
Diffstat (limited to 'client/map/tiles')
-rw-r--r--client/map/tiles/floor_mesher.gd29
1 files changed, 29 insertions, 0 deletions
diff --git a/client/map/tiles/floor_mesher.gd b/client/map/tiles/floor_mesher.gd
index 602fe18d..182425a5 100644
--- a/client/map/tiles/floor_mesher.gd
+++ b/client/map/tiles/floor_mesher.gd
@@ -16,6 +16,8 @@
class_name FloorMesher
extends Object
+const H := 0.25
+
const RECTANGLE: Array[Vector3] = [
Vector3.ZERO, Vector3.RIGHT, Vector3.BACK + Vector3.RIGHT, Vector3.BACK, Vector3.ZERO, Vector3.BACK + Vector3.RIGHT,
]
@@ -65,11 +67,38 @@ func flush() -> ArrayMesh:
rectangle.x += 1
else: break
+ # floor
for i in range(UV.size()):
st.set_normal(Vector3.UP)
st.set_uv(UV[i] * Vector2(rectangle))
st.add_vertex(RECTANGLE[i] * Vector3(rectangle.x, 0., rectangle.y) + Vector3(rectangle_origin.x, 0., rectangle_origin.y))
+ # the faces on the side (should be improved...)
+ # back
+ for i in range(UV.size()):
+ st.set_normal(Vector3.BACK)
+ st.set_uv(UV[i] * Vector2(rectangle.x, H))
+ st.add_vertex((RECTANGLE[i] * Vector3(rectangle.x, 0., -H)).rotated(Vector3.RIGHT, 0.5 * PI)
+ + Vector3(rectangle_origin.x, -H, rectangle_origin.y))
+ # right
+ for i in range(UV.size()):
+ st.set_normal(Vector3.RIGHT)
+ st.set_uv(UV[i] * Vector2(H, rectangle.y))
+ st.add_vertex((RECTANGLE[i] * Vector3(H, 0., rectangle.y)).rotated(Vector3.BACK, 0.5 * PI)
+ + Vector3(rectangle_origin.x, -H, rectangle_origin.y))
+ # left
+ for i in range(UV.size()):
+ st.set_normal(Vector3.LEFT)
+ st.set_uv(UV[i] * Vector2(H, rectangle.y))
+ st.add_vertex((RECTANGLE[i] * Vector3(H, 0., -rectangle.y)).rotated(Vector3.BACK, 0.5 * PI)
+ + Vector3(rectangle_origin.x + rectangle.x, -H, rectangle_origin.y + rectangle.y))
+ # back
+ for i in range(UV.size()):
+ st.set_normal(Vector3.BACK)
+ st.set_uv(UV[i] * Vector2(rectangle.x, H))
+ st.add_vertex((RECTANGLE[i] * Vector3(-rectangle.x, 0., -H)).rotated(Vector3.RIGHT, 0.5 * PI)
+ + Vector3(rectangle_origin.x + rectangle.x, -H, rectangle_origin.y + rectangle.y))
+
# remove the rectangle from the "queue"
for x in range(rectangle_origin.x, rectangle_origin.x + rectangle.x):
for y in range(rectangle_origin.y, rectangle_origin.y + rectangle.y):