#include "PositionalLight.hpp"
#include "Debug.hpp"
#include "ShadowVolumeCaster.hpp"
#include "Transform.hpp"
namespace wren {
PositionalLight::PositionalLight() :
mIsPositionDirty(true),
mPositionAbsolute(gVec3Zeros),
mPositionRelative(gVec3Zeros),
mRadius(100.0f),
mAttenuationConstant(1.0f),
mAttenuationLinear(0.0f),
mAttenuationQuadratic(0.0f) {
}
void PositionalLight::setPosition(const glm::vec3 &position) {
mPositionRelative = position;
mIsPositionDirty = true;
mIsAabbDirty = mIsBoundingSphereDirty = true;
for (auto entry : mShadowListeners)
entry.second->notifyLightDirty(this);
}
void PositionalLight::setRadius(float radius) {
mRadius = radius;
for (auto entry : mShadowListeners)
entry.second->notifyLightDirty(this, true);
}
void PositionalLight::setAttenuation(float attenuationConstant, float attenuationLinear, float attenuationQuadratic) {
mAttenuationConstant = attenuationConstant;
mAttenuationLinear = attenuationLinear;
mAttenuationQuadratic = attenuationQuadratic;
}
}