create StaticNodeManager to hold all the nodes that need to get accessed globally

This commit is contained in:
Teatov 2024-10-13 15:17:31 +10:00
parent be13b9dbfb
commit a9aed09bfa
15 changed files with 56 additions and 48 deletions

View File

@ -27,6 +27,7 @@ UiManager="*res://scripts/globals/ui_manager.gd"
HoveringManager="*res://scripts/globals/hovering_manager.gd"
SelectionManager="*res://scripts/globals/selection_manager.gd"
SoundManager="*res://scripts/globals/sound_manager.gd"
StaticNodesManager="*res://scripts/globals/static_nodes_manager.gd"
[debug]

View File

@ -73,7 +73,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58.3389, 0, -63.0179)
[node name="Aphids" type="Node" parent="Bunches"]
[node name="AphidsBunch" type="Marker3D" parent="Bunches/Aphids"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.716, 0, -56.9208)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.7297, 0, -59.3123)
gizmo_extents = 2.71
script = ExtResource("3_vkmt5")
amount = 3
@ -192,10 +192,11 @@ script = ExtResource("3_vkmt5")
[node name="Honeydew" type="Node" parent="Bunches"]
[node name="BunchSpawner" type="Marker3D" parent="Bunches/Honeydew"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.2604, -7.62939e-06, -58.6667)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50.9454, -8.10623e-06, -60.0162)
gizmo_extents = 4.7
script = ExtResource("3_vkmt5")
what = 1
amount = 30
[node name="UI" type="Node" parent="."]
@ -214,6 +215,9 @@ current = true
fov = 37.8493
script = ExtResource("1_gnxhh")
[node name="AudioListener3D" type="AudioListener3D" parent="MainCamera"]
current = true
[node name="AmbientAudio" type="AudioStreamPlayer" parent="."]
process_mode = 3
bus = &"ambient"

View File

@ -10,17 +10,14 @@ var audio_3 := preload("res://assets/audio/ambient/ambient_3.ogg")
var streams: Array[AudioStream] = [audio_1, audio_2, audio_3]
var filter: AudioEffectHighPassFilter
@onready var main_camera: MainCamera = $/root/World/MainCamera
func _ready() -> void:
assert(main_camera != null, "main_camera missing!")
var bus_idx := AudioServer.get_bus_index(bus)
for effect_idx in AudioServer.get_bus_effect_count(bus_idx):
var effect := AudioServer.get_bus_effect(bus_idx, effect_idx)
if effect is AudioEffectHighPassFilter:
filter = effect
assert(filter != null, "filter missing!")
stream = streams.pick_random()
play()
@ -28,7 +25,7 @@ func _ready() -> void:
func _process(_delta: float) -> void:
filter.cutoff_hz = lerpf(
ZOOMED_IN_CUTOFF,
ZOOMED_OUT_CUTOFF,
main_camera.zoom_value,
ZOOMED_IN_CUTOFF,
ZOOMED_OUT_CUTOFF,
StaticNodesManager.main_camera.zoom_value,
)

View File

@ -11,8 +11,6 @@ var ant_nitwit := preload("res://scenes/units/ant_nitwit.tscn")
var ant_gatherer := preload("res://scenes/units/ant_gatherer.tscn")
@onready var ui_origin: Node3D = $UiOrigin
@onready var nitwits_holder: Node = $/root/World/Units/Nitwits
@onready var gatherers_holder: Node = $/root/World/Units/Gatherers
@onready var audio_player: SoundEffectsPlayer = (
$SoundEffectsPlayer
)
@ -20,8 +18,6 @@ var ant_gatherer := preload("res://scenes/units/ant_gatherer.tscn")
func _ready() -> void:
assert(ui_origin != null, "ui_origin missing!")
assert(nitwits_holder != null, "nitwits_holder missing!")
assert(gatherers_holder != null, "gatherers_holder missing!")
assert(audio_player != null, "audio_player missing!")
super._ready()
honeydew += AntNitwit.get_cost()
@ -50,14 +46,14 @@ func spawn_nitwit(ding: bool = true) -> void:
if new_unit == null:
return
print('add!')
nitwits_holder.add_child(new_unit)
StaticNodesManager.nitwits_holder.add_child(new_unit)
func spawn_gatherer() -> void:
var new_unit := _create_unit(ant_gatherer, AntGatherer.get_cost())
if new_unit == null:
return
gatherers_holder.add_child(new_unit)
StaticNodesManager.gatherers_holder.add_child(new_unit)
func _click() -> void:

