summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <erwin.coumans@gmail.com>2020-08-20 08:35:24 -0700
committerErwin Coumans <erwin.coumans@gmail.com>2020-08-20 08:35:24 -0700
commitbbb66370c6b215f925570304f402928f6088f87a (patch)
tree789205fd4d473d9093132c8286370829600c28ed
parentd8d81f9ca494b8218fb0e06d1d28268f69c05969 (diff)
downloadbullet3-bbb66370c6b215f925570304f402928f6088f87a.tar.gz
reset camera in the rendering thread to avoid artifacts
-rw-r--r--examples/SharedMemory/PhysicsServerExample.cpp29
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");