From dfc943e80203e1532f4a1366358600fbc3da5dae Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sun, 1 Oct 2023 23:19:00 +0530 Subject: [PATCH] fix more memory leak --- src/DtsObject.hx | 2 ++ src/Marble.hx | 7 +++++++ src/MarbleWorld.hx | 3 ++- src/collision/CollisionEntity.hx | 9 +++++++++ src/collision/CollisionSurface.hx | 11 +++++++++++ src/collision/CollisionWorld.hx | 14 ++++++++++++++ 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 04286ed1..a812b4d3 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -1033,6 +1033,8 @@ class DtsObject extends GameObject { public override function dispose() { super.dispose(); this.level = null; + boundingCollider = null; + colliders = null; this.dtsResource.release(); } } diff --git a/src/Marble.hx b/src/Marble.hx index d37b5534..fd04a0c7 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1978,4 +1978,11 @@ class Marble extends GameObject { marbledts.scale(this._prevRadius / 0.6666); } } + + public override function dispose() { + super.dispose(); + removeChildren(); + camera = null; + collider = null; + } } diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index ea25756b..bc06e72f 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1977,8 +1977,9 @@ class MarbleWorld extends Scheduler { if (sky != null) sky.dispose(); - + sky = null; instanceManager = null; + collisionWorld.dispose(); collisionWorld = null; particleManager = null; namedObjects = null; diff --git a/src/collision/CollisionEntity.hx b/src/collision/CollisionEntity.hx index 3cb21a36..3cc8f91f 100644 --- a/src/collision/CollisionEntity.hx +++ b/src/collision/CollisionEntity.hx @@ -70,6 +70,15 @@ class CollisionEntity implements IOctreeObject implements IBVHObject { // this.bvh.build(); } + public function dispose() { + for (s in this.surfaces) + s.dispose(); + go = null; + surfaces = null; + bvh = null; + octree = null; + } + public function setTransform(transform:Matrix) { if (this.transform.equal(transform)) return; diff --git a/src/collision/CollisionSurface.hx b/src/collision/CollisionSurface.hx index 28f24471..e9237988 100644 --- a/src/collision/CollisionSurface.hx +++ b/src/collision/CollisionSurface.hx @@ -151,4 +151,15 @@ class CollisionSurface implements IOctreeObject implements IBVHObject { n: _transformedNormals[p1] }; } + + public function dispose() { + points = null; + normals = null; + indices = null; + _transformedPoints = null; + _transformedNormals = null; + edgeData = null; + edgeConcavities = null; + originalIndices = null; + } } diff --git a/src/collision/CollisionWorld.hx b/src/collision/CollisionWorld.hx index a65fa016..1ad34fc3 100644 --- a/src/collision/CollisionWorld.hx +++ b/src/collision/CollisionWorld.hx @@ -127,4 +127,18 @@ class CollisionWorld { this.dynamicOctree.update(entity); } } + + public function dispose() { + for (e in entities) { + e.dispose(); + } + for (e in dynamicEntities) { + e.dispose(); + } + octree = null; + entities = null; + dynamicEntities = null; + dynamicOctree = null; + dynamicEntitySet = null; + } }