From c541d032e79ebdb2499db8cafe3be37ac4cc51f4 Mon Sep 17 00:00:00 2001 From: lindaandersson Date: Fri, 10 Jan 2014 10:47:54 +0100 Subject: [PATCH] GL - can move a obj on the client via the server --- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 5 ++-- .../GameClientState/C_obj/C_DynamicObj.cpp | 1 + .../GameClientState/C_obj/C_Player.cpp | 2 +- .../GameClientState/C_obj/C_StaticObj.cpp | 1 + .../GameClientState/C_obj/C_UIobject.cpp | 1 + .../DanBiasGame/GameClientState/GameState.cpp | 13 +++++++++- .../DanBiasServer/GameSession/GameSession.cpp | 24 ++++++++++++------- Code/Game/GameLogic/Object.h | 9 +------ 8 files changed, 35 insertions(+), 21 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index 57d47292..b71f6dcd 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -23,7 +23,8 @@ namespace DanBias { Oyster::Network::NetworkClient* nwClient; Client::GameClientState* gameClientState; - + + void NetworkCallback(Oyster::Network::CustomNetProtocol& p) override { int pType = p[0].value.netInt; @@ -159,7 +160,7 @@ namespace DanBias m_data->recieverObj = new MyRecieverObject; - // m_data->recieverObj->nwClient = new Oyster::Network::NetworkClient(m_data->recieverObj, Oyster::Network::NetworkProtocolCallbackType_Object); + m_data->recieverObj->nwClient = new Oyster::Network::NetworkClient(m_data->recieverObj, Oyster::Network::NetworkProtocolCallbackType_Object); m_data->recieverObj->nwClient->Connect(desc.port, desc.IP); if (!m_data->recieverObj->nwClient->IsConnected()) diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp index f47fc9fe..3df74e40 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp @@ -26,6 +26,7 @@ void C_DynamicObj::Init(ModelInitData modelInit) privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); privData->model->WorldMatrix = modelInit.world; privData->model->Visible = modelInit.visible; + privData->ID = modelInit.id; } void C_DynamicObj::setPos(Oyster::Math::Float4x4 world) { diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp index 86acaf4b..4cd6fbd3 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp @@ -28,7 +28,7 @@ void C_Player::Init(ModelInitData modelInit) privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); privData->model->WorldMatrix = modelInit.world; privData->model->Visible = modelInit.visible; - + privData->ID = modelInit.id; } void C_Player::setPos(Oyster::Math::Float4x4 world) diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp index c5f2e119..177b032b 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp @@ -28,6 +28,7 @@ void C_StaticObj::Init(ModelInitData modelInit) privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); privData->model->WorldMatrix = modelInit.world; privData->model->Visible = modelInit.visible; + privData->ID = modelInit.id; } void C_StaticObj::setPos(Oyster::Math::Float4x4 world) diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp index 226d8ca7..fa5dff04 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp @@ -24,6 +24,7 @@ void C_UIobject::Init(ModelInitData modelInit) privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); privData->model->WorldMatrix = modelInit.world; privData->model->Visible = modelInit.visible; + privData->ID = modelInit.id; } void C_UIobject::setPos(Oyster::Math::Float4x4 world) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index bf156d3e..cc4bbe53 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -40,6 +40,12 @@ bool GameState::Init(Oyster::Network::NetworkClient* nwClient) } GameState::gameStateState GameState::LoadGame() { + Oyster::Graphics::Definitions::Pointlight plight; + plight.Pos = Oyster::Math::Float3(0,3,0); + plight.Color = Oyster::Math::Float3(0,1,0); + plight.Radius = 5; + plight.Bright = 2; + Oyster::Graphics::API::AddLight(plight); LoadModels(L"map"); InitCamera(Oyster::Math::Float3(0,0,5.4f)); return gameStateState_playing; @@ -56,18 +62,22 @@ bool GameState::LoadModels(std::wstring mapFile) modelData.world = Oyster::Math3D::Float4x4::identity; modelData.visible = true; modelData.modelPath = L"..\\Content\\worldDummy"; + modelData.id = 0; // load models C_Object* obj = new C_Player(); privData->object.push_back(obj); privData->object[privData->object.size() -1 ]->Init(modelData); - 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)); modelData.world = modelData.world * translate; modelData.modelPath = L"..\\Content\\worldDummy"; + modelData.id ++; obj = new C_DynamicObj(); privData->object.push_back(obj); privData->object[privData->object.size() -1 ]->Init(modelData); + + return true; } bool GameState::InitCamera(Oyster::Math::Float3 startPos) @@ -209,6 +219,7 @@ void GameState::Protocol( ObjPos* pos ) { world[i] = pos->worldPos[i]; } + for (int i = 0; i < privData->object.size(); i++) { if(privData->object[i]->GetId() == pos->object_ID) diff --git a/Code/Game/DanBiasServer/GameSession/GameSession.cpp b/Code/Game/DanBiasServer/GameSession/GameSession.cpp index 866626c4..e5238620 100644 --- a/Code/Game/DanBiasServer/GameSession/GameSession.cpp +++ b/Code/Game/DanBiasServer/GameSession/GameSession.cpp @@ -156,19 +156,25 @@ namespace DanBias { case protocol_Gameplay_PlayerNavigation: { + + Oyster::Math::Float4x4 world = Oyster::Math::Matrix::identity; if(p[1].value.netBool) //bool bForward; - c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD); + world.v[3].x = 2; + //c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD); if(p[2].value.netBool) //bool bBackward; - c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD); + world.v[3].x = -2; + //c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD); if(p[5].value.netBool) //bool bStrafeRight; - c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT); + world.v[3].y = 2; + //c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT); if(p[6].value.netBool) //bool bStrafeLeft; - c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_LEFT); - - //Oyster::Math::Float4x4 p; - Protocol_ObjectPosition op;//(c.GetPlayer()->GetRigidBody(), c.GetPlayer()->GetID()); - //op.object_ID = c.GetPlayer()->GetID(); - Send(op.GetProtocol()); + world.v[3].y = -2; + //c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_LEFT); + + Protocol_ObjectPosition res(world, 0); + Send(res.GetProtocol()); + + } break; case protocol_Gameplay_PlayerMouseMovement: diff --git a/Code/Game/GameLogic/Object.h b/Code/Game/GameLogic/Object.h index c199eb58..c880e90d 100644 --- a/Code/Game/GameLogic/Object.h +++ b/Code/Game/GameLogic/Object.h @@ -9,15 +9,8 @@ #include "GameLogicStates.h" #include "GameLogicDef.h" +#include -namespace Oyster -{ - namespace Physics - { - class ICustomBody; - class State; - } -} namespace GameLogic { class DANBIAS_GAMELOGIC_DLL Object