From 1fa5551ba74de69b5985a02a7dc0b554c07e4a0f Mon Sep 17 00:00:00 2001 From: Collin Campbell Date: Thu, 20 Nov 2025 13:50:47 -0500 Subject: [PATCH] Memory Leak Fixed Have to free the mesh generator after we process our mesh. --- demo/assets/scripts/environment/destructable/cutters.gd | 2 +- .../scripts/environment/destructable/destructable_wall.gd | 3 +++ .../scripts/environment/destructable/geometry/geopolymesh.gd | 2 +- .../destructable/geometry/geopolytriangulization.gd | 2 +- demo/scenes/player/player_controller.tscn | 2 ++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/demo/assets/scripts/environment/destructable/cutters.gd b/demo/assets/scripts/environment/destructable/cutters.gd index 26f4dec..8a4b1c3 100644 --- a/demo/assets/scripts/environment/destructable/cutters.gd +++ b/demo/assets/scripts/environment/destructable/cutters.gd @@ -2,7 +2,7 @@ extends Node class_name Cutter -static func circleCutter(num_sides = 8, perimerter_length = 0.1) -> PackedVector2Array: +static func circleCutter(num_sides = 7, perimerter_length = 0.2) -> PackedVector2Array: var line_length: float = perimerter_length/num_sides var line_angle: float = 360.0/num_sides var current_angle: float = 0.0 diff --git a/demo/assets/scripts/environment/destructable/destructable_wall.gd b/demo/assets/scripts/environment/destructable/destructable_wall.gd index 6bf82ca..cdbc722 100644 --- a/demo/assets/scripts/environment/destructable/destructable_wall.gd +++ b/demo/assets/scripts/environment/destructable/destructable_wall.gd @@ -93,6 +93,8 @@ func _draw(): var meshGenerator = GeoPolyMesh.new(vector_indexes, vectors, extrusion_direction, depth) var commited_mesh = meshGenerator.commit_mesh(meshInstance3d.get_active_material(0)) + meshGenerator.free() + meshInstance3d.mesh = commited_mesh meshInstance3d.position += depth_position_offset @@ -112,6 +114,7 @@ func _re_draw(): var meshGenerator = GeoPolyMesh.new(vector_indexes, vectors, extrusion_direction, depth) var commited_mesh = meshGenerator.commit_mesh(meshInstance3d.get_active_material(0)) + meshGenerator.free() meshInstance3d.mesh = commited_mesh meshInstance3d.create_trimesh_collision() diff --git a/demo/assets/scripts/environment/destructable/geometry/geopolymesh.gd b/demo/assets/scripts/environment/destructable/geometry/geopolymesh.gd index e64b980..f7aa5ac 100644 --- a/demo/assets/scripts/environment/destructable/geometry/geopolymesh.gd +++ b/demo/assets/scripts/environment/destructable/geometry/geopolymesh.gd @@ -1,4 +1,4 @@ -extends Node +extends Object class_name GeoPolyMesh diff --git a/demo/assets/scripts/environment/destructable/geometry/geopolytriangulization.gd b/demo/assets/scripts/environment/destructable/geometry/geopolytriangulization.gd index b3c4536..4ad70e7 100644 --- a/demo/assets/scripts/environment/destructable/geometry/geopolytriangulization.gd +++ b/demo/assets/scripts/environment/destructable/geometry/geopolytriangulization.gd @@ -1,4 +1,4 @@ -extends Node +extends Object # provides all the utility functions for generating # a triangulized Polygon with holes diff --git a/demo/scenes/player/player_controller.tscn b/demo/scenes/player/player_controller.tscn index 946cd8b..0da2119 100644 --- a/demo/scenes/player/player_controller.tscn +++ b/demo/scenes/player/player_controller.tscn @@ -50,6 +50,7 @@ offset_right = 711.0 offset_bottom = 543.0 grow_horizontal = 1 grow_vertical = 1 +enabled = false initial_node_to_watch = NodePath("../StateChart") [node name="PlaceholderMesh" type="MeshInstance3D" parent="."] @@ -80,6 +81,7 @@ script = ExtResource("4_0l0yx") player = NodePath("../..") [node name="InteractionRaycast" type="RayCast3D" parent="CameraController/Camera3D"] +enabled = false target_position = Vector3(0, 0, -3) debug_shape_custom_color = Color(0, 1, 0, 1) script = ExtResource("4_cv1cy")