Skip to content

Commit d0e2638

Browse files
gk98selementbound
andauthored
chore: Cache project settings (#442)
Closes #304 --------- Co-authored-by: Tamás Gálffy <[email protected]>
1 parent 4c170a8 commit d0e2638

File tree

18 files changed

+73
-43
lines changed

18 files changed

+73
-43
lines changed

addons/netfox.extras/plugin.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="netfox.extras"
44
description="Game-specific utilities for Netfox"
55
author="Tamas Galffy and contributors"
6-
version="1.25.4"
6+
version="1.25.5"
77
script="netfox-extras.gd"

addons/netfox.extras/window-tiler.gd

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
extends Node
22

3+
# Settings
4+
var _is_enabled: bool = ProjectSettings.get_setting(&"netfox/extras/auto_tile_windows", false)
5+
var _is_borderless: bool = ProjectSettings.get_setting(&"netfox/extras/borderless", false)
6+
var _tile_screen: int = ProjectSettings.get_setting(&"netfox/extras/screen", 0)
7+
38
# Hash the game name, so we always get a valid filename
4-
var _prefix: String = "netfox-window-tiler-%x" % [ProjectSettings.get("application/config/name").hash()]
9+
var _prefix: String = "netfox-window-tiler-%x" % [ProjectSettings.get_setting(&"application/config/name").hash()]
510

611
var _sid: String = "%x" % [hash(int(Time.get_unix_time_from_system() / 2.))]
712
var _uid: String = "%d" % [Time.get_unix_time_from_system() * 1000_0000.]
@@ -25,7 +30,7 @@ func _ready() -> void:
2530
return
2631

2732
# Don't tile if disabled
28-
if not ProjectSettings.get_setting("netfox/extras/auto_tile_windows", false):
33+
if not _is_enabled:
2934
return
3035

3136
_logger.debug("Tiling with sid: %s, uid: %s", [_sid, _uid])
@@ -96,7 +101,7 @@ func _get_uid(filename: String) -> String:
96101
return filename.substr(_prefix.length() + 1).get_slice("-", 1)
97102

98103
func _tile_window(i: int, total: int) -> void:
99-
var screen = ProjectSettings.get_setting("netfox/extras/screen", 0)
104+
var screen = _tile_screen
100105
var screen_rect = DisplayServer.screen_get_usable_rect(screen)
101106

102107
var window: Window = get_tree().get_root()
@@ -106,7 +111,7 @@ func _tile_window(i: int, total: int) -> void:
106111
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MAXIMIZED)
107112
return
108113

109-
window.borderless = ProjectSettings.get_setting("netfox/extras/borderless", false)
114+
window.borderless = _is_borderless
110115

111116
# Divide up the screen
112117
var windows_per_row = int(ceil(sqrt(total)))

addons/netfox.internals/logger.gd

+4-4
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ static func free_tag(tag: Callable) -> void:
7979
_ordered_tags.erase(tag)
8080

8181
static func _static_init():
82-
log_level = ProjectSettings.get_setting("netfox/logging/log_level", DEFAULT_LOG_LEVEL)
82+
log_level = ProjectSettings.get_setting(&"netfox/logging/log_level", DEFAULT_LOG_LEVEL)
8383
module_log_level = {
84-
"netfox": ProjectSettings.get_setting("netfox/logging/netfox_log_level", DEFAULT_LOG_LEVEL),
85-
"netfox.noray": ProjectSettings.get_setting("netfox/logging/netfox_noray_log_level", DEFAULT_LOG_LEVEL),
86-
"netfox.extras": ProjectSettings.get_setting("netfox/logging/netfox_extras_log_level", DEFAULT_LOG_LEVEL)
84+
"netfox": ProjectSettings.get_setting(&"netfox/logging/netfox_log_level", DEFAULT_LOG_LEVEL),
85+
"netfox.noray": ProjectSettings.get_setting(&"netfox/logging/netfox_noray_log_level", DEFAULT_LOG_LEVEL),
86+
"netfox.extras": ProjectSettings.get_setting(&"netfox/logging/netfox_extras_log_level", DEFAULT_LOG_LEVEL)
8787
}
8888

8989
func _init(p_module: String, p_name: String):

addons/netfox.internals/plugin.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="netfox.internals"
44
description="Shared internals for netfox addons"
55
author="Tamas Galffy and contributors"
6-
version="1.25.4"
6+
version="1.25.5"
77
script="plugin.gd"

