mirror of https://github.com/AxioDL/metaforce.git
39 lines
995 B
C++
39 lines
995 B
C++
#include "CMorphBall.hpp"
|
|
#include "CPlayer.hpp"
|
|
#include "CMorphBallShadow.hpp"
|
|
#include "Particle/CGenDescription.hpp"
|
|
|
|
namespace urde
|
|
{
|
|
|
|
CMorphBall::CMorphBall(CPlayer& player, float)
|
|
: x0_player(player)
|
|
{
|
|
}
|
|
|
|
void CMorphBall::DrawBallShadow(const CStateManager& mgr)
|
|
{
|
|
if (!x1e50_shadow)
|
|
return;
|
|
|
|
float alpha = 1.f;
|
|
switch (x0_player.x2f8_morphTransState)
|
|
{
|
|
case CPlayer::EPlayerMorphBallState::Unmorphed:
|
|
return;
|
|
case CPlayer::EPlayerMorphBallState::Unmorphing:
|
|
alpha = 0.f;
|
|
if (x0_player.x578_morphDuration != 0.f)
|
|
alpha = zeus::clamp(0.f, x0_player.x574_morphTime / x0_player.x578_morphDuration, 1.f);
|
|
alpha = 1.f - alpha;
|
|
case CPlayer::EPlayerMorphBallState::Morphing:
|
|
alpha = 0.f;
|
|
if (x0_player.x578_morphDuration != 0.f)
|
|
alpha = zeus::clamp(0.f, x0_player.x574_morphTime / x0_player.x578_morphDuration, 1.f);
|
|
default: break;
|
|
}
|
|
x1e50_shadow->Render(mgr, alpha);
|
|
}
|
|
|
|
}
|