Various fmadds related fixes (may be more)

This commit is contained in:
Phillip Stephens 2017-08-04 06:48:48 -07:00
parent 2f2ff96965
commit 69187353b9
5 changed files with 39 additions and 37 deletions

View File

@ -43,11 +43,9 @@ public:
inline s32 Range(s32 min, s32 max)
{
s32 diff = max - min;
s32 rand = -1;
while (rand < 0)
rand = s32((Next() << 16) | Next());
return rand % diff + min;
s32 rnd = Next();
s32 diff = (max - min) + 1;
return min + (rnd - ((rnd / diff) * diff));
}
static CRandom16* GetRandomNumber() {return g_randomNumber;}

View File

@ -275,7 +275,6 @@ bool CMain::LoadAudio()
void CMain::EnsureWorldPaksReady()
{
}
void CMain::EnsureWorldPakReady(ResId mlvl)

View File

@ -20,38 +20,42 @@ CFluidUVMotion::CFluidUVMotion(float, float)
void CFluidUVMotion::CalculateFluidTextureOffset(float f31, float offsets[3][2])
{
float f29 = f31 * x4c_;
float f28 = f29 * zeus::fastCosF(x50_);
f29 = f29 / zeus::fastSinF(x50_);
float f28 = (f31 * x4c_) * zeus::fastCosF(x50_);
float f29 = (f31 * x4c_) / zeus::fastSinF(x50_);
for (u32 i = 0 ; i<x0_fluidLayers.size() ; ++i)
{
const SFluidLayerMotion& layer = x0_fluidLayers[i];
float f30 = f31 / layer.x4_a;
float f25;
float f26;
float f30 = f31 * layer.x4_a;
float f1 = f30 - std::floor(f30);
float f27;
float f26;
switch(layer.x0_motion)
{
case EFluidUVMotion::Zero:
f26 = 0.f;
f27 = 0.f;
break;
case EFluidUVMotion::One:
f30 = (M_PIF * 2.f) * (f30 - zeus::floorF(f30));
f27 = (M_PIF * 2.f) * zeus::fastSinF(f30);
f26 = layer.xc_c * zeus::fastSinF(f30);
break;
{
f30 = (M_PIF * 2) * f1;
f27 = layer.xc_c * zeus::fastSinF(f30);
f26 = layer.xc_c * zeus::fastCosF(f30);
}
break;
case EFluidUVMotion::Two:
{
f27 = 0.f;
f26 = zeus::fastCosF((M_PIF * 2.f) * layer.xc_c);
f26 = layer.xc_c * zeus::fastCosF((M_PIF * 2) * f1);
}
break;
default:
f27 = f26 = 0.f;
break;
}
f25 = (f26 * ((f27 * f29) + zeus::fastCosF(layer.x8_b))) + zeus::fastSinF(layer.x8_b);
f26 = (f27 * ((f26 * f28) + zeus::fastCosF(layer.x8_b))) + zeus::fastSinF(layer.x8_b);
offsets[i][0] = f25 - zeus::floorF(f25);
offsets[i][1] = f26 - zeus::floorF(f26);
float x = f26 * zeus::fastSinF(layer.x8_b) + (f27 * zeus::fastCosF(layer.x8_b) + f29);
float y = f27 * zeus::fastSinF(layer.x8_b) + (f26 * zeus::fastCosF(layer.x8_b) + f28);
offsets[i][0] = float(x - floor(x));
offsets[i][1] = float(y - floor(y));
}
}
}

View File

