Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change timers process callback to physics #1228

Merged
merged 3 commits into from
Sep 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions addons/dialogic/Editor/Settings/Settings_General.gd
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func refresh():
%CustomEventsFolderButton.icon = get_theme_icon("Folder", "EditorIcons")
%TestingSceneButton.icon = get_theme_icon("Folder", "EditorIcons")
%TestingSceneLabel.text = DialogicUtil.get_project_setting('dialogic/editor/test_dialog_scene', 'res://addons/dialogic/Other/DefaultDialogNode.tscn')
%PhysicsTimerButton.button_pressed = DialogicUtil.is_physics_timer()

# Color Palett
color_palette = DialogicUtil.get_color_palette()
Expand Down Expand Up @@ -65,3 +66,7 @@ func custom_testing_scene_selected(path:String):
%TestingSceneLabel.text = path
ProjectSettings.set_setting('dialogic/editor/test_dialog_scene', path)
ProjectSettings.save()

func _on_physics_timer_button_toggled(button_pressed:bool) -> void:
ProjectSettings.set_setting('dialogic/timer/process_in_physics', button_pressed)
ProjectSettings.save()
136 changes: 106 additions & 30 deletions addons/dialogic/Editor/Settings/Settings_General.tscn
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://dm4kxvcn7d7ug"]
[gd_scene load_steps=8 format=3 uid="uid://dm4kxvcn7d7ug"]

[ext_resource type="Script" path="res://addons/dialogic/Editor/Settings/Settings_General.gd" id="2"]
[ext_resource type="LabelSettings" uid="uid://nkh7ypguw3il" path="res://addons/dialogic/Editor/Common/HintLabelSettings.tres" id="2_hs15a"]
[ext_resource type="LabelSettings" uid="uid://bqlmi2bwcj0s6" path="res://addons/dialogic/Editor/Common/HintLabelSettings.tres" id="2_hs15a"]
[ext_resource type="StyleBox" uid="uid://dmsjhgv22dns8" path="res://addons/dialogic/Editor/Common/TitleBgStylebox.tres" id="2_u584y"]

