From 727dca5a0307c0d4feab922f0bce3b19b3704297 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Mon, 24 Mar 2025 19:11:46 -0400 Subject: [PATCH] Cleaning up functions and using Marker for spawn location --- scenes/world/world.gd | 60 ++++++++++++++++++++--------------------- scenes/world/world.tscn | 5 +++- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/scenes/world/world.gd b/scenes/world/world.gd index 507fb90..46df604 100644 --- a/scenes/world/world.gd +++ b/scenes/world/world.gd @@ -2,25 +2,24 @@ class_name World extends Node3D -@export var default_spawn_position: Vector3 = Vector3.ZERO - @export_group("Nodes and Scenes") @export var blocks_container: Node3D ## Container where spawned blocks are added @export var dropped_items_container: Node3D ## Container where spawned dropped items are added @export var player_scene: PackedScene +@export var spawn_position: Marker3D func _ready() -> void: Input.mouse_mode = Input.MOUSE_MODE_CAPTURED EntityManager.create_block.connect(_create_block) EntityManager.drop_block.connect(_create_dropped_block) - EntityManager.reset_world.connect(_on_reset_world) - EntityManager.spawn_player.connect(_spawn_player) + EntityManager.reset_world.connect(clear_world) + EntityManager.spawn_player.connect(spawn_player) clear_world() create_world() - +## For resetting/emptying the world to allow for load_game or generating a new world func clear_world() -> void: for block: Block in blocks_container.get_children(): block.queue_free() @@ -29,12 +28,34 @@ func clear_world() -> void: block.queue_free() func create_world() -> void: - _initialize_ground() + generate_world() _create_test_blocks() var default_transform: Transform3D = Transform3D() - default_transform.origin = default_spawn_position - _spawn_player(default_transform) + default_transform.origin = spawn_position.position + spawn_player(default_transform) + +func generate_world() -> void: + for x: int in range(-10, 11): + for z: int in range(-10, 11): + var ground_position: Vector3 = Vector3(x, 0, z) + + var random: int = randi_range(0, 1) + if random: + # Just for testing.. Would make more sense to just call _create_block() directly + EntityManager.create_block.emit("001", ground_position) + else: + EntityManager.create_block.emit("002", ground_position) + +func spawn_player(player_position: Transform3D) -> void: + if has_node("Player"): + $Player.queue_free() + await $Player.tree_exited + + var player: Player = player_scene.instantiate() + player.transform = player_position + player.name = "Player" + add_child(player) func _create_block(id: String, block_position: Vector3) -> void: @@ -57,29 +78,6 @@ func _create_test_blocks() -> void: _create_block("00" + str(index), Vector3(index, 3, -5)) _create_dropped_block("00" + str(index), Vector3(index, 2, -3)) -func _spawn_player(player_position: Transform3D) -> void: - if has_node("Player"): - $Player.queue_free() - await $Player.tree_exited - - var player: Player = player_scene.instantiate() - player.transform = player_position - player.name = "Player" - add_child(player) - - -func _initialize_ground() -> void: - for x: int in range(-10, 11): - for z: int in range(-10, 11): - var ground_position: Vector3 = Vector3(x, 0, z) - - var random: int = randi_range(0, 1) - if random: - # Just for testing.. Would make more sense to just call _create_block() directly - EntityManager.create_block.emit("001", ground_position) - else: - EntityManager.create_block.emit("002", ground_position) -## Generally for resetting/emptying the world to allow for load_game func _on_reset_world() -> void: clear_world() diff --git a/scenes/world/world.tscn b/scenes/world/world.tscn index 62afba0..aa2b175 100644 --- a/scenes/world/world.tscn +++ b/scenes/world/world.tscn @@ -17,11 +17,12 @@ sky = SubResource("Sky_dphjl") tonemap_mode = 2 glow_enabled = true -[node name="World" type="Node3D" node_paths=PackedStringArray("blocks_container", "dropped_items_container")] +[node name="World" type="Node3D" node_paths=PackedStringArray("blocks_container", "dropped_items_container", "spawn_position")] script = ExtResource("1_6m72w") blocks_container = NodePath("BlocksContainer") dropped_items_container = NodePath("DroppedItemsContainer") player_scene = ExtResource("2_sl2e5") +spawn_position = NodePath("SpawnPosition") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_sl2e5") @@ -35,3 +36,5 @@ shadow_enabled = true [node name="DroppedItemsContainer" type="Node3D" parent="."] [node name="SaveLevelDataComponent" parent="." instance=ExtResource("3_1fp7r")] + +[node name="SpawnPosition" type="Marker3D" parent="."]