@ -141,7 +141,7 @@ void CPlayerCameraBob::UpdateViewWander(float dt, CStateManager& mgr)
void CPlayerCameraBob::Update(float dt, CStateManager& mgr)
{
x1c_bobTime = (dt * x1c_bobTime) + x18_bobTimeScale;
x1c_bobTime = (dt * x18_bobTimeScale) + x1c_bobTime;
float landSpring = kLandingBobSpringConstant;
float landDampen = kLandingBobDamping;
if (x28_applyLandingTrans)
@ -150,10 +150,11 @@ void CPlayerCameraBob::Update(float dt, CStateManager& mgr)
landSpring = 40.f;
}
x6c_ = dt * x6c_ + -(landSpring * -(landDampen * x6c_) - x28_applyLandingTrans);
x70_landingTranslation = x6c_ * x70_landingTranslation + dt;
x74_ = dt * x74_ + -(80.f * -((6.f * zeus::sqrtF(80.f)) * x74_) - x78_);
x78_ = x74_ * x78_ + dt;
x6c_ = (dt * -((landSpring * x70_landingTranslation) + -(landDampen * x6c_))) + x6c_;
x70_landingTranslation = x6c_ * dt + x70_landingTranslation;
x74_ = dt * (-(80.f * x78_) + -((6.f * zeus::sqrtF(80.f)) * x74_)) + x74_;
x78_ = x74_ * dt + x78_;
if (std::fabs(x6c_) < 0.0049f && std::fabs(x70_landingTranslation) < 0.0049f && std::fabs(x78_) < 0.0049f)
{
x28_applyLandingTrans = false;
@ -177,10 +178,10 @@ void CPlayerCameraBob::Update(float dt, CStateManager& mgr)
x104_ *= 0.4f;
}
x100_ = kTargetMagnitudeTrackingRate * x100_ + (x104_ - x100_);
x100_ = kTargetMagnitudeTrackingRate * (x104_ - x100_) + x100_;
x100_ = std::max(x100_, 0.f);
float tmp = x14_;
x14_ = kTargetMagnitudeTrackingRate * tmp + (x10_bobMagnitude - tmp);
x14_ = kTargetMagnitudeTrackingRate * (x10_bobMagnitude - x14_) + x14_;
UpdateViewWander(dt, mgr);
x78_ = tmp;
@ -205,8 +206,8 @@ void CPlayerCameraBob::CalculateMovingTranslation(float& x, float& y) const
if (x0_type == ECameraBobType::Zero)
{
double c = ((M_PIF * 2.f) * std::fmod(x1c_bobTime, 2.0f * xc_) / xc_);
x = (x14_ * x4_vec.x) * std::sin(c);
y = (x14_ * x4_vec.y) * (std::fabs(std::cos(c * .5)) * std::cos(c * .5));
x = (x14_ * x4_vec.x) * float(std::sin(c));
y = (x14_ * x4_vec.y) * float(std::fabs(std::cos(c * .5)) * std::cos(c * .5));
}
else if (x0_type == ECameraBobType::One)
{
@ -216,8 +217,8 @@ void CPlayerCameraBob::CalculateMovingTranslation(float& x, float& y) const
else
x = ((fX / xc_)) * (x14_ * x4_vec.x);
float sY = std::sin(std::fmod((M_PI * fX) / xc_, M_PI));
y = (((1.f - sY) * (x14_ * x4_vec.y)) * (0.5f * (-((sY * 1.f) - sY) * (x14_ * x4_vec.y)))) + 0.5f;
float sY = float(std::sin(std::fmod((M_PI * fX) / xc_, M_PI)));
y = (1.f - sY) * (x14_ * x4_vec.y) * 0.5f + (0.5f * -((sY * sY) - 1.f) * (x14_ * x4_vec.y));
}
}

View File

@ -65,7 +65,7 @@ void CScriptTimer::StartTiming(bool isTiming) { x42_isTiming = isTiming; }
void CScriptTimer::Reset(CStateManager& mgr)
{
float rDt = mgr.GetActiveRandom()->Float();
x34_time = (x3c_maxRandDelay + x38_startTime) * rDt;
x34_time = (x3c_maxRandDelay * rDt) + x38_startTime;
}
void CScriptTimer::ApplyTime(float dt, CStateManager& mgr)