Physics/Geom: Fix missing initialization/uninitialization (fixes crash at exit)
Former-commit-id: 94e4ec331cd559ba4a2680f36325f25a7d2333f2
This commit is contained in:
parent
c359c6925e
commit
df7d736b23
|
|
@ -39,6 +39,9 @@ namespace Nz
|
|||
|
||||
class NAZARA_PHYSICS_API PhysGeom : public RefCounted
|
||||
{
|
||||
friend PhysGeomLibrary;
|
||||
friend class Physics;
|
||||
|
||||
public:
|
||||
PhysGeom() = default;
|
||||
PhysGeom(const PhysGeom&) = delete;
|
||||
|
|
@ -64,6 +67,9 @@ namespace Nz
|
|||
protected:
|
||||
virtual NewtonCollision* CreateHandle(PhysWorld* world) const = 0;
|
||||
|
||||
static bool Initialize();
|
||||
static void Uninitialize();
|
||||
|
||||
mutable std::unordered_map<PhysWorld*, NewtonCollision*> m_handles;
|
||||
|
||||
static PhysGeomLibrary::LibraryMap s_library;
|
||||
|
|
|
|||
|
|
@ -148,6 +148,22 @@ namespace Nz
|
|||
return CreateGeomFromPrimitive(list.GetPrimitive(0));
|
||||
}
|
||||
|
||||
bool PhysGeom::Initialize()
|
||||
{
|
||||
if (!PhysGeomLibrary::Initialize())
|
||||
{
|
||||
NazaraError("Failed to initialise library");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PhysGeom::Uninitialize()
|
||||
{
|
||||
PhysGeomLibrary::Uninitialize();
|
||||
}
|
||||
|
||||
PhysGeomLibrary::LibraryMap PhysGeom::s_library;
|
||||
|
||||
/********************************** BoxGeom **********************************/
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/Log.hpp>
|
||||
#include <Nazara/Physics/Config.hpp>
|
||||
#include <Nazara/Physics/Geom.hpp>
|
||||
#include <Newton/Newton.h>
|
||||
#include <Nazara/Physics/Debug.hpp>
|
||||
|
||||
|
|
@ -35,6 +36,11 @@ namespace Nz
|
|||
s_moduleReferenceCounter++;
|
||||
|
||||
// Initialisation du module
|
||||
if (!PhysGeom::Initialize())
|
||||
{
|
||||
NazaraError("Failed to initialize geoms");
|
||||
return false;
|
||||
}
|
||||
|
||||
NazaraNotice("Initialized: Physics module");
|
||||
return true;
|
||||
|
|
@ -57,6 +63,8 @@ namespace Nz
|
|||
}
|
||||
|
||||
// Libération du module
|
||||
PhysGeom::Uninitialize();
|
||||
|
||||
s_moduleReferenceCounter = 0;
|
||||
|
||||
NazaraNotice("Uninitialized: Physics module");
|
||||
|
|
|
|||
Loading…
Reference in New Issue