Skip to content

Commit f57f3db

Browse files
committed
Fix OOB access and keep a minimum of one segment
Closes #29
1 parent c2ea38c commit f57f3db

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

demo/addons/ropesim/Rope.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ signal on_point_count_changed()
1818
@export var pause: bool = false: set = _set_pause
1919

2020
## Number of rope segments. More segments results in smoother quality but also higher computation cost.
21-
@export var num_segments: int = 10: set = _set_num_segs
21+
@export_range(0, 100, 1, "or_greater", "hide_slider") var num_segments: int = 10: set = _set_num_segs
2222

2323
## Overall rope length. Will be distributed uniformly among all segments.
2424
@export var rope_length: float = 100: set = _set_length
@@ -346,7 +346,7 @@ func get_point_simulation_weight(index: int) -> float:
346346
func _set_num_segs(value: int) -> void:
347347
if value == num_segments:
348348
return
349-
num_segments = value
349+
num_segments = max(1, value)
350350
_setup(Engine.is_editor_hint())
351351
on_point_count_changed.emit()
352352

demo/addons/ropesim/RopeHandle.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,5 +123,5 @@ func _update_state(old_rope: Rope) -> void:
123123

124124

125125
func _restore_state(rope: Rope) -> void:
126-
if rope:
126+
if rope and _target_idx < rope.get_num_points():
127127
rope.set_point_simulation_weight(_target_idx, 1.0)

0 commit comments

Comments
 (0)