From 47c1de35a25f2f9cfcfb5a34e78642850483035a Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Tue, 4 Mar 2025 10:41:58 -0500 Subject: [PATCH] Adding block spawning and block types --- scenes/blocks/block.gd | 12 +++++++-- scenes/world/world.gd | 23 ++++++++++++++++++ scenes/world/world.gd.uid | 1 + scenes/world/world.tscn | 51 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 scenes/world/world.gd create mode 100644 scenes/world/world.gd.uid create mode 100644 scenes/world/world.tscn diff --git a/scenes/blocks/block.gd b/scenes/blocks/block.gd index f85ba30..8fa8d90 100644 --- a/scenes/blocks/block.gd +++ b/scenes/blocks/block.gd @@ -1,6 +1,11 @@ class_name Block extends StaticBody3D +enum Types { + DIRT, + STONE, +} + @export var material: StandardMaterial3D @@ -8,9 +13,12 @@ extends StaticBody3D func _ready() -> void: - apply_materials() + _apply_materials() + +func set_material(block_material: StandardMaterial3D): + material = block_material -func apply_materials() -> void: +func _apply_materials() -> void: for face: MeshInstance3D in block_faces.get_children(): face.set_surface_override_material(0, material) diff --git a/scenes/world/world.gd b/scenes/world/world.gd new file mode 100644 index 0000000..6e07cd7 --- /dev/null +++ b/scenes/world/world.gd @@ -0,0 +1,23 @@ +class_name World +extends Node3D + + +const BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/block.tscn") + +const BLOCK_MATERIALS: Dictionary[Block.Types, StandardMaterial3D] = { + Block.Types.DIRT: preload("res://assets/materials/dirt.tres"), + Block.Types.STONE: preload("res://assets/materials/stone.tres"), +} + + +func _ready() -> void: + create_block(Block.Types.DIRT, Vector3.ZERO) + create_block(Block.Types.STONE, Vector3.ONE) + + +func create_block(block_type: Block.Types, block_position: Vector3) -> void: + var block: Block = BLOCK_PREFAB.instantiate() + block.position = block_position + block.name = "%s" % [block_position] + block.set_material(BLOCK_MATERIALS[block_type]) + add_child(block) diff --git a/scenes/world/world.gd.uid b/scenes/world/world.gd.uid new file mode 100644 index 0000000..28fa477 --- /dev/null +++ b/scenes/world/world.gd.uid @@ -0,0 +1 @@ +uid://c0jbvki2cylct diff --git a/scenes/world/world.tscn b/scenes/world/world.tscn new file mode 100644 index 0000000..65cba34 --- /dev/null +++ b/scenes/world/world.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=8 format=3 uid="uid://mkfitwqnerku"] + +[ext_resource type="Script" uid="uid://c0jbvki2cylct" path="res://scenes/world/world.gd" id="1_6m72w"] +[ext_resource type="PackedScene" uid="uid://col07xd76y60h" path="res://scenes/blocks/block.tscn" id="1_dphjl"] +[ext_resource type="Material" uid="uid://uex0dq00xomt" path="res://assets/materials/dirt.tres" id="2_sl2e5"] +[ext_resource type="Material" uid="uid://cx7m27qa4ds4s" path="res://assets/materials/stone.tres" id="3_1fp7r"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_4rhad"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) + +[sub_resource type="Sky" id="Sky_dphjl"] +sky_material = SubResource("ProceduralSkyMaterial_4rhad") + +[sub_resource type="Environment" id="Environment_sl2e5"] +background_mode = 2 +sky = SubResource("Sky_dphjl") +tonemap_mode = 2 +glow_enabled = true + +[node name="World" type="Node3D"] +script = ExtResource("1_6m72w") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_sl2e5") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0) +shadow_enabled = true + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 0.1, 1.86802, 3.38687) + +[node name="Block" parent="." instance=ExtResource("1_dphjl")] +visible = false +material = ExtResource("2_sl2e5") + +[node name="Block2" parent="." instance=ExtResource("1_dphjl")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) +visible = false +material = ExtResource("2_sl2e5") + +[node name="Block3" parent="." instance=ExtResource("1_dphjl")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 1) +visible = false +material = ExtResource("3_1fp7r") + +[node name="Block4" parent="." instance=ExtResource("1_dphjl")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0) +visible = false +material = ExtResource("3_1fp7r")