decouple some dependency using a callback.

This commit is contained in:
Erwin Coumans
2017-02-21 19:28:49 -08:00
parent 218f883211
commit bf5f78f35a
4 changed files with 41 additions and 20 deletions

View File

@@ -12,6 +12,10 @@ struct CommonParameterInterface;
struct CommonRenderInterface; struct CommonRenderInterface;
struct CommonGraphicsApp; struct CommonGraphicsApp;
typedef void (*VisualizerFlagCallback)(int flag, bool enable);
///The Bullet 2 GraphicsPhysicsBridge let's the graphics engine create graphics representation and synchronize ///The Bullet 2 GraphicsPhysicsBridge let's the graphics engine create graphics representation and synchronize
struct GUIHelperInterface struct GUIHelperInterface
{ {
@@ -79,6 +83,7 @@ struct GUIHelperInterface
virtual void removeUserDebugItem( int debugItemUniqueId){}; virtual void removeUserDebugItem( int debugItemUniqueId){};
virtual void removeAllUserDebugItems( ){}; virtual void removeAllUserDebugItems( ){};
virtual void setVisualizerFlagCallback(VisualizerFlagCallback callback){}
}; };

View File

@@ -358,6 +358,24 @@ void OpenGLExampleBrowser::registerFileImporter(const char* extension, CommonExa
fi.m_createFunc = createFunc; fi.m_createFunc = createFunc;
gFileImporterByExtension.push_back(fi); gFileImporterByExtension.push_back(fi);
} }
#include "../SharedMemory/SharedMemoryPublic.h"
void OpenGLExampleBrowserVisualizerFlagCallback(int flag, bool enable)
{
if (flag == COV_ENABLE_SHADOWS)
{
useShadowMap = enable;
}
if (flag == COV_ENABLE_GUI)
{
renderGui = enable;
}
if (flag == COV_ENABLE_WIREFRAME)
{
visualWireframe = enable;
}
}
void openFileDemo(const char* filename) void openFileDemo(const char* filename)
{ {
@@ -365,6 +383,8 @@ void openFileDemo(const char* filename)
deleteDemo(); deleteDemo();
s_guiHelper= new OpenGLGuiHelper(s_app, sUseOpenGL2); s_guiHelper= new OpenGLGuiHelper(s_app, sUseOpenGL2);
s_guiHelper->setVisualizerFlagCallback(OpenGLExampleBrowserVisualizerFlagCallback);
s_parameterInterface->removeAllParameters(); s_parameterInterface->removeAllParameters();
@@ -419,6 +439,8 @@ void selectDemo(int demoIndex)
} }
int option = gAllExamples->getExampleOption(demoIndex); int option = gAllExamples->getExampleOption(demoIndex);
s_guiHelper= new OpenGLGuiHelper(s_app, sUseOpenGL2); s_guiHelper= new OpenGLGuiHelper(s_app, sUseOpenGL2);
s_guiHelper->setVisualizerFlagCallback(OpenGLExampleBrowserVisualizerFlagCallback);
CommonExampleOptions options(s_guiHelper, option); CommonExampleOptions options(s_guiHelper, option);
options.m_sharedMem = sSharedMem; options.m_sharedMem = sSharedMem;
sCurrentDemo = (*func)(options); sCurrentDemo = (*func)(options);

View File

@@ -154,9 +154,11 @@ struct OpenGLGuiHelperInternalData
btAlignedObjectArray<unsigned char> m_rgbaPixelBuffer1; btAlignedObjectArray<unsigned char> m_rgbaPixelBuffer1;
btAlignedObjectArray<float> m_depthBuffer1; btAlignedObjectArray<float> m_depthBuffer1;
VisualizerFlagCallback m_visualizerFlagCallback;
OpenGLGuiHelperInternalData() OpenGLGuiHelperInternalData()
:m_vrMode(false), :m_vrMode(false),
m_vrSkipShadowPass(0) m_vrSkipShadowPass(0),
m_visualizerFlagCallback(0)
{ {
} }
@@ -374,27 +376,17 @@ void OpenGLGuiHelper::setUpAxis(int axis)
} }
extern bool useShadowMap;
extern bool visualWireframe; void OpenGLGuiHelper::setVisualizerFlagCallback(VisualizerFlagCallback callback)
extern bool renderGui; {
#include "../SharedMemory/SharedMemoryPublic.h" m_data->m_visualizerFlagCallback = callback;
}
void OpenGLGuiHelper::setVisualizerFlag(int flag, int enable) void OpenGLGuiHelper::setVisualizerFlag(int flag, int enable)
{ {
//temporary direct access if (m_data->m_visualizerFlagCallback)
if (flag == COV_ENABLE_SHADOWS) (m_data->m_visualizerFlagCallback)(flag,enable);
{
useShadowMap = enable;
}
if (flag == COV_ENABLE_GUI)
{
renderGui = enable;
}
if (flag == COV_ENABLE_WIREFRAME)
{
visualWireframe = enable;
}
} }

View File

@@ -42,7 +42,6 @@ struct OpenGLGuiHelper : public GUIHelperInterface
virtual void setUpAxis(int axis); virtual void setUpAxis(int axis);
void setVisualizerFlag(int flag, int enable);
virtual void resetCamera(float camDist, float pitch, float yaw, float camPosX,float camPosY, float camPosZ); virtual void resetCamera(float camDist, float pitch, float yaw, float camPosX,float camPosY, float camPosZ);
@@ -82,6 +81,9 @@ struct OpenGLGuiHelper : public GUIHelperInterface
void setVRMode(bool vrMode); void setVRMode(bool vrMode);
void setVisualizerFlag(int flag, int enable);
virtual void setVisualizerFlagCallback(VisualizerFlagCallback callback);
}; };