mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 09:47:43 +00:00
Implement CStateManager::Update
This commit is contained in:
@@ -6,6 +6,9 @@
|
||||
#include "CSimplePool.hpp"
|
||||
#include "GameGlobalObjects.hpp"
|
||||
#include "Particle/CGenDescription.hpp"
|
||||
#include "Camera/CFirstPersonCamera.hpp"
|
||||
#include "Camera/CBallCamera.hpp"
|
||||
#include "Camera/CCinematicCamera.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
@@ -94,6 +97,13 @@ rstl::optional_object<zeus::CAABox> CPlayer::GetTouchBounds() const { return {};
|
||||
|
||||
void CPlayer::Touch(CActor&, CStateManager& mgr) {}
|
||||
|
||||
void CPlayer::DoPreThink(float dt, CStateManager& mgr)
|
||||
{
|
||||
PreThink(dt, mgr);
|
||||
if (CEntity* ent = mgr.ObjectById(xa00_))
|
||||
ent->PreThink(dt, mgr);
|
||||
}
|
||||
|
||||
void CPlayer::UpdateScanningState(const CFinalInput& input, CStateManager& mgr, float) {}
|
||||
|
||||
void CPlayer::ValidateScanning(const CFinalInput& input, CStateManager& mgr) {}
|
||||
@@ -328,6 +338,36 @@ void CPlayer::UpdateCinematicState(CStateManager& mgr)
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayer::SetCameraState(EPlayerCameraState camState, CStateManager& stateMgr)
|
||||
{
|
||||
if (x2f4_cameraState == camState)
|
||||
return;
|
||||
x2f4_cameraState = camState;
|
||||
CCameraManager* camMgr = stateMgr.GetCameraManager();
|
||||
switch (camState)
|
||||
{
|
||||
case EPlayerCameraState::Zero:
|
||||
camMgr->SetCurrentCameraId(camMgr->GetFirstPersonCamera()->GetUniqueId(), stateMgr);
|
||||
x768_morphball->SetBallLightActive(stateMgr, false);
|
||||
break;
|
||||
case EPlayerCameraState::One:
|
||||
case EPlayerCameraState::Three:
|
||||
camMgr->SetCurrentCameraId(camMgr->GetBallCamera()->GetUniqueId(), stateMgr);
|
||||
x768_morphball->SetBallLightActive(stateMgr, true);
|
||||
break;
|
||||
case EPlayerCameraState::Two:
|
||||
break;
|
||||
case EPlayerCameraState::Four:
|
||||
{
|
||||
bool ballLight = false;
|
||||
if (TCastToPtr<CCinematicCamera> cineCam = camMgr->GetCurrentCamera(stateMgr))
|
||||
ballLight = x2f8_morphTransState == EPlayerMorphBallState::Morphed && cineCam->GetW1() & 0x40;
|
||||
x768_morphball->SetBallLightActive(stateMgr, ballLight);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayer::Touch() {}
|
||||
|
||||
void CPlayer::CVisorSteam::SetSteam(float a, float b, float c, ResId d, bool e)
|
||||
|
||||
Reference in New Issue
Block a user