Graphics: Add light type

This commit is contained in:
SirLynix 2022-05-12 23:09:40 +02:00
parent 5544d336ab
commit b6ab3ba1b3
6 changed files with 19 additions and 3 deletions

View File

@ -3,12 +3,14 @@
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Graphics/DirectionalLight.hpp>
#include <Nazara/Graphics/Enums.hpp>
#include <cassert>
#include <Nazara/Graphics/Debug.hpp>
namespace Nz
{
inline DirectionalLight::DirectionalLight() :
Light(SafeCast<UInt8>(BasicLightType::Directional)),
m_color(Color::White),
m_ambientFactor(0.2f),
m_diffuseFactor(1.f)

View File

@ -21,6 +21,8 @@ namespace Nz
Max = Spot
};
constexpr std::size_t BasicLightTypeCount = UnderlyingCast(BasicLightType::Max) + 1;
enum class BasicRenderElement
{
SpriteChain = 0,

View File

@ -24,7 +24,7 @@ namespace Nz
class NAZARA_GRAPHICS_API Light
{
public:
inline Light();
inline Light(UInt8 lightType);
Light(const Light&) = delete;
Light(Light&&) noexcept = default;
virtual ~Light();
@ -34,6 +34,7 @@ namespace Nz
virtual void FillLightData(void* data) const = 0;
inline const BoundingVolumef& GetBoundingVolume() const;
inline UInt8 GetLightType() const;
virtual void UpdateTransform(const Vector3f& position, const Quaternionf& rotation, const Vector3f& scale) = 0;
@ -47,6 +48,7 @@ namespace Nz
private:
BoundingVolumef m_boundingVolume;
UInt8 m_lightType;
};
}

View File

@ -8,8 +8,9 @@
namespace Nz
{
inline Light::Light() :
m_boundingVolume(BoundingVolumef::Null())
inline Light::Light(UInt8 lightType) :
m_boundingVolume(BoundingVolumef::Null()),
m_lightType(lightType)
{
}
@ -18,6 +19,11 @@ namespace Nz
return m_boundingVolume;
}
inline UInt8 Light::GetLightType() const
{
return m_lightType;
}
inline void Light::UpdateBoundingVolume(const BoundingVolumef& boundingVolume)
{
m_boundingVolume = boundingVolume;

View File

@ -3,12 +3,14 @@
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Graphics/PointLight.hpp>
#include <Nazara/Graphics/Enums.hpp>
#include <cassert>
#include <Nazara/Graphics/Debug.hpp>
namespace Nz
{
inline PointLight::PointLight() :
Light(SafeCast<UInt8>(BasicLightType::Point)),
m_color(Color::White),
m_position(Vector3f::Zero()),
m_ambientFactor(0.2f),

View File

@ -3,12 +3,14 @@
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Graphics/SpotLight.hpp>
#include <Nazara/Graphics/Enums.hpp>
#include <cassert>
#include <Nazara/Graphics/Debug.hpp>
namespace Nz
{
inline SpotLight::SpotLight() :
Light(SafeCast<UInt8>(BasicLightType::Spot)),
m_color(Color::White),
m_position(Vector3f::Zero()),
m_ambientFactor(0.2f),