diff options
author | Erwin Coumans <erwin.coumans@gmail.com> | 2020-08-20 08:35:24 -0700 |
---|---|---|
committer | Erwin Coumans <erwin.coumans@gmail.com> | 2020-08-20 08:35:24 -0700 |
commit | bbb66370c6b215f925570304f402928f6088f87a (patch) | |
tree | 789205fd4d473d9093132c8286370829600c28ed | |
parent | d8d81f9ca494b8218fb0e06d1d28268f69c05969 (diff) | |
download | bullet3-bbb66370c6b215f925570304f402928f6088f87a.tar.gz |
reset camera in the rendering thread to avoid artifacts
-rw-r--r-- | examples/SharedMemory/PhysicsServerExample.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
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 <stdio.h> @@ -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"); |