Represents a spotlight source. More...
#include <lighting.h>
Public Member Functions | |
void | constructor (float r, float g, float b, float bias, float size, float constant, float linear, float quadratic, float cutOff, float outerCutOff) |
Constructor for the SpotLight class. | |
void | update (vec3 pos, vec3 rot, vec3 scale, float delta, u8 *lightsCount) |
Updates the state of the spotlight. | |
void | get_settings_data (void ***ptr, int *length) |
Retrieves the settings data. | |
void | load (FILE *file) |
Loads the SpotLight data from a file. | |
void | save (FILE *file) |
Saves the current state of the SpotLight object to a file. | |
void | configure_lighting (Camera *c, WorldShaders *shaders, DepthMap *depthMap, u8 *lightsCount) |
Configures the lighting. | |
![]() | |
void | init_light () |
Initializes the light object. | |
void | is_gui_element (bool *result) |
Determines if the current object is a GUI element. | |
void | render (mat4 modelMatrix, Shader activeShader) |
Renders the light using the provided model matrix and active shader. | |
void | init_vao () |
Initializes the Vertex Array Object (VAO) for the light class. | |
void | configure_lighting (WorldShaders *shaders, mat4 lightView, mat4 lightProjection, int storageBufferIndex, DepthMap *depthMap) |
Configures the lighting for the scene. | |
![]() | |
void | constructor () |
Constructor for the Node class. | |
void | initialize_node () |
Initializes a node. | |
void | get_glow_shader (Shader *shader) |
Retrieves the glow shader. | |
void | get_settings_data (void ***ptr, int *length) |
Retrieves settings data. | |
void | load () |
Loads the necessary resources or data for the node. | |
void | save (FILE *file) |
Saves the current state to the specified file. | |
void | prepare_render (mat4 modelMatrix, Shader activeShader) |
Renders a node using the specified model matrix and shader. | |
void | render () |
Renders the node. | |
void | update_global_position (vec3 pos, vec3 rot, vec3 scale) |
Updates the global position of a node. | |
void | update (vec3 pos, vec3 rot, vec3 scale) |
Updates the position, rotation, and scale of a node. | |
void | on_resize () |
Handles the resize event for the node. | |
void | free () |
Frees the resources allocated by the object. | |
void | is_cshape (bool *cshape) |
Checks if the current shape is a custom shape. | |
void | is_body (bool *body) |
Sets the body status of the node. | |
void | is_area (bool *area) |
Checks if the current node is within a specified area. | |
void | is_render_target (bool *render_target) |
Sets the render target status. | |
void | is_gui_element (bool *result) |
Determines if the current node is a GUI element. | |
void | add_child (Node *child) |
Adds a child node to a parent node. | |
void | add_child_and_realloc (Node *child) |
Adds a child node to a parent node and reallocates memory if necessary. | |
void | remove_child (Node *child) |
Removes a child node from a parent node. | |
void | remove_child_and_realloc (Node *child) |
Removes a child node from a parent node and reallocates memory if necessary. | |
void | remove_child_and_free (Node *child) |
Removes a child node from a parent node and frees the memory of the child node. | |
void | remove_child_and_free_and_realloc (Node *child) |
Removes a child node from a parent node, frees the memory of the child node, and reallocates memory if necessary. | |
int | index_of_child (Node *child) |
Retrieves the index of a child node in a parent node's children array. | |
void | print (int level) |
Prints the details of a node at a specified level of indentation. | |
void | emit_ready (...) |
Emits the 'ready' signal for the node. | |
void | emit_update (...) |
Emits an update event for the node. | |
void | emit_signal (...) |
Emits a signal if the node has a script and the script has a signal handler. | |
Public Attributes | |
vec3 | color |
float | bias |
float | size |
float | constant |
float | linear |
float | quadratic |
float | cutOff |
float | outerCutOff |
![]() | |
void * | object |
struct Node ** | children |
struct Node * | parent |
u16 | length |
u8 | type |
u8 | flags |
vec3 | pos |
vec3 | rot |
vec3 | scale |
vec3 | globalPos |
vec3 | globalRot |
vec3 | globalScale |
Behavior * | behavior |
BehaviorAttribute * | attribute |
u8 | attributes_count |
Shader | shader |
Additional Inherited Members | |
![]() | |
static VBO | vbo = 0 |
Static variable representing the Vertex Buffer Object (VBO) for the light class. | |
static VAO | vao = 0 |
Static variable representing the Vertex Array Object (VAO) for the light class. | |
static Shader | billboardShader = 0 |
Static variable representing the shader program used for rendering billboard lights. | |
static TextureMap | lightPointTexture = 0 |
Static variable representing the texture map for point lights. | |
static TextureMap | directionalLightTexture = 0 |
Static variable representing the texture map for directional lights. | |
![]() | |
static Shader | glowShader = 0 |
A static Shader variable used for glow effect. | |
Represents a spotlight source.
A spotlight emits light in a cone shape, with a defined cutoff angle. This structure contains the properties of a spotlight, including ambient, diffuse, and specular components, attenuation factors, and cutoff angles.
|
inline |
Constructor for the SpotLight class.
This function initializes a SpotLight object with the specified parameters.
r | The red component of the light color. |
g | The green component of the light color. |
b | The blue component of the light color. |
bias | The bias value for the light. |
size | The size of the light. |
constant | The constant attenuation factor. |
linear | The linear attenuation factor. |
quadratic | The quadratic attenuation factor. |
cutOff | The inner cutoff angle for the spotlight (in degrees). |
outerCutOff | The outer cutoff angle for the spotlight (in degrees). |
|
inline |
Updates the state of the spotlight.
This function updates the position, rotation, and scale of the spotlight based on the provided delta time and increments the lights count.
pos | Vec3 structure representing the position of the spotlight. |
rot | Vec3 structure representing the rotation of the spotlight. |
scale | Vec3 structure representing the scale of the spotlight. |
delta | The time delta used for updating the spotlight's state. |
lightsCount | Pointer to an unsigned 8-bit integer representing the count of lights. |
|
inline |
Retrieves the settings data.
This function populates the provided pointer with the settings data and sets the length of the data.
[out] | ptr | A pointer to a pointer to a pointer where the settings data will be stored. |
[out] | length | A pointer to an integer where the length of the settings data will be stored. |
|
inline |
Loads the SpotLight data from a file.
This function reads the SpotLight data from the specified file and initializes the SpotLight object with the loaded data. The file should contain the necessary information to fully describe the SpotLight, including its position, direction, color, intensity, and other relevant properties.
file | A pointer to the file from which the SpotLight data will be loaded. |
|
inline |
Saves the current state of the SpotLight object to a file.
This function writes the current state of the SpotLight object to the specified file. The file should be opened in a mode that allows writing before calling this function.
file | A pointer to the FILE object where the state will be saved. |
|
inline |
Configures the lighting.
This function configures the lighting.
c | The camera to be used for rendering. |
shaders | The shaders to be used for rendering. |
lightsCount | The number of lights in the scene. |
vec3 SpotLight::color |
Color component of the light.
float SpotLight::bias |
Bias factor for the light.
float SpotLight::size |
Size factor for the light.
float SpotLight::constant |
Constant attenuation factor for the light.
float SpotLight::linear |
Linear attenuation factor for the light.
float SpotLight::quadratic |
Quadratic attenuation factor for the light.
float SpotLight::cutOff |
Cutoff angle for the spotlight.
float SpotLight::outerCutOff |
Outer cutoff angle for the spotlight.