GL - added RigidBody data on client for debuging output
This commit is contained in:
parent
fc19938f1b
commit
bfa748047f
|
@ -31,32 +31,27 @@ void C_Object::updateWorld()
|
||||||
{
|
{
|
||||||
Oyster::Math3D::Float4x4 translation = Oyster::Math3D::TranslationMatrix(this->position);
|
Oyster::Math3D::Float4x4 translation = Oyster::Math3D::TranslationMatrix(this->position);
|
||||||
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(this->rotation);
|
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(this->rotation);
|
||||||
//Oyster::Math3D::Float4x4 scale = Oyster::Math3D::;
|
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::ScalingMatrix(this->scale);
|
||||||
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::Matrix::identity;
|
|
||||||
scale.v[0].x = this->scale[0];
|
|
||||||
scale.v[1].y = this->scale[1];
|
|
||||||
scale.v[2].z = this->scale[2];
|
|
||||||
world = translation * rot * scale;
|
world = translation * rot * scale;
|
||||||
|
|
||||||
model->WorldMatrix = world;
|
model->WorldMatrix = world;
|
||||||
}
|
}
|
||||||
void C_Object::setWorld(Oyster::Math::Float4x4 world)
|
|
||||||
{
|
|
||||||
model->WorldMatrix = world;
|
|
||||||
}
|
|
||||||
Oyster::Math::Float4x4 C_Object::getWorld() const
|
Oyster::Math::Float4x4 C_Object::getWorld() const
|
||||||
{
|
{
|
||||||
|
Oyster::Math3D::Float4x4 translation = Oyster::Math3D::TranslationMatrix(this->position);
|
||||||
|
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(this->rotation);
|
||||||
|
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::ScalingMatrix(this->scale);
|
||||||
|
Oyster::Math3D::Float4x4 world = translation * rot * scale;
|
||||||
|
|
||||||
return world;
|
return world;
|
||||||
}
|
}
|
||||||
void C_Object::setPos(Oyster::Math::Float3 newPos)
|
void C_Object::setPos(Oyster::Math::Float3 newPos)
|
||||||
{
|
{
|
||||||
this->position = newPos;
|
this->position = newPos;
|
||||||
updateWorld();
|
|
||||||
}
|
}
|
||||||
void C_Object::addPos(Oyster::Math::Float3 deltaPos)
|
void C_Object::addPos(Oyster::Math::Float3 deltaPos)
|
||||||
{
|
{
|
||||||
this->position += deltaPos;
|
this->position += deltaPos;
|
||||||
updateWorld();
|
|
||||||
}
|
}
|
||||||
Oyster::Math::Float3 C_Object::getPos() const
|
Oyster::Math::Float3 C_Object::getPos() const
|
||||||
{
|
{
|
||||||
|
@ -65,12 +60,6 @@ Oyster::Math::Float3 C_Object::getPos() const
|
||||||
void C_Object::setRot(Oyster::Math::Quaternion newRot)
|
void C_Object::setRot(Oyster::Math::Quaternion newRot)
|
||||||
{
|
{
|
||||||
this->rotation = newRot;
|
this->rotation = newRot;
|
||||||
updateWorld();
|
|
||||||
}
|
|
||||||
void C_Object::addRot(Oyster::Math::Quaternion deltaRot)
|
|
||||||
{
|
|
||||||
this->rotation += deltaRot;
|
|
||||||
updateWorld();
|
|
||||||
}
|
}
|
||||||
Oyster::Math::Quaternion C_Object::getRotation() const
|
Oyster::Math::Quaternion C_Object::getRotation() const
|
||||||
{
|
{
|
||||||
|
@ -79,12 +68,10 @@ Oyster::Math::Quaternion C_Object::getRotation() const
|
||||||
void C_Object::setScale(Oyster::Math::Float3 newScale)
|
void C_Object::setScale(Oyster::Math::Float3 newScale)
|
||||||
{
|
{
|
||||||
this->scale = newScale;
|
this->scale = newScale;
|
||||||
updateWorld();
|
|
||||||
}
|
}
|
||||||
void C_Object::addScale(Oyster::Math::Float3 deltaScale)
|
void C_Object::addScale(Oyster::Math::Float3 deltaScale)
|
||||||
{
|
{
|
||||||
this->scale += deltaScale;
|
this->scale += deltaScale;
|
||||||
updateWorld();
|
|
||||||
}
|
}
|
||||||
Oyster::Math::Float3 C_Object::getScale() const
|
Oyster::Math::Float3 C_Object::getScale() const
|
||||||
{
|
{
|
||||||
|
@ -106,3 +93,53 @@ void C_Object::Release()
|
||||||
this->model = nullptr;
|
this->model = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////
|
||||||
|
// RB DEBUG
|
||||||
|
////////////////////////////////////////////////
|
||||||
|
bool C_Object::InitRB(RBInitData RBInit)
|
||||||
|
{
|
||||||
|
RBposition = RBInit.position;
|
||||||
|
RBrotation = RBInit.rotation;
|
||||||
|
RBscale = RBInit.scale;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Oyster::Math::Float4x4 C_Object::getRBWorld() const
|
||||||
|
{
|
||||||
|
Oyster::Math3D::Float4x4 translation = Oyster::Math3D::TranslationMatrix(this->RBposition);
|
||||||
|
Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(this->RBrotation);
|
||||||
|
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::ScalingMatrix(this->RBscale);
|
||||||
|
Oyster::Math3D::Float4x4 world = translation * rot * scale;
|
||||||
|
|
||||||
|
return world;
|
||||||
|
}
|
||||||
|
void C_Object::setRBPos(Oyster::Math::Float3 newPos)
|
||||||
|
{
|
||||||
|
this->RBposition = newPos;
|
||||||
|
}
|
||||||
|
Oyster::Math::Float3 C_Object::getRBPos() const
|
||||||
|
{
|
||||||
|
return this->RBposition;
|
||||||
|
}
|
||||||
|
void C_Object::setRBRot(Oyster::Math::Quaternion newRot)
|
||||||
|
{
|
||||||
|
this->RBrotation = newRot;
|
||||||
|
}
|
||||||
|
Oyster::Math::Quaternion C_Object::getRBRotation() const
|
||||||
|
{
|
||||||
|
return this->RBrotation;
|
||||||
|
}
|
||||||
|
void C_Object::setRBScale(Oyster::Math::Float3 newScale)
|
||||||
|
{
|
||||||
|
this->RBscale = newScale;
|
||||||
|
}
|
||||||
|
Oyster::Math::Float3 C_Object::getRBScale() const
|
||||||
|
{
|
||||||
|
return this->RBscale;
|
||||||
|
}
|
||||||
|
RB_Type C_Object::getBRtype()const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
|
@ -5,7 +5,11 @@ namespace DanBias
|
||||||
{
|
{
|
||||||
namespace Client
|
namespace Client
|
||||||
{
|
{
|
||||||
|
enum RB_Type
|
||||||
|
{
|
||||||
|
RB_Type_Cube,
|
||||||
|
RB_Type_Sphere
|
||||||
|
};
|
||||||
struct ModelInitData
|
struct ModelInitData
|
||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
|
@ -15,6 +19,13 @@ namespace DanBias
|
||||||
Oyster::Math::Float3 scale;
|
Oyster::Math::Float3 scale;
|
||||||
bool visible;
|
bool visible;
|
||||||
};
|
};
|
||||||
|
struct RBInitData
|
||||||
|
{
|
||||||
|
Oyster::Math::Float3 position;
|
||||||
|
Oyster::Math::Quaternion rotation;
|
||||||
|
Oyster::Math::Float3 scale;
|
||||||
|
RB_Type type;
|
||||||
|
};
|
||||||
|
|
||||||
class C_Object
|
class C_Object
|
||||||
{
|
{
|
||||||
|
@ -24,27 +35,42 @@ namespace DanBias
|
||||||
Oyster::Math::Quaternion rotation;
|
Oyster::Math::Quaternion rotation;
|
||||||
Oyster::Math::Float3 scale;
|
Oyster::Math::Float3 scale;
|
||||||
|
|
||||||
|
// RB DEBUG
|
||||||
|
Oyster::Math::Float3 RBposition;
|
||||||
|
Oyster::Math::Quaternion RBrotation;
|
||||||
|
Oyster::Math::Float3 RBscale;
|
||||||
|
RB_Type type;
|
||||||
|
|
||||||
int id;
|
int id;
|
||||||
void updateWorld();
|
|
||||||
protected:
|
protected:
|
||||||
Oyster::Graphics::Model::Model *model;
|
Oyster::Graphics::Model::Model *model;
|
||||||
public:
|
public:
|
||||||
C_Object();
|
C_Object();
|
||||||
virtual ~C_Object();
|
virtual ~C_Object();
|
||||||
virtual bool Init(ModelInitData modelInit);
|
virtual bool Init(ModelInitData modelInit);
|
||||||
|
void updateWorld();
|
||||||
void setWorld(Oyster::Math::Float4x4 world);
|
//void setWorld(Oyster::Math::Float4x4 world);
|
||||||
Oyster::Math::Float4x4 getWorld() const;
|
Oyster::Math::Float4x4 getWorld() const;
|
||||||
void setPos(Oyster::Math::Float3 newPos);
|
void setPos(Oyster::Math::Float3 newPos);
|
||||||
Oyster::Math::Float3 getPos() const;
|
Oyster::Math::Float3 getPos() const;
|
||||||
void addPos(Oyster::Math::Float3 deltaPos);
|
void addPos(Oyster::Math::Float3 deltaPos);
|
||||||
void setRot(Oyster::Math::Quaternion newRot);
|
void setRot(Oyster::Math::Quaternion newRot);
|
||||||
Oyster::Math::Quaternion getRotation() const;
|
Oyster::Math::Quaternion getRotation() const;
|
||||||
void addRot(Oyster::Math::Quaternion deltaRot);
|
|
||||||
void setScale(Oyster::Math::Float3 newScale);
|
void setScale(Oyster::Math::Float3 newScale);
|
||||||
void addScale(Oyster::Math::Float3 deltaScale);
|
void addScale(Oyster::Math::Float3 deltaScale);
|
||||||
Oyster::Math::Float3 getScale() const;
|
Oyster::Math::Float3 getScale() const;
|
||||||
|
|
||||||
|
// RB DEBUG
|
||||||
|
bool InitRB(RBInitData modelInit);
|
||||||
|
Oyster::Math::Float4x4 getRBWorld() const;
|
||||||
|
void setRBPos(Oyster::Math::Float3 newPos);
|
||||||
|
Oyster::Math::Float3 getRBPos() const;
|
||||||
|
void setRBRot(Oyster::Math::Quaternion newRot);
|
||||||
|
Oyster::Math::Quaternion getRBRotation() const;
|
||||||
|
void setRBScale(Oyster::Math::Float3 newScale);
|
||||||
|
Oyster::Math::Float3 getRBScale() const;
|
||||||
|
RB_Type getBRtype()const;
|
||||||
virtual void Render();
|
virtual void Render();
|
||||||
virtual void Release();
|
virtual void Release();
|
||||||
virtual int GetId() const;
|
virtual int GetId() const;
|
||||||
|
|
|
@ -108,10 +108,19 @@ void GameState::InitiatePlayer( int id, const std::string &modelName, const floa
|
||||||
StringToWstring( modelName, modelData.modelPath );
|
StringToWstring( modelName, modelData.modelPath );
|
||||||
modelData.id = id;
|
modelData.id = id;
|
||||||
|
|
||||||
|
// RB DEBUG
|
||||||
|
RBInitData RBData;
|
||||||
|
RBData.position = position;
|
||||||
|
RBData.rotation = ArrayToQuaternion( rotation );
|
||||||
|
RBData.scale = Float3( 3 );
|
||||||
|
|
||||||
if( isMyPlayer )
|
if( isMyPlayer )
|
||||||
{
|
{
|
||||||
if( this->privData->player.Init(modelData) )
|
if( this->privData->player.Init(modelData) )
|
||||||
{
|
{
|
||||||
|
// RB DEBUG
|
||||||
|
this->privData->player.InitRB( RBData );
|
||||||
|
|
||||||
this->privData->myId = id;
|
this->privData->myId = id;
|
||||||
this->privData->camera.SetPosition( this->privData->player.getPos() );
|
this->privData->camera.SetPosition( this->privData->player.getPos() );
|
||||||
Float3 offset = Float3( 0.0f );
|
Float3 offset = Float3( 0.0f );
|
||||||
|
@ -125,6 +134,9 @@ void GameState::InitiatePlayer( int id, const std::string &modelName, const floa
|
||||||
C_DynamicObj *p = new C_DynamicObj();
|
C_DynamicObj *p = new C_DynamicObj();
|
||||||
if( p->Init(modelData) )
|
if( p->Init(modelData) )
|
||||||
{
|
{
|
||||||
|
// RB DEBUG
|
||||||
|
this->privData->player.InitRB( RBData );
|
||||||
|
|
||||||
(*this->privData->dynamicObjects)[id] = p;
|
(*this->privData->dynamicObjects)[id] = p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,6 +169,41 @@ bool GameState::Render()
|
||||||
dynamicObject->second->Render();
|
dynamicObject->second->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB DEBUG render wire frame
|
||||||
|
Oyster::Graphics::API::StartRenderWireFrame();
|
||||||
|
|
||||||
|
|
||||||
|
Oyster::Math3D::Float4x4 translation = Oyster::Math3D::TranslationMatrix(Float3( 0,132, 20));
|
||||||
|
Oyster::Math3D::Float4x4 scale = Oyster::Math3D::ScalingMatrix(Float3( 2, 2, 2));
|
||||||
|
Oyster::Math3D::Float4x4 world = translation * scale;
|
||||||
|
Oyster::Graphics::API::RenderDebugCube( world );
|
||||||
|
Oyster::Graphics::API::RenderDebugCube(this->privData->player.getRBWorld());
|
||||||
|
|
||||||
|
|
||||||
|
for( ; staticObject != this->privData->staticObjects->end(); ++staticObject )
|
||||||
|
{
|
||||||
|
if( staticObject->second->getBRtype() == RB_Type_Cube)
|
||||||
|
{
|
||||||
|
Oyster::Graphics::API::RenderDebugCube( staticObject->second->getRBWorld());
|
||||||
|
}
|
||||||
|
if( staticObject->second->getBRtype() == RB_Type_Sphere)
|
||||||
|
{
|
||||||
|
Oyster::Graphics::API::RenderDebugSphere( staticObject->second->getRBWorld());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for( ; dynamicObject != this->privData->dynamicObjects->end(); ++dynamicObject )
|
||||||
|
{
|
||||||
|
if( dynamicObject->second->getBRtype() == RB_Type_Cube)
|
||||||
|
{
|
||||||
|
Oyster::Graphics::API::RenderDebugCube( dynamicObject->second->getRBWorld());
|
||||||
|
}
|
||||||
|
if( dynamicObject->second->getBRtype() == RB_Type_Sphere)
|
||||||
|
{
|
||||||
|
Oyster::Graphics::API::RenderDebugSphere( dynamicObject->second->getRBWorld());
|
||||||
|
}
|
||||||
|
}
|
||||||
Oyster::Graphics::API::EndFrame();
|
Oyster::Graphics::API::EndFrame();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,25 @@ void NetLoadState::LoadGame( const ::std::string &fileName )
|
||||||
C_StaticObj *staticObject = new C_StaticObj();
|
C_StaticObj *staticObject = new C_StaticObj();
|
||||||
if( staticObject->Init( desc ) )
|
if( staticObject->Init( desc ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// RB DEBUG
|
||||||
|
RBInitData RBData;
|
||||||
|
if(oh->boundingVolume.geoType == CollisionGeometryType_Box)
|
||||||
|
{
|
||||||
|
RBData.position = (Float3)oh->position + (Float3)oh->boundingVolume.box.position;
|
||||||
|
RBData.rotation = ArrayToQuaternion( oh->rotation ); // Only model rotation
|
||||||
|
RBData.scale = (Float3)oh->scale * (Float3)oh->boundingVolume.box.size;
|
||||||
|
staticObject->InitRB( RBData );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(oh->boundingVolume.geoType == CollisionGeometryType_Sphere)
|
||||||
|
{
|
||||||
|
RBData.position = (Float3)oh->position + (Float3)oh->boundingVolume.sphere.position;
|
||||||
|
RBData.rotation = ArrayToQuaternion( oh->rotation ); // Only model rotation
|
||||||
|
RBData.scale = (Float3)oh->scale * oh->boundingVolume.sphere.radius;
|
||||||
|
staticObject->InitRB( RBData );
|
||||||
|
}
|
||||||
|
|
||||||
(*this->privData->staticObjects)[objectID] = staticObject;
|
(*this->privData->staticObjects)[objectID] = staticObject;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -161,6 +180,24 @@ void NetLoadState::LoadGame( const ::std::string &fileName )
|
||||||
C_DynamicObj *dynamicObject = new C_DynamicObj();
|
C_DynamicObj *dynamicObject = new C_DynamicObj();
|
||||||
if( dynamicObject->Init( desc ) )
|
if( dynamicObject->Init( desc ) )
|
||||||
{
|
{
|
||||||
|
// RB DEBUG
|
||||||
|
RBInitData RBData;
|
||||||
|
if(oh->boundingVolume.geoType == CollisionGeometryType_Box)
|
||||||
|
{
|
||||||
|
RBData.position = (Float3)oh->position + (Float3)oh->boundingVolume.box.position;
|
||||||
|
RBData.rotation = ArrayToQuaternion( oh->rotation ); // Only model rotation
|
||||||
|
RBData.scale = (Float3)oh->scale * (Float3)oh->boundingVolume.box.size;
|
||||||
|
dynamicObject->InitRB( RBData );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(oh->boundingVolume.geoType == CollisionGeometryType_Sphere)
|
||||||
|
{
|
||||||
|
RBData.position = (Float3)oh->position + (Float3)oh->boundingVolume.sphere.position;
|
||||||
|
RBData.rotation = ArrayToQuaternion( oh->rotation ); // Only model rotation
|
||||||
|
RBData.scale = (Float3)oh->scale * oh->boundingVolume.sphere.radius;
|
||||||
|
dynamicObject->InitRB( RBData );
|
||||||
|
}
|
||||||
|
|
||||||
(*this->privData->dynamicObjects)[objectID] = dynamicObject;
|
(*this->privData->dynamicObjects)[objectID] = dynamicObject;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue