mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-03 17:54:06 +00:00
Merge pull request #1988 from Capostrophic/light
Adjust magic light source linear attenuation (bug #3890)
This commit is contained in:
commit
5b26c231b8
@ -33,6 +33,7 @@
|
||||
Bug #3788: GetPCInJail and GetPCTraveling do not work as in vanilla
|
||||
Bug #3836: Script fails to compile when command argument contains "\n"
|
||||
Bug #3876: Landscape texture painting is misaligned
|
||||
Bug #3890: Magic light source attenuation is inaccurate
|
||||
Bug #3897: Have Goodbye give all choices the effects of Goodbye
|
||||
Bug #3911: [macOS] Typing in the "Content List name" dialog box produces double characters
|
||||
Bug #3920: RemoveSpellEffects doesn't remove constant effects
|
||||
|
@ -15,13 +15,13 @@
|
||||
|
||||
#include <components/debug/debuglog.hpp>
|
||||
|
||||
#include <components/nifosg/nifloader.hpp>
|
||||
|
||||
#include <components/resource/resourcesystem.hpp>
|
||||
#include <components/resource/scenemanager.hpp>
|
||||
#include <components/resource/keyframemanager.hpp>
|
||||
#include <components/resource/imagemanager.hpp>
|
||||
|
||||
#include <components/misc/constants.hpp>
|
||||
|
||||
#include <components/nifosg/nifloader.hpp> // KeyframeHolder
|
||||
#include <components/nifosg/controller.hpp>
|
||||
|
||||
@ -1789,9 +1789,12 @@ namespace MWRender
|
||||
}
|
||||
else
|
||||
{
|
||||
effect += 3;
|
||||
float radius = effect * 66.f;
|
||||
float linearAttenuation = 0.5f / effect;
|
||||
// TODO: use global attenuation settings
|
||||
|
||||
// 1 pt of Light magnitude corresponds to 1 foot of radius
|
||||
float radius = effect * std::ceil(Constants::UnitsPerFoot);
|
||||
const float linearValue = 3.f; // Currently hardcoded: unmodified Morrowind attenuation settings
|
||||
float linearAttenuation = linearValue / radius;
|
||||
|
||||
if (!mGlowLight || linearAttenuation != mGlowLight->getLight(0)->getLinearAttenuation())
|
||||
{
|
||||
@ -1813,7 +1816,8 @@ namespace MWRender
|
||||
mGlowLight->setLight(light);
|
||||
}
|
||||
|
||||
mGlowLight->setRadius(radius);
|
||||
// Make the obvious cut-off a bit less obvious
|
||||
mGlowLight->setRadius(radius * 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user