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 5df2ca4c..c3f0110d 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1979,8 +1979,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; + } }