|
|
@ -1,10 +1,11 @@ |
|
|
|
extends Node3D |
|
|
|
|
|
|
|
|
|
|
|
signal change_day_length(length_in_seconds: float) |
|
|
|
signal end_of_day |
|
|
|
signal pause_time |
|
|
|
signal resume_time |
|
|
|
signal set_day_length(length_in_seconds: float) |
|
|
|
signal set_rate_of_time(rate: float) ## 2.0 for 2x |
|
|
|
signal set_time(time: float) ## Time should be between 0 and 1 |
|
|
|
|
|
|
|
|
|
|
@ -61,14 +62,15 @@ func _process(delta: float) -> void: |
|
|
|
environment.environment.sky.sky_material.set("ground_horizon_color", ground_horizon_color.sample(time)) |
|
|
|
|
|
|
|
func _ready() -> void: |
|
|
|
change_day_length.connect(_on_change_day_length) |
|
|
|
pause_time.connect(_on_pause_time) |
|
|
|
resume_time.connect(_on_resume_time) |
|
|
|
set_day_length.connect(_on_set_day_length) |
|
|
|
set_rate_of_time.connect(_on_set_rate_of_time) |
|
|
|
|
|
|
|
|
|
|
|
func _on_change_day_length(seconds: float) -> void: |
|
|
|
day_length = seconds |
|
|
|
tick_rate = 1.0 / day_length |
|
|
|
func update_tick_rate(new_rate: float = 1.0) -> void: |
|
|
|
tick_rate = new_rate / day_length |
|
|
|
|
|
|
|
|
|
|
|
func _on_pause_time() -> void: |
|
|
|
time_paused = true |
|
|
@ -76,5 +78,12 @@ func _on_pause_time() -> void: |
|
|
|
func _on_resume_time() -> void: |
|
|
|
time_paused = true |
|
|
|
|
|
|
|
func _on_set_day_length(seconds: float) -> void: |
|
|
|
day_length = seconds |
|
|
|
update_tick_rate() |
|
|
|
|
|
|
|
func _on_set_rate_of_time(new_rate: float) -> void: |
|
|
|
update_tick_rate(new_rate) |
|
|
|
|
|
|
|
func _on_set_time(new_time: float) -> void: |
|
|
|
time = new_time |