Lysa  0.0
Lysa 3D Engine
Light Class Reference

Detailed Description

Base class for different kinds of light nodes

+ Inheritance diagram for Light:

Public Types

enum  LightType { LIGHT_UNKNOWN = -1, LIGHT_DIRECTIONAL = 0, LIGHT_OMNI = 1, LIGHT_SPOT = 2 }
 
- Public Types inherited from Node
enum  Type {
  ANIMATION_PLAYER, CAMERA, CHARACTER, COLLISION_AREA,
  COLLISION_OBJECT, DIRECTIONAL_LIGHT, ENVIRONMENT, KINEMATIC_BODY,
  LIGHT, MESH_INSTANCE, NODE, OMNI_LIGHT,
  PHYSICS_BODY, RAYCAST, RIGID_BODY, SKYBOX,
  SPOT_LIGHT, STATIC_BODY, VIEWPORT
}
 Node type. More...
 

Public Member Functions

 ~Light () override = default
 
const auto & getColorAndIntensity () const
 
void setColorAndIntensity (const float4 &colorAndIntensity)
 
auto getCastShadows () const
 
void setCastShadows (bool castShadows)
 
auto getLightType () const
 
auto getShadowMapSize () const
 
void setShadowMapSize (const int32 shadowMapSize)
 
auto getShadowTransparencyScissors () const
 
auto setShadowTransparencyScissors (const float scissors)
 
auto getShadowTransparencyColorScissors () const
 
auto setShadowTransparencyColorScissors (const float scissors)
 
void setProperty (const std::string &property, const std::string &value) override
 
virtual LightData getLightData () const
 
- Public Member Functions inherited from Node
 Node (const Node &node)
 
 Node (const std::string &name=TypeNames[NODE], Type type=NODE)
 
auto getId () const
 
virtual void onReady ()
 
virtual void onEnterScene ()
 
virtual void onExitScene ()
 
virtual void onProcess (const float alpha)
 
virtual void onPhysicsProcess (const float delta)
 
virtual bool onInput (InputEvent &inputEvent)
 
void setTransformLocal (const float4x4 &transform)
 
const float4x4 & getTransformGlobal () const
 
const float4x4 & getTransform () const
 
virtual void setPosition (const float3 &position)
 
virtual void setPosition (const float x, const float y, const float z)
 
float3 getPosition () const
 
void translate (const float3 &localOffset)
 
void translate (float x, float y, float z)
 
virtual void setPositionGlobal (const float3 &position)
 
virtual void setPositionGlobal (const float x, const float y, const float z)
 
float3 getPositionGlobal () const
 
void rotateX (float angle)
 
void rotateY (float angle)
 
void rotateZ (float angle)
 
quaternion getRotation () const
 
quaternion getRotationGlobal () const
 
float3 getRotationEulerAngles () const
 
float3 getRotationEulerAnglesGlobal () const
 
virtual void scale (float scale)
 
void setRotation (const quaternion &quat)
 
void setRotationGlobal (const quaternion &quat)
 
void setRotationX (float angle)
 
void setRotationY (float angle)
 
void setRotationZ (float angle)
 
float getRotationX () const
 
float getRotationY () const
 
float getRotationZ () const
 
float3 getScale () const
 
float3 getScaleGlobal () const
 
auto * getParent () const
 
bool addChild (std::shared_ptr< Node > child, bool async=false)
 
bool removeChild (const std::shared_ptr< Node > &child, bool async=false)
 
void removeAllChildren (bool async=false)
 
bool haveChild (const std::shared_ptr< Node > &child, bool recursive) const
 
void lookAt (const float3 &target)
 
template<typename T = Node>
std::shared_ptr< T > getChild (const std::string &name) const
 
template<typename T = Node>
std::shared_ptr< T > getChildByPath (const std::string &path) const
 
template<typename T = Node>
std::shared_ptr< T > findFirstChild (const std::string &name) const
 
template<typename T >
std::shared_ptr< T > findFirstChild (const bool recursive=true) const
 
template<typename T >
std::list< std::shared_ptr< T > > findAllChildren (const bool recursive=true) const
 
template<typename T = Node>
std::list< std::shared_ptr< T > > findAllChildren (const std::string &name, const bool recursive=true) const
 
template<typename T = Node>
std::list< std::shared_ptr< T > > findAllChildrenByGroup (const std::string &groupName, const bool recursive=true) const
 
const std::list< std::shared_ptr< Node > > & getChildren () const
 
const std::list< std::string > & getGroups () const
 
void addToGroup (const std::string &group)
 
void removeFromGroup (const std::string &group)
 
bool isVisible () const
 
virtual void setVisible (bool visible=true)
 
auto isInGroup (const std::string &group) const
 
void setProcessMode (const ProcessMode mode)
 
bool isProcessed () const
 
auto getType () const
 
auto getViewport () const
 
const std::string & getName () const
 
