18 Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj,
22 [[nodiscard]] u32 loadFlags()
const override {
33 [[nodiscard]] f32 yDist()
const {
37 [[nodiscard]] f32 initYSpeed()
const {
42 enum class ExplosionIntensity {
43 ExplosionLoseItem = 0,
48 void enterIntangible() {}
53 void enterBlinking() {
54 m_workingPos = m_initPos + EGG::Vector3f::ey * -BALL_RADIUS;
58 void enterExploding() {
63 void calcIntangible() {
64 m_workingPos = m_shipPos;
71 constexpr u32 REST_FRAMES = 180;
73 if (m_currentFrame >= REST_FRAMES) {
88 f32 m_scaleChangeRate;
90 ExplosionIntensity m_intensity;
92 static constexpr f32 BALL_RADIUS = 50.0f;
93 static constexpr f32 BLAST_RADIUS = 1500.0f;
95 static constexpr std::array<StateManagerEntry, 4> STATE_ENTRIES = {{
97 &ObjectHeyhoBall::calcIntangible>(0)},
99 &ObjectHeyhoBall::calcFalling>(1)},
101 &ObjectHeyhoBall::calcBlinking>(2)},