GL - working on weapon

This commit is contained in:
Erik Persson 2014-02-12 11:32:30 +01:00
parent 9f64a1b441
commit 3a80a71143
4 changed files with 29 additions and 14 deletions

View File

@ -95,22 +95,22 @@ void AttatchmentMassDriver::ForcePush(const GameLogic::WEAPON_FIRE &usage, float
heldObject = NULL;
return;
}
Oyster::Math::Float3 up = owner->GetOrientation().v[1];
Oyster::Math::Float3 look = owner->GetLookDir();
Oyster::Math::Float3 pos = owner->GetPosition();
Oyster::Math::Float radius = 2;
Oyster::Math::Float3 look = owner->GetLookDir().GetNormalized();
Oyster::Math::Float lenght = 5;
Oyster::Math::Float3 pos = owner->GetRigidBody()->GetState().centerPos;
pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (200 * dt);
Oyster::Math::Float4x4 aim = Oyster::Math3D::ViewMatrix_LookAtDirection(look, up, pos);
Oyster::Math::Float4x4 hitSpace = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/8,1,1,50);
Oyster::Collision3D::Frustrum hitFrustum = Oyster::Collision3D::Frustrum(Oyster::Math3D::ViewProjectionMatrix(aim,hitSpace));
Oyster::Collision3D::Cone *hitCone = new Oyster::Collision3D::Cone(look*5,pos,radius);
Oyster::Collision3D::Cone *hitCone;
forcePushData args;
args.pushForce = pushForce;
//Oyster::Physics::API::Instance().ApplyEffect(hitFrustum,&args,ForcePushAction);
Oyster::Physics::API::Instance().ApplyEffect(hitCone,&args,ForcePushAction);
}
/********************************************************

View File

@ -123,19 +123,20 @@ using namespace GameLogic;
void AttatchmentMassDriver::ForcePushAction(Oyster::Physics::ICustomBody *obj, void *args)
{
Oyster::Physics::ICustomBody::State state;
if(obj->GetState().mass == 0) return;
Object *realObj = (Object*)obj->GetCustomTag();
if(realObj->GetObjectType() == OBJECT_TYPE_PLAYER || realObj->GetObjectType() == OBJECT_TYPE_WORLD)
return;
state = obj->GetState();
//state.ApplyLinearImpulse(((forcePushData*)(args))->pushForce);
obj->SetState(state);
obj->ApplyImpulse(((forcePushData*)(args))->pushForce);
}
void AttatchmentMassDriver::AttemptPickUp(Oyster::Physics::ICustomBody *obj, void* args)
{
if(obj->GetState().mass == 0) return;
AttatchmentMassDriver *weapon = ((AttatchmentMassDriver*)args);
if(weapon->hasObject)

View File

@ -15,14 +15,14 @@ Cone::Cone( ) : ICollideable(Type_cone)
this->height = Oyster::Math::Float3(0,0,0);
}
Cone::Cone( const ::Oyster::Math::Float3 &height, const Oyster::Math::Float3 &position, const ::Oyster::Math::Float &radius )
Cone::Cone( const ::Oyster::Math::Float3 &height, const Oyster::Math::Float3 &position, const ::Oyster::Math::Float &radius ) : ICollideable(Type_cone)
{
this->radius = radius;
this->height = height;
this->position = position;
}
Cone::Cone( const ::Oyster::Math::Float4 &height, const Oyster::Math::Float4 &position, const ::Oyster::Math::Float &radius )
Cone::Cone( const ::Oyster::Math::Float4 &height, const Oyster::Math::Float4 &position, const ::Oyster::Math::Float &radius ) : ICollideable(Type_cone)
{
this->radius = radius;
this->height = (Oyster::Math::Float3)height;
@ -42,3 +42,8 @@ Cone & Cone::operator = ( const Cone &cone )
return *this;
}
::Utility::DynamicMemory::UniquePointer<ICollideable> Cone::Clone( ) const
{
return ::Utility::DynamicMemory::UniquePointer<ICollideable>( new Cone(*this) );
}

View File

@ -25,6 +25,15 @@ namespace Oyster
Cone & operator = ( const Cone &Cone );
virtual ::Utility::DynamicMemory::UniquePointer<ICollideable> Clone( ) const;
bool Intersects( const ICollideable &target ) const{return false;};
bool Intersects( const ICollideable &target, ::Oyster::Math::Float4 &worldPointOfContact ) const{return false;};
bool Contains( const ICollideable &target ) const{return false;};
::Oyster::Math::Float TimeOfContact( const ICollideable &deuterStart, const ICollideable &deuterEnd ) const{return 0;};
Oyster::Math::Float3 height;
Oyster::Math::Float3 position;
Oyster::Math::Float radius;