Work on main menu camera

This commit is contained in:
James Lambert 2023-04-21 23:32:46 -06:00
parent 6b311659d6
commit ba5f97b346
6 changed files with 25 additions and 13 deletions

View file

@ -245,7 +245,8 @@ build/assets/models/props/combine_ball_catcher.h: assets/materials/ball_catcher.
build/assets/models/props/combine_ball_launcher.h: assets/materials/ball_catcher.skm.yaml
ANIM_TEST_CHAMBERS = build/assets/test_chambers/test_chamber_03/test_chamber_03_anim.o \
ANIM_TEST_CHAMBERS = build/assets/test_chambers/test_chamber_00/test_chamber_00_anim.o \
build/assets/test_chambers/test_chamber_03/test_chamber_03_anim.o \
build/assets/test_chambers/test_chamber_04/test_chamber_04_anim.o \
build/assets/test_chambers/test_chamber_06/test_chamber_06_anim.o \
build/assets/test_chambers/test_chamber_07/test_chamber_07_anim.o

View file

@ -237,7 +237,8 @@ void cutsceneRunnerStartStep(struct CutsceneRunner* runner) {
&gScene.animator,
step->playAnimation.armatureIndex,
step->playAnimation.animationIndex,
cutsceneRunnerConvertPlaybackSpeed(step->playAnimation.playbackSpeed)
cutsceneRunnerConvertPlaybackSpeed(step->playAnimation.playbackSpeed),
0
);
break;
case CutsceneStepSetAnimationSpeed:

View file

@ -21,6 +21,12 @@ Gfx* menuBuildText(struct Font* font, char* message, int x, int y) {
return result;
}
void mainMenuReadCamera(struct MainMenu* mainMenu) {
gScene.camera.transform = gScene.animator.armatures[TEST_CHAMBER_00_TEST_CHAMBER_00_ARMATURE_CAMERA].pose[0];
vector3Scale(&gScene.camera.transform.position, &gScene.camera.transform.position, 1.0f / SCENE_SCALE);
soundListenerUpdate(&gScene.camera.transform.position, &gScene.camera.transform.rotation, &gZeroVec, 0);
}
void mainMenuInit(struct MainMenu* mainMenu) {
sceneInit(&gScene);
@ -28,18 +34,22 @@ void mainMenuInit(struct MainMenu* mainMenu) {
mainMenu->loadGameText = menuBuildText(&gDejaVuSansFont, "LOAD GAME", 30, 147);
mainMenu->optionsText = menuBuildText(&gDejaVuSansFont, "OPTIONS", 30, 159);
struct Transform* cameraTransfrom = &gCurrentLevel->locations[TEST_CHAMBER_00_TEST_CHAMBER_00_LOCATION_CAMERA].transform;
sceneAnimatorPlay(
&gScene.animator,
TEST_CHAMBER_00_TEST_CHAMBER_00_ARMATURE_CAMERA,
TEST_CHAMBER_00_TEST_CHAMBER_00_CAMERA_ANIMATION__ANIM_CAMERA_MAIN_MENU_CAMERA,
1.0f,
SKAnimatorFlagsLoop
);
struct Quaternion gRelativeRotation;
quatAxisAngle(&gUp, -M_PI * 0.5f, &gRelativeRotation);
gScene.camera.transform = *cameraTransfrom;
gScene.camera.fov = 61.9275f * 3.0f / 4.0f;
quatMultiply(&cameraTransfrom->rotation, &gRelativeRotation, &gScene.camera.transform.rotation);
soundListenerUpdate(&gScene.camera.transform.position, &gScene.camera.transform.rotation, &gZeroVec, 0);
mainMenuReadCamera(mainMenu);
gScene.camera.fov = 56.0f;
}
void mainMenuUpdate(struct MainMenu* mainMenu) {
sceneAnimatorUpdate(&gScene.animator);
mainMenuReadCamera(mainMenu);
}
extern Lights1 gSceneLights;

View file

@ -55,7 +55,7 @@ Mtx* sceneAnimatorBuildTransforms(struct SceneAnimator* sceneAnimator, struct Re
return result;
}
void sceneAnimatorPlay(struct SceneAnimator* sceneAnimator, int animatorIndex, int animationIndex, float speed) {
void sceneAnimatorPlay(struct SceneAnimator* sceneAnimator, int animatorIndex, int animationIndex, float speed, int flags) {
if (animatorIndex < 0 || animatorIndex >= sceneAnimator->animatorCount) {
return;
}
@ -74,7 +74,7 @@ void sceneAnimatorPlay(struct SceneAnimator* sceneAnimator, int animatorIndex, i
return;
}
skAnimatorRunClip(&sceneAnimator->animators[animatorIndex], clip, speed >= 0.0f ? 0.0f : clip->nFrames / clip->fps, 0);
skAnimatorRunClip(&sceneAnimator->animators[animatorIndex], clip, speed >= 0.0f ? 0.0f : clip->nFrames / clip->fps, flags);
}
void sceneAnimatorSetSpeed(struct SceneAnimator* sceneAnimator, int animatorIndex, float speed) {

View file

@ -25,7 +25,7 @@ void sceneAnimatorTransformForIndex(struct SceneAnimator* sceneAnimator, int ind
Mtx* sceneAnimatorBuildTransforms(struct SceneAnimator* sceneAnimator, struct RenderState* renderState);
void sceneAnimatorPlay(struct SceneAnimator* sceneAnimator, int animatorIndex, int animationIndex, float speed);
void sceneAnimatorPlay(struct SceneAnimator* sceneAnimator, int animatorIndex, int animationIndex, float speed, int flags);
void sceneAnimatorSetSpeed(struct SceneAnimator* sceneAnimator, int animatorIndex, float speed);
int sceneAnimatorIsRunning(struct SceneAnimator* sceneAnimator, int animatorIndex);