From e3b2679f95d2edeefe274774eaddb49df9ea156c Mon Sep 17 00:00:00 2001 From: Persephone Bubblegum-Holiday Date: Sat, 24 May 2025 18:58:36 -0700 Subject: [PATCH] fix severe lag issue when recording for more than like 20 seconds --- .../Controls/MovementFrameIndicatorOff.tscn | 13 ++------ .../Controls/MovementFrameIndicatorOn.tscn | 13 ++------ Scripts/EditorScreen.gd | 4 +-- Scripts/MovementRow.gd | 32 +++++++++++++------ 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn b/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn index 8a2cad7..179fd0a 100644 --- a/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn +++ b/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn @@ -5,17 +5,10 @@ [node name="MovementFrameIndicator" type="Control"] layout_mode = 3 anchors_preset = 0 -offset_right = 2.0 -offset_bottom = 32.0 script = ExtResource("1_ttcva") [node name="ColorRect" type="ColorRect" parent="."] -layout_mode = 1 -anchors_preset = -1 -anchor_left = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -2.0 -grow_horizontal = 0 -grow_vertical = 2 +layout_mode = 0 +offset_right = 2.0 +offset_bottom = 32.0 color = Color(0.0941176, 0.0941176, 0.0941176, 1) diff --git a/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn b/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn index 49d1ffa..1a264f4 100644 --- a/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn +++ b/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn @@ -5,17 +5,10 @@ [node name="MovementFrameIndicator" type="Control"] layout_mode = 3 anchors_preset = 0 -offset_right = 2.0 -offset_bottom = 32.0 script = ExtResource("1_2om8h") [node name="ColorRect" type="ColorRect" parent="."] -layout_mode = 1 -anchors_preset = -1 -anchor_left = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -2.0 -grow_horizontal = 0 -grow_vertical = 2 +layout_mode = 0 +offset_right = 2.0 +offset_bottom = 32.0 color = Color(0, 1, 0, 1) diff --git a/Scripts/EditorScreen.gd b/Scripts/EditorScreen.gd index 113e1ed..467477e 100644 --- a/Scripts/EditorScreen.gd +++ b/Scripts/EditorScreen.gd @@ -13,8 +13,8 @@ signal return_to_zero() func update_time_label() -> void: var frames = index % 60 var seconds = floori(index/60) % 60 - var minutes = floori(index/360) % 60 - var hours = floori(index/7200) + var minutes = floori(index/3600) % 60 + var hours = floori(index/216000) $SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames] #$SequencerPanel/TransportControls/TimeLabel.text = str(index) diff --git a/Scripts/MovementRow.gd b/Scripts/MovementRow.gd index 31869f3..1f42439 100644 --- a/Scripts/MovementRow.gd +++ b/Scripts/MovementRow.gd @@ -17,6 +17,7 @@ var playback_held_on_previous_frame : bool = false var etching: bool = false var recording : bool = false var playing : bool = true +var current_block_indicator signal movement_in(movement, rate) signal movement_out(movement, rate) @@ -24,18 +25,20 @@ signal movement_out(movement, rate) func set_at_current() -> void: if (current_index > self.movements.size()-1): self.movements.append(true) else: self.movements.set(current_index, true) - var indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn") - var instance = indicator.instantiate() - instance.x_offset = current_index * 2 - $MovementsBG/InvisibleMask/MovementsHandle.add_child(instance) + if (check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2 + else: + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn").instantiate() + current_block_indicator.position.x = current_index * 2 + $MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator) func unset_at_current() -> void: if (current_index > self.movements.size()-1): self.movements.append(false) else: self.movements.set(current_index, false) - var indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn") - var instance = indicator.instantiate() - instance.x_offset = current_index * 2 - $MovementsBG/InvisibleMask/MovementsHandle.add_child(instance) + if (!check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2 + else: + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate() + current_block_indicator.position.x = current_index * 2 + $MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator) func check_at_current() -> bool: if (current_index > self.movements.size()-1): return false @@ -43,9 +46,17 @@ func check_at_current() -> bool: if (out == null): return false return out +func check_at_index(cindex: int) -> bool: + if (cindex > self.movements.size()-1): return false + if (cindex < 0): return false + var out = self.movements.get(cindex) + if (out == null): return false + return out + func _step(amount: int): - if (recording && etching): set_at_current() - elif (recording && !etching): unset_at_current() + if (recording): + if (etching): set_at_current() + else: unset_at_current() if (playing): if (check_at_current()): if (!playback_held_on_previous_frame): @@ -102,6 +113,7 @@ func _ready() -> void: editor.start_recording.connect(_start_recording) editor.end_recording.connect(_end_recording) editor.return_to_zero.connect(_return_to_zero) + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate() update_text() func _process(_delta: float) -> void: