| 
    Nameless Engine
    
   | 
 
#include <PointLightNode.h>
  
Classes | |
| struct | PointLightShaderData | 
| struct | ShaderData | 
Public Member Functions | |
| PointLightNode (const std::string &sNodeName) | |
| void | setLightColor (const glm::vec3 &color) | 
| void | setLightIntensity (float intensity) | 
| void | setLightDistance (float distance) | 
| glm::vec3 | getLightColor () const | 
| float | getLightIntensity () const | 
| float | getLightDistance () const | 
| std::pair< std::mutex, Sphere > * | getShape () | 
  Public Member Functions inherited from ne::SpatialNode | |
| SpatialNode (const std::string &sNodeName) | |
| void | setRelativeLocation (const glm::vec3 &location) | 
| void | setRelativeRotation (const glm::vec3 &rotation) | 
| void | setRelativeScale (const glm::vec3 &scale) | 
| void | setWorldLocation (const glm::vec3 &location) | 
| void | setWorldRotation (const glm::vec3 &rotation) | 
| void | setWorldScale (const glm::vec3 &scale) | 
| glm::vec3 | getRelativeLocation () const | 
| glm::vec3 | getRelativeRotation () const | 
| glm::vec3 | getRelativeScale () const | 
| glm::mat4x4 | getRelativeRotationMatrix () | 
| glm::vec3 | getWorldLocation () | 
| glm::vec3 | getWorldRotation () | 
| glm::quat | getWorldRotationQuaternion () | 
| glm::vec3 | getWorldScale () | 
| glm::vec3 | getWorldForwardDirection () | 
| glm::vec3 | getWorldRightDirection () | 
| glm::vec3 | getWorldUpDirection () | 
| glm::mat4x4 | getWorldMatrix () | 
| std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * | getClosestSpatialParent () | 
  Public Member Functions inherited from ne::Node | |
| Node () | |
| Node (const std::string &sName) | |
| Node (const Node &)=delete | |
| Node & | operator= (const Node &)=delete | 
| Node (Node &&)=delete | |
| Node & | operator= (Node &&)=delete | 
| virtual | ~Node () override | 
| void | setNodeName (const std::string &sName) | 
| void | detachFromParentAndDespawn () | 
| void | addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD) | 
| void | setSerialize (bool bSerialize) | 
| std::optional< Error > | serializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup) | 
| std::string | getNodeName () const | 
| sgc::GcPtr< Node > | getWorldRootNode () | 
| std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * | getParentNode () | 
| std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * | getChildNodes () | 
| template<typename NodeType >  requires std::derived_from<NodeType, Node>  | |
| sgc::GcPtr< NodeType > | getParentNodeOfType (const std::string &sParentNodeName="") | 
| template<typename NodeType >  requires std::derived_from<NodeType, Node>  | |
| sgc::GcPtr< NodeType > | getChildNodeOfType (const std::string &sChildNodeName="") | 
| TickGroup | getTickGroup () const | 
| std::optional< size_t > | getNodeId () const | 
| bool | isCalledEveryFrame () | 
| bool | isReceivingInput () | 
| bool | isSpawned () | 
| bool | isParentOf (Node *pNode) | 
| bool | isChildOf (Node *pNode) | 
| bool | isSerialized () const | 
  Public Member Functions inherited from ne::Serializable | |
| std::optional< Error > | serialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={}) | 
| std::variant< std::string, Error > | serialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false) | 
| std::variant< std::string, Error > | serialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false) | 
| std::optional< std::pair< std::string, std::string > > | getPathDeserializedFromRelativeToRes () const | 
Protected Member Functions | |
| virtual void | onAfterDeserialized () override | 
| virtual void | onSpawning () override | 
| virtual void | onDespawning () override | 
| virtual void | onWorldLocationRotationScaleChanged () override | 
  Protected Member Functions inherited from ne::SpatialNode | |
| virtual void | onAfterDeserialized () override | 
| virtual void | onSpawning () override | 
| virtual void | onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override | 
| virtual void | onWorldLocationRotationScaleChanged () | 
  Protected Member Functions inherited from ne::Node | |
| void | setIsCalledEveryFrame (bool bEnable) | 
| void | setTickGroup (TickGroup tickGroup) | 
| void | setIsReceivingInput (bool bEnable) | 
| Timer * | createTimer (const std::string &sTimerName) | 
| template<typename FunctionType > | |
| NodeNotificationBroadcaster< FunctionType > * | createNotificationBroadcaster () | 
| std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * | getActionEventBindings () | 
| std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * | getAxisEventBindings () | 
| std::recursive_mutex * | getSpawnDespawnMutex () | 
| virtual void | onMouseMove (double xOffset, double yOffset) | 
| virtual void | onMouseScrollMove (int iOffset) | 
| virtual void | onBeforeNewFrame (float timeSincePrevFrameInSec) | 
| virtual void | onSpawning () | 
| virtual void | onChildNodesSpawned () | 
| virtual void | onDespawning () | 
| virtual void | onBeforeDetachedFromParent (bool bThisNodeBeingDetached) | 
| virtual void | onAfterAttachedToNewParent (bool bThisNodeBeingAttached) | 
| virtual void | onAfterDeserialized () | 
Private Member Functions | |
| ShadowMapHandle * | getShadowMapHandle () const | 
| unsigned int | getIndexIntoShadowPassInfoShaderArray (size_t iCubemapFaceIndex=0) | 
| void * | onStartedUpdatingShaderData () | 
| void | onFinishedUpdatingShaderData () | 
| void * | onStartedUpdatingShadowPassData (size_t iCubemapFaceIndex) | 
| void | onFinishedUpdatingShadowPassData () | 
| void | markShaderDataToBeCopiedToGpu () | 
| void | markShadowPassDataToBeCopiedToGpu () | 
| void | onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray) | 
| void | recalculateShadowPassShaderData () | 
| void | recalculateShape () | 
Private Attributes | |
| std::pair< std::recursive_mutex, ShaderData > | mtxShaderData | 
| std::pair< std::mutex, Sphere > | mtxShape | 
| std::unique_ptr< ShadowMapHandle > | pShadowMapHandle | 
| glm::vec3 | color = glm::vec3(1.0F, 1.0F, 1.0F) | 
| float | intensity = 1.0F | 
| float | distance = 10.0F | 
Friends | |
| class | Renderer | 
Additional Inherited Members | |
  Public Types inherited from ne::Node | |