View File

@ -12,11 +12,7 @@ enum WhatToSpawn {
var aphid := preload("res://scenes/units/aphid.tscn")
var honeydew := preload("res://scenes/items/honeydew.tscn")
@onready var aphids_holder: Node = $/root/World/Units/Aphids
@onready var honeydew_holder: Node = $/root/World/Items/Honeydew
func _ready() -> void:
assert(aphids_holder != null, "aphids_holder missing!")
for i in amount:
var pos_offset := Vector3(
randf_range(-gizmo_extents, gizmo_extents),
@ -25,9 +21,17 @@ func _ready() -> void:
)
match what:
WhatToSpawn.APHID:
_spawn(aphid, global_position + pos_offset, aphids_holder)
_spawn(
aphid,
global_position + pos_offset,
StaticNodesManager.aphids_holder
)
WhatToSpawn.HONEYDEW:
_spawn(honeydew, global_position + pos_offset, honeydew_holder)
_spawn(
honeydew,
global_position + pos_offset,
StaticNodesManager.honeydew_holder
)
func _spawn(scene: PackedScene, where: Vector3, holder: Node) -> void:

View File

@ -15,8 +15,6 @@ var markers_to_draw: Array[Dictionary] = []
var circles_to_draw: Array[Dictionary] = []
var text_to_draw: PackedStringArray = []
@onready var main_camera: MainCamera = $/root/World/MainCamera
func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
@ -38,7 +36,7 @@ func _process(_delta: float) -> void:
text('fps: ' + str(Performance.get_monitor(Performance.TIME_FPS)))
text('draw calls: ' + str(Performance.get_monitor(Performance.RENDER_TOTAL_DRAW_CALLS_IN_FRAME)))
text('camera anim step: ' + str(main_camera.advance_anim_step))
text('camera anim step: ' + str(StaticNodesManager.main_camera.advance_anim_step))
text('select anim step: ' + str(SelectionManager.advance_anim_step))
@ -82,7 +80,7 @@ func circle(pos: Vector3, color: Color = DEFAULT_COLOR) -> void:
func _unproject(pos: Vector3) -> Vector2:
return main_camera.unproject_position(pos)
return StaticNodesManager.main_camera.unproject_position(pos)
func _draw_text() -> void:

View File

@ -3,7 +3,7 @@ extends Node3D
var hovered_node: Variant
var mouse_pos: Vector2 = Vector2.ZERO
@onready var camera: Camera3D = get_viewport().get_camera_3d()
@onready var camera: Camera3D = StaticNodesManager.main_camera
func _physics_process(_delta: float) -> void:

View File

@ -25,7 +25,7 @@ var advance_anim_step: int = 1
var rect_style := preload("res://resources/styles/selection_rect.tres")
@onready var camera: Camera3D = get_viewport().get_camera_3d()
@onready var camera: Camera3D = StaticNodesManager.main_camera
@onready var frustrum_area: Area3D = Area3D.new()
@onready var frustrum_collision_shape: CollisionShape3D = CollisionShape3D.new()
@onready var rect_panel: Panel = Panel.new()

View File

@ -0,0 +1,19 @@
extends Node
@onready var player_anthill: Anthill = $/root/World/Structures/Anthill
@onready var main_camera: MainCamera = $/root/World/MainCamera
@onready var nitwits_holder: Node = $/root/World/Units/Nitwits
@onready var gatherers_holder: Node = $/root/World/Units/Gatherers
@onready var aphids_holder: Node = $/root/World/Units/Aphids
@onready var honeydew_holder: Node = $/root/World/Items/Honeydew
func _ready() -> void:
assert(player_anthill != null, "player_anthill missing!")
assert(main_camera != null, "main_camera missing!")
assert(nitwits_holder != null, "nitwits_holder missing!")
assert(gatherers_holder != null, "gatherers_holder missing!")
assert(aphids_holder != null, "aphids_holder missing!")
assert(honeydew_holder != null, "honeydew_holder missing!")

View File

@ -52,13 +52,12 @@ var state: CameraState = CameraState.FREE
var window_out_of_focus: bool = false
@onready var anthill: Anthill = $/root/World/Structures/Anthill
@onready var attrs: CameraAttributesPractical = attributes
func _ready() -> void:
assert(attrs != null, "attrs missing!")
target_position = anthill.global_position
target_position = StaticNodesManager.player_anthill.global_position
func _process(delta: float) -> void:
@ -95,7 +94,7 @@ func _input(event: InputEvent) -> void:
zoom_raw = clampf(zoom_raw, 0, 1)
if event.is_action_pressed("reset_camera"):
head_to(anthill.global_position)
head_to(StaticNodesManager.player_anthill.global_position)
func _notification(what: int) -> void:

View File

@ -9,6 +9,7 @@ func _ready() -> void:
play()
playback = get_stream_playback()
func play_sound(
new_stream: AudioStream,
from_offset: float = 0,

View File

@ -5,18 +5,14 @@ const EDGE_MARGIN = 10
var target: Node3D
@onready var camera: Camera3D = get_viewport().get_camera_3d()
func _ready() -> void:
assert(camera != null, "camera missing!")
super._ready()
func _process(_delta: float) -> void:
if not visible or target == null:
return
var pos := camera.unproject_position(target.global_position)
var pos := StaticNodesManager.main_camera.unproject_position(
target.global_position
)
var corner_1 := Vector2.ONE * EDGE_MARGIN
var viewport_size := get_viewport().get_visible_rect().size
var corner_2 := Vector2(

View File

@ -16,11 +16,8 @@ var spawned_honeydews: Dictionary = {}
var honeydew_scene := preload("res://scenes/items/honeydew.tscn")
@onready var holder: Node = $/root/World/Items/Honeydew
func _ready() -> void:
assert(holder != null, "holder missing!")
super._ready()
_set_spawn_timer()
@ -62,7 +59,7 @@ func _handle_honeydew_spawn(delta: float) -> void:
new_honeydew.HEIGHT_OFFSET,
randf_range(-HONEYDEW_SPAWN_SPREAD, HONEYDEW_SPAWN_SPREAD),
)
holder.add_child(new_honeydew)
StaticNodesManager.honeydew_holder.add_child(new_honeydew)
new_honeydew.global_position = global_position + new_pos
_put_honeydew(new_honeydew)

View File

@ -11,7 +11,6 @@ var selected: bool = false
var is_relocating: bool = false
var ground_plane: Plane = Plane(Vector3.UP, 0)
@onready var camera: Camera3D = get_viewport().get_camera_3d()
@onready var selection_indicator: VisualInstance3D = $SelectionIndicator
@ -26,7 +25,6 @@ func _init() -> void:
func _ready() -> void:
assert(camera != null, "camera missing!")
assert(selection_indicator != null, "selection_indicator missing!")
nav_agent.navigation_finished.connect(_on_nav_agent_navigation_finished)
super._ready()
@ -95,8 +93,8 @@ func _set_target_click(mouse_pos: Vector2) -> void:
func _click_raycast(mouse_pos: Vector2) -> Vector3:
var from := camera.global_position
var to := camera.project_ray_normal(mouse_pos)
var from := StaticNodesManager.main_camera.global_position
var to := StaticNodesManager.main_camera.project_ray_normal(mouse_pos)
return ground_plane.intersects_ray(from, to)

View File

@ -24,7 +24,6 @@ var advance_anim_delta_accum: float = 0
@onready var visibility_notifier: VisibleOnScreenNotifier3D = (
$VisibleOnScreenNotifier3D
)
@onready var main_camera: MainCamera = $/root/World/MainCamera
@onready var audio_player: SoundEffectsPlayer = (
$SoundEffectsPlayer
)
@ -35,7 +34,6 @@ func _ready() -> void:
assert(animation_tree != null, "animation_tree missing!")
assert(visibility_notifier != null, "visibility_notifier missing!")
assert(ui_origin != null, "ui_origin missing!")
assert(main_camera != null, "main_camera missing!")
assert(anim_advance_indicator != null, "anim_advance_indicator missing!")
assert(audio_player != null, "audio_player missing!")
super._ready()
@ -110,7 +108,7 @@ func _animate(delta: float) -> void:
advance_anim_delta_accum += delta
var advance_anim_step := maxi(
main_camera.advance_anim_step,
StaticNodesManager.main_camera.advance_anim_step,
SelectionManager.advance_anim_step
)
var frame := Engine.get_frames_drawn()