ClangFormat fixes

This commit is contained in:
Aussiemon 2025-04-03 19:46:56 -06:00
parent 328e98229b
commit 303804438a
3 changed files with 463 additions and 472 deletions

View file

@ -423,9 +423,9 @@ namespace MWWorld
float moonRiseHourYesterday = moonRiseHourToday - mDailyIncrement; float moonRiseHourYesterday = moonRiseHourToday - mDailyIncrement;
if (moonRiseHourYesterday < 24.0f) if (moonRiseHourYesterday < 24.0f)
{ {
// Morrowind offsets the increment by -1 when the previous day's visible point crosses into the next day. // Morrowind offsets the increment by -1 when the previous day's visible point crosses into the next
// The offset lasts from this point until the next 24-day loop starts. // day. The offset lasts from this point until the next 24-day loop starts. To find this point we add
// To find this point we add mDailyIncrement to the previous visible point and check the result. // mDailyIncrement to the previous visible point and check the result.
float moonShadowEarlyFadeAngle1 = mFadeEndAngle - mMoonShadowEarlyFadeAngle; float moonShadowEarlyFadeAngle1 = mFadeEndAngle - mMoonShadowEarlyFadeAngle;
float timeToVisible = moonShadowEarlyFadeAngle1 / rotation(1.0f); float timeToVisible = moonShadowEarlyFadeAngle1 / rotation(1.0f);
float cycleOffset = (((moonRiseHourToday >= 24.0f) || (moonRiseHourYesterday + timeToVisible > 24.0f)) float cycleOffset = (((moonRiseHourToday >= 24.0f) || (moonRiseHourYesterday + timeToVisible > 24.0f))
@ -491,8 +491,7 @@ namespace MWWorld
// Note that we don't modulo after adding the latest daily increment because other calculations need to // Note that we don't modulo after adding the latest daily increment because other calculations need to
// know if doing so would cause the moon rise to be postponed until the next day (which happens when // know if doing so would cause the moon rise to be postponed until the next day (which happens when
// the moon rise hour is >= 24 in Morrowind). // the moon rise hour is >= 24 in Morrowind).
return mDailyIncrement return mDailyIncrement + std::fmod((gameDay - 1 + startDay - incrementOffset) * mDailyIncrement, 24.0f);
+ std::fmod((gameDay - 1 + startDay - incrementOffset) * mDailyIncrement, 24.0f);
} }
else else
{ {

View file

@ -251,9 +251,8 @@ namespace MWWorld
{ {
public: public:
MoonModel(const std::string& name); MoonModel(const std::string& name);
MoonModel(const std::string& name, float fadeInStart, MoonModel(const std::string& name, float fadeInStart, float fadeInFinish, float fadeOutStart,
float fadeInFinish, float fadeOutStart, float fadeOutFinish, float fadeOutFinish, float axisOffset, float speed, float dailyIncrement, float fadeStartAngle,
float axisOffset, float speed, float dailyIncrement, float fadeStartAngle,
float fadeEndAngle, float moonShadowEarlyFadeAngle); float fadeEndAngle, float moonShadowEarlyFadeAngle);
MWRender::MoonState calculateState(const TimeStamp& gameTime) const; MWRender::MoonState calculateState(const TimeStamp& gameTime) const;

View file

@ -65,9 +65,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 28 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 28 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 29 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 29 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -100,9 +99,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 31 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 31 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 32 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 32 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -135,9 +133,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 34 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 34 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 35 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 35 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -170,9 +167,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 37 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 37 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 38 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 38 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -205,9 +201,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 41 + 2.0f + 56.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 41 + 2.0f + 56.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 41 + 2.0f + 58.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 41 + 2.0f + 58.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -240,9 +235,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 44 + 5.0f + 56.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 44 + 5.0f + 56.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 44 + 5.0f + 58.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 44 + 5.0f + 58.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -275,9 +269,8 @@ namespace MWWorld
timeStampBeforePostLoop += (24.0f * 47 + 8.0f + 56.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 47 + 8.0f + 56.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 47 + 8.0f + 58.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 47 + 8.0f + 58.0f / 60.0f);
MWWorld::MoonModel moon MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
= MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, axisOffset, axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
@ -289,451 +282,451 @@ namespace MWWorld
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0));
} }
}
// SECUNDA PHASES // SECUNDA PHASES
TEST(MWWorldWeatherTest, secundaPhasesFullToWaningGibbousAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesFullToWaningGibbousAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 2 and 26, 14:19 // Days 2 and 26, 14:19
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 2 + 14.0f + 18.0f / 60.0f); timeStampBefore += (24.0f * 2 + 14.0f + 18.0f / 60.0f);
timeStampAfter += (24.0f * 2 + 14.0f + 20.0f / 60.0f); timeStampAfter += (24.0f * 2 + 14.0f + 20.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 26 + 14.0f + 18.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 26 + 14.0f + 18.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 26 + 14.0f + 20.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 26 + 14.0f + 20.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(0)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(0));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(1)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(1));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(1)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(1));
} }
TEST(MWWorldWeatherTest, secundaPhasesWaningGibbousToThirdQuarterAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesWaningGibbousToThirdQuarterAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 5 and 29, 0:00 // Days 5 and 29, 0:00
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 4 + 23.0f + 59.0f / 60.0f); timeStampBefore += (24.0f * 4 + 23.0f + 59.0f / 60.0f);
timeStampAfter += (24.0f * 5 + 0.0f + 1.0f / 60.0f); timeStampAfter += (24.0f * 5 + 0.0f + 1.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 28 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 28 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 29 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 29 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(1)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(1));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(2)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(2));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(1)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(1));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(2)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(2));
} }
TEST(MWWorldWeatherTest, secundaPhasesThirdQuarterToWaningCrescentAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesThirdQuarterToWaningCrescentAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 8 and 32, 0:00 // Days 8 and 32, 0:00
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 7 + 23.0f + 59.0f / 60.0f); timeStampBefore += (24.0f * 7 + 23.0f + 59.0f / 60.0f);
timeStampAfter += (24.0f * 8 + 0.0f + 1.0f / 60.0f); timeStampAfter += (24.0f * 8 + 0.0f + 1.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 31 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 31 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 32 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 32 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(2)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(2));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(3)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(3));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(2)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(2));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(3)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(3));
} }
TEST(MWWorldWeatherTest, secundaPhasesWaningCrescentToNewAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesWaningCrescentToNewAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 11 and 35, 0:00 // Days 11 and 35, 0:00
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 10 + 23.0f + 59.0f / 60.0f); timeStampBefore += (24.0f * 10 + 23.0f + 59.0f / 60.0f);
timeStampAfter += (24.0f * 11 + 0.0f + 1.0f / 60.0f); timeStampAfter += (24.0f * 11 + 0.0f + 1.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 34 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 34 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 35 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 35 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(3)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(3));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(4)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(4));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(3)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(3));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(4)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(4));
} }
TEST(MWWorldWeatherTest, secundaPhasesNewToWaxingCrescentAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesNewToWaxingCrescentAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 14 and 38, 0:00 // Days 14 and 38, 0:00
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 13 + 23.0f + 59.0f / 60.0f); timeStampBefore += (24.0f * 13 + 23.0f + 59.0f / 60.0f);
timeStampAfter += (24.0f * 14 + 0.0f + 1.0f / 60.0f); timeStampAfter += (24.0f * 14 + 0.0f + 1.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 37 + 23.0f + 59.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 37 + 23.0f + 59.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 38 + 0.0f + 1.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 38 + 0.0f + 1.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(4)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(4));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(5)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(5));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(4)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(4));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(5)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(5));
} }
TEST(MWWorldWeatherTest, secundaPhasesWaxingCrescentToFirstQuarterAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesWaxingCrescentToFirstQuarterAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 17 and 41, 3:31 // Days 17 and 41, 3:31
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 17 + 3.0f + 30.0f / 60.0f); timeStampBefore += (24.0f * 17 + 3.0f + 30.0f / 60.0f);
timeStampAfter += (24.0f * 17 + 3.0f + 32.0f / 60.0f); timeStampAfter += (24.0f * 17 + 3.0f + 32.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 41 + 3.0f + 30.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 41 + 3.0f + 30.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 41 + 3.0f + 32.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 41 + 3.0f + 32.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(5)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(5));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(6)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(6));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(5)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(5));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(6)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(6));
} }
TEST(MWWorldWeatherTest, secundaPhasesFirstQuarterToWaxingGibbousAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesFirstQuarterToWaxingGibbousAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 20 and 44, 7:07 // Days 20 and 44, 7:07
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 20 + 7.0f + 6.0f / 60.0f); timeStampBefore += (24.0f * 20 + 7.0f + 6.0f / 60.0f);
timeStampAfter += (24.0f * 20 + 7.0f + 8.0f / 60.0f); timeStampAfter += (24.0f * 20 + 7.0f + 8.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 44 + 7.0f + 6.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 44 + 7.0f + 6.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 44 + 7.0f + 8.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 44 + 7.0f + 8.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(6)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(6));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(7)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(7));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(6)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(6));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7));
} }
TEST(MWWorldWeatherTest, secundaPhasesWaxingGibbousToFullAtCorrectTimes) TEST(MWWorldWeatherTest, secundaPhasesWaxingGibbousToFullAtCorrectTimes)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 23 and 47, 10:43 // Days 23 and 47, 10:43
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 23 + 10.0f + 42.0f / 60.0f); timeStampBefore += (24.0f * 23 + 10.0f + 42.0f / 60.0f);
timeStampAfter += (24.0f * 23 + 10.0f + 44.0f / 60.0f); timeStampAfter += (24.0f * 23 + 10.0f + 44.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 47 + 10.0f + 42.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 47 + 10.0f + 42.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 47 + 10.0f + 44.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 47 + 10.0f + 44.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(7)); EXPECT_EQ(beforeState.mPhase, static_cast<MWRender::MoonState::Phase>(7));
EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(0)); EXPECT_EQ(afterState.mPhase, static_cast<MWRender::MoonState::Phase>(0));
EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7)); EXPECT_EQ(beforeStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(7));
EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0)); EXPECT_EQ(afterStatePostLoop.mPhase, static_cast<MWRender::MoonState::Phase>(0));
} }
// OFFSETS // OFFSETS
TEST(MWWorldWeatherTest, secundaShouldApplyIncrementOffsetAfterFirstLoop) TEST(MWWorldWeatherTest, secundaShouldApplyIncrementOffsetAfterFirstLoop)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 14.0f; float fadeInStart = 14.0f;
float fadeInFinish = 15.0f; float fadeInFinish = 15.0f;
float fadeOutStart = 7.0f; float fadeOutStart = 7.0f;
float fadeOutFinish = 10.0f; float fadeOutFinish = 10.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 8 and 32, 3:16 // Days 8 and 32, 3:16
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 8 + 3.0f + 15.0f / 60.0f); timeStampBefore += (24.0f * 8 + 3.0f + 15.0f / 60.0f);
timeStampAfter += (24.0f * 8 + 3.0f + 17.0f / 60.0f); timeStampAfter += (24.0f * 8 + 3.0f + 17.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 32 + 3.0f + 15.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 32 + 3.0f + 15.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 32 + 3.0f + 17.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 32 + 3.0f + 17.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_LE(beforeState.mMoonAlpha, 0.0f); EXPECT_LE(beforeState.mMoonAlpha, 0.0f);
EXPECT_GT(afterState.mMoonAlpha, 0.0f); EXPECT_GT(afterState.mMoonAlpha, 0.0f);
EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f); EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f);
EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f); EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f);
} }
TEST(MWWorldWeatherTest, moonWithLowIncrementShouldApplyIncrementOffsetAfterCycle) TEST(MWWorldWeatherTest, moonWithLowIncrementShouldApplyIncrementOffsetAfterCycle)
{ {
float dailyIncrement = 0.9f; float dailyIncrement = 0.9f;
float speed = 0.5f; float speed = 0.5f;
float fadeEndAngle = 40.0f; float fadeEndAngle = 40.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 0.0f; float fadeInStart = 0.0f;
float fadeInFinish = 0.0f; float fadeInFinish = 0.0f;
float fadeOutStart = 0.0f; float fadeOutStart = 0.0f;
float fadeOutFinish = 0.0f; float fadeOutFinish = 0.0f;
float axisOffset = 35.0f; float axisOffset = 35.0f;
// Days 7 and 31, 1:44 // Days 7 and 31, 1:44
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 7 + 1.0f + 43.0f / 60.0f); timeStampBefore += (24.0f * 7 + 1.0f + 43.0f / 60.0f);
timeStampAfter += (24.0f * 7 + 1.0f + 45.0f / 60.0f); timeStampAfter += (24.0f * 7 + 1.0f + 45.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 31 + 1.0f + 43.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 31 + 1.0f + 43.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 31 + 1.0f + 45.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 31 + 1.0f + 45.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_LE(beforeState.mMoonAlpha, 0.0f); EXPECT_LE(beforeState.mMoonAlpha, 0.0f);
EXPECT_GT(afterState.mMoonAlpha, 0.0f); EXPECT_GT(afterState.mMoonAlpha, 0.0f);
EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f); EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f);
EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f); EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f);
} }
TEST(MWWorldWeatherTest, masserShouldApplyIncrementOffsetAfterCycle) TEST(MWWorldWeatherTest, masserShouldApplyIncrementOffsetAfterCycle)
{ {
float dailyIncrement = 1.0f; float dailyIncrement = 1.0f;
float speed = 0.5f; float speed = 0.5f;
float fadeEndAngle = 40.0f; float fadeEndAngle = 40.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 0.0f; float fadeInStart = 0.0f;
float fadeInFinish = 0.0f; float fadeInFinish = 0.0f;
float fadeOutStart = 0.0f; float fadeOutStart = 0.0f;
float fadeOutFinish = 0.0f; float fadeOutFinish = 0.0f;
float axisOffset = 35.0f; float axisOffset = 35.0f;
// Days 4 and 28, 1:02 // Days 4 and 28, 1:02
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 4 + 1.0f + 1.0f / 60.0f); timeStampBefore += (24.0f * 4 + 1.0f + 1.0f / 60.0f);
timeStampAfter += (24.0f * 4 + 1.0f + 3.0f / 60.0f); timeStampAfter += (24.0f * 4 + 1.0f + 3.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 28 + 1.0f + 1.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 28 + 1.0f + 1.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 28 + 1.0f + 3.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 28 + 1.0f + 3.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_LE(beforeState.mMoonAlpha, 0.0f); EXPECT_LE(beforeState.mMoonAlpha, 0.0f);
EXPECT_GT(afterState.mMoonAlpha, 0.0f); EXPECT_GT(afterState.mMoonAlpha, 0.0f);
EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f); EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f);
EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f); EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f);
} }
TEST(MWWorldWeatherTest, secundaShouldApplyIncrementOffsetAfterCycle) TEST(MWWorldWeatherTest, secundaShouldApplyIncrementOffsetAfterCycle)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 0.6f; float speed = 0.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 0.0f; float fadeInStart = 0.0f;
float fadeInFinish = 0.0f; float fadeInFinish = 0.0f;
float fadeOutStart = 0.0f; float fadeOutStart = 0.0f;
float fadeOutFinish = 0.0f; float fadeOutFinish = 0.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 3 and 27, 2:04 // Days 3 and 27, 2:04
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 3 + 2.0f + 3.0f / 60.0f); timeStampBefore += (24.0f * 3 + 2.0f + 3.0f / 60.0f);
timeStampAfter += (24.0f * 3 + 2.0f + 5.0f / 60.0f); timeStampAfter += (24.0f * 3 + 2.0f + 5.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 27 + 2.0f + 3.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 27 + 2.0f + 3.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 27 + 2.0f + 5.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 27 + 2.0f + 5.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_LE(beforeState.mMoonAlpha, 0.0f); EXPECT_LE(beforeState.mMoonAlpha, 0.0f);
EXPECT_GT(afterState.mMoonAlpha, 0.0f); EXPECT_GT(afterState.mMoonAlpha, 0.0f);
EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f); EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f);
EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f); EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f);
} }
TEST(MWWorldWeatherTest, moonWithIncreasedSpeedShouldApplyIncrementOffsetAfterCycle) TEST(MWWorldWeatherTest, moonWithIncreasedSpeedShouldApplyIncrementOffsetAfterCycle)
{ {
float dailyIncrement = 1.2f; float dailyIncrement = 1.2f;
float speed = 1.6f; float speed = 1.6f;
float fadeEndAngle = 30.0f; float fadeEndAngle = 30.0f;
float fadeStartAngle = 50.0f; float fadeStartAngle = 50.0f;
float moonShadowEarlyFadeAngle = 0.5f; float moonShadowEarlyFadeAngle = 0.5f;
float fadeInStart = 0.0f; float fadeInStart = 0.0f;
float fadeInFinish = 0.0f; float fadeInFinish = 0.0f;
float fadeOutStart = 0.0f; float fadeOutStart = 0.0f;
float fadeOutFinish = 0.0f; float fadeOutFinish = 0.0f;
float axisOffset = 50.0f; float axisOffset = 50.0f;
// Days 4 and 28, 1:13 // Days 4 and 28, 1:13
TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop; TimeStamp timeStampBefore, timeStampAfter, timeStampBeforePostLoop, timeStampAfterPostLoop;
timeStampBefore += (24.0f * 4 + 1.0f + 12.0f / 60.0f); timeStampBefore += (24.0f * 4 + 1.0f + 12.0f / 60.0f);
timeStampAfter += (24.0f * 4 + 1.0f + 14.0f / 60.0f); timeStampAfter += (24.0f * 4 + 1.0f + 14.0f / 60.0f);
timeStampBeforePostLoop += (24.0f * 28 + 1.0f + 12.0f / 60.0f); timeStampBeforePostLoop += (24.0f * 28 + 1.0f + 12.0f / 60.0f);
timeStampAfterPostLoop += (24.0f * 28 + 1.0f + 14.0f / 60.0f); timeStampAfterPostLoop += (24.0f * 28 + 1.0f + 14.0f / 60.0f);
MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish, MWWorld::MoonModel moon = MWWorld::MoonModel("", fadeInStart, fadeInFinish, fadeOutStart, fadeOutFinish,
axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle); axisOffset, speed, dailyIncrement, fadeStartAngle, fadeEndAngle, moonShadowEarlyFadeAngle);
MWRender::MoonState beforeState = moon.calculateState(timeStampBefore); MWRender::MoonState beforeState = moon.calculateState(timeStampBefore);
MWRender::MoonState afterState = moon.calculateState(timeStampAfter); MWRender::MoonState afterState = moon.calculateState(timeStampAfter);
MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop); MWRender::MoonState beforeStatePostLoop = moon.calculateState(timeStampBeforePostLoop);
MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop); MWRender::MoonState afterStatePostLoop = moon.calculateState(timeStampAfterPostLoop);
EXPECT_LE(beforeState.mMoonAlpha, 0.0f); EXPECT_LE(beforeState.mMoonAlpha, 0.0f);
EXPECT_GT(afterState.mMoonAlpha, 0.0f); EXPECT_GT(afterState.mMoonAlpha, 0.0f);
EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f); EXPECT_LE(beforeStatePostLoop.mMoonAlpha, 0.0f);
EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f); EXPECT_GT(afterStatePostLoop.mMoonAlpha, 0.0f);
}
} }
} }