fix portal gun flicker between levels
This commit is contained in:
parent
dcce417b12
commit
f117026287
2
Makefile
2
Makefile
|
@ -361,7 +361,7 @@ build/src/util/dynamic_asset_data.o: build/assets/models/dynamic_model_list_data
|
|||
build/src/util/dynamic_asset_loader.o: build/assets/models/dynamic_model_list.h build/assets/models/dynamic_animated_model_list.h
|
||||
build/src/menu/audio_options.o: build/src/audio/subtitles.h
|
||||
build/src/menu/video_options.o: build/src/audio/subtitles.h
|
||||
build/src/scene/scene.o: build/src/audio/subtitles.h
|
||||
build/src/scene/scene.o: build/src/audio/subtitles.h build/src/audio/clips.h
|
||||
build/src/menu/main_menu.o: build/src/audio/subtitles.h
|
||||
|
||||
|
||||
|
|
|
@ -243,12 +243,12 @@ That will generate the rom at `/build/portal64.z64`
|
|||
<br />
|
||||
|
||||
## Current New Feature TODO List
|
||||
- [ ] fizzler player sound effect
|
||||
- [ ] gun flicker between levels
|
||||
- [ ] test chamber 10 without jumping
|
||||
- [ ] check if display list is long enough
|
||||
- [ ] check collider flags when filtering contacts
|
||||
- [ ] pausing while glados is speaking can end her speech early
|
||||
- [x] gun flicker between levels
|
||||
- [x] fizzler player sound effect
|
||||
- [x] clear z buffer instead of partitioning it
|
||||
- [X] add translations to menus
|
||||
- [x] jump animation
|
||||
|
|
|
@ -522,4 +522,8 @@ void sceneDeserialize(struct Serializer* serializer, struct Scene* scene) {
|
|||
}
|
||||
|
||||
scene->hud.fadeInTimer = 0.0f;
|
||||
|
||||
if (scene->player.flags & (PlayerHasFirstPortalGun | PlayerHasSecondPortalGun)) {
|
||||
scene->portalGun.portalGunVisible = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ void portalBallRender(struct PortalGunProjectile* projectile, struct RenderState
|
|||
extern LookAt gLookAt;
|
||||
extern float getAspect();
|
||||
|
||||
void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int portalGunVisible, int lastFiredIndex) {
|
||||
void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int lastFiredIndex) {
|
||||
struct MaterialState materialState;
|
||||
materialStateInit(&materialState, DEFAULT_INDEX);
|
||||
|
||||
|
@ -124,7 +124,7 @@ void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* render
|
|||
portalBallRender(projectile, renderState, &materialState, &fromCamera->transform, i);
|
||||
}
|
||||
|
||||
if (!portalGunVisible) {
|
||||
if (!portalGun->portalGunVisible) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ struct PortalGun {
|
|||
void portalGunInit(struct PortalGun* portalGun, struct Transform* at, int isFreshStart);
|
||||
// void portalGunDummyRender(void* data, struct DynamicRenderDataList* renderList, struct RenderState* renderState);
|
||||
void portalGunUpdate(struct PortalGun* portalGun, struct Player* player);
|
||||
void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int portalGunVisible, int lastFiredIndex);
|
||||
void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int lastFiredIndex);
|
||||
|
||||
void portalGunFire(struct PortalGun* portalGun, int portalIndex, struct Ray* ray, struct Transform* lookTransform, struct Vector3* playerUp, int roomIndex);
|
||||
void portalGunFireWorld(struct PortalGun* portalGun, int portalIndex, struct Vector3* from, struct Vector3* to, int roomIndex);
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "../player/player_rumble_clips.h"
|
||||
|
||||
#include "../build/src/audio/subtitles.h"
|
||||
#include "../build/src/audio/clips.h"
|
||||
|
||||
extern struct GameMenu gGameMenu;
|
||||
|
||||
|
@ -122,10 +123,12 @@ void sceneInitNoPauseMenu(struct Scene* scene, int mainMenuMode) {
|
|||
|
||||
if (gCurrentLevelIndex >= LEVEL_INDEX_WITH_GUN_0) {
|
||||
playerGivePortalGun(&scene->player, PlayerHasFirstPortalGun);
|
||||
scene->portalGun.portalGunVisible = 1;
|
||||
}
|
||||
|
||||
if (gCurrentLevelIndex >= LEVEL_INDEX_WITH_GUN_1) {
|
||||
playerGivePortalGun(&scene->player, PlayerHasSecondPortalGun);
|
||||
scene->portalGun.portalGunVisible = 1;
|
||||
}
|
||||
|
||||
portalInit(&scene->portals[0], 0);
|
||||
|
@ -311,7 +314,6 @@ void sceneRender(struct Scene* scene, struct RenderState* renderState, struct Gr
|
|||
&scene->portalGun,
|
||||
renderState,
|
||||
&scene->camera,
|
||||
scene->portalGun.portalGunVisible,
|
||||
scene->hud.lastPortalIndexShot
|
||||
);
|
||||
|
||||
|
@ -438,6 +440,7 @@ void sceneCheckPortals(struct Scene* scene) {
|
|||
if (didClose) {
|
||||
rumblePakClipPlay(&gPlayerClosePortalRumble);
|
||||
portalGunFizzle(&scene->portalGun);
|
||||
soundPlayerPlay(SOUNDS_PORTAL_FIZZLE2, 0.6f, 1.0f, NULL, NULL, SoundTypeAll);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue