91 lines
2.3 KiB
C++
91 lines
2.3 KiB
C++
// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com)
|
|
// This file is part of the "Nazara Engine - Graphics module"
|
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
|
|
|
#include <Nazara/Graphics/Light.hpp>
|
|
#include <cassert>
|
|
#include <Nazara/Graphics/Debug.hpp>
|
|
|
|
namespace Nz
|
|
{
|
|
inline void Light::EnableShadowCasting(bool castShadows)
|
|
{
|
|
if (m_isShadowCaster != castShadows)
|
|
{
|
|
m_isShadowCaster = castShadows;
|
|
OnLightShadowCastingChanged(this, castShadows);
|
|
}
|
|
}
|
|
|
|
inline const BoundingVolumef& Light::GetBoundingVolume() const
|
|
{
|
|
return m_boundingVolume;
|
|
}
|
|
|
|
inline UInt8 Light::GetLightType() const
|
|
{
|
|
return m_lightType;
|
|
}
|
|
|
|
inline PixelFormat Light::GetShadowMapFormat() const
|
|
{
|
|
return m_shadowMapFormat;
|
|
}
|
|
|
|
inline UInt32 Light::GetShadowMapSize() const
|
|
{
|
|
return m_shadowMapSize;
|
|
}
|
|
|
|
inline bool Light::IsShadowCaster() const
|
|
{
|
|
return m_isShadowCaster;
|
|
}
|
|
|
|
inline void Light::UpdateShadowMapFormat(PixelFormat format)
|
|
{
|
|
if (m_shadowMapFormat != format)
|
|
{
|
|
[[maybe_unused]] PixelFormatContent content = PixelFormatInfo::GetContent(format);
|
|
NazaraAssert(content != PixelFormatContent::Depth && content != PixelFormatContent::DepthStencil, "invalid shadow map format (has no depth)");
|
|
|
|
OnLightShadowMapSettingChange(this, format, m_shadowMapSize);
|
|
m_shadowMapFormat = format;
|
|
}
|
|
}
|
|
|
|
inline void Light::UpdateShadowMapSettings(UInt32 size, PixelFormat format)
|
|
{
|
|
if (m_shadowMapFormat != format || m_shadowMapSize != size)
|
|
{
|
|
NazaraAssert(size > 0, "invalid shadow map size");
|
|
[[maybe_unused]] PixelFormatContent content = PixelFormatInfo::GetContent(format);
|
|
NazaraAssert(content != PixelFormatContent::Depth && content != PixelFormatContent::DepthStencil, "invalid shadow map format (has no depth)");
|
|
|
|
OnLightShadowMapSettingChange(this, format, size);
|
|
m_shadowMapFormat = format;
|
|
m_shadowMapSize = size;
|
|
}
|
|
}
|
|
|
|
inline void Light::UpdateShadowMapSize(UInt32 size)
|
|
{
|
|
if (m_shadowMapSize != size)
|
|
{
|
|
NazaraAssert(size > 0, "invalid shadow map size");
|
|
|
|
OnLightShadowMapSettingChange(this, m_shadowMapFormat, size);
|
|
m_shadowMapSize = size;
|
|
}
|
|
}
|
|
|
|
inline void Light::UpdateBoundingVolume(const BoundingVolumef& boundingVolume)
|
|
{
|
|
m_boundingVolume = boundingVolume;
|
|
|
|
OnLightDataInvalided(this);
|
|
}
|
|
}
|
|
|
|
#include <Nazara/Graphics/DebugOff.hpp>
|