addons/netfox.noray/plugin.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="netfox.noray"
44
description="Bulletproof your connectivity with noray integration for netfox"
55
author="Tamas Galffy and contributors"
6-
version="1.25.4"
6+
version="1.25.5"
77
script="netfox-noray.gd"

addons/netfox/network-time-synchronizer.gd

+10-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const MIN_SYNC_INTERVAL := 0.1
2020
var sync_interval: float:
2121
get:
2222
return maxf(
23-
ProjectSettings.get_setting(&"netfox/time/sync_interval", 0.25),
23+
_sync_interval,
2424
MIN_SYNC_INTERVAL
2525
)
2626
set(v):
@@ -31,7 +31,7 @@ var sync_interval: float:
3131
## [i]read-only[/i], you can change this in the Netfox project settings
3232
var sync_samples: int:
3333
get:
34-
return ProjectSettings.get_setting(&"netfox/time/sync_samples", 8)
34+
return _sync_samples
3535
set(v):
3636
push_error("Trying to set read-only variable sync_samples")
3737

@@ -44,7 +44,7 @@ var sync_samples: int:
4444
## [i]read-only[/i], you can change this in the Netfox project settings
4545
var adjust_steps: int:
4646
get:
47-
return ProjectSettings.get_setting(&"netfox/time/sync_adjust_steps", 8)
47+
return _adjust_steps
4848
set(v):
4949
push_error("Trying to set read-only variable adjust_steps")
5050

@@ -56,7 +56,7 @@ var adjust_steps: int:
5656
## [i]read-only[/i], you can change this in the Netfox project settings
5757
var panic_threshold: float:
5858
get:
59-
return ProjectSettings.get_setting(&"netfox/time/recalibrate_threshold", 2.)
59+
return _panic_threshold
6060
set(v):
6161
push_error("Trying to set read-only variable panic_threshold")
6262

@@ -95,6 +95,12 @@ var remote_offset: float:
9595
return _offset
9696
set(v):
9797
push_error("Trying to set read-only variable remote_offset")
98+
99+
# Settings
100+
var _sync_interval: float = ProjectSettings.get_setting(&"netfox/time/sync_interval", 0.25)
101+
var _sync_samples: int = ProjectSettings.get_setting(&"netfox/time/sync_samples", 8)
102+
var _adjust_steps: int =ProjectSettings.get_setting(&"netfox/time/sync_adjust_steps", 8)
103+
var _panic_threshold: float = ProjectSettings.get_setting(&"netfox/time/recalibrate_threshold", 2.)
98104

99105
var _active: bool = false
100106
static var _logger: _NetfoxLogger = _NetfoxLogger.for_netfox("NetworkTimeSynchronizer")

addons/netfox/network-time.gd

+17-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var tickrate: int:
1313
if sync_to_physics:
1414
return Engine.physics_ticks_per_second
1515
else:
16-
return ProjectSettings.get_setting(&"netfox/time/tickrate", 30)
16+
return _tickrate
1717
set(v):
1818
push_error("Trying to set read-only variable tickrate")
1919

@@ -25,7 +25,7 @@ var tickrate: int:
2525
## [i]read-only[/i], you can change this in the project settings
2626
var sync_to_physics: bool:
2727
get:
28-
return ProjectSettings.get_setting(&"netfox/time/sync_to_physics", false)
28+
return _sync_to_physics
2929
set(v):
3030
push_error("Trying to set read-only variable sync_to_physics")
3131

@@ -40,7 +40,7 @@ var sync_to_physics: bool:
4040
## [i]read-only[/i], you can change this in the project settings
4141
var max_ticks_per_frame: int:
4242
get:
43-
return ProjectSettings.get_setting(&"netfox/time/max_ticks_per_frame", 8)
43+
return _max_ticks_per_frame
4444
set(v):
4545
push_error("Trying to set read-only variable max_ticks_per_frame")
4646

@@ -100,7 +100,7 @@ var tick: int:
100100
## @deprecated: Use [member _NetworkTimeSynchronizer.panic_threshold] instead.
101101
var recalibrate_threshold: float:
102102
get:
103-
return ProjectSettings.get_setting(&"netfox/time/recalibrate_threshold", 8.0)
103+
return _recalibrate_threshold
104104
set(v):
105105
push_error("Trying to set read-only variable recalibrate_threshold")
106106

@@ -113,7 +113,7 @@ var recalibrate_threshold: float:
113113
## against.
114114
var stall_threshold: float:
115115
get:
116-
return ProjectSettings.get_setting(&"netfox/time/stall_threshold", 1.0)
116+
return _stall_threshold
117117
set(v):
118118
push_error("Trying to set read-only variable stall_threshold")
119119

