2016-04-20 05:44:08 +00:00
|
|
|
#ifndef __URDE_CFLUIDUVMOTION_HPP__
|
|
|
|
#define __URDE_CFLUIDUVMOTION_HPP__
|
|
|
|
|
|
|
|
#include "rstl.hpp"
|
2017-07-30 11:00:30 +00:00
|
|
|
#include "RetroTypes.hpp"
|
2016-04-20 05:44:08 +00:00
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
|
|
|
class CFluidUVMotion
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class EFluidUVMotion
|
|
|
|
{
|
2017-07-30 11:00:30 +00:00
|
|
|
Zero,
|
|
|
|
One,
|
|
|
|
Two,
|
2016-04-20 05:44:08 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SFluidLayerMotion
|
|
|
|
{
|
|
|
|
EFluidUVMotion x0_motion = EFluidUVMotion::Zero;
|
2017-07-30 11:00:30 +00:00
|
|
|
float x4_a = 0.16666667f;
|
2016-04-20 05:44:08 +00:00
|
|
|
float x8_b = 0.f;
|
2017-07-30 11:00:30 +00:00
|
|
|
float xc_c = 1.f;
|
|
|
|
float x10_d = 5.f;
|
2017-08-06 07:15:42 +00:00
|
|
|
float x14_envNormalScale = 0.2f;
|
2016-04-20 05:44:08 +00:00
|
|
|
|
|
|
|
SFluidLayerMotion() = default;
|
|
|
|
SFluidLayerMotion(EFluidUVMotion motion, float a, float b, float c, float d)
|
2017-08-06 07:15:42 +00:00
|
|
|
: x0_motion(motion), x4_a(1.f / a), x8_b(b), xc_c(c), x10_d(d), x14_envNormalScale(1.f / d)
|
2016-04-20 05:44:08 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
rstl::reserved_vector<SFluidLayerMotion, 3> x0_fluidLayers;
|
|
|
|
float x4c_;
|
|
|
|
float x50_;
|
|
|
|
public:
|
|
|
|
CFluidUVMotion(float a, float b, const SFluidLayerMotion& c, const SFluidLayerMotion& d, const SFluidLayerMotion& e);
|
2017-07-30 11:00:30 +00:00
|
|
|
CFluidUVMotion(float, float);
|
2016-04-29 10:08:46 +00:00
|
|
|
|
2017-07-30 11:00:30 +00:00
|
|
|
const rstl::reserved_vector<SFluidLayerMotion, 3>& GetFluidLayers() const { return x0_fluidLayers; }
|
2016-04-29 10:08:46 +00:00
|
|
|
void GetOrientation() const;
|
|
|
|
void GetOOTimeToWrapTexPage() const;
|
2017-07-30 11:00:30 +00:00
|
|
|
void CalculateFluidTextureOffset(float, float[3][2]);
|
2016-04-20 05:44:08 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif // __URDE_CFLUIDUVMOTION_HPP__
|