diff --git a/src/liberty/collision/ColModel.cpp b/src/liberty/collision/ColModel.cpp index cf99d8b1..351e6f6d 100644 --- a/src/liberty/collision/ColModel.cpp +++ b/src/liberty/collision/ColModel.cpp @@ -2,6 +2,7 @@ #include "ColModel.h" #include "Game.h" #include "MemoryHeap.h" +#include "Collision.h" void* re3StreamingAlloc(size_t size); @@ -24,12 +25,12 @@ CColModel::CColModel(void) CColModel::~CColModel(void) { RemoveCollisionVolumes(); - RemoveTrianglePlanes(); } void CColModel::RemoveCollisionVolumes(void) { + CCollision::RemoveTrianglePlanes(this); if(ownsCollisionVolumes){ RwFree(spheres); RwFree(lines); @@ -95,6 +96,8 @@ CColModel::operator=(const CColModel &other) int i; int numVerts; + CCollision::RemoveTrianglePlanes(this); + boundingSphere = other.boundingSphere; boundingBox = other.boundingBox; diff --git a/src/liberty/core/FileLoader.cpp b/src/liberty/core/FileLoader.cpp index 1945b419..2f800366 100644 --- a/src/liberty/core/FileLoader.cpp +++ b/src/liberty/core/FileLoader.cpp @@ -223,7 +223,7 @@ CFileLoader::LoadCollisionFile(const char *filename) mi = CModelInfo::GetModelInfo(modelname, nil); if(mi){ - if(mi->GetColModel()){ + if(mi->GetColModel() && mi->DoesOwnColModel()){ LoadCollisionModel(work_buff+24, *mi->GetColModel(), modelname); }else{ CColModel *model = new CColModel; diff --git a/src/miami/collision/ColModel.cpp b/src/miami/collision/ColModel.cpp index aa0a7e0c..b222cf8e 100644 --- a/src/miami/collision/ColModel.cpp +++ b/src/miami/collision/ColModel.cpp @@ -45,13 +45,13 @@ CColModel::operator delete(void *p, size_t) throw() void CColModel::RemoveCollisionVolumes(void) { + CCollision::RemoveTrianglePlanes(this); if(ownsCollisionVolumes){ RwFree(spheres); RwFree(lines); RwFree(boxes); RwFree(vertices); RwFree(triangles); - CCollision::RemoveTrianglePlanes(this); } numSpheres = 0; numLines = 0; @@ -111,6 +111,8 @@ CColModel::operator=(const CColModel &other) int i; int numVerts; + CCollision::RemoveTrianglePlanes(this); + boundingSphere = other.boundingSphere; boundingBox = other.boundingBox;