@@ -266,15 +266,15 @@ var physics_factor: float:
266266
## [i]read-only[/i], you can change this in the project settings
267267
var clock_stretch_max: float:
268268
get:
269-
return ProjectSettings.get_setting(&"netfox/time/max_time_stretch", 1.25)
269+
return _clock_stretch_max
270270
set(v):
271271
push_error("Trying to set read-only variable stretch_max")
272272

273273
## Suppress warning when calling [member start] with an [OfflineMultiplayerPeer]
274274
## active.
275275
var suppress_offline_peer_warning: bool:
276276
get:
277-
return ProjectSettings.get_setting(&"netfox/time/suppress_offline_peer_warning", false)
277+
return _suppress_offline_peer_warning
278278
set(v):
279279
push_error("Trying to set read-only variable suppress_offline_peer_warning")
280280

@@ -364,8 +364,18 @@ const _STATE_INACTIVE := 0
364364
const _STATE_SYNCING := 1
365365
const _STATE_ACTIVE := 2
366366

367+
# Settings
368+
var _tickrate: int = ProjectSettings.get_setting(&"netfox/time/tickrate", 30)
369+
var _sync_to_physics: bool = ProjectSettings.get_setting(&"netfox/time/sync_to_physics", false)
370+
var _max_ticks_per_frame: int = ProjectSettings.get_setting(&"netfox/time/max_ticks_per_frame", 8)
371+
var _recalibrate_threshold: float = ProjectSettings.get_setting(&"netfox/time/recalibrate_threshold", 8.0)
372+
var _stall_threshold: float = ProjectSettings.get_setting(&"netfox/time/stall_threshold", 1.0)
373+
var _clock_stretch_max: float = ProjectSettings.get_setting(&"netfox/time/max_time_stretch", 1.25)
374+
var _suppress_offline_peer_warning: bool = ProjectSettings.get_setting(&"netfox/time/suppress_offline_peer_warning", false)
375+
367376
var _state: int = _STATE_INACTIVE
368377

378+
# Timing
369379
var _tick: int = 0
370380
var _was_paused: bool = false
371381
var _initial_sync_done = false

addons/netfox/plugin.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="netfox"
44
description="Shared internals for netfox addons"
55
author="Tamas Galffy and contributors"
6-
version="1.25.4"
6+
version="1.25.5"
77
script="netfox.gd"

addons/netfox/rollback/network-rollback.gd

