day night cycle tweaking
This commit is contained in:
@@ -1,10 +1,18 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cwy8iv8nlwqrc"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://cwy8iv8nlwqrc"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dl780dimuvcms" path="res://scripts/realtime_day_night_cycle.gd" id="1_idjmm"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_idjmm"]
|
||||
offsets = PackedFloat32Array(0.00636943, 0.159236, 0.828025, 1)
|
||||
colors = PackedColorArray(0.93, 0.7006, 0.2418, 1, 0.97, 0.97, 0.97, 1, 0.98, 0.98, 0.98, 1, 1, 0.666667, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_xp6wm"]
|
||||
gradient = SubResource("Gradient_idjmm")
|
||||
width = 24
|
||||
|
||||
[sub_resource type="Curve" id="Curve_idjmm"]
|
||||
_limits = [0.0, 2.0, 0.0, 24.0]
|
||||
_data = [Vector2(5, 0), 0.0, 0.66, 0, 0, Vector2(12, 2), 0.0, 0.0, 0, 0, Vector2(19, 0), -0.66, 0.0, 0, 0]
|
||||
_data = [Vector2(5, 0), 0.0, 0.66, 0, 0, Vector2(12, 2), 0.0, 0.0, 0, 0, Vector2(20, 0), -0.66, 0.0, 0, 0]
|
||||
point_count = 3
|
||||
|
||||
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_xp6wm"]
|
||||
@@ -19,17 +27,20 @@ background_mode = 2
|
||||
sky = SubResource("Sky_6g0ku")
|
||||
ssr_enabled = true
|
||||
ssao_enabled = true
|
||||
ssil_enabled = true
|
||||
sdfgi_enabled = true
|
||||
glow_enabled = true
|
||||
fog_density = 0.0005
|
||||
|
||||
[node name="Realtime Day Night Cycle" type="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||
script = ExtResource("1_idjmm")
|
||||
sun_color = SubResource("GradientTexture1D_xp6wm")
|
||||
sun_energy_over_time = SubResource("Curve_idjmm")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_ml2st")
|
||||
|
||||
[node name="Sun" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.603876, -0.0397012, 0.796089, -0.797078, -0.0300781, 0.603127, -2.96845e-10, -0.998759, -0.0498085, 0, 0, 0)
|
||||
transform = Transform3D(0.969658, -0.064919, 0.235691, -0.0649191, 0.861104, 0.504268, -0.235691, -0.504268, 0.830761, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
|
||||
@@ -11,6 +11,7 @@ config_version=5
|
||||
[application]
|
||||
|
||||
config/name="First Person Test"
|
||||
config/tags=PackedStringArray("fps")
|
||||
run/main_scene="uid://f7e0v1r6ra6c"
|
||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
@@ -328,6 +328,11 @@ _data = {
|
||||
|
||||
[node name="AssetChecker" type="Node3D" groups=["ui"]]
|
||||
|
||||
[node name="Realtime Day Night Cycle" parent="." instance=ExtResource("26_qoxo0")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9891, 1.53028, 4.26966)
|
||||
set_time = 18.25
|
||||
north_offset = null
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.54059, -4.88213, 0)
|
||||
material_override = ExtResource("3_pecld")
|
||||
@@ -579,5 +584,4 @@ libraries = {
|
||||
}
|
||||
autoplay = "Menu"
|
||||
|
||||
[node name="Realtime Day Night Cycle" parent="." instance=ExtResource("26_qoxo0")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9891, 1.53028, 4.26966)
|
||||
[connection signal="property_list_changed" from="Realtime Day Night Cycle" to="Realtime Day Night Cycle" method="_on_property_list_changed"]
|
||||
|
||||
@@ -1,17 +1,38 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
@onready var sun: DirectionalLight3D = $Sun
|
||||
@export var sun_color : GradientTexture1D
|
||||
@export var realtime : bool = false
|
||||
@export var set_time = 17.0
|
||||
@export var north_offset : float
|
||||
@export var sun_energy_over_time : Curve
|
||||
|
||||
@onready var sun: DirectionalLight3D = $Sun
|
||||
|
||||
func _ready() -> void:
|
||||
change_sun()
|
||||
|
||||
func change_sun():
|
||||
var sun_details = sun_angle_from_time()
|
||||
sun.rotation.x = sun_details["angle"]
|
||||
sun.rotation.y = north_offset
|
||||
sun.light_energy = sun_details["energy"]
|
||||
|
||||
|
||||
func sun_angle_from_time():
|
||||
var time_dict = Time.get_time_dict_from_system()
|
||||
var current_time = float(time_dict["hour"]) + (float(time_dict["minute"]) / 60)
|
||||
print("current time: ", current_time)
|
||||
var current_time
|
||||
if realtime:
|
||||
current_time = float(time_dict["hour"]) + (float(time_dict["minute"]) / 60)
|
||||
else:
|
||||
current_time = set_time
|
||||
|
||||
var angle : float = deg_to_rad((current_time/24.0) * 360.0 + 90.0)
|
||||
var energy = sun_energy_over_time.sample(current_time)
|
||||
|
||||
print("current time: ", current_time)
|
||||
print("Sun angle : ",rad_to_deg(angle))
|
||||
|
||||
return {"angle" : angle, "energy" : energy}
|
||||
|
||||
func _on_property_list_changed() -> void:
|
||||
change_sun()
|
||||
|
||||
Reference in New Issue
Block a user