summaryrefslogtreecommitdiff
path: root/block.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-02-19 15:00:56 +0100
committerDaniel Weipert <git@mail.dweipert.de>2025-02-19 15:01:22 +0100
commitf0142a29c9a36d2b87b19b763d88c5ca2245c7dc (patch)
treeed8d45266bd329e1ad33c33bc11dc93741eebee2 /block.gd
parentf448ca4259d7f76fc58bc3b5c12ea8d04ab49a87 (diff)
next commit
Diffstat (limited to 'block.gd')
-rw-r--r--block.gd93
1 files changed, 83 insertions, 10 deletions
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]