From 9c4a5f933624972412c027725e5108a67a114470 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 17 May 2017 16:29:30 -0700 Subject: [PATCH] update VR camera even if setRealTimeSimulation(0) also update w component in setVRCameraState orientation --- examples/SharedMemory/PhysicsClientC_API.cpp | 2 ++ .../PhysicsServerCommandProcessor.cpp | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/examples/SharedMemory/PhysicsClientC_API.cpp b/examples/SharedMemory/PhysicsClientC_API.cpp index 7a353bbf7..ca5ae4053 100644 --- a/examples/SharedMemory/PhysicsClientC_API.cpp +++ b/examples/SharedMemory/PhysicsClientC_API.cpp @@ -2712,6 +2712,8 @@ int b3SetVRCameraRootOrientation(b3SharedMemoryCommandHandle commandHandle, doub command->m_vrCameraStateArguments.m_rootOrientation[0] = rootOrn[0]; command->m_vrCameraStateArguments.m_rootOrientation[1] = rootOrn[1]; command->m_vrCameraStateArguments.m_rootOrientation[2] = rootOrn[2]; + command->m_vrCameraStateArguments.m_rootOrientation[3] = rootOrn[3]; + return 0; } diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index df2d2eef9..9751fd1de 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -6189,6 +6189,15 @@ void PhysicsServerCommandProcessor::stepSimulationRealTime(double dtInSec, const gResetSimulation = false; } + if (gVRTrackingObjectUniqueId >= 0) + { + InternalBodyHandle* bodyHandle = m_data->m_bodyHandles.getHandle(gVRTrackingObjectUniqueId); + if (bodyHandle && bodyHandle->m_multiBody) + { + gVRTrackingObjectTr = bodyHandle->m_multiBody->getBaseWorldTransform(); + } + } + if ((m_data->m_allowRealTimeSimulation) && m_data->m_guiHelper) { @@ -6208,14 +6217,7 @@ void PhysicsServerCommandProcessor::stepSimulationRealTime(double dtInSec, const gSubStep = m_data->m_physicsDeltaTime; } - if (gVRTrackingObjectUniqueId >= 0) - { - InternalBodyHandle* bodyHandle = m_data->m_bodyHandles.getHandle(gVRTrackingObjectUniqueId); - if (bodyHandle && bodyHandle->m_multiBody) - { - gVRTrackingObjectTr = bodyHandle->m_multiBody->getBaseWorldTransform(); - } - } + int numSteps = m_data->m_dynamicsWorld->stepSimulation(dtInSec*simTimeScalingFactor,maxSteps, gSubStep);