DirectZ
Loading...
Searching...
No Matches
dz::ReflectedStructView Class Reference

#include <ReflectedStructView.hpp>

Public Member Functions

 ReflectedStructView (uint8_t *base_ptr, const ReflectedStruct &struct_def)
 Constructs a ReflectedStructView.
template<typename T>
void set_member (const std::string &member_name, const T &value)
 Sets the value of a member within the struct. The data is copied to the correct offset in the underlying buffer memory, respecting the shader's memory layout (padding and alignment).
void set_member (const std::string &member_name, const void *data_ptr, size_t data_size_bytes)
 Overload to set a member from a raw pointer and size. Useful for types like glm::mat4 where glm::value_ptr() provides a raw float*, or for C-style arrays.
template<typename T>
Tget_member (const std::string &member_name)
 Gets the member as a modifiable value.
uint8_t * get_member (const std::string &member_name, size_t data_size_bytes)
template<typename T>
Tas_struct ()

Constructor & Destructor Documentation

◆ ReflectedStructView()

dz::ReflectedStructView::ReflectedStructView ( uint8_t * base_ptr,
const ReflectedStruct & struct_def )

Constructs a ReflectedStructView.

Parameters
base_ptrA pointer to the start of the struct element's data in the buffer.
struct_defThe ReflectedStruct definition for this element.

Member Function Documentation

◆ as_struct()

template<typename T>
T & dz::ReflectedStructView::as_struct ( )
inline

◆ get_member() [1/2]

template<typename T>
T & dz::ReflectedStructView::get_member ( const std::string & member_name)
inline

Gets the member as a modifiable value.

◆ get_member() [2/2]

uint8_t * dz::ReflectedStructView::get_member ( const std::string & member_name,
size_t data_size_bytes )

◆ set_member() [1/2]

template<typename T>
void dz::ReflectedStructView::set_member ( const std::string & member_name,
const T & value )
inline

Sets the value of a member within the struct. The data is copied to the correct offset in the underlying buffer memory, respecting the shader's memory layout (padding and alignment).

Template Parameters
TThe type of the value to set (e.g., float, int, glm::vec3, glm::mat4). T must be trivially copyable.
Parameters
member_nameThe name of the struct member (as defined in GLSL, e.g., "model", "color").
valueThe value to set.

◆ set_member() [2/2]

void dz::ReflectedStructView::set_member ( const std::string & member_name,
const void * data_ptr,
size_t data_size_bytes )

Overload to set a member from a raw pointer and size. Useful for types like glm::mat4 where glm::value_ptr() provides a raw float*, or for C-style arrays.

Parameters
member_nameThe name of the struct member.
data_ptrA pointer to the source data.
data_size_bytesThe size of the source data in bytes.

The documentation for this class was generated from the following file: