1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-10 21:40:15 +00:00

Add an API to get base wind speed (which is from openmw.cfg)

This commit is contained in:
Andrei Kortunov 2021-01-13 13:41:02 +04:00
parent f175beb304
commit 0418e8e7a6
3 changed files with 15 additions and 0 deletions

View File

@ -1134,6 +1134,7 @@ SkyManager::SkyManager(osg::Group* parentNode, Resource::SceneManager* sceneMana
, mRainEntranceSpeed(1) , mRainEntranceSpeed(1)
, mRainMaxRaindrops(0) , mRainMaxRaindrops(0)
, mWindSpeed(0.f) , mWindSpeed(0.f)
, mBaseWindSpeed(0.f)
, mEnabled(true) , mEnabled(true)
, mSunEnabled(true) , mSunEnabled(true)
, mWeatherAlpha(0.f) , mWeatherAlpha(0.f)
@ -1685,6 +1686,7 @@ void SkyManager::setWeather(const WeatherResult& weather)
mRainMaxHeight = weather.mRainMaxHeight; mRainMaxHeight = weather.mRainMaxHeight;
mRainSpeed = weather.mRainSpeed; mRainSpeed = weather.mRainSpeed;
mWindSpeed = weather.mWindSpeed; mWindSpeed = weather.mWindSpeed;
mBaseWindSpeed = weather.mBaseWindSpeed;
if (mRainEffect != weather.mRainEffect) if (mRainEffect != weather.mRainEffect)
{ {
@ -1853,6 +1855,13 @@ void SkyManager::setWeather(const WeatherResult& weather)
fader->setAlpha(weather.mEffectFade); fader->setAlpha(weather.mEffectFade);
} }
float SkyManager::getBaseWindSpeed() const
{
if (!mCreated) return 0.f;
return mBaseWindSpeed;
}
void SkyManager::sunEnable() void SkyManager::sunEnable()
{ {
if (!mCreated) return; if (!mCreated) return;

View File

@ -70,6 +70,7 @@ namespace MWRender
float mDLFogOffset; float mDLFogOffset;
float mWindSpeed; float mWindSpeed;
float mBaseWindSpeed;
float mCurrentWindSpeed; float mCurrentWindSpeed;
float mNextWindSpeed; float mNextWindSpeed;
@ -181,6 +182,8 @@ namespace MWRender
void setRainIntensityUniform(osg::Uniform *uniform); void setRainIntensityUniform(osg::Uniform *uniform);
float getBaseWindSpeed() const;
private: private:
void create(); void create();
///< no need to call this, automatically done on first enable() ///< no need to call this, automatically done on first enable()
@ -265,6 +268,7 @@ namespace MWRender
float mRainEntranceSpeed; float mRainEntranceSpeed;
int mRainMaxRaindrops; int mRainMaxRaindrops;
float mWindSpeed; float mWindSpeed;
float mBaseWindSpeed;
bool mEnabled; bool mEnabled;
bool mSunEnabled; bool mSunEnabled;

View File

@ -1123,6 +1123,7 @@ inline void WeatherManager::calculateResult(const int weatherID, const float gam
mResult.mCloudBlendFactor = 0; mResult.mCloudBlendFactor = 0;
mResult.mNextWindSpeed = 0; mResult.mNextWindSpeed = 0;
mResult.mWindSpeed = mResult.mCurrentWindSpeed = calculateWindSpeed(weatherID, mWindSpeed); mResult.mWindSpeed = mResult.mCurrentWindSpeed = calculateWindSpeed(weatherID, mWindSpeed);
mResult.mBaseWindSpeed = mWeatherSettings[weatherID].mWindSpeed;
mResult.mCloudSpeed = current.mCloudSpeed; mResult.mCloudSpeed = current.mCloudSpeed;
mResult.mGlareView = current.mGlareView; mResult.mGlareView = current.mGlareView;
@ -1214,6 +1215,7 @@ inline void WeatherManager::calculateTransitionResult(const float factor, const
mResult.mCurrentWindSpeed = calculateWindSpeed(mCurrentWeather, mCurrentWindSpeed); mResult.mCurrentWindSpeed = calculateWindSpeed(mCurrentWeather, mCurrentWindSpeed);
mResult.mNextWindSpeed = calculateWindSpeed(mNextWeather, mNextWindSpeed); mResult.mNextWindSpeed = calculateWindSpeed(mNextWeather, mNextWindSpeed);
mResult.mBaseWindSpeed = lerp(current.mBaseWindSpeed, other.mBaseWindSpeed, factor);
mResult.mWindSpeed = lerp(mResult.mCurrentWindSpeed, mResult.mNextWindSpeed, factor); mResult.mWindSpeed = lerp(mResult.mCurrentWindSpeed, mResult.mNextWindSpeed, factor);
mResult.mCloudSpeed = lerp(current.mCloudSpeed, other.mCloudSpeed, factor); mResult.mCloudSpeed = lerp(current.mCloudSpeed, other.mCloudSpeed, factor);