GL - 20 boxes and a house
This commit is contained in:
parent
70a2cf27e3
commit
91db71fe0e
|
@ -84,7 +84,7 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
// open file
|
// open file
|
||||||
// read file
|
// read file
|
||||||
// init models
|
// init models
|
||||||
int nrOfBoxex = 5;
|
int nrOfBoxex = 20;
|
||||||
privData->modelCount = 3+nrOfBoxex;
|
privData->modelCount = 3+nrOfBoxex;
|
||||||
myId += privData->modelCount;
|
myId += privData->modelCount;
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
@ -103,7 +103,7 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
|
|
||||||
// add box model
|
// add box model
|
||||||
modelData.world = Oyster::Math3D::Float4x4::identity;
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
modelData.modelPath = L"..\\Content\\Models\\box.dan";
|
modelData.modelPath = L"crate_colonists.dan";
|
||||||
|
|
||||||
|
|
||||||
for(int i =0; i< nrOfBoxex; i ++)
|
for(int i =0; i< nrOfBoxex; i ++)
|
||||||
|
@ -120,7 +120,7 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
|
|
||||||
// add crystal model
|
// add crystal model
|
||||||
modelData.world = Oyster::Math3D::Float4x4::identity;
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(10, 305, 0));
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(10, 301, 0));
|
||||||
|
|
||||||
modelData.world = modelData.world * translate;
|
modelData.world = modelData.world * translate;
|
||||||
modelData.visible = true;
|
modelData.visible = true;
|
||||||
|
@ -133,10 +133,11 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
|
|
||||||
// add house model
|
// add house model
|
||||||
modelData.world = Oyster::Math3D::Float4x4::identity;
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(50, 300, 0));
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(-50, 290, 0));
|
||||||
//Oyster::Math3D::RotationMatrix_AxisZ()
|
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Oyster::Math::Float3(0 ,Utility::Value::Radian(90.0f), 0));
|
||||||
modelData.world = modelData.world * translate;
|
|
||||||
modelData.visible = false;
|
modelData.world = modelData.world * translate * rot;
|
||||||
|
modelData.visible = true;
|
||||||
modelData.modelPath = L"building_corporation.dan";
|
modelData.modelPath = L"building_corporation.dan";
|
||||||
modelData.id = id++;
|
modelData.id = id++;
|
||||||
// load models
|
// load models
|
||||||
|
@ -144,13 +145,14 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
privData->object.push_back(obj);
|
privData->object.push_back(obj);
|
||||||
privData->object[privData->object.size() -1 ]->Init(modelData);
|
privData->object[privData->object.size() -1 ]->Init(modelData);
|
||||||
|
|
||||||
|
|
||||||
// add player model
|
// add player model
|
||||||
modelData.world = Oyster::Math3D::Float4x4::identity;
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(0, 320, 0));
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(0, 320, 0));
|
||||||
|
|
||||||
modelData.world = modelData.world * translate;
|
modelData.world = modelData.world * translate;
|
||||||
modelData.visible = true;
|
modelData.visible = true;
|
||||||
modelData.modelPath = L"char_renderTest.dan";
|
modelData.modelPath = L"char_still_sizeref.dan";
|
||||||
modelData.id = id++;
|
modelData.id = id++;
|
||||||
// load models
|
// load models
|
||||||
obj = new C_Player();
|
obj = new C_Player();
|
||||||
|
@ -163,14 +165,41 @@ bool GameState::LoadModels(std::wstring mapFile)
|
||||||
|
|
||||||
modelData.world = modelData.world * translate;
|
modelData.world = modelData.world * translate;
|
||||||
modelData.visible = true;
|
modelData.visible = true;
|
||||||
modelData.modelPath = L"char_renderTest.dan";
|
modelData.modelPath = L"char_still_sizeref.dan";
|
||||||
modelData.id = id++;
|
modelData.id = id++;
|
||||||
// load models
|
// load models
|
||||||
obj = new C_Player();
|
obj = new C_Player();
|
||||||
privData->object.push_back(obj);
|
privData->object.push_back(obj);
|
||||||
privData->object[privData->object.size() -1 ]->Init(modelData);
|
privData->object[privData->object.size() -1 ]->Init(modelData);
|
||||||
|
|
||||||
|
// add jumppad
|
||||||
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(4, 300.3, 0));
|
||||||
|
//Oyster::Math3D::RotationMatrix_AxisZ()
|
||||||
|
modelData.world = modelData.world * translate;
|
||||||
|
modelData.visible = true;
|
||||||
|
modelData.modelPath = L"jumppad_round.dan";
|
||||||
|
modelData.id = id++;
|
||||||
|
// load models
|
||||||
|
obj = new C_Player();
|
||||||
|
privData->object.push_back(obj);
|
||||||
|
privData->object[privData->object.size() -1 ]->Init(modelData);
|
||||||
|
|
||||||
|
// add sky sphere
|
||||||
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(0, 0, 0));
|
||||||
|
//Oyster::Math3D::RotationMatrix_AxisZ()
|
||||||
|
modelData.world = modelData.world * translate;
|
||||||
|
modelData.world.v[0].x = 800;
|
||||||
|
modelData.world.v[1].y = 800;
|
||||||
|
modelData.world.v[2].z = 800;
|
||||||
|
modelData.visible = true;
|
||||||
|
modelData.modelPath = L"skysphere.dan";
|
||||||
|
modelData.id = id++;
|
||||||
|
// load models
|
||||||
|
obj = new C_Player();
|
||||||
|
privData->object.push_back(obj);
|
||||||
|
privData->object[privData->object.size() -1 ]->Init(modelData);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -456,8 +485,8 @@ void GameState::Protocol( ObjPos* pos )
|
||||||
camera->setUp(up);
|
camera->setUp(up);
|
||||||
camera->setLook(objForward);
|
camera->setLook(objForward);
|
||||||
|
|
||||||
up *= 2;
|
up *= 1;
|
||||||
objForward *= -3;
|
objForward *= -2;
|
||||||
Oyster::Math::Float3 cameraPos = up + pos + objForward;
|
Oyster::Math::Float3 cameraPos = up + pos + objForward;
|
||||||
camera->SetPosition(cameraPos);
|
camera->SetPosition(cameraPos);
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ bool LoginState::Init(Oyster::Network::NetworkClient* nwClient)
|
||||||
bool LoginState::LoadModels(std::wstring file)
|
bool LoginState::LoadModels(std::wstring file)
|
||||||
{
|
{
|
||||||
Oyster::Graphics::Definitions::Pointlight plight;
|
Oyster::Graphics::Definitions::Pointlight plight;
|
||||||
plight.Pos = Oyster::Math::Float3(0,0,5.4f);
|
plight.Pos = Oyster::Math::Float3(0,0,5);
|
||||||
plight.Color = Oyster::Math::Float3(1,1,1);
|
plight.Color = Oyster::Math::Float3(1,1,1);
|
||||||
plight.Radius = 100;
|
plight.Radius = 100;
|
||||||
plight.Bright = 1;
|
plight.Bright = 1;
|
||||||
|
@ -55,14 +55,22 @@ bool LoginState::LoadModels(std::wstring file)
|
||||||
|
|
||||||
modelData.world = Oyster::Math3D::Float4x4::identity;
|
modelData.world = Oyster::Math3D::Float4x4::identity;
|
||||||
modelData.visible = true;
|
modelData.visible = true;
|
||||||
modelData.modelPath = L"..\\Content\\Models\\box.dan";
|
modelData.modelPath = L"identityPlane.dan";
|
||||||
// load models
|
// load models
|
||||||
Oyster::Math3D::Float4x4 translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(2,2,2));
|
Oyster::Math3D::Float4x4 translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(2,2,-2));
|
||||||
|
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Oyster::Math::Float3(0 ,Utility::Value::Radian(90.0f), 0));
|
||||||
|
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::Float4x4::identity;
|
||||||
|
int scaling = 2;
|
||||||
|
scale.v[0].x = scaling;
|
||||||
|
scale.v[1].y = scaling;
|
||||||
|
scale.v[2].z = scaling;
|
||||||
|
|
||||||
|
modelData.world = translate; //scale * translate * rot;
|
||||||
privData->object[0] = new C_DynamicObj();
|
privData->object[0] = new C_DynamicObj();
|
||||||
privData->object[0]->Init(modelData);
|
privData->object[0]->Init(modelData);
|
||||||
|
|
||||||
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(-2,-2,-2));
|
translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(0,0,-2));
|
||||||
modelData.world = modelData.world * translate;
|
modelData.world = translate ;//* rot;
|
||||||
|
|
||||||
privData->object[1] = new C_DynamicObj();
|
privData->object[1] = new C_DynamicObj();
|
||||||
privData->object[1]->Init(modelData);
|
privData->object[1]->Init(modelData);
|
||||||
|
@ -127,7 +135,6 @@ bool LoginState::Render()
|
||||||
Oyster::Graphics::API::SetView(privData->view);
|
Oyster::Graphics::API::SetView(privData->view);
|
||||||
Oyster::Graphics::API::SetProjection( privData->proj);
|
Oyster::Graphics::API::SetProjection( privData->proj);
|
||||||
|
|
||||||
|
|
||||||
Oyster::Graphics::API::NewFrame();
|
Oyster::Graphics::API::NewFrame();
|
||||||
// render objects
|
// render objects
|
||||||
for (int i = 0; i < privData->modelCount; i++)
|
for (int i = 0; i < privData->modelCount; i++)
|
||||||
|
|
|
@ -63,8 +63,10 @@ void AttatchmentMassDriver::Update(float dt)
|
||||||
Oyster::Physics::ICustomBody::State state;
|
Oyster::Physics::ICustomBody::State state;
|
||||||
state = heldObject->GetState();
|
state = heldObject->GetState();
|
||||||
Oyster::Math::Float3 ownerPos = owner->GetPosition();
|
Oyster::Math::Float3 ownerPos = owner->GetPosition();
|
||||||
ownerPos.y += 2;
|
Oyster::Physics::ICustomBody::State ownerState = owner->GetRigidBody()->GetState();
|
||||||
Oyster::Math::Float3 pos = ownerPos + owner->GetLookDir().GetNormalized()*2;
|
Oyster::Math::Float3 up = -ownerState.GetGravityNormal();
|
||||||
|
up *= -0.3;
|
||||||
|
Oyster::Math::Float3 pos = ownerPos + up + (owner->GetLookDir().GetNormalized()*5);
|
||||||
|
|
||||||
state.SetCenterPosition(pos);
|
state.SetCenterPosition(pos);
|
||||||
|
|
||||||
|
@ -84,7 +86,7 @@ void AttatchmentMassDriver::ForcePush(const GameLogic::WEAPON_FIRE &usage, float
|
||||||
if(hasObject)
|
if(hasObject)
|
||||||
{
|
{
|
||||||
Oyster::Physics::API::Instance().ReleaseFromLimbo(heldObject);
|
Oyster::Physics::API::Instance().ReleaseFromLimbo(heldObject);
|
||||||
pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (2000);
|
pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (700);
|
||||||
Oyster::Physics::ICustomBody::State state = heldObject->GetState();
|
Oyster::Physics::ICustomBody::State state = heldObject->GetState();
|
||||||
state.ApplyLinearImpulse((Oyster::Math::Float3)pushForce);
|
state.ApplyLinearImpulse((Oyster::Math::Float3)pushForce);
|
||||||
heldObject->SetState(state);
|
heldObject->SetState(state);
|
||||||
|
@ -97,10 +99,10 @@ void AttatchmentMassDriver::ForcePush(const GameLogic::WEAPON_FIRE &usage, float
|
||||||
Oyster::Math::Float3 look = owner->GetLookDir();
|
Oyster::Math::Float3 look = owner->GetLookDir();
|
||||||
Oyster::Math::Float3 pos = owner->GetPosition();
|
Oyster::Math::Float3 pos = owner->GetPosition();
|
||||||
|
|
||||||
pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (50000 * dt);
|
pushForce = Oyster::Math::Float4(this->owner->GetLookDir()) * (20000 * dt);
|
||||||
Oyster::Math::Float4x4 aim = Oyster::Math3D::ViewMatrix_LookAtDirection(look, up, pos);
|
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,5);
|
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::Frustrum hitFrustum = Oyster::Collision3D::Frustrum(Oyster::Math3D::ViewProjectionMatrix(aim,hitSpace));
|
||||||
forcePushData args;
|
forcePushData args;
|
||||||
args.pushForce = pushForce;
|
args.pushForce = pushForce;
|
||||||
|
|
|
@ -8,7 +8,7 @@ Game::PlayerData::PlayerData()
|
||||||
//set some stats that are appropriate to a player
|
//set some stats that are appropriate to a player
|
||||||
Oyster::Physics::API::SimpleBodyDescription sbDesc;
|
Oyster::Physics::API::SimpleBodyDescription sbDesc;
|
||||||
sbDesc.centerPosition = Oyster::Math::Float3(0,308,0);
|
sbDesc.centerPosition = Oyster::Math::Float3(0,308,0);
|
||||||
sbDesc.size = Oyster::Math::Float3(4,7,4);
|
sbDesc.size = Oyster::Math::Float3(0.5f,2,1);
|
||||||
sbDesc.mass = 70;
|
sbDesc.mass = 70;
|
||||||
sbDesc.restitutionCoeff = 0.5;
|
sbDesc.restitutionCoeff = 0.5;
|
||||||
sbDesc.frictionCoeff_Static = 0.4;
|
sbDesc.frictionCoeff_Static = 0.4;
|
||||||
|
|
|
@ -82,15 +82,46 @@ void Level::InitiateLevel(float radius)
|
||||||
ICustomBody* rigidBody_TestBox;
|
ICustomBody* rigidBody_TestBox;
|
||||||
|
|
||||||
int nrOfBoxex = 5;
|
int nrOfBoxex = 5;
|
||||||
|
int offset = 0;
|
||||||
for(int i =0; i< nrOfBoxex; i ++)
|
for(int i =0; i< nrOfBoxex; i ++)
|
||||||
{
|
{
|
||||||
sbDesc_TestBox.centerPosition = Oyster::Math::Float4(20 ,320,0 + ( i*7),0);
|
sbDesc_TestBox.centerPosition = Oyster::Math::Float4(-20 +( i*7) ,320,20,0);
|
||||||
rigidBody_TestBox = API::Instance().CreateRigidBody(sbDesc_TestBox).Release();
|
rigidBody_TestBox = API::Instance().CreateRigidBody(sbDesc_TestBox).Release();
|
||||||
rigidBody_TestBox->SetSubscription(Level::PhysicsOnMoveLevel);
|
rigidBody_TestBox->SetSubscription(Level::PhysicsOnMoveLevel);
|
||||||
|
|
||||||
this->dynamicObjects.Push(new DynamicObject(rigidBody_TestBox,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_BOX));
|
this->dynamicObjects.Push(new DynamicObject(rigidBody_TestBox,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_BOX));
|
||||||
rigidBody_TestBox->SetCustomTag(this->dynamicObjects[i]);
|
rigidBody_TestBox->SetCustomTag(this->dynamicObjects[i]);
|
||||||
}
|
}
|
||||||
|
offset += nrOfBoxex;
|
||||||
|
for(int i =0; i< nrOfBoxex; i ++)
|
||||||
|
{
|
||||||
|
sbDesc_TestBox.centerPosition = Oyster::Math::Float4(-20,320, -20 +( i*7),0);
|
||||||
|
rigidBody_TestBox = API::Instance().CreateRigidBody(sbDesc_TestBox).Release();
|
||||||
|
rigidBody_TestBox->SetSubscription(Level::PhysicsOnMoveLevel);
|
||||||
|
|
||||||
|
this->dynamicObjects.Push(new DynamicObject(rigidBody_TestBox,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_BOX));
|
||||||
|
rigidBody_TestBox->SetCustomTag(this->dynamicObjects[i+offset]);
|
||||||
|
}
|
||||||
|
offset += nrOfBoxex;
|
||||||
|
for(int i =0; i< nrOfBoxex; i ++)
|
||||||
|
{
|
||||||
|
sbDesc_TestBox.centerPosition = Oyster::Math::Float4(20,320,-20 + ( i*7),0);
|
||||||
|
rigidBody_TestBox = API::Instance().CreateRigidBody(sbDesc_TestBox).Release();
|
||||||
|
rigidBody_TestBox->SetSubscription(Level::PhysicsOnMoveLevel);
|
||||||
|
|
||||||
|
this->dynamicObjects.Push(new DynamicObject(rigidBody_TestBox,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_BOX));
|
||||||
|
rigidBody_TestBox->SetCustomTag(this->dynamicObjects[i+offset]);
|
||||||
|
}
|
||||||
|
offset += nrOfBoxex;
|
||||||
|
for(int i =0; i< nrOfBoxex; i ++)
|
||||||
|
{
|
||||||
|
sbDesc_TestBox.centerPosition = Oyster::Math::Float4(-20 +( i*7) ,320,-20,0);
|
||||||
|
rigidBody_TestBox = API::Instance().CreateRigidBody(sbDesc_TestBox).Release();
|
||||||
|
rigidBody_TestBox->SetSubscription(Level::PhysicsOnMoveLevel);
|
||||||
|
|
||||||
|
this->dynamicObjects.Push(new DynamicObject(rigidBody_TestBox,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_BOX));
|
||||||
|
rigidBody_TestBox->SetCustomTag(this->dynamicObjects[i+offset]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,17 +142,20 @@ void Level::InitiateLevel(float radius)
|
||||||
|
|
||||||
// add house
|
// add house
|
||||||
API::SimpleBodyDescription sbDesc_House;
|
API::SimpleBodyDescription sbDesc_House;
|
||||||
sbDesc_House.centerPosition = Oyster::Math::Float4(50, 300, 0, 0);
|
//sbDesc_House.centerPosition = Oyster::Math::Float4(212, 212, 0, 0);
|
||||||
|
sbDesc_House.centerPosition = Oyster::Math::Float4(-50, 290, 0, 0);
|
||||||
sbDesc_House.ignoreGravity = false;
|
sbDesc_House.ignoreGravity = false;
|
||||||
|
sbDesc_House.rotation = Oyster::Math::Float3(0 ,Utility::Value::Radian(90.0f), 0);
|
||||||
sbDesc_House.mass = 70;
|
sbDesc_House.mass = 70;
|
||||||
sbDesc_House.size = Oyster::Math::Float4(2,3,2,0);
|
sbDesc_House.size = Oyster::Math::Float4(40,40,40,0);
|
||||||
|
|
||||||
|
|
||||||
ICustomBody* rigidBody_House = API::Instance().CreateRigidBody(sbDesc_House).Release();
|
ICustomBody* rigidBody_House = API::Instance().CreateRigidBody(sbDesc_House).Release();
|
||||||
rigidBody_House->SetSubscription(Level::PhysicsOnMoveLevel);
|
rigidBody_House->SetSubscription(Level::PhysicsOnMoveLevel);
|
||||||
this->staticObjects.Push(new StaticObject(rigidBody_House,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_GENERIC));
|
this->staticObjects.Push(new StaticObject(rigidBody_House,Object::DefaultCollisionBefore, Object::DefaultCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_GENERIC));
|
||||||
rigidBody_House->SetCustomTag(this->staticObjects[0]);
|
rigidBody_House->SetCustomTag(this->staticObjects[0]);
|
||||||
|
rigidBody_House->GetState(state);
|
||||||
|
Oyster::Math::Float4x4 world = state.GetOrientation();
|
||||||
|
|
||||||
|
|
||||||
// add gravitation
|
// add gravitation
|
||||||
|
|
|
@ -189,9 +189,10 @@ namespace DanBias
|
||||||
}
|
}
|
||||||
void GameSession::Gameplay_PlayerShot ( Protocol_PlayerShot& p, DanBias::GameClient* c )
|
void GameSession::Gameplay_PlayerShot ( Protocol_PlayerShot& p, DanBias::GameClient* c )
|
||||||
{
|
{
|
||||||
if(p.primaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_PRIMARY_PRESS);
|
if(p.secondaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_SECONDARY_PRESS);
|
||||||
if(p.secondaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_SECONDARY_PRESS);
|
if(p.primaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_PRIMARY_PRESS);
|
||||||
if(p.utilityPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_UTILLITY_PRESS);
|
|
||||||
|
if(p.utilityPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_UTILLITY_PRESS);
|
||||||
}
|
}
|
||||||
void GameSession::Gameplay_PlayerJump ( Protocol_PlayerJump& p, DanBias::GameClient* c )
|
void GameSession::Gameplay_PlayerJump ( Protocol_PlayerJump& p, DanBias::GameClient* c )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue