Skip to content
Snippets Groups Projects
Commit bb8297c5 authored by D-AIRY's avatar D-AIRY
Browse files

sxphysics small refactor

parent f6fd4e99
No related branches found
No related tags found
1 merge request!1Version 0.10.1
......@@ -13,7 +13,7 @@ See the license in LICENSE
#include <../Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h>
PhyWorld::PhyWorld():
CPhyWorld::CPhyWorld():
m_pGeomStaticCollideMesh(NULL),
m_pGeomStaticCollideShape(NULL),
m_pGeomStaticRigidBody(NULL),
......@@ -38,7 +38,7 @@ PhyWorld::PhyWorld():
Core_0RegisterCVarString("phy_world_gravity", "0 -10 0", "World gravity (x y z)");
m_pDynamicsWorld->setGravity(btVector3(0, -10, 0));
m_pDebugDrawer = new DebugDrawer();
m_pDebugDrawer = new CDebugDrawer();
m_pDebugDrawer->setDebugMode(btIDebugDraw::DBG_DrawWireframe);
//m_pDebugDrawer->setDebugMode(btIDebugDraw::DBG_FastWireframe);
m_pDynamicsWorld->setDebugDrawer(m_pDebugDrawer);
......@@ -48,9 +48,9 @@ PhyWorld::PhyWorld():
printf("Done!\n");
}
PhyWorld::~PhyWorld()
CPhyWorld::~CPhyWorld()
{
UnloadGeom();
unloadGeom();
mem_delete(m_pDynamicsWorld);
mem_delete(m_pGHostPairCallback);
......@@ -60,19 +60,19 @@ PhyWorld::~PhyWorld()
mem_delete(m_pBroadphase);
}
void PhyWorld::render()
void CPhyWorld::render()
{
if(*m_bDebugDraw)
{
m_pDynamicsWorld->debugDrawWorld();
((DebugDrawer*)(m_pDynamicsWorld->getDebugDrawer()))->render();
((CDebugDrawer*)(m_pDynamicsWorld->getDebugDrawer()))->render();
}
}
void PhyWorld::setThreadNum(int tnum)
void CPhyWorld::setThreadNum(int tnum)
{
}
void PhyWorld::update(int thread)
void CPhyWorld::update(int thread)
{
if(!m_isRunning)
{
......@@ -90,21 +90,21 @@ void PhyWorld::update(int thread)
time0 = time1;
}
void PhyWorld::sync()
void CPhyWorld::sync()
{
}
void PhyWorld::AddShape(btRigidBody * pBody)
void CPhyWorld::addShape(btRigidBody * pBody)
{
m_pDynamicsWorld->addRigidBody(pBody);
}
void PhyWorld::addShape(btRigidBody * pBody, int group, int mask)
void CPhyWorld::addShape(btRigidBody * pBody, int group, int mask)
{
m_pDynamicsWorld->addRigidBody(pBody, group, mask);
}
void PhyWorld::RemoveShape(btRigidBody * pBody)
void CPhyWorld::removeShape(btRigidBody * pBody)
{
if(pBody)
{
......@@ -112,9 +112,9 @@ void PhyWorld::RemoveShape(btRigidBody * pBody)
}
}
void PhyWorld::LoadGeom(const char * file)
void CPhyWorld::loadGeom(const char * file)
{
if(file && ImportGeom(file))
if(file && importGeom(file))
{
return;
}
......@@ -185,7 +185,7 @@ void PhyWorld::LoadGeom(const char * file)
m_pGeomStaticRigidBody->setCollisionFlags(m_pGeomStaticRigidBody->getCollisionFlags() | btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT);
m_pGeomStaticRigidBody->setFriction(100.0f);
AddShape(m_pGeomStaticRigidBody);
addShape(m_pGeomStaticRigidBody);
}
}
SGeom_ModelsClearArrBuffsGeom(ppVertices, pVertexCount, ppIndices, ppMtls, pIndexCount, iModelCount);
......@@ -379,7 +379,7 @@ void PhyWorld::LoadGeom(const char * file)
body->setCollisionFlags(body->getCollisionFlags() | btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT);
body->setFriction(100.0f);
AddShape(body);
addShape(body);
}
}
}
......@@ -388,16 +388,18 @@ void PhyWorld::LoadGeom(const char * file)
SGeom_GreenClearNavMeshAndTransform(green_arr_vertex, green_arr_count_vertex, green_arr_index, green_arr_mtl, green_arr_count_index, green_arr_transform, green_arr_count_transform, green_arr_count_green);
if(file)
ExportGeom(file);
{
exportGeom(file);
}
}
void PhyWorld::UnloadGeom()
void CPhyWorld::unloadGeom()
{
for(int i = 0; i < m_iGreenShapes; ++i)
{
for(int j = 0; j < m_piGreenTotal[i]; ++j)
{
RemoveShape(m_pppGreenStaticRigidBody[i][j]);
removeShape(m_pppGreenStaticRigidBody[i][j]);
mem_delete(m_pppGreenStaticRigidBody[i][j]);
}
mem_delete_a(m_pppGreenStaticRigidBody[i]);
......@@ -419,7 +421,7 @@ void PhyWorld::UnloadGeom()
RemoveShape(m_pGeomStaticRigidBody);
removeShape(m_pGeomStaticRigidBody);
mem_delete(m_pGeomStaticRigidBody);
mem_delete(m_pGeomStaticCollideShape);
mem_delete(m_pGeomStaticCollideMesh);
......@@ -429,9 +431,9 @@ void PhyWorld::UnloadGeom()
mem_delete_a(m_pGeomMtlIDs);
}
bool PhyWorld::ImportGeom(const char * file)
bool CPhyWorld::importGeom(const char * file)
{
UnloadGeom();
unloadGeom();
int len = strlen(file) + 1;
char * name = (char*)alloca(sizeof(char)*(len + 1));
......@@ -518,7 +520,7 @@ bool PhyWorld::ImportGeom(const char * file)
mem_delete(importer);
if(!ret)
{
UnloadGeom();
unloadGeom();
}
return(ret);
}
......@@ -530,7 +532,7 @@ const char * _allocStr(const char * _str)
return(str);
}
bool PhyWorld::ExportGeom(const char * _file)
bool CPhyWorld::exportGeom(const char * _file)
{
btDefaultSerializer * serializer = new btDefaultSerializer();
serializer->startSerialization();
......@@ -583,9 +585,9 @@ bool PhyWorld::ExportGeom(const char * _file)
return(ret);
}
MTLTYPE_PHYSIC PhyWorld::GetMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
MTLTYPE_PHYSIC CPhyWorld::getMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
{
ID idMtl = GetMtlID(pBody, pShapeInfo);
ID idMtl = getMtlID(pBody, pShapeInfo);
if(ID_VALID(idMtl))
{
return(SML_MtlGetPhysicMaterial(idMtl));
......@@ -593,7 +595,7 @@ MTLTYPE_PHYSIC PhyWorld::GetMtlType(const btCollisionObject *pBody, const btColl
return(MTLTYPE_PHYSIC_DEFAULT);
}
ID PhyWorld::GetMtlID(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
ID CPhyWorld::getMtlID(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
{
if(pBody == m_pGeomStaticRigidBody && m_iGeomFacesCount > pShapeInfo->m_triangleIndex)
{
......@@ -602,18 +604,18 @@ ID PhyWorld::GetMtlID(const btCollisionObject *pBody, const btCollisionWorld::Lo
return(-1);
}
void PhyWorld::disableSimulation()
void CPhyWorld::disableSimulation()
{
m_isRunning = false;
}
void PhyWorld::enableSimulation()
void CPhyWorld::enableSimulation()
{
m_isRunning = true;
}
//##############################################################
void PhyWorld::DebugDrawer::drawLine(const btVector3 & from, const btVector3 & to, const btVector3 & color)
void CPhyWorld::CDebugDrawer::drawLine(const btVector3 & from, const btVector3 & to, const btVector3 & color)
{
int clr = 0;
clr += 255;
......@@ -635,12 +637,12 @@ void PhyWorld::DebugDrawer::drawLine(const btVector3 & from, const btVector3 & t
m_vDrawData.push_back(pt);
}
void PhyWorld::DebugDrawer::drawContactPoint(const btVector3 & PointOnB, const btVector3 & normalOnB, btScalar distance, int lifeTime, const btVector3& color)
void CPhyWorld::CDebugDrawer::drawContactPoint(const btVector3 & PointOnB, const btVector3 & normalOnB, btScalar distance, int lifeTime, const btVector3& color)
{
}
void PhyWorld::DebugDrawer::reportErrorWarning(const char * warningString)
void CPhyWorld::CDebugDrawer::reportErrorWarning(const char * warningString)
{
if (m_bExpectObject)
{
......@@ -695,22 +697,22 @@ void PhyWorld::DebugDrawer::reportErrorWarning(const char * warningString)
LibReport(REPORT_MSG_LEVEL_WARNING, "%s", warningString);
}
void PhyWorld::DebugDrawer::draw3dText(const btVector3& location, const char* textString)
void CPhyWorld::CDebugDrawer::draw3dText(const btVector3& location, const char* textString)
{
}
void PhyWorld::DebugDrawer::setDebugMode(int debugMode)
void CPhyWorld::CDebugDrawer::setDebugMode(int debugMode)
{
m_iDebugMode = debugMode;
}
int PhyWorld::DebugDrawer::getDebugMode() const
int CPhyWorld::CDebugDrawer::getDebugMode() const
{
return(m_iDebugMode);
}
void PhyWorld::DebugDrawer::render()
void CPhyWorld::CDebugDrawer::render()
{
if(!m_vDrawData.size())
{
......
......@@ -37,42 +37,42 @@ struct PhyMatFile
};
#pragma pack(pop)
class PhyWorld
class CPhyWorld
{
public:
PhyWorld();
~PhyWorld();
CPhyWorld();
~CPhyWorld();
void setThreadNum(int tnum);
void update(int thread = 0);
void sync();
void AddShape(btRigidBody * pBody);
void addShape(btRigidBody * pBody);
void addShape(btRigidBody * pBody, int group, int mask);
void RemoveShape(btRigidBody * pBody);
void removeShape(btRigidBody * pBody);
void LoadGeom(const char * file=NULL);
void UnloadGeom();
void loadGeom(const char * file=NULL);
void unloadGeom();
bool ImportGeom(const char * file);
bool ExportGeom(const char * file);
bool importGeom(const char * file);
bool exportGeom(const char * file);
void disableSimulation();
void enableSimulation();
void render();
MTLTYPE_PHYSIC GetMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo);
MTLTYPE_PHYSIC getMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo);
ID GetMtlID(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo);
ID getMtlID(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo);
btDiscreteDynamicsWorld * GetBtWorld()
btDiscreteDynamicsWorld * getBtWorld()
{
return(m_pDynamicsWorld);
}
class DebugDrawer: public btIDebugDraw
class CDebugDrawer: public btIDebugDraw
{
struct render_point
{
......@@ -84,7 +84,7 @@ public:
bool m_bExpectObject;
public:
DebugDrawer():
CDebugDrawer():
m_bExpectObject(false)
{
}
......@@ -113,7 +113,7 @@ protected:
btGhostPairCallback * m_pGHostPairCallback;
const bool * m_bDebugDraw;
DebugDrawer * m_pDebugDrawer;
CDebugDrawer * m_pDebugDrawer;
//
btTriangleMesh * m_pGeomStaticCollideMesh;
......
......@@ -35,7 +35,7 @@ See the license in LICENSE
report_func g_fnReportf = DefReport;
#endif
PhyWorld * g_pWorld = NULL;
CPhyWorld * g_pWorld = NULL;
#define SP_PRECOND(ret) if(!g_pWorld){LibReport(REPORT_MSG_LEVEL_ERROR, "%s - sxphysics is not init", GEN_MSG_LOCATION);return ret;}
......@@ -64,7 +64,7 @@ SX_LIB_API void SXPhysics_0Create()
}
Core_SetOutPtr();
g_pWorld = new PhyWorld();
g_pWorld = new CPhyWorld();
}
SX_LIB_API void SXPhysics_AKill()
{
......@@ -96,13 +96,13 @@ SX_LIB_API void SXPhysics_Dbg_Set(report_func rf)
SX_LIB_API void SXPhysics_LoadGeom(const char * file)
{
SP_PRECOND(_VOID);
g_pWorld->LoadGeom(file);
g_pWorld->loadGeom(file);
}
SX_LIB_API void SXPhysics_UnloadGeom()
{
SP_PRECOND(_VOID);
g_pWorld->UnloadGeom();
g_pWorld->unloadGeom();
}
SX_LIB_API void SXPhysics_DebugRender()
......@@ -114,7 +114,7 @@ SX_LIB_API void SXPhysics_DebugRender()
SX_LIB_API void SXPhysics_AddShape(btRigidBody * pBody)
{
SP_PRECOND(_VOID);
g_pWorld->AddShape(pBody);
g_pWorld->addShape(pBody);
}
SX_LIB_API void SXPhysics_AddShapeEx(btRigidBody * pBody, int group, int mask)
......@@ -126,39 +126,39 @@ SX_LIB_API void SXPhysics_AddShapeEx(btRigidBody * pBody, int group, int mask)
SX_LIB_API void SXPhysics_RemoveShape(btRigidBody * pBody)
{
SP_PRECOND(_VOID);
g_pWorld->RemoveShape(pBody);
g_pWorld->removeShape(pBody);
}
SX_LIB_API btDiscreteDynamicsWorld * SXPhysics_GetDynWorld()
{
SP_PRECOND(NULL);
return(g_pWorld->GetBtWorld());
return(g_pWorld->getBtWorld());
}
SX_LIB_API bool SXPhysics_ImportGeom(const char * file)
{
SP_PRECOND(false);
return(g_pWorld->ImportGeom(file));
return(g_pWorld->importGeom(file));
}
SX_LIB_API bool SXPhysics_ExportGeom(const char * file)
{
SP_PRECOND(false);
return(g_pWorld->ExportGeom(file));
return(g_pWorld->exportGeom(file));
}
SX_LIB_API int SXPhysics_GetMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
{
SP_PRECOND(MTLTYPE_PHYSIC_DEFAULT);
return(g_pWorld->GetMtlType(pBody, pShapeInfo));
return(g_pWorld->getMtlType(pBody, pShapeInfo));
}
SX_LIB_API ID SXPhysics_GetMtlID(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo)
{
SP_PRECOND(-1);
return(g_pWorld->GetMtlID(pBody, pShapeInfo));
return(g_pWorld->getMtlID(pBody, pShapeInfo));
}
SX_LIB_API void SXPhysics_EnableSimulation()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment