2016-07-22 19:46:30 +00:00
|
|
|
#ifndef __URDE_CMORPHBALL_HPP__
|
|
|
|
#define __URDE_CMORPHBALL_HPP__
|
|
|
|
|
2016-07-22 22:22:36 +00:00
|
|
|
#include "World/CActor.hpp"
|
|
|
|
#include "World/ScriptObjectSupport.hpp"
|
|
|
|
#include "zeus/CVector3f.hpp"
|
|
|
|
#include "Collision/CCollidableSphere.hpp"
|
|
|
|
#include "RetroTypes.hpp"
|
|
|
|
|
2016-07-22 19:46:30 +00:00
|
|
|
namespace urde
|
|
|
|
{
|
2016-07-22 22:22:36 +00:00
|
|
|
class CActorLights;
|
2016-07-22 19:46:30 +00:00
|
|
|
class CPlayer;
|
2016-07-22 22:22:36 +00:00
|
|
|
class CDamageInfo;
|
|
|
|
class CFinalInput;
|
|
|
|
class CScriptWater;
|
|
|
|
class CStateManager;
|
2017-03-06 06:33:51 +00:00
|
|
|
class CMorphBallShadow;
|
2016-07-22 19:46:30 +00:00
|
|
|
|
|
|
|
class CMorphBall
|
|
|
|
{
|
2016-07-22 22:22:36 +00:00
|
|
|
public:
|
|
|
|
enum class EBallBoostState
|
|
|
|
{
|
|
|
|
Zero
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class ESpiderBallState
|
|
|
|
{
|
|
|
|
Zero
|
|
|
|
};
|
|
|
|
private:
|
2016-07-22 19:46:30 +00:00
|
|
|
CPlayer& x0_player;
|
2017-06-12 04:23:34 +00:00
|
|
|
u32 x187c_ = 0;
|
2017-07-05 18:34:12 +00:00
|
|
|
float x191c_damageTimer = 0.f;
|
2017-02-18 02:19:50 +00:00
|
|
|
float x1DE8_boostTime = 0.f;
|
2017-03-06 06:33:51 +00:00
|
|
|
CMorphBallShadow* x1e50_shadow = nullptr;
|
2016-07-22 22:22:36 +00:00
|
|
|
|
2016-07-22 19:46:30 +00:00
|
|
|
public:
|
|
|
|
CMorphBall(CPlayer& player, float);
|
2017-06-12 04:23:34 +00:00
|
|
|
void AcceptScriptMessage(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr);
|
2016-07-22 22:22:36 +00:00
|
|
|
ESpiderBallState GetSpiderBallState() const { return ESpiderBallState::Zero; }
|
|
|
|
bool InSpiderBallMode() const { return false; }
|
|
|
|
zeus::CVector3f GetBallContactSurfaceNormal() const { return {}; }
|
|
|
|
void GetModel() const {}
|
2017-03-01 03:42:06 +00:00
|
|
|
CCollidableSphere* GetCollidableSphere() const { return nullptr; }
|
2016-07-22 22:22:36 +00:00
|
|
|
bool IsProjectile() const { return false; }
|
|
|
|
void GetBallContactMeterials() const {}
|
|
|
|
void GetWallBumpCounter() const {}
|
|
|
|
void GetBoostChargeTimer() const {}
|
|
|
|
bool IsBoosting() const { return false; }
|
|
|
|
float GetBallRadius() const { return 0.f; }
|
|
|
|
float GetBallTouchRadius() const { return 0.f; }
|
|
|
|
void ForwardInput(const CFinalInput&) const {}
|
2017-06-12 04:23:34 +00:00
|
|
|
void ComputeBallMovement(const CFinalInput&, CStateManager&, float) {}
|
2016-07-22 22:22:36 +00:00
|
|
|
bool IsMovementAllowed() const { return false; }
|
|
|
|
void UpdateSpiderBall(const CFinalInput&, CStateManager&, float) {}
|
|
|
|
void ApplySpiderBallSwingingForces(const CFinalInput&, CStateManager&, float) {}
|
|
|
|
void ApplySpiderBallRollForces(const CFinalInput&, CStateManager&, float) {}
|
|
|
|
void CalculateSpiderBallAttractionSurfaceForces(const CFinalInput&, CStateManager&,
|
|
|
|
const zeus::CTransform&) {}
|
|
|
|
void CheckForSwitchToSpiderBallSwinging(CStateManager&) {}
|
|
|
|
void FindClosestSpiderBallWaypoint(CStateManager&, const zeus::CVector3f&, zeus::CVector3f&,
|
|
|
|
zeus::CVector3f&, zeus::CVector3f&, float&, zeus::CVector3f&, bool&,
|
|
|
|
zeus::CTransform&) const {}
|
|
|
|
void SetSpiderBallSwingingState(bool) {}
|
|
|
|
void GetSpiderBallControllerMovement(const CFinalInput&, bool, bool) {}
|
|
|
|
void ResetSpiderBallSwingControllerMovementTimer() {}
|
|
|
|
void UpdateSpiderBallSwingControllerMovementTimer(float, float) {}
|
|
|
|
float GetSpiderBallSwingControllerMovementScalar() const { return 0.f; }
|
|
|
|
void CreateSpiderBallParticles(const zeus::CVector3f&, const zeus::CVector3f&) {}
|
|
|
|
void ComputeMarioMovement(const CFinalInput&, CStateManager&, float) {}
|
|
|
|
void SetSpiderBallState(ESpiderBallState) {}
|
|
|
|
void GetSwooshToWorld() const {}
|
|
|
|
void GetBallToWorld() const {}
|
|
|
|
void CalculateSurfaceToWorld(const zeus::CVector3f&, const zeus::CVector3f&, const zeus::CVector3f&) const {}
|
|
|
|
void CalculateBallContactInfo(zeus::CVector3f&, zeus::CVector3f&) const {}
|
|
|
|
void BallTurnInput(const CFinalInput&) const {}
|
|
|
|
void UpdateBallDynamics(CStateManager&, float) {}
|
|
|
|
void SwitchToMarble() {}
|
|
|
|
void SwitchToTire() {}
|
|
|
|
void Update(float, CStateManager&) {}
|
|
|
|
void UpdateScriptMessage(EScriptObjectMessage, TUniqueId, CStateManager&) {}
|
|
|
|
void DeleteLight(CStateManager&) {}
|
|
|
|
void SetBallLightActive(CStateManager&, bool) {}
|
|
|
|
void EnterMorphBallState(CStateManager&) {}
|
|
|
|
void LeaveMorphBallState(CStateManager&) {}
|
|
|
|
void UpdateEffects(float, CStateManager&) {}
|
|
|
|
void ComputeBoostBallMovement(const CFinalInput&, const CStateManager&, float) {}
|
|
|
|
void EnterBoosting() {}
|
|
|
|
void LeaveBoosting() {}
|
|
|
|
void CancelBoosting() {}
|
|
|
|
void UpdateMarbleDynamics(CStateManager&, float, const zeus::CVector3f&) {}
|
|
|
|
void ApplyFriction(float) {}
|
|
|
|
void DampLinearAndAngularVelocities(float, float) {}
|
|
|
|
zeus::CTransform GetPrimitiveTransform() const { return {}; }
|
|
|
|
void DrawCollisionPrimitive() const {}
|
|
|
|
void GetMinimumAlignmentSpeed() const {}
|
2016-09-04 02:27:35 +00:00
|
|
|
void PreRender(CStateManager&, const zeus::CFrustum&);
|
2016-07-22 22:22:36 +00:00
|
|
|
void Render(const CStateManager&, const CActorLights*) const {}
|
|
|
|
void ResetMorphBallTransitionFlash() {}
|
|
|
|
void UpdateMorphBallTransitionFlash(float) {}
|
|
|
|
void RenderMorphBallTransitionFlash(const CStateManager&) const {}
|
|
|
|
void IsMorphBallTransitionFlashValid() const {}
|
|
|
|
void RenderDamageEffects(const CStateManager&, const zeus::CTransform&) const {}
|
|
|
|
void UpdateHalfPipeStatus(CStateManager&, float) {}
|
2017-06-12 04:23:34 +00:00
|
|
|
bool GetIsInHalfPipeMode() const { return false; }
|
2016-07-22 22:22:36 +00:00
|
|
|
void SetIsInHalfPipeMode(bool) {}
|
|
|
|
void GetIsInHalfPipeModeInAir() const {}
|
|
|
|
void SetIsInHalfPipeModeInAir(bool) {}
|
|
|
|
void GetTouchedHalfPipeRecently() const {}
|
|
|
|
void SetTouchedHalfPipeRecently(bool) {}
|
|
|
|
void DisableHalfPipeStatus() {}
|
|
|
|
void BallCloseToCollision(const CStateManager&, float) const {}
|
|
|
|
void CollidedWith(const TUniqueId&, const CCollisionInfoList&, CStateManager&) {}
|
2016-09-04 02:27:35 +00:00
|
|
|
void IsInFrustum(const zeus::CFrustum&) const {}
|
2016-07-22 22:22:36 +00:00
|
|
|
void ComputeLiftForces(const zeus::CVector3f&, const zeus::CVector3f&, const CStateManager&) {}
|
|
|
|
void CalculateSurfaceFriction() const {}
|
|
|
|
void ApplyGravity(CStateManager&) {}
|
|
|
|
void SpinToSpeed(float, zeus::CVector3f, float) {}
|
|
|
|
void ComputeMaxSpeed() const {}
|
|
|
|
void Touch(CActor&, CStateManager&) {}
|
|
|
|
bool IsClimable(const CCollisionInfo&) const { return false; }
|
|
|
|
void FluidFXThink(CActor::EFluidState, CScriptWater&, CStateManager&) {}
|
|
|
|
void GetMorphBallModel(const std::string&, float) {}
|
|
|
|
void AddSpiderBallElectricalEffect() {}
|
|
|
|
void UpdateSpiderBallElectricalEffect() {}
|
|
|
|
void RenderSpiderBallElectricalEffect() const {}
|
|
|
|
void RenderEnergyDrainEffects(const CStateManager&) const {}
|
|
|
|
void TouchModel(const CStateManager&) const {}
|
|
|
|
void SetAsProjectile(const CDamageInfo&, const CDamageInfo&) {}
|
|
|
|
EBallBoostState GetBallBoostState() const { return EBallBoostState::Zero; }
|
|
|
|
void SetBallBoostState(EBallBoostState) {}
|
|
|
|
void GetBombJumpState() const {}
|
|
|
|
void LoadAnimationTokens(const std::string&) {}
|
|
|
|
void TakeDamage(float) {}
|
2017-03-06 06:33:51 +00:00
|
|
|
void DrawBallShadow(const CStateManager& mgr);
|
2017-06-12 04:23:34 +00:00
|
|
|
void StartLandingSfx() {}
|
|
|
|
bool GetX187c() const { return x187c_; }
|
2017-07-05 18:34:12 +00:00
|
|
|
void SetDamageTimer(float t) { x191c_damageTimer = t; }
|
2016-07-22 19:46:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __URDE_CMORPHBALL_HPP__
|