From bbb66370c6b215f925570304f402928f6088f87a Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 20 Aug 2020 08:35:24 -0700 Subject: reset camera in the rendering thread to avoid artifacts --- examples/SharedMemory/PhysicsServerExample.cpp | 29 +++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/examples/SharedMemory/PhysicsServerExample.cpp b/examples/SharedMemory/PhysicsServerExample.cpp index 3a159f581..bd93ce3f3 100644 --- a/examples/SharedMemory/PhysicsServerExample.cpp +++ b/examples/SharedMemory/PhysicsServerExample.cpp @@ -130,6 +130,7 @@ enum MultiThreadedGUIHelperCommunicationEnums eGUIHelperUpdateShape, eGUIHelperChangeGraphicsInstanceScaling, eGUIUserDebugRemoveAllParameters, + eGUIHelperResetCamera, }; #include @@ -1086,9 +1087,23 @@ public: { m_childGuiHelper->setUpAxis(axis); } + float m_resetCameraCamDist; + float m_resetCameraYaw; + float m_resetCameraPitch; + float m_resetCameraCamPosX; + float m_resetCameraCamPosY; + float m_resetCameraCamPosZ; + virtual void resetCamera(float camDist, float yaw, float pitch, float camPosX, float camPosY, float camPosZ) { - m_childGuiHelper->resetCamera(camDist, yaw, pitch, camPosX, camPosY, camPosZ); + m_resetCameraCamDist = camDist; + m_resetCameraYaw = yaw; + m_resetCameraPitch = pitch; + m_resetCameraCamPosX = camPosX; + m_resetCameraCamPosY = camPosY; + m_resetCameraCamPosZ = camPosZ; + m_cs->setSharedParam(1, eGUIHelperResetCamera); + workerThreadWait(); } virtual bool getCameraInfo(int* width, int* height, float viewMatrix[16], float projectionMatrix[16], float camUp[3], float camForward[3], float hor[3], float vert[3], float* yaw, float* pitch, float* camDist, float camTarget[3]) const @@ -2360,6 +2375,18 @@ void PhysicsServerExample::updateGraphics() m_multiThreadedHelper->mainThreadRelease(); break; } + case eGUIHelperResetCamera: + { + m_multiThreadedHelper->m_childGuiHelper->resetCamera( + m_multiThreadedHelper->m_resetCameraCamDist, + m_multiThreadedHelper->m_resetCameraYaw, + m_multiThreadedHelper->m_resetCameraPitch, + m_multiThreadedHelper->m_resetCameraCamPosX, + m_multiThreadedHelper->m_resetCameraCamPosY, + m_multiThreadedHelper->m_resetCameraCamPosZ); + m_multiThreadedHelper->mainThreadRelease(); + } + case eGUIHelperAutogenerateGraphicsObjects: { B3_PROFILE("eGUIHelperAutogenerateGraphicsObjects"); -- cgit v1.2.1