diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-02-19 15:00:56 +0100 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-02-19 15:01:22 +0100 |
commit | f0142a29c9a36d2b87b19b763d88c5ca2245c7dc (patch) | |
tree | ed8d45266bd329e1ad33c33bc11dc93741eebee2 /block.gd | |
parent | f448ca4259d7f76fc58bc3b5c12ea8d04ab49a87 (diff) |
next commit
Diffstat (limited to 'block.gd')
-rw-r--r-- | block.gd | 93 |
1 files changed, 83 insertions, 10 deletions
@@ -1,11 +1,7 @@ class_name Block -extends Resource -const FACE_CORNERS = [ - Vector2(0, 0), Vector2(1, 0), - Vector2(0, 1), Vector2(1, 1), -] +const BLOCK_SIZE := Vector3(1.0, 1.0, 1.0) enum Face { FRONT, @@ -16,7 +12,7 @@ enum Face { BOTTOM, } -const FACES = [ +var FACES = [ [ # FRONT [Vector3(-1.0, 1.0, 1.0), Vector3(1.0, -1.0, 1.0), Vector3(-1.0, -1.0, 1.0)], [Vector3(-1.0, 1.0, 1.0), Vector3(1.0, 1.0, 1.0), Vector3(1.0, -1.0, 1.0)], @@ -43,7 +39,7 @@ const FACES = [ ], ] -const FACE_UVS = [ +var FACE_UVS = [ [ # FRONT [Vector2(0.0, 0.0), Vector2(1.0, 1.0), Vector2(0.0, 1.0)], [Vector2(0.0, 0.0), Vector2(1.0, 0.0), Vector2(1.0, 1.0)], @@ -70,7 +66,7 @@ const FACE_UVS = [ ], ] -const FACE_NORMALS = [ +var FACE_NORMALS = [ Vector3(0, 0, 1), # FRONT Vector3(0, 0, -1), # BACK Vector3(-1, 0, 0), # LEFT @@ -86,10 +82,17 @@ enum Type { LEAVES, STONE, ICE, + WOOD, + SAND, + PLANKS, + YELLOW_STONE, + BLUE_STONE, + RED_STONE, + BLACK_STONE, SELECTION, } -const BLOCK_TYPES = { +var BLOCK_TYPES = { Type.GRASS: { "uv2s": [ Vector2(0, 0), # FRONT @@ -140,6 +143,76 @@ const BLOCK_TYPES = { Vector2(2, 1), # BOTTOM ], }, + Type.WOOD: { + "uv2s": [ + Vector2(5, 0), # FRONT + Vector2(5, 0), # BACK + Vector2(5, 0), # LEFT + Vector2(5, 0), # RIGHT + Vector2(5, 0), # TOP + Vector2(5, 0), # BOTTOM + ], + }, + Type.SAND: { + "uv2s": [ + Vector2(4, 0), # FRONT + Vector2(4, 0), # BACK + Vector2(4, 0), # LEFT + Vector2(4, 0), # RIGHT + Vector2(4, 0), # TOP + Vector2(4, 0), # BOTTOM + ], + }, + Type.PLANKS: { + "uv2s": [ + Vector2(0, 2), # FRONT + Vector2(0, 2), # BACK + Vector2(0, 2), # LEFT + Vector2(0, 2), # RIGHT + Vector2(0, 2), # TOP + Vector2(0, 2), # BOTTOM + ], + }, + Type.YELLOW_STONE: { + "uv2s": [ + Vector2(3, 1), # FRONT + Vector2(3, 1), # BACK + Vector2(3, 1), # LEFT + Vector2(3, 1), # RIGHT + Vector2(3, 1), # TOP + Vector2(3, 1), # BOTTOM + ], + }, + Type.BLUE_STONE: { + "uv2s": [ + Vector2(4, 1), # FRONT + Vector2(4, 1), # BACK + Vector2(4, 1), # LEFT + Vector2(4, 1), # RIGHT + Vector2(4, 1), # TOP + Vector2(4, 1), # BOTTOM + ], + }, + Type.RED_STONE: { + "uv2s": [ + Vector2(5, 1), # FRONT + Vector2(5, 1), # BACK + Vector2(5, 1), # LEFT + Vector2(5, 1), # RIGHT + Vector2(5, 1), # TOP + Vector2(5, 1), # BOTTOM + ], + }, + Type.BLACK_STONE: { + "uv2s": [ + Vector2(1, 2), # FRONT + Vector2(1, 2), # BACK + Vector2(1, 2), # LEFT + Vector2(1, 2), # RIGHT + Vector2(1, 2), # TOP + Vector2(1, 2), # BOTTOM + ], + }, Type.SELECTION: { "uv2s": [ Vector2(3, 2), # FRONT @@ -168,7 +241,7 @@ func add_face(surface_tool: SurfaceTool, face: Face): for idx in FACES[face].size(): var triangle = FACES[face][idx] var triangle_positions = triangle.map(func(item): - return (item / 2.0) + position + Vector3(0.5, 0.5, 0.5) + return (item * (BLOCK_SIZE * 0.5)) + position + (BLOCK_SIZE * 0.5) ) var uvs = FACE_UVS[face][idx] |