SleakEngine 1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
Sleak::AreaLight Class Reference

#include <AreaLight.hpp>

Inheritance diagram for Sleak::AreaLight:

Public Member Functions

 AreaLight (const std::string &name="AreaLight")
 ~AreaLight () override=default
RenderEngine::LightGPUEntry BuildGPUData () const override
 Packs this light's parameters into the GPU-side entry used by the lighting constant buffer.
Math::Vector3D GetDirection () const
float GetHeight () const
Math::Vector3D GetPosition () const
float GetRange () const
AreaLightShape GetShape () const
float GetWidth () const
bool IsTwoSided () const
void SetDirection (const Math::Vector3D &dir)
void SetHeight (float height)
void SetPosition (const Math::Vector3D &pos)
void SetRange (float range)
void SetShape (AreaLightShape shape)
void SetTwoSided (bool twoSided)
void SetWidth (float width)
Public Member Functions inherited from Sleak::Light
 Light (const std::string &name="Light")
 ~Light () override=default
bool GetCastShadows () const
Math::Vector3D GetColor () const
float GetIntensity () const
float GetLightSize () const
float GetShadowBias () const
float GetShadowNormalBias () const
float GetShadowStrength () const
bool IsEnabled () const
bool IsLight () const override
void SetCastShadows (bool cast)
void SetColor (const Math::Color &color)
void SetColor (float r, float g, float b)
void SetEnabled (bool enabled)
void SetIntensity (float intensity)
void SetLightSize (float size)
void SetShadowBias (float bias)
void SetShadowNormalBias (float bias)
void SetShadowStrength (float strength)
Public Member Functions inherited from Sleak::GameObject
 GameObject (const std::string &name="GameObject")
 ~GameObject () override
void AddChild (GameObject *child)
template<typename T, typename... Args>
void AddComponent (Args &&... args)
 Constructs and attaches a component of type T. Warns and no-ops if one already exists.
virtual void FixedUpdate (float fixedDeltaTime)
const List< GameObject * > & GetChildren () const
template<typename T>
T * GetComponent ()
 Finds the first attached component of type T, or nullptr.
GameObjectGetParent () const
const std::string & GetTag () const
bool HasChildren () const
template<typename T>
bool HasComponent ()
 True if a component of type T is attached.
bool HasParent () const
virtual void Initialize ()
 Initializes the object and its components; called once before the first Update.
bool IsActive () const
bool IsPendingDestroy () const
virtual void LateUpdate (float deltaTime)
void MarkForDestroy ()
 Flags the object for deferred destruction on the next scene pass.
void RemoveChild (GameObject *child)
template<typename T>
void RemoveComponent ()
 Destroys and detaches the first component of type T, if present.
void SetActive (bool active)
 Enables or disables the object, firing OnEnable/OnDisable on its components.
void SetParent (GameObject *parent)
 Reparents this object, updating both the old and new parent's child lists.
void SetTag (const std::string &tag)
virtual void Update (float deltaTime)
Public Member Functions inherited from Sleak::Object
 Object (const std::string &name="Object")
virtual ~Object ()=default
const std::string & GetName () const
uint64_t GetUniqueID () const
void SetName (const std::string &value)

Additional Inherited Members

Static Public Member Functions inherited from Sleak::GameObject
static GameObjectCreateCapsule (Math::Vector3D position, int segments=16, int rings=8, float height=1, float radius=0.5)
static GameObjectCreateCube (Math::Vector3D position)
static GameObjectCreateCylinder (Math::Vector3D position, int segments=16, float height=1, float radius=0.5)
static GameObjectCreatePlane (Math::Vector3D position, int width=100, int height=100)
 Built-in primitive factories, mainly for prototyping and debug scenes.
static GameObjectCreateSphere (Math::Vector3D position, int stack=16, int slices=16)
static GameObjectCreateTorus (Math::Vector3D position, int segments=16, int rings=8, float innerRadius=8, float outerRadius=9)
Protected Attributes inherited from Sleak::Light
bool m_castShadows = false
Math::Vector3D m_color {1.0f, 1.0f, 1.0f}
float m_intensity = 1.0f
bool m_lightEnabled = true
float m_lightSize = 1.0f
float m_shadowBias = 0.005f
float m_shadowNormalBias = 0.02f
float m_shadowStrength = 1.0f
Protected Attributes inherited from Sleak::GameObject
bool bIsInitialized

Detailed Description

Light emitted from a rectangular or disc surface rather than a point.

Definition at line 17 of file AreaLight.hpp.

Constructor & Destructor Documentation

◆ AreaLight()

Sleak::AreaLight::AreaLight ( const std::string & name = "AreaLight")
explicit

Definition at line 6 of file AreaLight.cpp.

◆ ~AreaLight()

Sleak::AreaLight::~AreaLight ( )
overridedefault

Member Function Documentation

◆ BuildGPUData()

RenderEngine::LightGPUEntry Sleak::AreaLight::BuildGPUData ( ) const
overridevirtual

Packs this light's parameters into the GPU-side entry used by the lighting constant buffer.

Implements Sleak::Light.

Definition at line 8 of file AreaLight.cpp.

◆ GetDirection()

Math::Vector3D Sleak::AreaLight::GetDirection ( ) const
inline

Definition at line 33 of file AreaLight.hpp.

◆ GetHeight()

float Sleak::AreaLight::GetHeight ( ) const
inline

Definition at line 42 of file AreaLight.hpp.

◆ GetPosition()

Math::Vector3D Sleak::AreaLight::GetPosition ( ) const
inline

Definition at line 27 of file AreaLight.hpp.

◆ GetRange()

float Sleak::AreaLight::GetRange ( ) const
inline

Definition at line 36 of file AreaLight.hpp.

◆ GetShape()

AreaLightShape Sleak::AreaLight::GetShape ( ) const
inline

Definition at line 45 of file AreaLight.hpp.

◆ GetWidth()

float Sleak::AreaLight::GetWidth ( ) const
inline

Definition at line 39 of file AreaLight.hpp.

◆ IsTwoSided()

bool Sleak::AreaLight::IsTwoSided ( ) const
inline

Definition at line 48 of file AreaLight.hpp.

◆ SetDirection()

void Sleak::AreaLight::SetDirection ( const Math::Vector3D & dir)
inline

Definition at line 29 of file AreaLight.hpp.

◆ SetHeight()

void Sleak::AreaLight::SetHeight ( float height)
inline

Definition at line 41 of file AreaLight.hpp.

◆ SetPosition()

void Sleak::AreaLight::SetPosition ( const Math::Vector3D & pos)
inline

Definition at line 24 of file AreaLight.hpp.

◆ SetRange()

void Sleak::AreaLight::SetRange ( float range)
inline

Definition at line 35 of file AreaLight.hpp.

◆ SetShape()

void Sleak::AreaLight::SetShape ( AreaLightShape shape)
inline

Definition at line 44 of file AreaLight.hpp.

◆ SetTwoSided()

void Sleak::AreaLight::SetTwoSided ( bool twoSided)
inline

Definition at line 47 of file AreaLight.hpp.

◆ SetWidth()

void Sleak::AreaLight::SetWidth ( float width)
inline

Definition at line 38 of file AreaLight.hpp.