add 'follow camera'
This commit is contained in:
@@ -32,7 +32,8 @@ func _process(delta: float) -> void:
|
||||
|
||||
func get_time_string() -> String:
|
||||
var total_minutes: int = int(current_time * 1440.0) # 1440 = 24*60
|
||||
var hours: int = total_minutes / 60
|
||||
@warning_ignore("integer_division")
|
||||
var hours: int = int(total_minutes / 60)
|
||||
var minutes: int = total_minutes % 60
|
||||
return "%02d:%02d" % [hours, minutes]
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ func _render_callback(p_effect_callback_type: EffectCallbackType, p_render_data:
|
||||
var x_groups : int = (size.x - 1.0) / 8.0 + 1.0
|
||||
@warning_ignore("integer_division")
|
||||
var y_groups : int = (size.y - 1.0) / 8.0 + 1.0
|
||||
var z_groups := 1.0
|
||||
var z_groups := 1
|
||||
|
||||
|
||||
# Loop through views just in case we're doing stereo rendering. No extra cost if this is mono.
|
||||
@@ -114,7 +114,6 @@ func _render_callback(p_effect_callback_type: EffectCallbackType, p_render_data:
|
||||
var compute_list := rd.compute_list_begin()
|
||||
rd.compute_list_bind_compute_pipeline(compute_list, pipeline)
|
||||
rd.compute_list_bind_uniform_set(compute_list, uniform_set, 0)
|
||||
#rd.compute_list_set_push_constant(compute_list, push_constant.to_byte_array(), push_constant.size() * 4)
|
||||
rd.compute_list_dispatch(compute_list, x_groups, y_groups, z_groups)
|
||||
rd.compute_list_end()
|
||||
rd.free_rid(texture_sampler)
|
||||
|
||||
@@ -30,7 +30,7 @@ transparency = 2
|
||||
alpha_scissor_threshold = 0.0
|
||||
alpha_antialiasing_mode = 0
|
||||
disable_ambient_light = true
|
||||
albedo_color = Color(0.1334653, 0.106680326, 0.15061459, 0.47993344)
|
||||
albedo_color = Color(0.44410604, 0.32877246, 0.26597014, 0.7541567)
|
||||
billboard_mode = 3
|
||||
particles_anim_h_frames = 1
|
||||
particles_anim_v_frames = 1
|
||||
@@ -45,8 +45,8 @@ shader_parameter/scroll_speed = Vector2(0.05, 0.01)
|
||||
shader_parameter/texture_scale = Vector2(1, 1)
|
||||
shader_parameter/edge_softness_y = 0.2
|
||||
shader_parameter/edge_softness_x = 0.1
|
||||
shader_parameter/night_intensity = 0.0
|
||||
shader_parameter/sun_color = Color(1, 0.6716112, 0.3432224, 1)
|
||||
shader_parameter/night_intensity = 0.7953524793650795
|
||||
shader_parameter/sun_color = Color(0.2841828, 0.2023238, 0.27953526, 1)
|
||||
|
||||
[sub_resource type="Resource" id="Resource_r4tfj"]
|
||||
script = ExtResource("2_h6hjk")
|
||||
@@ -185,7 +185,7 @@ shader_parameter/clear_center_radius = 0.39200001862
|
||||
shader_parameter/edge_softness = 0.30900001397898
|
||||
shader_parameter/max_opacity = 0.10000000475
|
||||
|
||||
[node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain")]
|
||||
[node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain", "fog_overlay")]
|
||||
script = ExtResource("1_wecen")
|
||||
environment_config = SubResource("Resource_r4tfj")
|
||||
particles_wind = NodePath("Particles_Wind")
|
||||
@@ -193,6 +193,7 @@ particles_snow = NodePath("Particles_Snow")
|
||||
particles_fireflies = NodePath("Particles_Fireflies")
|
||||
particles_rain = NodePath("Particles_Rain")
|
||||
godray = ExtResource("5_411rw")
|
||||
fog_overlay = NodePath("FogOverlay")
|
||||
|
||||
[node name="Particles_Fireflies" type="GPUParticles3D" parent="." unique_id=947538133]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0)
|
||||
|
||||
@@ -4,6 +4,9 @@ extends Node3D
|
||||
|
||||
@export var environment_config: EnvironmentConfig
|
||||
|
||||
@export_group("Camera")
|
||||
@export var camera: Camera3D
|
||||
|
||||
@export_group("Particles")
|
||||
@export var particles_wind: GPUParticles3D
|
||||
@export var particles_snow: GPUParticles3D
|
||||
@@ -39,7 +42,8 @@ func _ready() -> void:
|
||||
godray,
|
||||
sun,
|
||||
environment,
|
||||
environment_config
|
||||
environment_config,
|
||||
camera
|
||||
)
|
||||
weather_controller.name = "WeatherController"
|
||||
add_child(weather_controller)
|
||||
|
||||
@@ -12,6 +12,7 @@ var fog_overlay: ColorRect
|
||||
var sun: DirectionalLight3D
|
||||
var environment: WorldEnvironment
|
||||
var environment_config: EnvironmentConfig
|
||||
var camera: Camera3D
|
||||
|
||||
var day_time: float = 0.0
|
||||
|
||||
@@ -36,7 +37,8 @@ var thereare_fireflies: bool = false
|
||||
|
||||
func _init(wind: GPUParticles3D, snow: GPUParticles3D,
|
||||
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
|
||||
thesun: DirectionalLight3D, theenvironment: WorldEnvironment, environmentconfig: EnvironmentConfig) -> void:
|
||||
thesun: DirectionalLight3D, theenvironment: WorldEnvironment, environmentconfig: EnvironmentConfig,
|
||||
thecamera: Camera3D = null) -> void:
|
||||
particles_wind = wind
|
||||
particles_snow = snow
|
||||
particles_fireflies = fireflies
|
||||
@@ -45,6 +47,7 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
|
||||
sun = thesun
|
||||
environment = theenvironment
|
||||
environment_config = environmentconfig
|
||||
camera = thecamera
|
||||
|
||||
set_rain()
|
||||
|
||||
@@ -64,7 +67,9 @@ func _ready() -> void:
|
||||
UIEvents.toggle_fireflies.connect(toggle_fireflies)
|
||||
UIEvents.toggle_storm.connect(toggle_storm)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
func _process(delta: float) -> void:
|
||||
_follow_camera()
|
||||
|
||||
var base_tint: Color
|
||||
var base_sky_top: Color
|
||||
var base_sky_horizon: Color
|
||||
@@ -187,6 +192,19 @@ func _process(delta: float) -> void:
|
||||
environment_config.material_fog.set_shader_parameter("sun_color", final_tint)
|
||||
|
||||
|
||||
func _follow_camera() -> void:
|
||||
if not camera or not is_instance_valid(camera):
|
||||
return
|
||||
var cam_pos: Vector3 = camera.global_position
|
||||
if particles_rain:
|
||||
particles_rain.global_position = Vector3(cam_pos.x, particles_rain.position.y, cam_pos.z)
|
||||
if particles_snow:
|
||||
particles_snow.global_position = Vector3(cam_pos.x, particles_snow.position.y, cam_pos.z)
|
||||
if particles_wind:
|
||||
particles_wind.global_position = Vector3(cam_pos.x, particles_wind.position.y, cam_pos.z)
|
||||
if particles_fireflies:
|
||||
particles_fireflies.global_position = Vector3(cam_pos.x, particles_fireflies.position.y, cam_pos.z)
|
||||
|
||||
#region fireflies
|
||||
|
||||
func toggle_fireflies(value: bool):
|
||||
@@ -210,7 +228,6 @@ func set_fireflies():
|
||||
|
||||
func toggle_wind(value: bool):
|
||||
is_windy = value
|
||||
var is_storm = is_raining and is_snowing
|
||||
var is_night = day_time >= 2.5
|
||||
|
||||
if particles_wind:
|
||||
@@ -359,8 +376,10 @@ func spawn_single_godray() -> void:
|
||||
var random_x: float = randf_range(-environment_config.godray_spawn_radius, environment_config.godray_spawn_radius)
|
||||
var random_z: float = randf_range(-environment_config.godray_spawn_radius, environment_config.godray_spawn_radius)
|
||||
|
||||
#TODO: FLAVIO: fix global position using the camera position if needed
|
||||
ray.global_position = Vector3(random_x, environment_config.godray_spawn_height, random_z)
|
||||
var center := Vector3.ZERO
|
||||
if camera and is_instance_valid(camera):
|
||||
center = camera.global_position
|
||||
ray.global_position = Vector3(center.x + random_x, environment_config.godray_spawn_height, center.z + random_z)
|
||||
ray.rotation_degrees = environment_config.godray_rotation_degrees
|
||||
ray.scale = environment_config.godray_scale
|
||||
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
extends Node
|
||||
|
||||
#Weather signals
|
||||
@warning_ignore("unused_signal")
|
||||
signal toggle_rain(value: bool)
|
||||
@warning_ignore("unused_signal")
|
||||
signal toggle_snow(value: bool)
|
||||
@warning_ignore("unused_signal")
|
||||
signal toggle_wind(value: bool)
|
||||
@warning_ignore("unused_signal")
|
||||
signal toggle_fireflies(value: bool)
|
||||
@warning_ignore("unused_signal")
|
||||
signal toggle_storm(value: bool)
|
||||
|
||||
@@ -18,11 +18,11 @@ seamless = true
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_abyor"]
|
||||
shader = ExtResource("3_jiovi")
|
||||
shader_parameter/sky_top_color = Color(0.5659384, 0.36750057, 0.18968758, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.78500116, 0.5365633, 0.32937515, 1)
|
||||
shader_parameter/night_intensity = 0.206248555555554
|
||||
shader_parameter/sky_top_color = Color(0.050000012, 0.050000012, 0.15, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.15000004, 0.100000024, 0.25, 1)
|
||||
shader_parameter/night_intensity = 1.0
|
||||
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
|
||||
shader_parameter/sun_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
shader_parameter/sun_color = Color(0.100000024, 0.100000024, 0.3, 1)
|
||||
shader_parameter/cloud_center_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/cloud_edge_color = Color(0.8, 0.85, 0.9, 1)
|
||||
shader_parameter/cloud_direction = Vector2(0.5, 0.2)
|
||||
@@ -48,8 +48,8 @@ sky_material = SubResource("ShaderMaterial_abyor")
|
||||
[sub_resource type="Environment" id="Environment_icuhg"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_50i22")
|
||||
ambient_light_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
tonemap_exposure = 0.8365633
|
||||
ambient_light_color = Color(0.100000024, 0.100000024, 0.3, 1)
|
||||
tonemap_exposure = 0.4
|
||||
ssao_enabled = true
|
||||
ssao_radius = 0.5
|
||||
ssao_intensity = 14.0
|
||||
@@ -57,13 +57,13 @@ ssao_detail = 0.0
|
||||
ssil_enabled = true
|
||||
glow_enabled = true
|
||||
glow_levels/4 = 1.0
|
||||
glow_intensity = 1.0474982
|
||||
glow_intensity = 2.0
|
||||
glow_strength = 0.65
|
||||
glow_bloom = 1.0
|
||||
fog_enabled = true
|
||||
fog_mode = 1
|
||||
fog_light_color = Color(0.78500116, 0.5365633, 0.32937515, 1)
|
||||
fog_density = 0.0046812315
|
||||
fog_light_color = Color(0.15000004, 0.100000024, 0.25, 1)
|
||||
fog_density = 0.015
|
||||
fog_sky_affect = 0.0
|
||||
|
||||
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
|
||||
@@ -89,16 +89,17 @@ size = Vector3(200, 0.08, 200)
|
||||
|
||||
[node name="Museum" type="Node3D" unique_id=1411616506]
|
||||
|
||||
[node name="DayNight" parent="." unique_id=1578787116 instance=ExtResource("1_daynt")]
|
||||
[node name="DayNight" parent="." unique_id=1578787116 node_paths=PackedStringArray("camera") instance=ExtResource("1_daynt")]
|
||||
camera = NodePath("../Camera3D")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=6398994]
|
||||
environment = SubResource("Environment_icuhg")
|
||||
compositor = SubResource("Compositor_jbfcc")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=565189502]
|
||||
transform = Transform3D(0.9572571, 0.26574892, -0.114174426, 0, 0.39474285, 0.9187914, 0.2892374, -0.8795199, 0.3778705, 0, 0, 0)
|
||||
light_color = Color(0.8143763, 0.49687576, 0.22062486, 1)
|
||||
light_energy = 0.855626
|
||||
transform = Transform3D(-0.4999999, 0.49673164, -0.70940626, 0, 0.8191519, 0.5735763, 0.86602515, 0.2867882, -0.40957597, 0, 0, 0)
|
||||
light_color = Color(0.100000024, 0.100000024, 0.3, 1)
|
||||
light_energy = 0.3
|
||||
light_indirect_energy = 0.0
|
||||
light_volumetric_fog_energy = 0.0
|
||||
shadow_enabled = true
|
||||
|
||||
Reference in New Issue
Block a user