2016-04-17 02:50:45 +00:00
|
|
|
#ifndef __URDE_CSCRIPTWATER_HPP__
|
|
|
|
#define __URDE_CSCRIPTWATER_HPP__
|
|
|
|
|
2016-04-20 05:44:08 +00:00
|
|
|
#include "CScriptTrigger.hpp"
|
2016-11-20 21:53:15 +00:00
|
|
|
#include "CFluidPlaneCPU.hpp"
|
2016-04-17 02:50:45 +00:00
|
|
|
namespace urde
|
|
|
|
{
|
|
|
|
|
2016-04-20 05:44:08 +00:00
|
|
|
class CDamageInfo;
|
|
|
|
class CFluidUVMotion;
|
|
|
|
|
|
|
|
class CScriptWater : public CScriptTrigger
|
2016-04-17 02:50:45 +00:00
|
|
|
{
|
2016-11-20 21:53:15 +00:00
|
|
|
private:
|
|
|
|
static const float kSplashScales[6];
|
|
|
|
u32 x150_ = 0;
|
2017-03-30 22:36:18 +00:00
|
|
|
std::unique_ptr<CFluidPlaneCPU> x1b4_fluidPlane;
|
2016-11-20 21:53:15 +00:00
|
|
|
zeus::CVector3f x1b8_;
|
|
|
|
float x1f4_;
|
|
|
|
float x1f8_ = 0.f;
|
|
|
|
zeus::CVector3f x1d4_;
|
2017-06-12 04:23:34 +00:00
|
|
|
std::list<std::pair<TUniqueId, bool>> x1fc_waterInhabitants;
|
2016-11-20 21:53:15 +00:00
|
|
|
u32 x210_;
|
|
|
|
float x214_;
|
|
|
|
float x218_;
|
|
|
|
float x21c_;
|
|
|
|
float x220_;
|
|
|
|
float x224_;
|
|
|
|
zeus::CColor x228_;
|
|
|
|
u32 x22c_;
|
|
|
|
u32 x230_;
|
|
|
|
u32 x234_;
|
|
|
|
u32 x238_;
|
|
|
|
u32 x248_;
|
|
|
|
u32 x24c_;
|
|
|
|
bool x25c_;
|
|
|
|
s16 x260_;
|
|
|
|
s16 x262_;
|
|
|
|
u32 x264_ = 0;
|
|
|
|
TLockedToken<CParticleGen> x268_splashEffects[5];
|
|
|
|
s16 x29c_splashSounds[5];
|
2016-04-20 05:44:08 +00:00
|
|
|
public:
|
2016-11-20 21:53:15 +00:00
|
|
|
CScriptWater(CStateManager&, TUniqueId, const std::string& name, const CEntityInfo&, const zeus::CVector3f&,
|
|
|
|
const zeus::CAABox&, CDamageInfo const&, zeus::CVector3f&, ETriggerFlags, bool, bool, ResId, ResId, ResId, ResId,
|
|
|
|
ResId, ResId, ResId, const zeus::CVector3f&, float, float, float, bool, CFluidPlane::EFluidType, bool,
|
|
|
|
float, const CFluidUVMotion&, float, float, float, float, float, float, float, float,
|
|
|
|
const zeus::CColor&, const zeus::CColor&, ResId, ResId, ResId, ResId, ResId, s32, s32, s32, s32, s32,
|
|
|
|
float, u32, float, float, float, float, float, float, float, float, const zeus::CColor&, ResId, float,
|
|
|
|
float, float, u32, u32, bool, s32, s32, const u32*);
|
2016-04-17 02:50:45 +00:00
|
|
|
|
2016-11-20 21:53:15 +00:00
|
|
|
void Think(float, CStateManager&);
|
|
|
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
2017-02-11 00:52:52 +00:00
|
|
|
void PreRender(CStateManager &, const zeus::CFrustum &);
|
2016-11-20 21:53:15 +00:00
|
|
|
void AddToRenderer(const zeus::CFrustum&, const CStateManager&) const;
|
|
|
|
void Render(const CStateManager&) const;
|
|
|
|
void Touch(CActor &, CStateManager &);
|
|
|
|
void CalculateRenderBounds();
|
|
|
|
zeus::CAABox GetSortingBounds(const CStateManager&) const;
|
|
|
|
void RenderSurface();
|
|
|
|
EWeaponCollisionResponseTypes GetCollisionResponseType(const zeus::CVector3f&, const zeus::CVector3f&, CWeaponMode&,
|
|
|
|
int);
|
|
|
|
|
|
|
|
void UpdateSplashInhabitants(CStateManager&);
|
|
|
|
s16 GetSplashSound(float) const;
|
|
|
|
const TLockedToken<CParticleGen>& GetSplashEffect(float) const;
|
|
|
|
float GetSplashEffectScale(float) const;
|
|
|
|
u32 GetSplashIndex(float) const;
|
|
|
|
void FluidPlane();
|
|
|
|
zeus::CPlane GetWRSurfacePlane() const;
|
|
|
|
float GetSurfaceZ() const;
|
|
|
|
bool IsMorphing() const;
|
|
|
|
void SetMorphing(bool);
|
|
|
|
zeus::CColor GetSplashColor() const;
|
|
|
|
void SetFrustumPlanes(const zeus::CFrustum& frustum);
|
|
|
|
const zeus::CFrustum& GetFrustumPlanes() const;
|
2017-03-30 22:36:18 +00:00
|
|
|
CFluidPlaneCPU& GetFluidPlane() const { return *x1b4_fluidPlane; }
|
2016-11-20 21:53:15 +00:00
|
|
|
};
|
2016-04-17 02:50:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __URDE_CSCRIPTWATER_HPP__
|