Skip to content

Commit bc7a672

Browse files
committed
fix: update network area state during _after_prepare_tick, fix cast errors
1 parent 8821797 commit bc7a672

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

addons/netfox.extras/physics/network-area-2d.gd

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,21 @@ var _overlapping_areas := _HistoryBuffer.new()
1717

1818
## Returns the result of [method Area2D.get_overlapping_areas] at [param tick]
1919
func rollback_get_overlapping_areas(tick: int) -> Array[Area2D]:
20-
return _overlapping_areas.get_snapshot(tick) if _overlapping_areas.has(tick) else []
20+
if not _overlapping_areas.has(tick):
21+
return []
22+
23+
var areas: Array[Area2D] = []
24+
areas.assign(_overlapping_areas.get_snapshot(tick))
25+
return areas
2126

2227
## Returns the result of [method Area2D.get_overlapping_bodies] at [param tick]
2328
func rollback_get_overlapping_bodies(tick: int) -> Array[Node2D]:
24-
return _overlapping_bodies.get_snapshot(tick) if _overlapping_bodies.has(tick) else []
29+
if not _overlapping_bodies.has(tick):
30+
return []
31+
32+
var bodies: Array[Node2D] = []
33+
bodies.assign(_overlapping_bodies.get_snapshot(tick))
34+
return bodies
2535

2636
## Returns the result of [method Area2D.has_overlapping_areas] at [param tick]
2737
func rollback_has_overlapping_areas(tick: int) -> bool:
@@ -44,15 +54,18 @@ func _notification(what: int):
4454
# Use notification instead of _ready, so users can write their own _ready
4555
# callback without having to call super()
4656
if what == NOTIFICATION_READY:
47-
NetworkTime.on_tick.connect(_tick)
57+
NetworkRollback.after_prepare_tick.connect(_after_prepare_tick)
4858

4959

50-
func _tick(_d: float, tick: int):
60+
func _after_prepare_tick(tick: int):
5161
_update_bodies(tick)
5262
_update_areas(tick)
5363

5464

5565
func _update_bodies(tick: int):
66+
if not self.monitoring:
67+
return
68+
5669
var current := self.get_overlapping_bodies()
5770
_overlapping_bodies.set_snapshot(tick, current)
5871

@@ -75,6 +88,9 @@ func _update_bodies(tick: int):
7588

7689

7790
func _update_areas(tick: int):
91+
if not self.monitoring:
92+
return
93+
7894
var current := self.get_overlapping_areas()
7995
_overlapping_areas.set_snapshot(tick, current)
8096

addons/netfox.extras/physics/network-area-3d.gd

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,21 @@ var _overlapping_areas := _HistoryBuffer.new()
1717

1818
## Returns the result of [method Area3D.get_overlapping_areas] at [param tick]
1919
func rollback_get_overlapping_areas(tick: int) -> Array[Area3D]:
20-
return _overlapping_areas.get_snapshot(tick) if _overlapping_areas.has(tick) else []
20+
if not _overlapping_areas.has(tick):
21+
return []
22+
23+
var areas: Array[Area3D] = []
24+
areas.assign(_overlapping_areas.get_snapshot(tick))
25+
return areas
2126

2227
## Returns the result of [method Area3D.get_overlapping_bodies] at [param tick]
2328
func rollback_get_overlapping_bodies(tick: int) -> Array[Node3D]:
24-
return _overlapping_bodies.get_snapshot(tick) if _overlapping_bodies.has(tick) else []
29+
if not _overlapping_bodies.has(tick):
30+
return []
31+
32+
var bodies: Array[Node3D] = []
33+
bodies.assign(_overlapping_bodies.get_snapshot(tick))
34+
return bodies
2535

2636
## Returns the result of [method Area3D.has_overlapping_areas] at [param tick]
2737
func rollback_has_overlapping_areas(tick: int) -> bool:
@@ -44,15 +54,18 @@ func _notification(what: int):
4454
# Use notification instead of _ready, so users can write their own _ready
4555
# callback without having to call super()
4656
if what == NOTIFICATION_READY:
47-
NetworkTime.on_tick.connect(_tick)
57+
NetworkRollback.after_prepare_tick.connect(_after_prepare_tick)
4858

4959

50-
func _tick(_d: float, tick: int):
60+
func _after_prepare_tick(tick: int):
5161
_update_bodies(tick)
5262
_update_areas(tick)
5363

5464

5565
func _update_bodies(tick: int):
66+
if not self.monitoring:
67+
return
68+
5669
var current := self.get_overlapping_bodies()
5770
_overlapping_bodies.set_snapshot(tick, current)
5871

@@ -75,6 +88,9 @@ func _update_bodies(tick: int):
7588

7689

7790
func _update_areas(tick: int):
91+
if not self.monitoring:
92+
return
93+
7894
var current := self.get_overlapping_areas()
7995
_overlapping_areas.set_snapshot(tick, current)
8096

0 commit comments

Comments
 (0)