diff options
Diffstat (limited to 'client/map/tiles')
-rw-r--r-- | client/map/tiles/floor_mesher.gd | 29 |
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): |