From f0142a29c9a36d2b87b19b763d88c5ca2245c7dc Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Wed, 19 Feb 2025 15:00:56 +0100 Subject: next commit --- block.gd | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 10 deletions(-) (limited to 'block.gd') diff --git a/block.gd b/block.gd index 97f2695..c1f2ab5 100644 --- a/block.gd +++ b/block.gd @@ -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] -- cgit v1.2.3