+19-10
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var enable_diff_states: bool = ProjectSettings.get_setting(&"netfox/rollback/ena
2525
## [i]read-only[/i], you can change this in the project settings
2626
var history_limit: int:
2727
get:
28-
return ProjectSettings.get_setting(&"netfox/rollback/history_limit", 64)
28+
return _history_limit
2929
set(v):
3030
push_error("Trying to set read-only variable history_limit")
3131

@@ -50,7 +50,7 @@ var history_start: int:
5050
## [i]read-only[/i], you can change this in the project settings
5151
var display_offset: int:
5252
get:
53-
return ProjectSettings.get_setting(&"netfox/rollback/display_offset", 0)
53+
return _display_offset
5454
set(v):
5555
push_error("Trying to set read-only variable display_offset")
5656

@@ -85,9 +85,10 @@ var display_tick: int:
8585
## with input latency higher than network latency.
8686
## [br][br]
8787
## [i]read-only[/i], you can change this in the project settings
88+
8889
var input_delay: int:
8990
get:
90-
return ProjectSettings.get_setting(&"netfox/rollback/input_delay", 0)
91+
return _input_delay
9192
set(v):
9293
push_error("Trying to set read-only variable input_delay")
9394

@@ -99,10 +100,10 @@ var input_delay: int:
99100
## in transmission, the next (n-1) packets will contain the data for it.
100101
## [br][br]
101102
## [i]read-only[/i], you can change this in the project settings
103+
102104
var input_redundancy: int:
103105
get:
104-
var value := ProjectSettings.get_setting(&"netfox/rollback/input_redundancy", 3)
105-
return max(1, value)
106+
return max(1, _input_redundancy)
106107
set(v):
107108
push_error("Trying to set read-only variable input_redundancy")
108109

@@ -146,17 +147,25 @@ signal on_record_tick(tick: int)
146147
## Event emitted after running the network rollback loop
147148
signal after_loop()
148149

150+
# Settings
151+
var _history_limit: int = ProjectSettings.get_setting(&"netfox/rollback/history_limit", 64)
152+
var _display_offset: int = ProjectSettings.get_setting(&"netfox/rollback/display_offset", 0)
153+
var _input_delay: int = ProjectSettings.get_setting(&"netfox/rollback/input_delay", 0)
154+
var _input_redundancy: int = ProjectSettings.get_setting(&"netfox/rollback/input_redundancy", 3)
155+
156+
# Timing
149157
var _tick: int = 0
150158
var _resim_from: int
151159

152-
var _is_rollback: bool = false
153-
var _simulated_nodes: Dictionary = {}
154-
var _mutated_nodes: Dictionary = {}
155-
156160
var _rollback_from: int = -1
157161
var _rollback_to: int = -1
158162
var _rollback_stage: String = ""
159163

164+
# Resim + mutations
165+
var _is_rollback: bool = false
166+
var _simulated_nodes: Dictionary = {}
167+
var _mutated_nodes: Dictionary = {}
168+
160169
const _STAGE_BEFORE := "B"
161170
const _STAGE_PREPARE := "P"
162171
const _STAGE_SIMULATE := "S"
@@ -198,7 +207,7 @@ func is_rollback() -> bool:
198207
## This is used by [RollbackSynchronizer] to see if it should simulate the
199208
## given object during rollback.
200209
func is_rollback_aware(what: Object) -> bool:
201-
return what.has_method("_rollback_tick")
210+
return what.has_method(&"_rollback_tick")
202211

203212
## Calls the [code]_rollback_tick[/code] method on the target, running its
204213
## simulation for the given rollback tick.

examples/forest-brawl/scripts/brawler-controller.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ var player_name: String = "":
3030
var player_id: int = -1
3131
var last_hit_player: BrawlerController
3232
var last_hit_tick: int = -1
33-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
33+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
3434
var respawn_tick: int = -1
3535
var respawn_count: int = 0
3636

examples/input-prediction/marble.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var is_reversing := false
1010
@onready var _rollback_synchronizer := $RollbackSynchronizer as RollbackSynchronizer
1111
@onready var input := $Input as Node
1212

13-
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
13+
var gravity: float = ProjectSettings.get_setting(&"physics/3d/default_gravity")
1414

1515
func _ready():
1616
position = Vector3(0, 4, 0)

examples/multiplayer-fps/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ extends CharacterBody3D
1111

1212
static var _logger := _NetfoxLogger.new("game", "Player")
1313

14-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
14+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
1515
var health: int = 100
1616
var death_tick: int = -1
1717
var respawn_position: Vector3

examples/multiplayer-fps/scripts/ui/window-size-connector.gd

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ func _target_nodes_changed(new_value: Array[Node]):
2929
return
3030

3131
_on_window_resized(Vector2(
32-
ProjectSettings.get_setting("display/window/size/viewport_width"),
33-
ProjectSettings.get_setting("display/window/size/viewport_height")
32+
ProjectSettings.get_setting(&"display/window/size/viewport_width"),
33+
ProjectSettings.get_setting(&"display/window/size/viewport_height")
3434
))

examples/multiplayer-netfox/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ extends CharacterBody3D
44
@export var input: PlayerInput
55

66
# Get the gravity from the project settings to be synced with RigidBody nodes.
7-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
7+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
88

99
func _ready():
1010
position = Vector3(0, 4, 0)

examples/multiplayer-simple/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ extends CharacterBody3D
33
@export var speed = 5.0
44

55
# Get the gravity from the project settings to be synced with RigidBody nodes.
6-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
6+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
77

88
func _physics_process(delta):
99
if not is_multiplayer_authority():

examples/multiplayer-state-machine/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var _color: Color = Color.WHITE
1313
var _material: StandardMaterial3D = StandardMaterial3D.new()
1414

1515
# Get the gravity from the project settings to be synced with RigidBody nodes.
16-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
16+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
1717

1818
func _ready():
1919
# Set spawn position

examples/rollback-fps/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ extends CharacterBody3D
1212

1313
static var _logger := _NetfoxLogger.new("game", "Player")
1414

15-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
15+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
1616
var health: int = 100
1717
var death_tick: int = -1
1818
var respawn_position: Vector3

examples/single-player/scripts/player.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ extends CharacterBody3D
33
@export var speed = 5.0
44

55
# Get the gravity from the project settings to be synced with RigidBody nodes.
6-
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
6+
var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity")
77

88
func _physics_process(delta):
99
# Add the gravity.

0 commit comments

Comments
 (0)