MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xEntDriveUpdate

Function xEntDriveUpdate

src/SB/Core/x/xEntDrive.cpp:202–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

200}
201
202void xEntDriveUpdate(xEntDrive* drv, xScene* s, F32 dt, const xCollis* coll)
203{
204 if ((drv != NULL && (drv->odriver != NULL || drv->driver != NULL)))
205 {
206 if (drv->driven == NULL || drv->driven->frame == NULL ||
207 (drv->odriver != NULL && drv->odriver->frame == NULL))
208 {
209 xEntDriveInit(drv, drv->driven);
210 return;
211 }
212
213 if (drv->otmr > 0.0f)
214 {
215 drv->otmr -= dt;
216 if (drv->otmr <= 0.0f)
217 {
218 drv->os = 0.0f;
219 drv->otmr = 0.0f;
220 }
221 else
222 {
223 drv->os = drv->otmr / drv->otm;
224 }
225 }
226
227 if (drv->tmr > 0.0f)
228 {
229 drv->tmr -= dt;
230 if (drv->tmr <= 0.0f)
231 {
232 drv->s = 1.0f;
233 drv->tmr = 0.0f;
234 }
235 else
236 {
237 drv->s = 1.0f - drv->tmr / drv->tm;
238 }
239 }
240
241 if (!drv->os && !drv->s)
242 {
243 return;
244 }
245
246 xVec3 euler;
247 xMat3x3 rot;
248 xMat3x3 a_descaled;
249 if (drv->s && drv->flags & 1)
250 {
251 if (drv->driver == NULL || drv->driver->frame == NULL)
252 {
253 xEntDriveInit(drv, drv->driven);
254 return;
255 }
256
257 {
258 F32 len2 = SQR(drv->driver->frame->mat.right.x) +
259 SQR(drv->driver->frame->mat.right.y) +

Callers 2

MoveMethod · 0.50
zPlatform_MoveFunction · 0.50

Calls 14

xEntDriveInitFunction · 0.85
xsqrtFunction · 0.85
xMat3x3RotYFunction · 0.85
xMat4x3ToworldFunction · 0.85
xVec3SubFunction · 0.85
xVec3SMulByFunction · 0.85
xVec3AddToFunction · 0.85
xModelAnimCollDirtyFunction · 0.85
xMat4x3TolocalFunction · 0.85
xVec3CopyFunction · 0.85
xMat3x3GetEulerFunction · 0.70
xMat3x3MulFunction · 0.70

Tested by

no test coverage detected