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

Function xCameraFXZoomUpdate

src/SB/Core/x/xCamera.cpp:964–1020  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

962}
963
964void xCameraFXZoomUpdate(cameraFX* f, F32 dt, const xMat4x3*, xMat4x3* m)
965{
966 switch (f->zoom.mode)
967 {
968 case CAMERAFX_ZOOM_MODE_0:
969 {
970 f->zoom.velCur += f->zoom.accel * dt;
971 f->zoom.distanceCur += f->zoom.velCur * dt;
972
973 if (f->zoom.distanceCur >= f->zoom.distance)
974 {
975 f->zoom.distanceCur = f->zoom.distance;
976 f->zoom.mode = CAMERAFX_ZOOM_MODE_2;
977 f->zoom.holdTimeCur = 0.0f;
978 }
979
980 xMat4x3MoveLocalAt(m, f->zoom.distanceCur);
981
982 break;
983 }
984 case CAMERAFX_ZOOM_MODE_2:
985 {
986 f->zoom.holdTimeCur += dt;
987
988 if (f->zoom.holdTimeCur > f->zoom.holdTime)
989 {
990 f->zoom.mode = CAMERAFX_ZOOM_MODE_1;
991 f->zoom.distanceCur = f->zoom.distance;
992 f->zoom.velCur = f->zoom.vel;
993 }
994
995 xMat4x3MoveLocalAt(m, f->zoom.distance);
996
997 break;
998 }
999 case CAMERAFX_ZOOM_MODE_1:
1000 {
1001 f->zoom.velCur += f->zoom.accel * dt;
1002 f->zoom.distanceCur -= f->zoom.velCur * dt;
1003
1004 if (f->zoom.distanceCur <= 0.0f)
1005 {
1006 f->zoom.distanceCur = 0.0f;
1007 f->zoom.mode = CAMERAFX_ZOOM_MODE_3;
1008 f->flags |= 0x2;
1009 }
1010
1011 xMat4x3MoveLocalAt(m, f->zoom.distanceCur);
1012
1013 break;
1014 }
1015 case CAMERAFX_ZOOM_MODE_3:
1016 {
1017 break;
1018 }
1019 }
1020}
1021

Callers

nothing calls this directly

Calls 1

xMat4x3MoveLocalAtFunction · 0.85

Tested by

no test coverage detected