[sub_resource type="Image" id="Image_3nstt"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6mpk2"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0.545098, 0.545098, 0.545098, 0.211765)

[sub_resource type="Image" id="Image_iyfpw"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "LumAlpha8",
Expand All @@ -14,39 +21,54 @@ data = {
}

[sub_resource type="ImageTexture" id="7"]
image = SubResource("Image_3nstt")
image = SubResource("Image_iyfpw")

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3mwvq"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0.545098, 0.545098, 0.545098, 0.211765)

[node name="General" type="HBoxContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2")

[node name="General" type="VBoxContainer" parent="."]
offset_right = 830.0
offset_bottom = 600.0
layout_mode = 2
offset_right = 958.0
offset_bottom = 648.0
size_flags_horizontal = 3

[node name="TitleLabel" type="Label" parent="General"]
offset_right = 830.0
layout_mode = 2
offset_right = 958.0
offset_bottom = 36.0
theme_override_styles/normal = ExtResource("2_u584y")
theme_override_styles/normal = SubResource("StyleBoxFlat_6mpk2")
text = "Extensions"

[node name="HBoxContainer" type="HBoxContainer" parent="General"]
layout_mode = 2
offset_top = 40.0
offset_right = 830.0
offset_right = 958.0
offset_bottom = 66.0

[node name="Label" type="Label" parent="General/HBoxContainer"]
offset_right = 498.0
layout_mode = 2
offset_right = 626.0
offset_bottom = 26.0
size_flags_horizontal = 3
text = "Custom events folder"

[node name="CustomEventsFolderLabel" type="Label" parent="General/HBoxContainer"]
unique_name_in_owner = true
offset_left = 502.0
offset_right = 802.0
layout_mode = 2
offset_left = 630.0
offset_right = 930.0
offset_bottom = 26.0
size_flags_horizontal = 8
text = "res://addons/dialogic_additions/Events"
Expand All @@ -55,45 +77,52 @@ visible_characters_behavior = 4

[node name="CustomEventsFolderButton" type="Button" parent="General/HBoxContainer"]
unique_name_in_owner = true
offset_left = 806.0
offset_right = 830.0
layout_mode = 2
offset_left = 934.0
offset_right = 958.0
offset_bottom = 26.0
icon = SubResource("7")

[node name="Label" type="Label" parent="General"]
layout_mode = 2
offset_top = 70.0
offset_right = 830.0
offset_right = 958.0
offset_bottom = 96.0
text = "You should restart godot after changing this path!"
label_settings = ExtResource("2_hs15a")

[node name="HSeparator" type="HSeparator" parent="General"]
layout_mode = 2
offset_top = 100.0
offset_right = 830.0
offset_right = 958.0
offset_bottom = 104.0

[node name="TitleLabel2" type="Label" parent="General"]
layout_mode = 2
offset_top = 108.0
offset_right = 830.0
offset_right = 958.0
offset_bottom = 144.0
theme_override_styles/normal = ExtResource("2_u584y")
theme_override_styles/normal = SubResource("StyleBoxFlat_6mpk2")
text = "Testing"

[node name="HBoxContainer2" type="HBoxContainer" parent="General"]
layout_mode = 2
offset_top = 148.0
offset_right = 830.0
offset_right = 958.0
offset_bottom = 174.0

[node name="Label" type="Label" parent="General/HBoxContainer2"]
offset_right = 494.0
layout_mode = 2
offset_right = 622.0
offset_bottom = 26.0
size_flags_horizontal = 3
text = "Testing scene"

[node name="TestingSceneLabel" type="Label" parent="General/HBoxContainer2"]
unique_name_in_owner = true
offset_left = 498.0
offset_right = 802.0
layout_mode = 2
offset_left = 626.0
offset_right = 930.0
offset_bottom = 26.0
size_flags_horizontal = 8
text = "res://addons/dialogic_additions/Events "
Expand All @@ -102,70 +131,116 @@ visible_characters_behavior = 4

[node name="TestingSceneButton" type="Button" parent="General/HBoxContainer2"]
unique_name_in_owner = true
offset_left = 806.0
offset_right = 830.0
layout_mode = 2
offset_left = 934.0
offset_right = 958.0
offset_bottom = 26.0
icon = SubResource("7")

[node name="HSeparator2" type="HSeparator" parent="General"]
layout_mode = 2
offset_top = 178.0
offset_right = 958.0
offset_bottom = 182.0

[node name="TitleLabel3" type="Label" parent="General"]
layout_mode = 2
offset_top = 186.0
offset_right = 958.0
offset_bottom = 222.0
theme_override_styles/normal = SubResource("StyleBoxFlat_3mwvq")
text = "Timer"

[node name="HBoxContainer3" type="HBoxContainer" parent="General"]
layout_mode = 2
offset_top = 226.0
offset_right = 958.0
offset_bottom = 252.0

[node name="Label" type="Label" parent="General/HBoxContainer3"]
layout_mode = 2
offset_right = 930.0
offset_bottom = 26.0
size_flags_horizontal = 3
text = "Process in physics"

[node name="PhysicsTimerButton" type="CheckBox" parent="General/HBoxContainer3"]
unique_name_in_owner = true
layout_mode = 2
offset_left = 934.0
offset_right = 958.0
offset_bottom = 26.0

[node name="VSeparator" type="VSeparator" parent="."]
offset_left = 834.0
offset_right = 838.0
offset_bottom = 600.0
layout_mode = 2
offset_left = 962.0
offset_right = 966.0
offset_bottom = 648.0

[node name="Theming" type="VBoxContainer" parent="."]
offset_left = 842.0
offset_right = 1024.0
offset_bottom = 600.0
layout_mode = 2
offset_left = 970.0
offset_right = 1152.0
offset_bottom = 648.0

[node name="Label" type="Label" parent="Theming"]
layout_mode = 2
offset_right = 182.0
offset_bottom = 36.0
theme_override_styles/normal = ExtResource("2_u584y")
text = "Color palette"

[node name="Colors" type="HBoxContainer" parent="Theming"]
unique_name_in_owner = true
layout_mode = 2
offset_top = 40.0
offset_right = 182.0
offset_bottom = 48.0

[node name="Color1" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_right = 8.0
offset_bottom = 8.0
color = Color(0.231373, 0.545098, 0.94902, 1)

[node name="Color2" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_left = 12.0
offset_right = 20.0
offset_bottom = 8.0
color = Color(0, 0.694118, 0.372549, 1)

[node name="Color3" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_left = 24.0
offset_right = 32.0
offset_bottom = 8.0
color = Color(0.580392, 0.407843, 0.909804, 1)

[node name="Color4" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_left = 36.0
offset_right = 44.0
offset_bottom = 8.0
color = Color(0.870588, 0.360784, 0.360784, 1)

[node name="Color5" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_left = 48.0
offset_right = 56.0
offset_bottom = 8.0
color = Color(0.980392, 0.584314, 0.164706, 1)

[node name="Color6" type="ColorPickerButton" parent="Theming/Colors"]
layout_mode = 2
offset_left = 60.0
offset_right = 68.0
offset_bottom = 8.0
color = Color(0.486275, 0.486275, 0.486275, 1)

[node name="ResetColorsButton" type="Button" parent="Theming"]
unique_name_in_owner = true
layout_mode = 2
offset_top = 52.0
offset_right = 182.0
offset_bottom = 83.0
Expand All @@ -174,3 +249,4 @@ text = "Reset colors to default"

[connection signal="pressed" from="General/HBoxContainer/CustomEventsFolderButton" to="." method="_on_CustomEventsFolderButton_pressed"]
[connection signal="pressed" from="General/HBoxContainer2/TestingSceneButton" to="." method="_on_TestingSceneButton_pressed"]
[connection signal="toggled" from="General/HBoxContainer3/PhysicsTimerButton" to="." method="_on_physics_timer_button_toggled"]
1 change: 1 addition & 0 deletions addons/dialogic/Events/Choice/Subsystem_Choices.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var choice_blocker = Timer.new()

func _ready():
choice_blocker.one_shot = true
DialogicUtil.update_timer_process_callback(choice_blocker)
add_child(choice_blocker)

####################################################################################################
Expand Down
1 change: 1 addition & 0 deletions addons/dialogic/Events/Save/Subsystem_Save.gd
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ var autosave_timer = Timer.new()

func _ready():
autosave_timer.one_shot = true
DialogicUtil.update_timer_process_callback(autosave_timer)
autosave_timer.name = "AutosaveTimer"
autosave_timer.timeout.connect(_on_autosave_timer_timeout)
add_child(autosave_timer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func preview():
if %SoundFolder.hint_tooltip.is_empty(): return
$DialogicNode_TypeSounds.load_overwrite(get_data())
var preview_timer = Timer.new()
DialogicUtil.update_timer_process_callback(preview_timer)
add_child(preview_timer)
preview_timer.start(DialogicUtil.get_project_setting('text/speed', 0.01))
for i in range(20):
Expand Down
1 change: 1 addition & 0 deletions addons/dialogic/Events/Text/Display_DialogText.gd
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ func _ready() -> void:
add_child(timer)
timer.wait_time = 0.01
timer.one_shot = true
DialogicUtil.update_timer_process_callback(timer)
timer.timeout.connect(continue_reveal)

# compile effects regex
Expand Down
2 changes: 1 addition & 1 deletion addons/dialogic/Events/Text/event.gd
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func _execute() -> void:
if dialogic.has_subsystem('Voice') and dialogic.Voice.is_voiced(dialogic.current_event_idx):
#autocontinue settings is set as minimal. change or keep this? - Kvagram
wait = max(wait, dialogic.Voice.get_remaining_time())
await dialogic.get_tree().create_timer(wait).timeout
await dialogic.get_tree().create_timer(wait, true, DialogicUtil.is_physics_timer()).timeout
dialogic.handle_next_event()
else:
dialogic.Text.show_next_indicators()
Expand Down
1 change: 1 addition & 0 deletions addons/dialogic/Events/Voice/Subsystem_Voice.gd
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func stop_audio():
func set_timer(time:float):
if !voicetimer:
voicetimer = Timer.new()
DialogicUtil.update_timer_process_callback(voicetimer)
voicetimer.one_shot = true
add_child(voicetimer)
voicetimer.timeout.connect(stop_audio)
Expand Down
2 changes: 1 addition & 1 deletion addons/dialogic/Events/Wait/event.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ func _execute() -> void:
if (HideText):
dialogic.Text.hide_text_boxes()
dialogic.current_state = dialogic.states.WAITING
await dialogic.get_tree().create_timer(SecondsTime).timeout
await dialogic.get_tree().create_timer(SecondsTime, true, DialogicUtil.is_physics_timer()).timeout
dialogic.current_state = dialogic.states.IDLE
if (HideText):
dialogic.Text.show_text_boxes()
Expand Down
8 changes: 8 additions & 0 deletions addons/dialogic/Other/DialogicUtil.gd
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,11 @@ static func get_color_palette(default:bool = false) -> Dictionary:
static func get_color(value:String) -> Color:
var colors = get_color_palette()
return colors[value]


static func is_physics_timer()->bool:
return get_project_setting('dialogic/timer/process_in_physics', false)


static func update_timer_process_callback(timer:Timer) -> void:
timer.process_callback = Timer.TIMER_PROCESS_PHYSICS if is_physics_timer() else Timer.TIMER_PROCESS_IDLE