diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp
index 556ee28d..17ac3677 100644
--- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp
+++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp
@@ -142,6 +142,13 @@ bool GameState::LoadModels()
this->staticObjects.Push(new C_StaticObj());
this->staticObjects[this->staticObjects.Size() -1 ]->Init(modelData);
+ // add jumppad
+ modelData.position = Oyster::Math::Float3(4, 600.3, 0);
+ modelData.modelPath = L"jumppad_round.dan";
+ modelData.id = id++;
+ // load models
+ this->staticObjects.Push(new C_StaticObj());
+ this->staticObjects[this->staticObjects.Size() -1 ]->Init(modelData);
// add player model
modelData.position = Oyster::Math::Float3(0, 602, 0);
@@ -159,13 +166,7 @@ bool GameState::LoadModels()
this->dynamicObjects.Push(new C_DynamicObj());
this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData);
- // add jumppad
- modelData.position = Oyster::Math::Float3(4, 600.3, 0);
- modelData.modelPath = L"jumppad_round.dan";
- modelData.id = id++;
- // load models
- this->dynamicObjects.Push(new C_DynamicObj());
- this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData);
+
// add sky sphere
modelData.position = Oyster::Math::Float3(0,0,0);
diff --git a/Code/Game/GameLogic/AttatchmentMassDriver.cpp b/Code/Game/GameLogic/AttatchmentMassDriver.cpp
index bb7a30f8..1e5d0640 100644
--- a/Code/Game/GameLogic/AttatchmentMassDriver.cpp
+++ b/Code/Game/GameLogic/AttatchmentMassDriver.cpp
@@ -60,17 +60,18 @@ void AttatchmentMassDriver::Update(float dt)
//update position of heldObject if there is an object being held
if(hasObject)
{
- Oyster::Physics::ICustomBody::State state;
- state = heldObject->GetState();
+ //Oyster::Physics::ICustomBody::State state;
+ //state = heldObject->GetState();
Oyster::Math::Float3 ownerPos = owner->GetPosition();
Oyster::Physics::ICustomBody::State ownerState = owner->GetRigidBody()->GetState();
Oyster::Math::Float3 up = -ownerState.GetOrientation().v[2];
up *= -0.3;
- Oyster::Math::Float3 pos = ownerPos + up + (owner->GetLookDir().GetNormalized()*10);
+ Oyster::Math::Float3 pos = ownerPos + (owner->GetLookDir().GetNormalized()*5);
- state.centerPos = pos;
+ //state.centerPos = pos;
+ heldObject->SetPosition(pos);
- heldObject->SetState(state);
+ //heldObject->SetState(state);
}
}
@@ -86,10 +87,8 @@ void AttatchmentMassDriver::ForcePush(const GameLogic::WEAPON_FIRE &usage, float
if(hasObject)
{
Oyster::Physics::API::Instance().ReleaseFromLimbo(heldObject);
- pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (700);
- Oyster::Physics::ICustomBody::State state = heldObject->GetState();
- //state.ApplyLinearImpulse((Oyster::Math::Float3)pushForce);
- heldObject->SetState(state);
+ pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (400);
+ heldObject->ApplyImpulse((Oyster::Math::Float3)pushForce);
hasObject = false;
heldObject = NULL;
@@ -101,7 +100,7 @@ void AttatchmentMassDriver::ForcePush(const GameLogic::WEAPON_FIRE &usage, float
Oyster::Math::Float lenght = 10;
Oyster::Math::Float3 pos = owner->GetRigidBody()->GetState().centerPos;
- pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (100);
+ pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (400);
Oyster::Collision3D::Cone *hitCone = new Oyster::Collision3D::Cone(lenght,pos,(Oyster::Math::Float4)owner->GetRigidBody()->GetState().quaternion,radius);
diff --git a/Code/Game/GameLogic/CollisionManager.cpp b/Code/Game/GameLogic/CollisionManager.cpp
index a0d768a3..9aef6b6c 100644
--- a/Code/Game/GameLogic/CollisionManager.cpp
+++ b/Code/Game/GameLogic/CollisionManager.cpp
@@ -61,11 +61,7 @@ using namespace GameLogic;
void SendObjectFlying(Oyster::Physics::ICustomBody &obj, Oyster::Math::Float3 force)
{
- Oyster::Physics::ICustomBody::State state;
-
- state = obj.GetState();
- //state.ApplyLinearImpulse(force);
- obj.SetState(state);
+ obj.ApplyImpulse(force);
}
@@ -135,7 +131,7 @@ using namespace GameLogic;
{
case ObjectSpecialType_StandarsBox:
//move obj to limbo in physics to make sure it wont collide with anything
- Oyster::Physics::API::Instance().MoveToLimbo(obj);
+// Oyster::Physics::API::Instance().MoveToLimbo(obj);
weapon->heldObject = obj; //weapon now holds the object
weapon->hasObject = true;
diff --git a/Code/Game/GameLogic/JumpPad.cpp b/Code/Game/GameLogic/JumpPad.cpp
index 2a7d7043..d52acb45 100644
--- a/Code/Game/GameLogic/JumpPad.cpp
+++ b/Code/Game/GameLogic/JumpPad.cpp
@@ -8,11 +8,10 @@ JumpPad::JumpPad(void)
{
}
-
-JumpPad::JumpPad(Oyster::Physics::ICustomBody *rigidBody, Oyster::Physics::ICustomBody::SubscriptMessage (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss), ObjectSpecialType type, Oyster::Math::Float3 pushForce)
+JumpPad::JumpPad(Oyster::Physics::ICustomBody *rigidBody, void (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss), ObjectSpecialType type, Oyster::Math::Float3 pushForce)
:StaticObject(rigidBody, collisionFuncAfter, type)
{
-
+ this->pushForce = pushForce;
}
diff --git a/Code/Game/GameLogic/JumpPad.h b/Code/Game/GameLogic/JumpPad.h
index 23601849..4fad54e4 100644
--- a/Code/Game/GameLogic/JumpPad.h
+++ b/Code/Game/GameLogic/JumpPad.h
@@ -9,8 +9,9 @@ namespace GameLogic
JumpPad(void);
JumpPad(Oyster::Physics::ICustomBody *rigidBody
- ,Oyster::Physics::ICustomBody::SubscriptMessage (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss)
- ,ObjectSpecialType type, Oyster::Math::Float3 pushForce);
+ ,void (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss)
+ ,ObjectSpecialType type, Oyster::Math::Float3 pushForce);
+
~JumpPad(void);
diff --git a/Code/Game/GameLogic/Level.cpp b/Code/Game/GameLogic/Level.cpp
index 6ccf6c5d..3cdab709 100644
--- a/Code/Game/GameLogic/Level.cpp
+++ b/Code/Game/GameLogic/Level.cpp
@@ -289,6 +289,13 @@ void Level::InitiateLevel(float radius)
this->staticObjects.Push(new StaticObject(rigidBody_House, Object::DefaultCollisionAfter, ObjectSpecialType_Generic));
rigidBody_House->SetCustomTag(this->staticObjects[0]);
this->staticObjects[0]->objectID = idCount++;
+
+ // add jumppad
+ ICustomBody* rigidBody_Jumppad = API::Instance().AddCollisionBox(Oyster::Math::Float3(1, 1, 1), Oyster::Math::Float4(0, 0, 0, 1), Oyster::Math::Float3(4, 600.3, 0), 5, 0.5f, 0.8f, 0.6f);
+
+ this->staticObjects.Push(new JumpPad(rigidBody_Jumppad, JumpPad::JumpPadActivated, ObjectSpecialType_JumpPad, Oyster::Math::Float3(0,2000,0)));
+ rigidBody_Jumppad->SetCustomTag(this->staticObjects[1]);
+ this->staticObjects[1]->objectID = idCount++;
}
void Level::AddPlayerToTeam(Player *player, int teamID)
diff --git a/Code/Game/GameLogic/Level.h b/Code/Game/GameLogic/Level.h
index 15f4a832..b8c3f744 100644
--- a/Code/Game/GameLogic/Level.h
+++ b/Code/Game/GameLogic/Level.h
@@ -9,6 +9,7 @@
#include "StaticObject.h"
#include "DynamicObject.h"
#include "GameModeType.h"
+#include "JumpPad.h"
#include "Player.h"
#include "PhysicsAPI.h"
#include "TeamManager.h"
diff --git a/Code/GamePhysics/GamePhysics.vcxproj b/Code/GamePhysics/GamePhysics.vcxproj
index dd2f8fd5..9b883bb3 100644
--- a/Code/GamePhysics/GamePhysics.vcxproj
+++ b/Code/GamePhysics/GamePhysics.vcxproj
@@ -112,6 +112,7 @@
true
+ $(SolutionDir)Physics/lib/debug/BulletCollision_Debugx64.lib;$(SolutionDir)Physics/lib/debug/BulletDynamics_Debugx64.lib;$(SolutionDir)Physics/lib/debug/LinearMath_Debugx64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
@@ -130,6 +131,7 @@
true
+ $(SolutionDir)Physics/lib/release/BulletCollision.lib;$(SolutionDir)Physics/lib/release/BulletDynamics.lib;$(SolutionDir)Physics/lib/release/LinearMath.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
@@ -148,6 +150,7 @@
true
+ $(SolutionDir)Physics/lib/release/BulletCollisionx64.lib;$(SolutionDir)Physics/lib/release/BulletDynamicsx64.lib;$(SolutionDir)Physics/lib/release/LinearMathx64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
diff --git a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp
index 3b4fc74d..26da0998 100644
--- a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp
+++ b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp
@@ -201,7 +201,7 @@ void API_Impl::UpdateWorld()
{
SimpleRigidBody* simpleBody = dynamic_cast(this->customBodies[i]);
btTransform trans;
- simpleBody->GetMotionState()->getWorldTransform(trans);
+ trans = simpleBody->GetRigidBody()->getWorldTransform();
this->customBodies[i]->SetPosition(Float3(trans.getOrigin().x(), trans.getOrigin().y(), trans.getOrigin().z()));
this->customBodies[i]->SetRotation(Quaternion(Float3(trans.getRotation().x(), trans.getRotation().y(), trans.getRotation().z()), trans.getRotation().w()));
diff --git a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
index 7cd2f2b6..5670d32b 100644
--- a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
+++ b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
@@ -106,36 +106,36 @@ void SimpleRigidBody::SetLinearVelocity(Float3 velocity)
void SimpleRigidBody::SetPosition(::Oyster::Math::Float3 position)
{
btTransform trans;
- this->motionState->getWorldTransform(trans);
+ trans = this->rigidBody->getWorldTransform();
trans.setOrigin(btVector3(position.x, position.y, position.z));
- this->motionState->setWorldTransform(trans);
+ this->rigidBody->setWorldTransform(trans);
this->state.centerPos = position;
}
void SimpleRigidBody::SetRotation(Float4 quaternion)
{
btTransform trans;
- this->motionState->getWorldTransform(trans);
+ trans = this->rigidBody->getWorldTransform();
trans.setRotation(btQuaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w));
- this->motionState->setWorldTransform(trans);
+ this->rigidBody->setWorldTransform(trans);
this->state.quaternion = Quaternion(quaternion.xyz, quaternion.w);
}
void SimpleRigidBody::SetRotation(::Oyster::Math::Quaternion quaternion)
{
btTransform trans;
- this->motionState->getWorldTransform(trans);
+ trans = this->rigidBody->getWorldTransform();
trans.setRotation(btQuaternion(quaternion.imaginary.x, quaternion.imaginary.y, quaternion.imaginary.z, quaternion.real));
- this->motionState->setWorldTransform(trans);
+ this->rigidBody->setWorldTransform(trans);
this->state.quaternion = quaternion;
}
void SimpleRigidBody::SetRotation(Float3 eulerAngles)
{
btTransform trans;
- this->motionState->getWorldTransform(trans);
+ trans = this->rigidBody->getWorldTransform();
trans.setRotation(btQuaternion(eulerAngles.x, eulerAngles.y, eulerAngles.z));
- this->motionState->setWorldTransform(trans);
+ this->rigidBody->setWorldTransform(trans);
this->state.quaternion = Quaternion(Float3(trans.getRotation().x(), trans.getRotation().y(), trans.getRotation().z()), trans.getRotation().w());
}
diff --git a/Code/Physics/lib/Debug/BulletCollision_Debugx64.lib b/Code/Physics/lib/Debug/BulletCollision_Debugx64.lib
new file mode 100644
index 00000000..1f9eb7e1
Binary files /dev/null and b/Code/Physics/lib/Debug/BulletCollision_Debugx64.lib differ
diff --git a/Code/Physics/lib/Debug/BulletDynamics_Debugx64.lib b/Code/Physics/lib/Debug/BulletDynamics_Debugx64.lib
new file mode 100644
index 00000000..2c6e7742
Binary files /dev/null and b/Code/Physics/lib/Debug/BulletDynamics_Debugx64.lib differ
diff --git a/Code/Physics/lib/Debug/LinearMath_Debugx64.lib b/Code/Physics/lib/Debug/LinearMath_Debugx64.lib
new file mode 100644
index 00000000..cd808fa7
Binary files /dev/null and b/Code/Physics/lib/Debug/LinearMath_Debugx64.lib differ
diff --git a/Code/Physics/lib/Release/BulletCollision.lib b/Code/Physics/lib/Release/BulletCollision.lib
new file mode 100644
index 00000000..d6bf723a
Binary files /dev/null and b/Code/Physics/lib/Release/BulletCollision.lib differ
diff --git a/Code/Physics/lib/Release/BulletCollisionx64.lib b/Code/Physics/lib/Release/BulletCollisionx64.lib
new file mode 100644
index 00000000..f83e4263
Binary files /dev/null and b/Code/Physics/lib/Release/BulletCollisionx64.lib differ
diff --git a/Code/Physics/lib/Release/BulletDynamics.lib b/Code/Physics/lib/Release/BulletDynamics.lib
new file mode 100644
index 00000000..2d09af6d
Binary files /dev/null and b/Code/Physics/lib/Release/BulletDynamics.lib differ
diff --git a/Code/Physics/lib/Release/BulletDynamicsx64.lib b/Code/Physics/lib/Release/BulletDynamicsx64.lib
new file mode 100644
index 00000000..3b18bc9e
Binary files /dev/null and b/Code/Physics/lib/Release/BulletDynamicsx64.lib differ
diff --git a/Code/Physics/lib/Release/LinearMath.lib b/Code/Physics/lib/Release/LinearMath.lib
new file mode 100644
index 00000000..be761363
Binary files /dev/null and b/Code/Physics/lib/Release/LinearMath.lib differ
diff --git a/Code/Physics/lib/Release/LinearMathx64.lib b/Code/Physics/lib/Release/LinearMathx64.lib
new file mode 100644
index 00000000..d5971534
Binary files /dev/null and b/Code/Physics/lib/Release/LinearMathx64.lib differ