Add daynight scene to museum beome gen + add camera pivot to daynight

This commit is contained in:
2026-04-20 10:03:44 +02:00
parent b77a6263aa
commit 667e277806
9 changed files with 244 additions and 14 deletions

View File

@@ -1,5 +1,7 @@
extends Node3D
signal camera_changed(camera: Camera3D)
@export_group("Camera")
@export var camera_iso : Camera3D
@export var pivot : Node3D
@@ -42,7 +44,11 @@ func _ready():
if camera_top: array_camera.append(camera_top)
if camera_iso:
camera_iso.make_current()
set_camera(camera_iso)
func set_camera(camera: Camera3D):
camera.make_current()
emit_signal("camera_changed", camera)
func _input(event):
if event is InputEventKey and event.pressed and not event.echo:
@@ -84,27 +90,27 @@ func _input(event):
var manual_action = false
if event.keycode == KEY_1 and camera_iso:
camera_iso.make_current()
set_camera(camera_iso)
is_moving_enabled = true
manual_action = true
elif event.keycode == KEY_2 and camera_front:
camera_front.make_current()
set_camera(camera_front)
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_3 and camera_side1:
camera_side1.make_current()
set_camera(camera_side1)
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_4 and camera_side2:
camera_side2.make_current()
set_camera(camera_side2)
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_5 and camera_top:
camera_top.make_current()
set_camera(camera_top)
is_moving_enabled = false
manual_action = true
@@ -123,7 +129,7 @@ func _process(delta):
cinematic_timer = 0.0
cinematic_index = (cinematic_index + 1) % array_camera.size()
var next_cam = array_camera[cinematic_index]
next_cam.make_current()
set_camera(next_cam)
is_moving_enabled = (next_cam == camera_iso)
if not is_moving_enabled or pivot == null:

View File

@@ -5,6 +5,7 @@ extends Node3D
@export_group("Camera")
@export var camera: Camera3D
@export var camera_pivot: Node3D
@export_group("Particles")
@export var particles_wind: GPUParticles3D
@@ -59,6 +60,7 @@ func _ready() -> void:
environment,
environment_config,
camera,
camera_pivot,
thunder_sounds,
rain_sounds
)

View File

@@ -19,6 +19,7 @@ var sun: DirectionalLight3D
var environment: WorldEnvironment
var environment_config: EnvironmentConfig
var camera: Camera3D
var camera_pivot: Node3D
var day_time: float = 0.0
@@ -48,7 +49,7 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
dust: ColorRect, blurr: ColorRect, envshadows: MeshInstance3D,
thesun: DirectionalLight3D, theenvironment: WorldEnvironment, environmentconfig: EnvironmentConfig,
thecamera: Camera3D, thundersounds: Array[AudioStream], rainsounds: Array[AudioStream]) -> void:
thecamera: Camera3D, thecamerapivot: Node3D, thundersounds: Array[AudioStream], rainsounds: Array[AudioStream]) -> void:
particles_wind = wind
particles_snow = snow
particles_fireflies = fireflies
@@ -61,6 +62,7 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
environment = theenvironment
environment_config = environmentconfig
camera = thecamera
camera_pivot = thecamerapivot
thunder_sounds = thundersounds
rain_sounds = rainsounds
@@ -79,6 +81,10 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
toggle_dust(environment_config.enable_dust)
toggle_blur(environment_config.enable_blur)
#set camera pivot if available
if camera_pivot:
camera_pivot.get_node("pivot").camera_changed.connect(_set_camera)
func _ready() -> void:
#connect events
@@ -229,6 +235,8 @@ func _process(delta: float) -> void:
environment_config.material_fog.set_shader_parameter("night_intensity", night_val)
environment_config.material_fog.set_shader_parameter("sun_color", final_tint)
func _set_camera(curr_camera: Camera3D):
camera = curr_camera
func _follow_camera() -> void:
if not camera or not is_instance_valid(camera):

View File

@@ -0,0 +1,6 @@
extends Node3D
func _input(event):
if event is InputEventKey and event.pressed:
if event.keycode == KEY_ESCAPE:
get_tree().quit()

View File

@@ -0,0 +1 @@
uid://bw42tcfoee7xl

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
extends Node3D
func _input(event):
if event is InputEventKey and event.pressed:
if event.keycode == KEY_ESCAPE:
get_tree().quit()

View File

@@ -0,0 +1 @@
uid://bs232puek1gwc

View File

@@ -1,6 +1,7 @@
[gd_scene format=4 uid="uid://bjkhawylawqof"]
[ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="1_daynt"]
[ext_resource type="Script" uid="uid://bs232puek1gwc" path="res://docs/museums/daynight/museum_daynight.gd" id="1_ouqsa"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="3_jiovi"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="4_abyor"]
[ext_resource type="AudioStream" uid="uid://dvabvoqyya0g5" path="res://core/daynight/sounds/thunder_3.mp3" id="4_d5ghv"]
@@ -107,6 +108,7 @@ albedo_color = Color(0.135, 0.45, 0.18224995, 1)
size = Vector3(200, 0.08, 200)
[node name="Museum" type="Node3D" unique_id=1411616506]
script = ExtResource("1_ouqsa")
[node name="DayNight" parent="." unique_id=1578787116 node_paths=PackedStringArray("camera") instance=ExtResource("1_daynt")]
camera = NodePath("../Camera3D")