std::string getPath () const
 
void printTree (int tab=0) const
 
std::shared_ptr< Node > duplicate (bool recursiveFilter=false) const
 
float3 toGlobal (const float3 &local) const
 
float3 toLocal (const float3 &global) const
 
float3 getRightVector () const
 
float3 getLeftVector () const
 
float3 getFrontVector () const
 
float3 getBackVector () const
 
float3 getUpVector () const
 
float3 getDownVector () const
 
void setName (const std::string &nodeName)
 
template<typename T >
std::shared_ptr< TweencreatePropertyTween (typename PropertyTween< T >::Setter set, const T initial, const T final, float duration, const TransitionType ttype=TransitionType::LINEAR, const Tween::Callback &callback=nullptr)
 
void killTween (const std::shared_ptr< Tween > &tween)
 
auto getSharedPtr ()
 
 ~Node () override = default
 
- Public Member Functions inherited from Object
void connect (const Signal::signal &name, const Signal::Handler &handler)
 
void connect (const Signal::signal &name, const std::function< void ()> &handler)
 
void emit (const Signal::signal &name, void *params=nullptr)
 
virtual std::string toString () const
 
 Object () = default
 
virtual ~Object () = default
 
- Public Member Functions inherited from Updatable
auto isUpdated () const
 
void decrementUpdates ()
 
void setUpdated ()
 
void setMaxUpdates (const uint32 maxUpdates)
 

Static Public Attributes

static constexpr auto MAX_LIGHTS {100}
 
- Static Public Attributes inherited from Node
static constexpr auto TypeNames
 

Protected Member Functions

 Light (const std::string &nodeName=TypeNames[LIGHT], Type type=LIGHT)
 
 Light (const float4 &color, const std::string &nodeName=TypeNames[LIGHT], Type type=LIGHT)
 
- Protected Member Functions inherited from Node
virtual std::shared_ptr< Node > duplicateInstance () const
 
virtual void updateGlobalTransform ()
 
virtual void ready ()
 
virtual void physicsProcess (float delta)
 
virtual void process (float alpha)
 
virtual void enterScene ()
 
virtual void exitScene ()
 
virtual void attachToViewport (Viewport *viewport)
 
virtual void detachFromViewport ()
 
virtual void pause ()
 
virtual void resume ()
 

Protected Attributes

uint32 shadowMapSize {512}
 
- Protected Attributes inherited from Node
float4x4 localTransform {}
 
float4x4 globalTransform {}
 

Additional Inherited Members

- Public Attributes inherited from Updatable
uint32 pendingUpdates {0}
 
uint32 maxUpdates {0}
 

Member Enumeration Documentation

enum LightType

Light type, mainly used by the fragment shader

Enum ValuesDocumentation
LIGHT_UNKNOWN 
LIGHT_DIRECTIONAL 
LIGHT_OMNI 
LIGHT_SPOT 

Constructor & Destructor Documentation

~Light ( )
overridedefault
Light ( const std::string &  nodeName = TypeNames[LIGHT],
Type  type = LIGHT 
)
protected
Light ( const float4 &  color,
const std::string &  nodeName = TypeNames[LIGHT],
Type  type = LIGHT 
)
protected

Member Function Documentation

auto getCastShadows ( ) const
inline

If true, the light will cast real-time shadows.
This has a significant performance cost. Only enable shadow rendering when it makes a noticeable difference in the scene's appearance.

const auto& getColorAndIntensity ( ) const
inline

Returns the RGB color and the intensity factor

auto getLightType ( ) const
inline

Returns the light type

auto getShadowMapSize ( ) const
inline
auto getShadowTransparencyColorScissors ( ) const
inline
auto getShadowTransparencyScissors ( ) const
inline
void setCastShadows ( bool  castShadows)

Sets to true to makes the light cast real-time shadow.
This has a significant performance cost. Only enable shadow rendering when it makes a noticeable difference in the scene's appearance.
Changing this parameter have no effect after adding the light to the scene (to avoid destroying shadow map renderers during frame rendering), you have to remove the light from the scene, change the setting, then add the light to the scene (adding and removing nodes from the scene if a deferred process).

void setColorAndIntensity ( const float4 &  colorAndIntensity)
inline

Sets the RGB color and the intensity factor

void setProperty ( const std::string &  property,
const std::string &  value 
)
overridevirtual

Sets a property by its name and value. Currently, not all properties in all node classes are supported.

Reimplemented from lysa::Node::setProperty()

Reimplemented in lysa::SpotLight::setProperty(), lysa::OmniLight::setProperty()

void setShadowMapSize ( const int32  shadowMapSize)
inline
auto setShadowTransparencyColorScissors ( const float  scissors)
inline
auto setShadowTransparencyScissors ( const float  scissors)
inline

Member Data Documentation

constexpr auto MAX_LIGHTS {100}
staticconstexpr
uint32 shadowMapSize {512}
protected