MCPcopy Create free account
hub / github.com/bulletphysics/bullet3 / update

Method update

examples/OpenGLWindow/SimpleCamera.cpp:209–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

207}
208
209void SimpleCamera::update()
210{
211 b3Scalar yawRad = m_data->m_yaw * b3Scalar(0.01745329251994329547); // rads per deg
212 b3Scalar pitchRad = m_data->m_pitch * b3Scalar(0.01745329251994329547); // rads per deg
213 b3Scalar rollRad = 0.0;
214 b3Quaternion eyeRot;
215
216 int forwardAxis(-1);
217 switch (m_data->m_cameraUpAxis)
218 {
219 case 1:
220 forwardAxis = 2;
221 m_data->m_cameraUp = b3MakeVector3(0, 1, 0);
222 //gLightPos = b3MakeVector3(-50.f,100,30);
223 eyeRot.setEulerZYX(rollRad, yawRad, -pitchRad);
224 break;
225 case 2:
226 forwardAxis = 1;
227 m_data->m_cameraUp = b3MakeVector3(0, 0, 1);
228 //gLightPos = b3MakeVector3(-50.f,30,100);
229 eyeRot.setEulerZYX(yawRad, rollRad, pitchRad);
230 break;
231 default:
232 {
233 //b3Assert(0);
234 return;
235 }
236 };
237
238 b3Vector3 eyePos = b3MakeVector3(0, 0, 0);
239 eyePos[forwardAxis] = -m_data->m_cameraDistance;
240 eyePos = b3Matrix3x3(eyeRot) * eyePos;
241
242 m_data->m_cameraPosition = eyePos;
243
244 m_data->m_cameraPosition += m_data->m_cameraTargetPosition;
245
246 m_data->m_cameraForward = m_data->m_cameraTargetPosition - m_data->m_cameraPosition;
247 if (m_data->m_cameraForward.length2() < B3_EPSILON)
248 {
249 m_data->m_cameraForward.setValue(1.f, 0.f, 0.f);
250 }
251 else
252 {
253 m_data->m_cameraForward.normalize();
254 }
255}
256
257void SimpleCamera::getCameraProjectionMatrix(float projectionMatrix[16]) const
258{

Callers 2

updateCameraMethod · 0.45
updateCameraMethod · 0.45

Calls 6

b3MakeVector3Function · 0.85
b3Matrix3x3Function · 0.85
setEulerZYXMethod · 0.45
length2Method · 0.45
setValueMethod · 0.45
normalizeMethod · 0.45

Tested by

no test coverage detected