| enum class | AttachmentRule { RESET_RELATIVE , KEEP_RELATIVE , KEEP_WORLD } | 
  Static Public Member Functions inherited from ne::Node | |
| static size_t | getAliveNodeCount () | 
| static std::variant< sgc::GcPtr< Node >, Error > | deserializeNodeTree (const std::filesystem::path &pathToFile) | 
| static GameInstance * | getGameInstance () | 
  Static Public Member Functions inherited from ne::Serializable | |
| static std::variant< std::pair< std::set< std::string >, toml::value >, Error > | getIdsFromFile (std::filesystem::path pathToFile) | 
| static std::optional< Error > | serializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)  | |
| static std::variant< SmartPointer, Error > | deserialize (const std::filesystem::path &pathToFile) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)  | |
| static std::variant< SmartPointer, Error > | deserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)  | |
| static std::variant< SmartPointer, Error > | deserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)  | |
| static std::variant< SmartPointer, Error > | deserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>  | |
| static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, Error > | deserializeMultiple (std::filesystem::path pathToFile) | 
| template<typename SmartPointer , typename InnerType  = typename SmartPointer::element_type>  requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)  | |
| static std::variant< SmartPointer, Error > | deserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={}) | 
Represents a point light source in world.
| ne::PointLightNode::PointLightNode | ( | const std::string & | sNodeName | ) | 
Creates a new node with the specified name.
| sNodeName | Name of this node. | 
      
  | 
  private | 
Used by renderer and returns the current index (because it may change later) into the shader array that stores shadow pass info of spawned lights.
| iCubemapFaceIndex | Index of the cubemap face to get info for. | 
| glm::vec3 ne::PointLightNode::getLightColor | ( | ) | const | 
Returns color of this light source.
| float ne::PointLightNode::getLightDistance | ( | ) | const | 
Returns lit distance.
| float ne::PointLightNode::getLightIntensity | ( | ) | const | 
Returns intensity of this light source.
      
  | 
  private | 
Used by renderer and returns handle to shadow map texture that this light source uses.
nullptr if node is not spawned, otherwise valid pointer. | std::pair< std::mutex, Sphere > * ne::PointLightNode::getShape | ( | ) | 
Returns shape of this light source in world space.
      
  | 
  private | 
Marks array slot at mtxShaderData as "needs update" (if the slot is created) to later be copied to the GPU resource.
nullptr. 
      
  | 
  private | 
Marks array slots at mtxShaderData for shadow pass data as "needs update" (if the slots were created) to later be copied to the GPU resource.
nullptr. 
      
  | 
  overrideprotectedvirtual | 
Called after the object was successfully deserialized. Used to execute post-deserialization logic.
Reimplemented from ne::SpatialNode.
      
  | 
  overrideprotectedvirtual | 
Called before this node is despawned from the world to execute custom despawn logic.
Reimplemented from ne::Node.
      
  | 
  private | 
Called after onStartedUpdatingShaderData to notify this node that the renderer has finished copying the data to the GPU resource.
      
  | 
  private | 
Called after onStartedUpdatingShadowPassData to notify this node that the renderer has finished copying the data to the GPU resource.
      
  | 
  private | 
Called after the index into a descriptor array of pShadowMapHandle was initialized/changed.
| iNewIndexIntoArray | New index to use. | 
      
  | 
  overrideprotectedvirtual | 
Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.
Reimplemented from ne::SpatialNode.
      
  | 
  private | 
Callback that will be called by the renderer when it's ready to copy new (updated) mtxShaderData to the GPU resource.
      
  | 
  private | 
Callback that will be called by the renderer when it's ready to copy new (updated) shadow pass data of the light source to the GPU resource.
| iCubemapFaceIndex | Index of the cubemap face to copy the data. | 
      
  | 
  overrideprotectedvirtual | 
Called after node's world location/rotation/scale was changed.
Reimplemented from ne::SpatialNode.
      
  | 
  private | 
(Re)calculates data used in shadow pass.
      
  | 
  private | 
Recalculates mtxShaderData according to the current parameters (state).
| void ne::PointLightNode::setLightColor | ( | const glm::vec3 & | color | ) | 
Sets light's color.
| color | Color in RGB format in range [0.0; 1.0]. | 
| void ne::PointLightNode::setLightDistance | ( | float | distance | ) | 
Sets lit distance (i.e. attenuation radius).
| distance | Lit distance. | 
| void ne::PointLightNode::setLightIntensity | ( | float | intensity | ) | 
Sets light's intensity.
| intensity | Intensity in range [0.0; 1.0] (will be clamped if outside of the range). | 
      
  | 
  private | 
Color of the light source.
      
  | 
  private | 
Lit distance.
      
  | 
  private | 
Light intensity, valid values range is [0.0F; 1.0F].
      
  | 
  private | 
Only valid while spawned. Up to date data that will be copied to the GPU.
      
  | 
  private | 
Stores up-to-date sphere shape (in world space) that represents the point light.
      
  | 
  private | 
References shadow map of the light source.