diff options
author | nokoe <nokoe@mailbox.org> | 2024-09-27 18:07:42 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2024-09-27 18:07:57 +0200 |
commit | 9ac3ba2098ce6f3f3383c750e135d45e8820b5bc (patch) | |
tree | 2562fd5c573e66fbefbc2d093ffb715887cc14c9 /client/map/tiles | |
parent | d213fa30c1ad067363f374a059d5f3b066a0d0ea (diff) | |
download | hurrycurry-9ac3ba2098ce6f3f3383c750e135d45e8820b5bc.tar hurrycurry-9ac3ba2098ce6f3f3383c750e135d45e8820b5bc.tar.bz2 hurrycurry-9ac3ba2098ce6f3f3383c750e135d45e8820b5bc.tar.zst |
FloorMesher: add side faces
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): |