[DEV] display corectly the world with internal openGLES2
This commit is contained in:
parent
db90b5a629
commit
47e254d812
2
external/etk
vendored
2
external/etk
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 52d5bd18102bed9321a620e29581c480d084d44d
|
Subproject commit 4e1977c17a69724c70d267b569fd3189a4dd2ccd
|
@ -25,19 +25,47 @@
|
|||||||
namespace ewol
|
namespace ewol
|
||||||
{
|
{
|
||||||
namespace resource {
|
namespace resource {
|
||||||
|
/**
|
||||||
|
* @brief Initialize the internal variable
|
||||||
|
*/
|
||||||
void Init(void);
|
void Init(void);
|
||||||
|
/**
|
||||||
|
* @brief Uninitiamize the resource manager, free all resources previously requested
|
||||||
|
* @note when not free ==> generate warning, because the segfault can appear after...
|
||||||
|
*/
|
||||||
void UnInit(void);
|
void UnInit(void);
|
||||||
|
/**
|
||||||
|
* @brief Display in the log all the resources loaded ...
|
||||||
|
*/
|
||||||
void Display(void);
|
void Display(void);
|
||||||
|
/**
|
||||||
// specific for the test ...
|
* @brief Reload all resources from files, and send there in openGL card if needed.
|
||||||
|
* @note If File is reference at THEME:XXX:filename if the Theme change the file will reload the newOne
|
||||||
|
*/
|
||||||
void ReLoadResources(void);
|
void ReLoadResources(void);
|
||||||
|
/**
|
||||||
|
* @brief Call by the system to send all the needed data on the graphic card chen they change ...
|
||||||
|
* @param[in] object The resources that might be updated
|
||||||
|
*/
|
||||||
void Update(ewol::Resource* object);
|
void Update(ewol::Resource* object);
|
||||||
// Specific to load or update the data in the openGl context ==> system use only
|
/**
|
||||||
|
* @brief Call by the system chen the openGL Context has been unexpectially removed ==> This reload all the texture, VBO and other ....
|
||||||
|
*/
|
||||||
void UpdateContext(void);
|
void UpdateContext(void);
|
||||||
|
/**
|
||||||
|
* @brief This is to inform the resources manager that we have no more openGl context ...
|
||||||
|
*/
|
||||||
void ContextHasBeenDestroyed(void);
|
void ContextHasBeenDestroyed(void);
|
||||||
|
|
||||||
// return the type of the resource ...
|
/**
|
||||||
|
* @brief Load the specify resources type
|
||||||
|
* @param[in] filename The filename of the resources
|
||||||
|
* @param[in,out] object The resources that might be instanciate.
|
||||||
|
* @return true if the resource has been loaded corectly.
|
||||||
|
* @return false An error occured ...
|
||||||
|
* @note when you call the Keep function, you must call the Realease function ==> otherwise the resources will never be freed
|
||||||
|
* @note The resources with the same name are loaded only one time, a counter prevent multiple loading...
|
||||||
|
*/
|
||||||
bool Keep(etk::UString& filename, ewol::TexturedFont*& object);
|
bool Keep(etk::UString& filename, ewol::TexturedFont*& object);
|
||||||
bool Keep(etk::UString& filename, ewol::FontBase*& object);
|
bool Keep(etk::UString& filename, ewol::FontBase*& object);
|
||||||
bool Keep(etk::UString& filename, ewol::Program*& object);
|
bool Keep(etk::UString& filename, ewol::Program*& object);
|
||||||
@ -49,6 +77,10 @@ namespace ewol
|
|||||||
bool Keep(etk::UString& filename, ewol::ConfigFile*& object);
|
bool Keep(etk::UString& filename, ewol::ConfigFile*& object);
|
||||||
bool Keep(ewol::Colored3DObject*& object);
|
bool Keep(ewol::Colored3DObject*& object);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Release a resources and free it if the Last release is call.
|
||||||
|
* @param[in,out] object element to realease ==> is return at NULL value.
|
||||||
|
*/
|
||||||
void Release(ewol::Resource*& object);
|
void Release(ewol::Resource*& object);
|
||||||
void Release(ewol::TexturedFont*& object);
|
void Release(ewol::TexturedFont*& object);
|
||||||
void Release(ewol::FontBase*& object);
|
void Release(ewol::FontBase*& object);
|
||||||
|
@ -61,9 +61,69 @@ void ewol::Colored3DObject::Draw(etk::Vector<vec3>& vertices,
|
|||||||
// Request the draw od the elements :
|
// Request the draw od the elements :
|
||||||
glDrawArrays(GL_TRIANGLES, 0, vertices.Size());
|
glDrawArrays(GL_TRIANGLES, 0, vertices.Size());
|
||||||
m_GLprogram->UnUse();
|
m_GLprogram->UnUse();
|
||||||
|
// Request the draw od the elements :
|
||||||
|
glDrawArrays(GL_LINES, 0, vertices.Size());
|
||||||
|
m_GLprogram->UnUse();
|
||||||
if (false==updateDepthBuffer) {
|
if (false==updateDepthBuffer) {
|
||||||
glDepthMask(GL_TRUE);
|
glDepthMask(GL_TRUE);
|
||||||
}
|
}
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::Colored3DObject::Draw(etk::Vector<vec3>& vertices,
|
||||||
|
draw::Colorf& color,
|
||||||
|
mat4& transformationMatrix)
|
||||||
|
{
|
||||||
|
if (vertices.Size()<=0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (m_GLprogram==NULL) {
|
||||||
|
EWOL_ERROR("No shader ...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
//EWOL_DEBUG(" Display " << m_coord.Size() << " elements" );
|
||||||
|
m_GLprogram->Use();
|
||||||
|
// set Matrix : translation/positionMatrix
|
||||||
|
mat4 projMatrix = ewol::openGL::GetMatrix();
|
||||||
|
mat4 camMatrix = ewol::openGL::GetCameraMatrix();
|
||||||
|
mat4 tmpMatrix = projMatrix * camMatrix * transformationMatrix;
|
||||||
|
m_GLprogram->UniformMatrix4fv(m_GLMatrix, 1, tmpMatrix.m_mat);
|
||||||
|
// position :
|
||||||
|
m_GLprogram->SendAttribute(m_GLPosition, 3/*x,y,z*/, &vertices[0]);
|
||||||
|
// color :
|
||||||
|
m_GLprogram->Uniform4fv(m_GLColor, 1/*r,g,b,a*/, (float*)&color);
|
||||||
|
// Request the draw od the elements :
|
||||||
|
glDrawArrays(GL_TRIANGLES, 0, vertices.Size());
|
||||||
|
m_GLprogram->UnUse();
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ewol::Colored3DObject::DrawLine(etk::Vector<vec3>& vertices,
|
||||||
|
draw::Colorf& color,
|
||||||
|
mat4& transformationMatrix)
|
||||||
|
{
|
||||||
|
if (vertices.Size()<=0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (m_GLprogram==NULL) {
|
||||||
|
EWOL_ERROR("No shader ...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
//EWOL_DEBUG(" Display " << m_coord.Size() << " elements" );
|
||||||
|
m_GLprogram->Use();
|
||||||
|
// set Matrix : translation/positionMatrix
|
||||||
|
mat4 projMatrix = ewol::openGL::GetMatrix();
|
||||||
|
mat4 camMatrix = ewol::openGL::GetCameraMatrix();
|
||||||
|
mat4 tmpMatrix = projMatrix * camMatrix * transformationMatrix;
|
||||||
|
m_GLprogram->UniformMatrix4fv(m_GLMatrix, 1, tmpMatrix.m_mat);
|
||||||
|
// position :
|
||||||
|
m_GLprogram->SendAttribute(m_GLPosition, 3/*x,y,z*/, &vertices[0]);
|
||||||
|
// color :
|
||||||
|
m_GLprogram->Uniform4fv(m_GLColor, 1/*r,g,b,a*/, (float*)&color);
|
||||||
|
// Request the draw od the elements :
|
||||||
|
glDrawArrays(GL_LINES, 0, vertices.Size());
|
||||||
|
m_GLprogram->UnUse();
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
@ -32,6 +32,12 @@ namespace ewol
|
|||||||
virtual void Draw(etk::Vector<vec3>& vertices,
|
virtual void Draw(etk::Vector<vec3>& vertices,
|
||||||
draw::Colorf& color,
|
draw::Colorf& color,
|
||||||
bool updateDepthBuffer=true);
|
bool updateDepthBuffer=true);
|
||||||
|
virtual void Draw(etk::Vector<vec3>& vertices,
|
||||||
|
draw::Colorf& color,
|
||||||
|
mat4& transformationMatrix);
|
||||||
|
virtual void DrawLine(etk::Vector<vec3>& vertices,
|
||||||
|
draw::Colorf& color,
|
||||||
|
mat4& transformationMatrix);
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -52,6 +52,7 @@ class SceneDebugDrawer : public btIDebugDraw
|
|||||||
virtual ~SceneDebugDrawer() {};
|
virtual ~SceneDebugDrawer() {};
|
||||||
virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& fromColor, const btVector3& toColor)
|
virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& fromColor, const btVector3& toColor)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : drawLine");
|
||||||
glBegin(GL_LINES);
|
glBegin(GL_LINES);
|
||||||
glColor3f(fromColor.getX(), fromColor.getY(), fromColor.getZ());
|
glColor3f(fromColor.getX(), fromColor.getY(), fromColor.getZ());
|
||||||
glVertex3d(from.getX(), from.getY(), from.getZ());
|
glVertex3d(from.getX(), from.getY(), from.getZ());
|
||||||
@ -65,6 +66,7 @@ class SceneDebugDrawer : public btIDebugDraw
|
|||||||
}
|
}
|
||||||
virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
|
virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : drawSphere");
|
||||||
glColor4f (color.getX(), color.getY(), color.getZ(), btScalar(1.0f));
|
glColor4f (color.getX(), color.getY(), color.getZ(), btScalar(1.0f));
|
||||||
glPushMatrix ();
|
glPushMatrix ();
|
||||||
glTranslatef (p.getX(), p.getY(), p.getZ());
|
glTranslatef (p.getX(), p.getY(), p.getZ());
|
||||||
@ -95,6 +97,7 @@ class SceneDebugDrawer : public btIDebugDraw
|
|||||||
|
|
||||||
virtual void drawTriangle(const btVector3& a,const btVector3& b,const btVector3& c,const btVector3& color,btScalar alpha)
|
virtual void drawTriangle(const btVector3& a,const btVector3& b,const btVector3& c,const btVector3& color,btScalar alpha)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : drawTriangle");
|
||||||
// if (m_debugMode > 0)
|
// if (m_debugMode > 0)
|
||||||
{
|
{
|
||||||
const btVector3 n=btCross(b-a,c-a).normalized();
|
const btVector3 n=btCross(b-a,c-a).normalized();
|
||||||
@ -111,6 +114,7 @@ class SceneDebugDrawer : public btIDebugDraw
|
|||||||
|
|
||||||
virtual void drawContactPoint(const btVector3& pointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)
|
virtual void drawContactPoint(const btVector3& pointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : drawContactPoint");
|
||||||
btVector3 to=pointOnB+normalOnB*1;//distance;
|
btVector3 to=pointOnB+normalOnB*1;//distance;
|
||||||
const btVector3&from = pointOnB;
|
const btVector3&from = pointOnB;
|
||||||
glColor4f(color.getX(), color.getY(), color.getZ(),1.f);
|
glColor4f(color.getX(), color.getY(), color.getZ(),1.f);
|
||||||
@ -123,11 +127,13 @@ class SceneDebugDrawer : public btIDebugDraw
|
|||||||
|
|
||||||
virtual void reportErrorWarning(const char* warningString)
|
virtual void reportErrorWarning(const char* warningString)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : reportErrorWarning");
|
||||||
printf("%s\n",warningString);
|
printf("%s\n",warningString);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void draw3dText(const btVector3& location,const char* textString)
|
virtual void draw3dText(const btVector3& location,const char* textString)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("DebugDisplay : draw3dText");
|
||||||
glRasterPos3f(location.x(), location.y(), location.z());
|
glRasterPos3f(location.x(), location.y(), location.z());
|
||||||
//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),textString);
|
//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),textString);
|
||||||
}
|
}
|
||||||
@ -149,9 +155,9 @@ SceneDebugDrawer completeDebugger;
|
|||||||
|
|
||||||
|
|
||||||
///create 125 (5x5x5) dynamic object
|
///create 125 (5x5x5) dynamic object
|
||||||
#define ARRAY_SIZE_X 2
|
#define ARRAY_SIZE_X 5
|
||||||
#define ARRAY_SIZE_Y 2
|
#define ARRAY_SIZE_Y 5
|
||||||
#define ARRAY_SIZE_Z 2
|
#define ARRAY_SIZE_Z 5
|
||||||
|
|
||||||
//maximum number of objects (and allow user to shoot additional boxes)
|
//maximum number of objects (and allow user to shoot additional boxes)
|
||||||
#define MAX_PROXIES (ARRAY_SIZE_X*ARRAY_SIZE_Y*ARRAY_SIZE_Z + 1024)
|
#define MAX_PROXIES (ARRAY_SIZE_X*ARRAY_SIZE_Y*ARRAY_SIZE_Z + 1024)
|
||||||
@ -164,15 +170,19 @@ SceneDebugDrawer completeDebugger;
|
|||||||
|
|
||||||
widget::Scene::Scene(btDynamicsWorld* gameEngine) :
|
widget::Scene::Scene(btDynamicsWorld* gameEngine) :
|
||||||
m_dynamicsWorld(NULL),
|
m_dynamicsWorld(NULL),
|
||||||
m_camera(vec3(-6,0,2), vec3(0,0,0)),
|
m_camera(vec3(-6,0,2), vec3(DEG_TO_RAD(0),0,0)),
|
||||||
//m_gameEngine(gameEngine),
|
//m_gameEngine(gameEngine),
|
||||||
m_isRunning(true),
|
m_isRunning(true),
|
||||||
m_lastCallTime(-1),
|
m_lastCallTime(-1),
|
||||||
m_walk(0),
|
m_walk(0),
|
||||||
m_debugMode(0),
|
m_debugMode(0),
|
||||||
m_textureinitialized(false),
|
m_textureinitialized(false),
|
||||||
m_textureenabled(true)
|
m_textureenabled(true),
|
||||||
|
m_directDrawObject(NULL)
|
||||||
{
|
{
|
||||||
|
// this permit to display direct element ...
|
||||||
|
ewol::resource::Keep(m_directDrawObject);
|
||||||
|
|
||||||
m_texturehandle = 0;
|
m_texturehandle = 0;
|
||||||
SetCanHaveFocus(true);
|
SetCanHaveFocus(true);
|
||||||
PeriodicCallSet(true);
|
PeriodicCallSet(true);
|
||||||
@ -191,7 +201,7 @@ m_texturehandle = 0;
|
|||||||
|
|
||||||
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
|
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
|
||||||
m_dynamicsWorld->setDebugDrawer(&completeDebugger);
|
m_dynamicsWorld->setDebugDrawer(&completeDebugger);
|
||||||
m_dynamicsWorld->setGravity(btVector3(0,-10,0));
|
m_dynamicsWorld->setGravity(btVector3(0,0,-10));
|
||||||
|
|
||||||
|
|
||||||
// Create The ground
|
// Create The ground
|
||||||
@ -200,7 +210,7 @@ m_texturehandle = 0;
|
|||||||
|
|
||||||
btTransform groundTransform;
|
btTransform groundTransform;
|
||||||
groundTransform.setIdentity();
|
groundTransform.setIdentity();
|
||||||
groundTransform.setOrigin(btVector3(0,-50,0));
|
groundTransform.setOrigin(btVector3(0,0,-50));
|
||||||
btScalar mass(0.0);
|
btScalar mass(0.0);
|
||||||
btVector3 localInertia(0,0,0);
|
btVector3 localInertia(0,0,0);
|
||||||
//rigidbody is dynamic if and only if mass is non zero, otherwise static
|
//rigidbody is dynamic if and only if mass is non zero, otherwise static
|
||||||
@ -236,9 +246,9 @@ m_texturehandle = 0;
|
|||||||
for (int kkk=0 ; kkk<ARRAY_SIZE_Y ; kkk++) {
|
for (int kkk=0 ; kkk<ARRAY_SIZE_Y ; kkk++) {
|
||||||
for (int iii=0 ; iii<ARRAY_SIZE_X ; iii++) {
|
for (int iii=0 ; iii<ARRAY_SIZE_X ; iii++) {
|
||||||
for(int jjj=0 ; jjj<ARRAY_SIZE_Z ; jjj++) {
|
for(int jjj=0 ; jjj<ARRAY_SIZE_Z ; jjj++) {
|
||||||
startTransform.setOrigin(SCALING*btVector3(btScalar(2.0*iii + start_x),
|
startTransform.setOrigin(SCALING*btVector3(btScalar(20+2.0*iii + start_x),
|
||||||
btScalar(20+2.0*kkk + start_y),
|
btScalar(0+2.0*kkk + start_y),
|
||||||
btScalar(2.0*jjj + start_z) ) );
|
btScalar(20+3.0*jjj + start_z) ) );
|
||||||
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
|
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
|
||||||
btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
|
btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
|
||||||
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,colShape,localInertia);
|
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,colShape,localInertia);
|
||||||
@ -253,6 +263,7 @@ m_texturehandle = 0;
|
|||||||
|
|
||||||
widget::Scene::~Scene(void)
|
widget::Scene::~Scene(void)
|
||||||
{
|
{
|
||||||
|
ewol::resource::Release(m_directDrawObject);
|
||||||
//cleanup in the reverse order of creation/initialization
|
//cleanup in the reverse order of creation/initialization
|
||||||
//remove the rigidbodies from the dynamics world and delete them
|
//remove the rigidbodies from the dynamics world and delete them
|
||||||
for (int32_t iii=m_dynamicsWorld->getNumCollisionObjects()-1; iii>=0 ;iii--) {
|
for (int32_t iii=m_dynamicsWorld->getNumCollisionObjects()-1; iii>=0 ;iii--) {
|
||||||
@ -311,7 +322,9 @@ void widget::Scene::PauseToggle(void)
|
|||||||
|
|
||||||
void DrawSphere(btScalar radius, int lats, int longs)
|
void DrawSphere(btScalar radius, int lats, int longs)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("BasicDrawSphere");
|
||||||
int i, j;
|
int i, j;
|
||||||
|
etk::Vector<vec3> vertices;
|
||||||
for(i = 0; i <= lats; i++) {
|
for(i = 0; i <= lats; i++) {
|
||||||
btScalar lat0 = SIMD_PI * (-btScalar(0.5) + (btScalar) (i - 1) / lats);
|
btScalar lat0 = SIMD_PI * (-btScalar(0.5) + (btScalar) (i - 1) / lats);
|
||||||
btScalar z0 = radius*sin(lat0);
|
btScalar z0 = radius*sin(lat0);
|
||||||
@ -321,35 +334,46 @@ void DrawSphere(btScalar radius, int lats, int longs)
|
|||||||
btScalar z1 = radius*sin(lat1);
|
btScalar z1 = radius*sin(lat1);
|
||||||
btScalar zr1 = radius*cos(lat1);
|
btScalar zr1 = radius*cos(lat1);
|
||||||
|
|
||||||
glBegin(GL_QUAD_STRIP);
|
|
||||||
|
//glBegin(GL_QUAD_STRIP);
|
||||||
for(j = 0; j <= longs; j++) {
|
for(j = 0; j <= longs; j++) {
|
||||||
btScalar lng = 2 * SIMD_PI * (btScalar) (j - 1) / longs;
|
btScalar lng = 2 * SIMD_PI * (btScalar) (j - 1) / longs;
|
||||||
btScalar x = cos(lng);
|
btScalar x = cos(lng);
|
||||||
btScalar y = sin(lng);
|
btScalar y = sin(lng);
|
||||||
glNormal3f(x * zr1, y * zr1, z1);
|
//vec3
|
||||||
glVertex3f(x * zr1, y * zr1, z1);
|
//glNormal3f(x * zr1, y * zr1, z1);
|
||||||
glNormal3f(x * zr0, y * zr0, z0);
|
//glVertex3f(x * zr1, y * zr1, z1);
|
||||||
glVertex3f(x * zr0, y * zr0, z0);
|
//glNormal3f(x * zr0, y * zr0, z0);
|
||||||
|
//glVertex3f(x * zr0, y * zr0, z0);
|
||||||
}
|
}
|
||||||
glEnd();
|
//glEnd();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline void glDrawVector(const btVector3& v) { glVertex3d(v[0], v[1], v[2]); }
|
inline void glDrawVector(const btVector3& v) { glVertex3d(v[0], v[1], v[2]); }
|
||||||
|
|
||||||
void widget::Scene::DrawOpenGL(btScalar* m,
|
void widget::Scene::DrawOpenGL(btScalar* mmm,
|
||||||
const btCollisionShape* shape,
|
const btCollisionShape* shape,
|
||||||
const btVector3& color,
|
const btVector3& color,
|
||||||
int32_t debugMode,
|
int32_t debugMode,
|
||||||
const btVector3& worldBoundsMin,
|
const btVector3& worldBoundsMin,
|
||||||
const btVector3& worldBoundsMax)
|
const btVector3& worldBoundsMax)
|
||||||
{
|
{
|
||||||
|
mat4 transformationMatrix;
|
||||||
|
transformationMatrix.Identity();
|
||||||
|
transformationMatrix.m_mat[3] = mmm[12];
|
||||||
|
transformationMatrix.m_mat[7] = mmm[13];
|
||||||
|
transformationMatrix.m_mat[11] = mmm[14];
|
||||||
|
//EWOL_DEBUG("Matrix : " << transformationMatrix);
|
||||||
|
|
||||||
|
etk::Vector<vec3> EwolVertices;
|
||||||
if (shape->getShapeType() == CUSTOM_CONVEX_SHAPE_TYPE) {
|
if (shape->getShapeType() == CUSTOM_CONVEX_SHAPE_TYPE) {
|
||||||
EWOL_DEBUG("Draw : CUSTOM_CONVEX_SHAPE_TYPE");
|
EWOL_DEBUG(" Draw (1): CUSTOM_CONVEX_SHAPE_TYPE");
|
||||||
btVector3 org(m[12], m[13], m[14]);
|
btVector3 org(mmm[12], mmm[13], mmm[14]);
|
||||||
btVector3 dx(m[0], m[1], m[2]);
|
btVector3 dx(mmm[0], mmm[1], mmm[2]);
|
||||||
btVector3 dy(m[4], m[5], m[6]);
|
btVector3 dy(mmm[4], mmm[5], mmm[6]);
|
||||||
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
||||||
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
||||||
dx *= halfExtent[0];
|
dx *= halfExtent[0];
|
||||||
@ -365,11 +389,11 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
glEnd();
|
glEnd();
|
||||||
return;
|
return;
|
||||||
} else if((shape->getShapeType() == BOX_SHAPE_PROXYTYPE) && (debugMode & btIDebugDraw::DBG_FastWireframe)) {
|
} else if((shape->getShapeType() == BOX_SHAPE_PROXYTYPE) && (debugMode & btIDebugDraw::DBG_FastWireframe)) {
|
||||||
EWOL_DEBUG("Draw : BOX_SHAPE_PROXYTYPE");
|
EWOL_DEBUG(" Draw (2): BOX_SHAPE_PROXYTYPE");
|
||||||
btVector3 org(m[12], m[13], m[14]);
|
btVector3 org(mmm[12], mmm[13], mmm[14]);
|
||||||
btVector3 dx(m[0], m[1], m[2]);
|
btVector3 dx(mmm[0], mmm[1], mmm[2]);
|
||||||
btVector3 dy(m[4], m[5], m[6]);
|
btVector3 dy(mmm[4], mmm[5], mmm[6]);
|
||||||
btVector3 dz(m[8], m[9], m[10]);
|
btVector3 dz(mmm[8], mmm[9], mmm[10]);
|
||||||
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
||||||
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
||||||
dx *= halfExtent[0];
|
dx *= halfExtent[0];
|
||||||
@ -397,10 +421,12 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
glEnd();
|
glEnd();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glMultMatrixf(m);
|
glMultMatrixf(mmm);
|
||||||
|
*/
|
||||||
if (shape->getShapeType() == UNIFORM_SCALING_SHAPE_PROXYTYPE) {
|
if (shape->getShapeType() == UNIFORM_SCALING_SHAPE_PROXYTYPE) {
|
||||||
EWOL_DEBUG("Draw : UNIFORM_SCALING_SHAPE_PROXYTYPE");
|
EWOL_DEBUG(" Draw (3): UNIFORM_SCALING_SHAPE_PROXYTYPE");
|
||||||
const btUniformScalingShape* scalingShape = static_cast<const btUniformScalingShape*>(shape);
|
const btUniformScalingShape* scalingShape = static_cast<const btUniformScalingShape*>(shape);
|
||||||
const btConvexShape* convexShape = scalingShape->getChildShape();
|
const btConvexShape* convexShape = scalingShape->getChildShape();
|
||||||
float scalingFactor = (float)scalingShape->getUniformScalingFactor();
|
float scalingFactor = (float)scalingShape->getUniformScalingFactor();
|
||||||
@ -420,7 +446,7 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (shape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE) {
|
if (shape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE) {
|
||||||
EWOL_DEBUG("Draw : COMPOUND_SHAPE_PROXYTYPE");
|
EWOL_DEBUG(" Draw (4): COMPOUND_SHAPE_PROXYTYPE");
|
||||||
const btCompoundShape* compoundShape = static_cast<const btCompoundShape*>(shape);
|
const btCompoundShape* compoundShape = static_cast<const btCompoundShape*>(shape);
|
||||||
for (int32_t iii=compoundShape->getNumChildShapes()-1;iii>=0;iii--) {
|
for (int32_t iii=compoundShape->getNumChildShapes()-1;iii>=0;iii--) {
|
||||||
btTransform childTrans = compoundShape->getChildTransform(iii);
|
btTransform childTrans = compoundShape->getChildTransform(iii);
|
||||||
@ -435,7 +461,8 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
worldBoundsMax);
|
worldBoundsMax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
EWOL_DEBUG("Draw : !=COMPOUND_SHAPE_PROXYTYPE");
|
/**************************************************************/
|
||||||
|
//EWOL_DEBUG(" Draw (5): !=COMPOUND_SHAPE_PROXYTYPE");
|
||||||
/*
|
/*
|
||||||
if(m_textureenabled&&(!m_textureinitialized)) {
|
if(m_textureenabled&&(!m_textureinitialized)) {
|
||||||
GLubyte* image=new GLubyte[256*256*3];
|
GLubyte* image=new GLubyte[256*256*3];
|
||||||
@ -459,6 +486,7 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
gluBuild2DMipmaps(GL_TEXTURE_2D,3,256,256,GL_RGB,GL_UNSIGNED_BYTE,image);
|
gluBuild2DMipmaps(GL_TEXTURE_2D,3,256,256,GL_RGB,GL_UNSIGNED_BYTE,image);
|
||||||
delete[] image;
|
delete[] image;
|
||||||
}*/
|
}*/
|
||||||
|
/*
|
||||||
glMatrixMode(GL_TEXTURE);
|
glMatrixMode(GL_TEXTURE);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glScalef(0.025f,0.025f,0.025f);
|
glScalef(0.025f,0.025f,0.025f);
|
||||||
@ -481,12 +509,14 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
glBindTexture(GL_TEXTURE_2D,m_texturehandle);
|
glBindTexture(GL_TEXTURE_2D,m_texturehandle);
|
||||||
} else {
|
} else {
|
||||||
*/
|
*/
|
||||||
glDisable(GL_TEXTURE_2D);
|
// glDisable(GL_TEXTURE_2D);
|
||||||
//}
|
//}
|
||||||
glColor3f(color.x(),color.y(), color.z());
|
//glColor3f(color.x(),color.y(), color.z());
|
||||||
|
|
||||||
bool useWireframeFallback = true;
|
bool useWireframeFallback = true;
|
||||||
if (!(debugMode & btIDebugDraw::DBG_DrawWireframe)) {
|
if (!(debugMode & btIDebugDraw::DBG_DrawWireframe)) {
|
||||||
EWOL_DEBUG("Draw : !btIDebugDraw::DBG_DrawWireframe");
|
/**************************************************************/
|
||||||
|
//EWOL_DEBUG(" Draw (6): !btIDebugDraw::DBG_DrawWireframe");
|
||||||
///you can comment out any of the specific cases, and use the default
|
///you can comment out any of the specific cases, and use the default
|
||||||
///the benefit of 'default' is that it approximates the actual collision shape including collision margin
|
///the benefit of 'default' is that it approximates the actual collision shape including collision margin
|
||||||
//int shapetype=m_textureenabled?MAX_BROADPHASE_COLLISION_TYPES:shape->getShapeType();
|
//int shapetype=m_textureenabled?MAX_BROADPHASE_COLLISION_TYPES:shape->getShapeType();
|
||||||
@ -494,6 +524,7 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
switch (shapetype) {
|
switch (shapetype) {
|
||||||
case SPHERE_SHAPE_PROXYTYPE:
|
case SPHERE_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG(" Draw (101): SPHERE_SHAPE_PROXYTYPE");
|
||||||
const btSphereShape* sphereShape = static_cast<const btSphereShape*>(shape);
|
const btSphereShape* sphereShape = static_cast<const btSphereShape*>(shape);
|
||||||
float radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin
|
float radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin
|
||||||
DrawSphere(radius,10,10);
|
DrawSphere(radius,10,10);
|
||||||
@ -502,6 +533,9 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
}
|
}
|
||||||
case BOX_SHAPE_PROXYTYPE:
|
case BOX_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
|
// this is a simple box .. nothing special ...
|
||||||
|
/**************************************************************/
|
||||||
|
//EWOL_DEBUG(" Draw (102): BOX_SHAPE_PROXYTYPE");
|
||||||
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
||||||
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
btVector3 halfExtent = boxShape->getHalfExtentsWithMargin();
|
||||||
static int indices[36] = {
|
static int indices[36] = {
|
||||||
@ -517,34 +551,33 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
7,4,6,
|
7,4,6,
|
||||||
7,2,3,
|
7,2,3,
|
||||||
7,6,2};
|
7,6,2};
|
||||||
btVector3 vertices[8]={
|
vec3 vertices[8]={
|
||||||
btVector3(halfExtent[0],halfExtent[1],halfExtent[2]),
|
vec3(halfExtent[0],halfExtent[1],halfExtent[2]),
|
||||||
btVector3(-halfExtent[0],halfExtent[1],halfExtent[2]),
|
vec3(-halfExtent[0],halfExtent[1],halfExtent[2]),
|
||||||
btVector3(halfExtent[0],-halfExtent[1],halfExtent[2]),
|
vec3(halfExtent[0],-halfExtent[1],halfExtent[2]),
|
||||||
btVector3(-halfExtent[0],-halfExtent[1],halfExtent[2]),
|
vec3(-halfExtent[0],-halfExtent[1],halfExtent[2]),
|
||||||
btVector3(halfExtent[0],halfExtent[1],-halfExtent[2]),
|
vec3(halfExtent[0],halfExtent[1],-halfExtent[2]),
|
||||||
btVector3(-halfExtent[0],halfExtent[1],-halfExtent[2]),
|
vec3(-halfExtent[0],halfExtent[1],-halfExtent[2]),
|
||||||
btVector3(halfExtent[0],-halfExtent[1],-halfExtent[2]),
|
vec3(halfExtent[0],-halfExtent[1],-halfExtent[2]),
|
||||||
btVector3(-halfExtent[0],-halfExtent[1],-halfExtent[2])};
|
vec3(-halfExtent[0],-halfExtent[1],-halfExtent[2])};
|
||||||
glBegin (GL_TRIANGLES);
|
EwolVertices.Clear();
|
||||||
int si=36;
|
for (int32_t iii=0 ; iii<36 ; iii+=3) {
|
||||||
for (int32_t iii=0;iii<si;iii+=3) {
|
// normal calculation :
|
||||||
const btVector3& v1 = vertices[indices[iii]];;
|
//btVector3 normal = (vertices[indices[iii+2]]-vertices[indices[iii]]).cross(vertices[indices[iii+1]]-vertices[indices[iii]]);
|
||||||
const btVector3& v2 = vertices[indices[iii+1]];
|
//normal.normalize ();
|
||||||
const btVector3& v3 = vertices[indices[iii+2]];
|
EwolVertices.PushBack(vertices[indices[iii]]);
|
||||||
btVector3 normal = (v3-v1).cross(v2-v1);
|
EwolVertices.PushBack(vertices[indices[iii+1]]);
|
||||||
normal.normalize ();
|
EwolVertices.PushBack(vertices[indices[iii+2]]);
|
||||||
glNormal3f(normal.getX(),normal.getY(),normal.getZ());
|
|
||||||
glVertex3f (v1.x(), v1.y(), v1.z());
|
|
||||||
glVertex3f (v2.x(), v2.y(), v2.z());
|
|
||||||
glVertex3f (v3.x(), v3.y(), v3.z());
|
|
||||||
}
|
}
|
||||||
glEnd();
|
draw::Colorf tmpColor(color.x(),color.y(), color.z(), 0.5);
|
||||||
|
m_directDrawObject->Draw(EwolVertices, tmpColor, transformationMatrix);
|
||||||
useWireframeFallback = false;
|
useWireframeFallback = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case STATIC_PLANE_PROXYTYPE:
|
case STATIC_PLANE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG(" Draw (103): STATIC_PLANE_PROXYTYPE");
|
||||||
|
EwolVertices.Clear();
|
||||||
const btStaticPlaneShape* staticPlaneShape = static_cast<const btStaticPlaneShape*>(shape);
|
const btStaticPlaneShape* staticPlaneShape = static_cast<const btStaticPlaneShape*>(shape);
|
||||||
btScalar planeConst = staticPlaneShape->getPlaneConstant();
|
btScalar planeConst = staticPlaneShape->getPlaneConstant();
|
||||||
const btVector3& planeNormal = staticPlaneShape->getPlaneNormal();
|
const btVector3& planeNormal = staticPlaneShape->getPlaneNormal();
|
||||||
@ -556,16 +589,17 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
btVector3 pt1 = planeOrigin - vec0*vecLen;
|
btVector3 pt1 = planeOrigin - vec0*vecLen;
|
||||||
btVector3 pt2 = planeOrigin + vec1*vecLen;
|
btVector3 pt2 = planeOrigin + vec1*vecLen;
|
||||||
btVector3 pt3 = planeOrigin - vec1*vecLen;
|
btVector3 pt3 = planeOrigin - vec1*vecLen;
|
||||||
glBegin(GL_LINES);
|
EwolVertices.PushBack(vec3(pt0.getX(),pt0.getY(),pt0.getZ()));
|
||||||
glVertex3f(pt0.getX(),pt0.getY(),pt0.getZ());
|
EwolVertices.PushBack(vec3(pt1.getX(),pt1.getY(),pt1.getZ()));
|
||||||
glVertex3f(pt1.getX(),pt1.getY(),pt1.getZ());
|
EwolVertices.PushBack(vec3(pt2.getX(),pt2.getY(),pt2.getZ()));
|
||||||
glVertex3f(pt2.getX(),pt2.getY(),pt2.getZ());
|
EwolVertices.PushBack(vec3(pt3.getX(),pt3.getY(),pt3.getZ()));
|
||||||
glVertex3f(pt3.getX(),pt3.getY(),pt3.getZ());
|
draw::Colorf tmpColor(color.x(),color.y(), color.z(), 0.5);
|
||||||
glEnd();
|
m_directDrawObject->DrawLine(EwolVertices, tmpColor, transformationMatrix);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG(" Draw (104): MULTI_SPHERE_SHAPE_PROXYTYPE");
|
||||||
const btMultiSphereShape* multiSphereShape = static_cast<const btMultiSphereShape*>(shape);
|
const btMultiSphereShape* multiSphereShape = static_cast<const btMultiSphereShape*>(shape);
|
||||||
btTransform childTransform;
|
btTransform childTransform;
|
||||||
childTransform.setIdentity();
|
childTransform.setIdentity();
|
||||||
@ -586,7 +620,9 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG(" Draw (105): default");
|
||||||
if (shape->isConvex()) {
|
if (shape->isConvex()) {
|
||||||
|
EWOL_DEBUG(" shape->isConvex()");
|
||||||
const btConvexPolyhedron* poly = shape->isPolyhedral() ? ((btPolyhedralConvexShape*) shape)->getConvexPolyhedron() : 0;
|
const btConvexPolyhedron* poly = shape->isPolyhedral() ? ((btPolyhedralConvexShape*) shape)->getConvexPolyhedron() : 0;
|
||||||
if (NULL!=poly) {
|
if (NULL!=poly) {
|
||||||
glBegin(GL_TRIANGLES);
|
glBegin(GL_TRIANGLES);
|
||||||
@ -646,10 +682,13 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
EWOL_DEBUG(" !!! shape->isConvex() !!!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
glNormal3f(0,1,0);
|
glNormal3f(0,1,0);
|
||||||
/// for polyhedral shapes
|
/// for polyhedral shapes
|
||||||
if (debugMode==btIDebugDraw::DBG_DrawFeaturesText && (shape->isPolyhedral())) {
|
if (debugMode==btIDebugDraw::DBG_DrawFeaturesText && (shape->isPolyhedral())) {
|
||||||
@ -665,17 +704,18 @@ void widget::Scene::DrawOpenGL(btScalar* m,
|
|||||||
polyshape->getPlane(normal,vtx,iii);
|
polyshape->getPlane(normal,vtx,iii);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawShadow(btScalar* m,
|
void DrawShadow(btScalar* mmm,
|
||||||
const btVector3& extrusion,
|
const btVector3& extrusion,
|
||||||
const btCollisionShape* shape,
|
const btCollisionShape* shape,
|
||||||
const btVector3& worldBoundsMin,
|
const btVector3& worldBoundsMin,
|
||||||
const btVector3& worldBoundsMax)
|
const btVector3& worldBoundsMax)
|
||||||
{
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glMultMatrixf(m);
|
glMultMatrixf(mmm);
|
||||||
if(shape->getShapeType() == UNIFORM_SCALING_SHAPE_PROXYTYPE) {
|
if(shape->getShapeType() == UNIFORM_SCALING_SHAPE_PROXYTYPE) {
|
||||||
const btUniformScalingShape* scalingShape = static_cast<const btUniformScalingShape*>(shape);
|
const btUniformScalingShape* scalingShape = static_cast<const btUniformScalingShape*>(shape);
|
||||||
const btConvexShape* convexShape = scalingShape->getChildShape();
|
const btConvexShape* convexShape = scalingShape->getChildShape();
|
||||||
@ -743,12 +783,12 @@ void DrawShadow(btScalar* m,
|
|||||||
|
|
||||||
void widget::Scene::renderscene(int pass)
|
void widget::Scene::renderscene(int pass)
|
||||||
{
|
{
|
||||||
glPushMatrix();
|
//glPushMatrix();
|
||||||
EWOL_DEBUG("Render Scene pass=" << pass);
|
EWOL_DEBUG("Render Scene pass=" << pass);
|
||||||
mat4& myMatrix = ewol::openGL::GetMatrix();
|
//mat4& myMatrix = ewol::openGL::GetMatrix();
|
||||||
myMatrix = m_camera.GetMatrix() * myMatrix;
|
//myMatrix = m_camera.GetMatrix() * myMatrix;
|
||||||
myMatrix.Transpose();
|
//myMatrix.Transpose();
|
||||||
glLoadMatrixf(myMatrix.m_mat);
|
//glLoadMatrixf(myMatrix.m_mat);
|
||||||
btScalar mmm[16];
|
btScalar mmm[16];
|
||||||
btMatrix3x3 rot;
|
btMatrix3x3 rot;
|
||||||
rot.setIdentity();
|
rot.setIdentity();
|
||||||
@ -756,7 +796,7 @@ void widget::Scene::renderscene(int pass)
|
|||||||
btVector3 wireColor(1,0,0);
|
btVector3 wireColor(1,0,0);
|
||||||
for(int32_t iii=0;iii<numObjects;iii++)
|
for(int32_t iii=0;iii<numObjects;iii++)
|
||||||
{
|
{
|
||||||
EWOL_DEBUG(" obj id=" << iii << "/" << numObjects );
|
//EWOL_DEBUG(" obj id=" << iii << "/" << numObjects );
|
||||||
|
|
||||||
btCollisionObject* colObj=m_dynamicsWorld->getCollisionObjectArray()[iii];
|
btCollisionObject* colObj=m_dynamicsWorld->getCollisionObjectArray()[iii];
|
||||||
btRigidBody* body=btRigidBody::upcast(colObj);
|
btRigidBody* body=btRigidBody::upcast(colObj);
|
||||||
@ -764,10 +804,10 @@ void widget::Scene::renderscene(int pass)
|
|||||||
&& body->getMotionState() ) {
|
&& body->getMotionState() ) {
|
||||||
btDefaultMotionState* myMotionState = (btDefaultMotionState*)body->getMotionState();
|
btDefaultMotionState* myMotionState = (btDefaultMotionState*)body->getMotionState();
|
||||||
myMotionState->m_graphicsWorldTrans.getOpenGLMatrix(mmm);
|
myMotionState->m_graphicsWorldTrans.getOpenGLMatrix(mmm);
|
||||||
rot=myMotionState->m_graphicsWorldTrans.getBasis();
|
rot=myMotionState->m_graphicsWorldTrans.getBasis(); // ==> for the sun ...
|
||||||
} else {
|
} else {
|
||||||
colObj->getWorldTransform().getOpenGLMatrix(mmm);
|
colObj->getWorldTransform().getOpenGLMatrix(mmm);
|
||||||
rot=colObj->getWorldTransform().getBasis();
|
rot=colObj->getWorldTransform().getBasis(); // ==> for the sun ...
|
||||||
}
|
}
|
||||||
btVector3 wireColor(1.f,1.0f,0.5f); //wants deactivation
|
btVector3 wireColor(1.f,1.0f,0.5f); //wants deactivation
|
||||||
if(iii&1) {
|
if(iii&1) {
|
||||||
@ -969,13 +1009,6 @@ void widget::Scene::PeriodicCall(int64_t localTime)
|
|||||||
//optional but useful: debug drawing
|
//optional but useful: debug drawing
|
||||||
m_dynamicsWorld->debugDrawWorld();
|
m_dynamicsWorld->debugDrawWorld();
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if (NULL != m_gameEngine) {
|
|
||||||
if (true == m_isRunning) {
|
|
||||||
m_gameEngine->Process(m_lastCallTime, deltaTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
m_lastCallTime = curentTime;
|
m_lastCallTime = curentTime;
|
||||||
MarkToRedraw();
|
MarkToRedraw();
|
||||||
if (m_walk!=0) {
|
if (m_walk!=0) {
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include <etk/types.h>
|
#include <etk/types.h>
|
||||||
#include <etk/math/Vector3D.h>
|
#include <etk/math/Vector3D.h>
|
||||||
|
#include <etk/math/Matrix4.h>
|
||||||
#include <etk/Vector.h>
|
#include <etk/Vector.h>
|
||||||
#include <ewol/debug.h>
|
#include <ewol/debug.h>
|
||||||
#include <ewol/game/Engine.h>
|
#include <ewol/game/Engine.h>
|
||||||
@ -18,6 +19,7 @@
|
|||||||
#include <ewol/game/Camera.h>
|
#include <ewol/game/Camera.h>
|
||||||
#include <ewol/widget/Widget.h>
|
#include <ewol/widget/Widget.h>
|
||||||
#include <ewol/renderer/openGL.h>
|
#include <ewol/renderer/openGL.h>
|
||||||
|
#include <ewol/renderer/ResourceManager.h>
|
||||||
|
|
||||||
class btBroadphaseInterface;
|
class btBroadphaseInterface;
|
||||||
class btCollisionShape;
|
class btCollisionShape;
|
||||||
@ -52,6 +54,7 @@ namespace widget {
|
|||||||
bool m_textureinitialized;
|
bool m_textureinitialized;
|
||||||
bool m_textureenabled;
|
bool m_textureenabled;
|
||||||
unsigned int m_texturehandle;
|
unsigned int m_texturehandle;
|
||||||
|
ewol::Colored3DObject* m_directDrawObject; // system to draw special object ...
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief Main scene constructor
|
* @brief Main scene constructor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user