diff --git a/Code/GamePhysics/GamePhysics.vcxproj b/Code/GamePhysics/GamePhysics.vcxproj
index c9f6513c..232bc3ed 100644
--- a/Code/GamePhysics/GamePhysics.vcxproj
+++ b/Code/GamePhysics/GamePhysics.vcxproj
@@ -24,7 +24,7 @@
- StaticLibrary
+ DynamicLibrary
true
v110
MultiByte
@@ -66,22 +66,22 @@
- $(SolutionDir)..\External\Bin\DLL\
+ $(SolutionDir)..\Bin\DLL\
$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\
$(ProjectName)_$(PlatformShortName)D
- $(SolutionDir)..\External\Bin\DLL\
+ $(SolutionDir)..\Bin\DLL\
$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\
$(ProjectName)_$(PlatformShortName)
- $(SolutionDir)..\External\Bin\DLL\
+ $(SolutionDir)..\Bin\DLL\
$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\
$(ProjectName)_$(PlatformShortName)D
- $(SolutionDir)..\External\Bin\DLL\
+ $(SolutionDir)..\Bin\DLL\
$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\
$(ProjectName)_$(PlatformShortName)
@@ -90,6 +90,7 @@
Level3
Disabled
$(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;%(AdditionalIncludeDirectories)
+ _WINDLL;PHYSICS_DLL_EXPORT;%(PreprocessorDefinitions)
true
@@ -100,6 +101,7 @@
Level3
Disabled
$(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;%(AdditionalIncludeDirectories)
+ _WINDLL;PHYSICS_DLL_EXPORT;%(PreprocessorDefinitions)
true
@@ -112,6 +114,7 @@
true
true
$(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;%(AdditionalIncludeDirectories)
+ _WINDLL;PHYSICS_DLL_EXPORT;%(PreprocessorDefinitions)
true
@@ -126,6 +129,7 @@
true
true
$(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;%(AdditionalIncludeDirectories)
+ _WINDLL;PHYSICS_DLL_EXPORT;%(PreprocessorDefinitions)
true
@@ -145,14 +149,17 @@
+
+
-
+
+
diff --git a/Code/GamePhysics/GamePhysics.vcxproj.filters b/Code/GamePhysics/GamePhysics.vcxproj.filters
index 7118c2b5..4c0fd5f3 100644
--- a/Code/GamePhysics/GamePhysics.vcxproj.filters
+++ b/Code/GamePhysics/GamePhysics.vcxproj.filters
@@ -30,6 +30,9 @@
Header Files\Implementation
+
+ Header Files\Implementation
+
@@ -38,7 +41,10 @@
Source Files
-
+
+ Source Files
+
+
Source Files
diff --git a/Code/GamePhysics/Implementation/DLLMain.cpp b/Code/GamePhysics/Implementation/DLLMain.cpp
new file mode 100644
index 00000000..e46d1c83
--- /dev/null
+++ b/Code/GamePhysics/Implementation/DLLMain.cpp
@@ -0,0 +1,11 @@
+#define NOMINMAX
+
+#include
+#include "OysterMath.h"
+
+BOOL WINAPI DllMain( _In_ HINSTANCE hinstDLL,
+ _In_ DWORD fdwReason,
+ _In_ LPVOID lpvReserved )
+{
+ return ::Oyster::Math::IsSupported();
+}
\ No newline at end of file
diff --git a/Code/GamePhysics/Implementation/NullBody.cpp b/Code/GamePhysics/Implementation/NullBody.cpp
deleted file mode 100644
index 76d2471d..00000000
--- a/Code/GamePhysics/Implementation/NullBody.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "..\PhysicsAPI.h"
-
-using namespace ::Oyster::Physics;
-using namespace ::Oyster::Physics::Error;
-using namespace ::Oyster::Math;
-using namespace ::Oyster::Collision3D;
-using namespace ::Utility::DynamicMemory;
-
-NullBody::~NullBody() {}
-
-UniquePointer NullBody::Clone() const
-{
- return new NullBody( *this );
-}
-
-bool NullBody::IsSubscribingCollisions() const
-{
- return false;
-}
-
-bool NullBody::Intersects( const ICustomBody &object, Float &deltaWhen, Float3 &worldPointOfContact ) const
-{
- return false;
-}
-
-bool NullBody::Intersects( const ICollideable &shape ) const
-{
- return false;
-}
-
-unsigned int NullBody::GetReference() const
-{
- return not_a_reference;
-}
-
-Sphere & NullBody::GetBoundingSphere( Sphere &targetMem ) const
-{
- return targetMem = Sphere( Float3::null, 0.0f );
-}
-
-Float3 & NullBody::GetNormalAt( const Float3 &worldPos, Float3 &targetMem ) const
-{
- return targetMem = Float3::standard_unit_z;
-}
-
-Float3 & NullBody::GetCenter( Float3 &targetMem ) const
-{
- return targetMem = Float3::null;
-}
-
-Float4x4 & NullBody::GetRotation( Float4x4 &targetMem ) const
-{
- return targetMem = Float4x4::identity;
-}
-
-Float4x4 & NullBody::GetOrientation( Float4x4 &targetMem ) const
-{
- return targetMem = Float4x4::identity;
-}
-
-Float4x4 & NullBody::GetView( Float4x4 &targetMem ) const
-{
- return targetMem = Float4x4::identity;
-}
-
-UpdateState NullBody::Update( Float timeStepLength )
-{
- return resting;
-}
-
-void NullBody::SetMomentOfInertiaTensor_KeepVelocity( const Float4x4 &localI ) {}
-
-void NullBody::SetMomentOfInertiaTensor_KeepMomentum( const Float4x4 &localI ) {}
-
-void NullBody::SetMass_KeepVelocity( Float m ) {}
-
-void NullBody::SetMass_KeepMomentum( Float m ) {}
-
-void NullBody::SetCenter( const Float3 &worldPos ) {}
-
-void NullBody::SetRotation( const Float4x4 &rotation ) {}
-
-void NullBody::SetOrientation( const Float4x4 &orientation ) {}
\ No newline at end of file
diff --git a/Code/GamePhysics/Implementation/Octree.h b/Code/GamePhysics/Implementation/Octree.h
new file mode 100644
index 00000000..22385dc6
--- /dev/null
+++ b/Code/GamePhysics/Implementation/Octree.h
@@ -0,0 +1,57 @@
+#ifndef OCTREE_H
+#define OCTREE_H
+
+#include
+#include