DirectZ
Loading...
Searching...
No Matches
dz::ECS< TCID, TProviders > Struct Template Reference

#include <ECS.hpp>

Inheritance diagram for dz::ECS< TCID, TProviders >:
dz::Restorable

Classes

struct  ProviderReflectableGroup
struct  RegisteredComponentEntry

Public Types

using DrawProviderT = typename FirstMatchingOrDefault<IsDrawProvider, TProviders...>::type
using CameraProviderT = typename FirstMatchingOrDefault<IsCameraProvider, TProviders...>::type
using SceneProviderT = typename FirstMatchingOrDefault<IsSceneProvider, TProviders...>::type

Public Member Functions

int getCID () override
 Returns the Constructor ID at runtime.
auto GenerateEntitysDrawFunction ()
auto GenerateCamerasDrawFunction ()
auto GenerateCameraVisibilityFunction ()
template<typename TqProvider>
void IsDrawProviderName (std::string &out_string)
std::string FindBufferNameFromProviders ()
 ECS (Serial &serial)
 ECS (WINDOW *initial_window_ptr)
void MarkReady ()
bool backup (Serial &serial) override
 virtual method for writing the Restorable data
bool restore (Serial &serial) override
 virtual method for reading the Restorable data
void RegisterProviders ()
template<typename TProvider>
void RegisterProvider ()
template<typename TRComponent>
bool RegisterComponent ()
bool RegisterComponents (const std::function< bool(ECS &)> &register_all_components_fn)
void Resize (int n)
template<typename T>
TInsertReflectableGroup (std::vector< std::shared_ptr< ReflectableGroup > > &children)
template<typename TData, typename TProvider>
void AddProviderSingle (int parent_id, size_t &id, const TData &data, std::vector< std::shared_ptr< ReflectableGroup > > &reflectable_group_vector)
template<typename TData>
size_t AddProvider (int parent_id, const TData &data, std::vector< std::shared_ptr< ReflectableGroup > > &reflectable_group_vector)
template<typename TEntity>
size_t AddEntity (int parent_id, const TEntity &entity_data)
template<typename TEntity>
size_t AddEntity (const TEntity &entity_data)
template<typename TScene>
size_t AddScene (int parent_id, const TScene &entity_data)
template<typename TScene>
size_t AddScene (const TScene &entity_data)
template<typename TProvider, typename TReflectableGroup>
TReflectableGroup & GetGroupByIndex (size_t index)
template<typename TProvider, typename TReflectableGroup>
TReflectableGroup & GetGroup (size_t id)
ReflectableGroupFindParentGroupPtr (int parent_id)
template<typename TProvider>
std::map< size_t, ReflectableGroup * >::iterator GetProviderBegin ()
template<typename TProvider>
std::map< size_t, ReflectableGroup * >::iterator GetProviderEnd ()
template<typename TProvider>
TProvider & GetProviderData (size_t id)
DrawProviderTGetEntity (size_t entity_id)
template<typename TCamera>
size_t AddCamera (size_t parent_id, const TCamera &camera_data, TCamera::ProjectionType projectionType)
template<typename TCamera>
size_t AddCamera (const TCamera &camera_data, TCamera::ProjectionType projectionType)
CameraProviderTGetCamera (size_t camera_id)
template<typename TComponent>
size_t ConstructComponent (size_t entity_id, const TComponent &data)
template<typename T, typename TqProvider>
void IsTThisProvider (bool &out_bool)
template<typename T>
bool IsTAProvider ()
template<typename T>
TGetProviderValByID (int provider_val_id)
void SetProviderCount (const std::string &buffer_name, int count)
template<typename T>
TGetProviderData (const std::string &buffer_name)
BufferGroup * CreateBufferGroup ()
Shader * GenerateMainShader ()
Shader * GenerateModelComputeShader ()
void EnableDrawInWindow (WINDOW *window_ptr)
std::string GenerateShaderHeader (ShaderModuleType moduleType)
std::string GenerateShaderMain (ShaderModuleType moduleType)
std::string GenerateMainVertexShaderCode ()
std::string GenerateMainFragmentShaderCode ()
std::string GenerateModelComputeShaderCode ()
bool ResizeFramebuffer (size_t camera_id, uint32_t width, uint32_t height)
bool FramebufferChanged (size_t camera_id)
bool SetCameraAspect (size_t camera_id, float width, float height)
Public Member Functions inherited from dz::Restorable
virtual ~Restorable ()=default

Static Public Member Functions

static void RegisterStateCID ()
Static Public Member Functions inherited from dz::Restorable
template<typename T>
static int GetCID ()
 Returns the Constructor ID for this Restorable.

Public Attributes

std::recursive_mutex e_mutex
std::string buffer_name
WINDOW * window_ptr = 0
std::filesystem::path save_path
bool loaded_from_io = false
std::vector< std::shared_ptr< ReflectableGroup > > reflectable_group_root_vector
std::unordered_map< size_t, std::map< size_t, ReflectableGroup * > > provider_id_reflectable_maps
std::unordered_map< size_t, std::vector< size_t > > provider_index_vectors
std::map< size_t, ProviderReflectableGroupid_provider_groups
std::map< float, std::vector< size_t > > prioritized_provider_ids
std::unordered_map< ShaderModuleType, std::map< float, std::vector< std::string > > > priority_glsl_mains
std::vector< std::string > restricted_keys {"Components"}
std::map< int, RegisteredComponentEntryregistered_component_map
bool components_registered = false
DrawListManager< DrawProviderTdraw_mg
BufferGroup * buffer_group = 0
bool buffer_initialized = false
int buffer_size = 0
Shader * main_shader = 0
Shader * model_compute_shader = 0
int constructed_component_count = 0

Static Public Attributes

static int CID = TCID

Member Typedef Documentation

◆ CameraProviderT

template<int TCID, typename... TProviders>
using dz::ECS< TCID, TProviders >::CameraProviderT = typename FirstMatchingOrDefault<IsCameraProvider, TProviders...>::type

◆ DrawProviderT

template<int TCID, typename... TProviders>
using dz::ECS< TCID, TProviders >::DrawProviderT = typename FirstMatchingOrDefault<IsDrawProvider, TProviders...>::type

◆ SceneProviderT

template<int TCID, typename... TProviders>
using dz::ECS< TCID, TProviders >::SceneProviderT = typename FirstMatchingOrDefault<IsSceneProvider, TProviders...>::type

Constructor & Destructor Documentation

◆ ECS() [1/2]

template<int TCID, typename... TProviders>
dz::ECS< TCID, TProviders >::ECS ( Serial & serial)
inline

◆ ECS() [2/2]

template<int TCID, typename... TProviders>
dz::ECS< TCID, TProviders >::ECS ( WINDOW * initial_window_ptr)
inline

Member Function Documentation

◆ AddCamera() [1/2]

template<int TCID, typename... TProviders>
template<typename TCamera>
size_t dz::ECS< TCID, TProviders >::AddCamera ( const TCamera & camera_data,
TCamera::ProjectionType projectionType )
inline

◆ AddCamera() [2/2]

template<int TCID, typename... TProviders>
template<typename TCamera>
size_t dz::ECS< TCID, TProviders >::AddCamera ( size_t parent_id,
const TCamera & camera_data,
TCamera::ProjectionType projectionType )
inline

◆ AddEntity() [1/2]

template<int TCID, typename... TProviders>
template<typename TEntity>
size_t dz::ECS< TCID, TProviders >::AddEntity ( const TEntity & entity_data)
inline

◆ AddEntity() [2/2]

template<int TCID, typename... TProviders>
template<typename TEntity>
size_t dz::ECS< TCID, TProviders >::AddEntity ( int parent_id,
const TEntity & entity_data )
inline

◆ AddProvider()

template<int TCID, typename... TProviders>
template<typename TData>
size_t dz::ECS< TCID, TProviders >::AddProvider ( int parent_id,
const TData & data,
std::vector< std::shared_ptr< ReflectableGroup > > & reflectable_group_vector )
inline

◆ AddProviderSingle()

template<int TCID, typename... TProviders>
template<typename TData, typename TProvider>
void dz::ECS< TCID, TProviders >::AddProviderSingle ( int parent_id,
size_t & id,
const TData & data,
std::vector< std::shared_ptr< ReflectableGroup > > & reflectable_group_vector )
inline

◆ AddScene() [1/2]

template<int TCID, typename... TProviders>
template<typename TScene>
size_t dz::ECS< TCID, TProviders >::AddScene ( const TScene & entity_data)
inline

◆ AddScene() [2/2]

template<int TCID, typename... TProviders>
template<typename TScene>
size_t dz::ECS< TCID, TProviders >::AddScene ( int parent_id,
const TScene & entity_data )
inline

◆ backup()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::backup ( Serial & serial)
inlineoverridevirtual

virtual method for writing the Restorable data

Reimplemented from dz::Restorable.

◆ ConstructComponent()

template<int TCID, typename... TProviders>
template<typename TComponent>
size_t dz::ECS< TCID, TProviders >::ConstructComponent ( size_t entity_id,
const TComponent & data )
inline

◆ CreateBufferGroup()

template<int TCID, typename... TProviders>
BufferGroup * dz::ECS< TCID, TProviders >::CreateBufferGroup ( )
inline

◆ EnableDrawInWindow()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::EnableDrawInWindow ( WINDOW * window_ptr)
inline

◆ FindBufferNameFromProviders()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::FindBufferNameFromProviders ( )
inline

◆ FindParentGroupPtr()

template<int TCID, typename... TProviders>
ReflectableGroup * dz::ECS< TCID, TProviders >::FindParentGroupPtr ( int parent_id)
inline

◆ FramebufferChanged()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::FramebufferChanged ( size_t camera_id)
inline

◆ GenerateCamerasDrawFunction()

template<int TCID, typename... TProviders>
auto dz::ECS< TCID, TProviders >::GenerateCamerasDrawFunction ( )
inline

◆ GenerateCameraVisibilityFunction()

template<int TCID, typename... TProviders>
auto dz::ECS< TCID, TProviders >::GenerateCameraVisibilityFunction ( )
inline

◆ GenerateEntitysDrawFunction()

template<int TCID, typename... TProviders>
auto dz::ECS< TCID, TProviders >::GenerateEntitysDrawFunction ( )
inline

◆ GenerateMainFragmentShaderCode()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::GenerateMainFragmentShaderCode ( )
inline

◆ GenerateMainShader()

template<int TCID, typename... TProviders>
Shader * dz::ECS< TCID, TProviders >::GenerateMainShader ( )
inline

◆ GenerateMainVertexShaderCode()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::GenerateMainVertexShaderCode ( )
inline

◆ GenerateModelComputeShader()

template<int TCID, typename... TProviders>
Shader * dz::ECS< TCID, TProviders >::GenerateModelComputeShader ( )
inline

◆ GenerateModelComputeShaderCode()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::GenerateModelComputeShaderCode ( )
inline

◆ GenerateShaderHeader()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::GenerateShaderHeader ( ShaderModuleType moduleType)
inline

◆ GenerateShaderMain()

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::GenerateShaderMain ( ShaderModuleType moduleType)
inline

◆ GetCamera()

template<int TCID, typename... TProviders>
CameraProviderT & dz::ECS< TCID, TProviders >::GetCamera ( size_t camera_id)
inline

◆ getCID()

template<int TCID, typename... TProviders>
int dz::ECS< TCID, TProviders >::getCID ( )
inlineoverridevirtual

Returns the Constructor ID at runtime.

Reimplemented from dz::Restorable.

◆ GetEntity()

template<int TCID, typename... TProviders>
DrawProviderT & dz::ECS< TCID, TProviders >::GetEntity ( size_t entity_id)
inline

◆ GetGroup()

template<int TCID, typename... TProviders>
template<typename TProvider, typename TReflectableGroup>
TReflectableGroup & dz::ECS< TCID, TProviders >::GetGroup ( size_t id)
inline

◆ GetGroupByIndex()

template<int TCID, typename... TProviders>
template<typename TProvider, typename TReflectableGroup>
TReflectableGroup & dz::ECS< TCID, TProviders >::GetGroupByIndex ( size_t index)
inline

◆ GetProviderBegin()

template<int TCID, typename... TProviders>
template<typename TProvider>
std::map< size_t, ReflectableGroup * >::iterator dz::ECS< TCID, TProviders >::GetProviderBegin ( )
inline

◆ GetProviderData() [1/2]

template<int TCID, typename... TProviders>
template<typename T>
T * dz::ECS< TCID, TProviders >::GetProviderData ( const std::string & buffer_name)
inline

◆ GetProviderData() [2/2]

template<int TCID, typename... TProviders>
template<typename TProvider>
TProvider & dz::ECS< TCID, TProviders >::GetProviderData ( size_t id)
inline

◆ GetProviderEnd()

template<int TCID, typename... TProviders>
template<typename TProvider>
std::map< size_t, ReflectableGroup * >::iterator dz::ECS< TCID, TProviders >::GetProviderEnd ( )
inline

◆ GetProviderValByID()

template<int TCID, typename... TProviders>
template<typename T>
T * dz::ECS< TCID, TProviders >::GetProviderValByID ( int provider_val_id)
inline

◆ InsertReflectableGroup()

template<int TCID, typename... TProviders>
template<typename T>
T & dz::ECS< TCID, TProviders >::InsertReflectableGroup ( std::vector< std::shared_ptr< ReflectableGroup > > & children)
inline

◆ IsDrawProviderName()

template<int TCID, typename... TProviders>
template<typename TqProvider>
void dz::ECS< TCID, TProviders >::IsDrawProviderName ( std::string & out_string)
inline

◆ IsTAProvider()

template<int TCID, typename... TProviders>
template<typename T>
bool dz::ECS< TCID, TProviders >::IsTAProvider ( )
inline

◆ IsTThisProvider()

template<int TCID, typename... TProviders>
template<typename T, typename TqProvider>
void dz::ECS< TCID, TProviders >::IsTThisProvider ( bool & out_bool)
inline

◆ MarkReady()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::MarkReady ( )
inline

◆ RegisterComponent()

template<int TCID, typename... TProviders>
template<typename TRComponent>
bool dz::ECS< TCID, TProviders >::RegisterComponent ( )
inline

◆ RegisterComponents()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::RegisterComponents ( const std::function< bool(ECS< TCID, TProviders > &)> & register_all_components_fn)
inline

◆ RegisterProvider()

template<int TCID, typename... TProviders>
template<typename TProvider>
void dz::ECS< TCID, TProviders >::RegisterProvider ( )
inline

◆ RegisterProviders()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::RegisterProviders ( )
inline

◆ RegisterStateCID()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::RegisterStateCID ( )
inlinestatic

◆ Resize()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::Resize ( int n)
inline

◆ ResizeFramebuffer()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::ResizeFramebuffer ( size_t camera_id,
uint32_t width,
uint32_t height )
inline

◆ restore()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::restore ( Serial & serial)
inlineoverridevirtual

virtual method for reading the Restorable data

Reimplemented from dz::Restorable.

◆ SetCameraAspect()

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::SetCameraAspect ( size_t camera_id,
float width,
float height )
inline

◆ SetProviderCount()

template<int TCID, typename... TProviders>
void dz::ECS< TCID, TProviders >::SetProviderCount ( const std::string & buffer_name,
int count )
inline

Member Data Documentation

◆ buffer_group

template<int TCID, typename... TProviders>
BufferGroup* dz::ECS< TCID, TProviders >::buffer_group = 0

◆ buffer_initialized

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::buffer_initialized = false

◆ buffer_name

template<int TCID, typename... TProviders>
std::string dz::ECS< TCID, TProviders >::buffer_name

◆ buffer_size

template<int TCID, typename... TProviders>
int dz::ECS< TCID, TProviders >::buffer_size = 0

◆ CID

template<int TCID, typename... TProviders>
int dz::ECS< TCID, TProviders >::CID = TCID
inlinestatic

◆ components_registered

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::components_registered = false

◆ constructed_component_count

template<int TCID, typename... TProviders>
int dz::ECS< TCID, TProviders >::constructed_component_count = 0

◆ draw_mg

template<int TCID, typename... TProviders>
DrawListManager<DrawProviderT> dz::ECS< TCID, TProviders >::draw_mg

◆ e_mutex

template<int TCID, typename... TProviders>
std::recursive_mutex dz::ECS< TCID, TProviders >::e_mutex

◆ id_provider_groups

template<int TCID, typename... TProviders>
std::map<size_t, ProviderReflectableGroup> dz::ECS< TCID, TProviders >::id_provider_groups

◆ loaded_from_io

template<int TCID, typename... TProviders>
bool dz::ECS< TCID, TProviders >::loaded_from_io = false

◆ main_shader

template<int TCID, typename... TProviders>
Shader* dz::ECS< TCID, TProviders >::main_shader = 0

◆ model_compute_shader

template<int TCID, typename... TProviders>
Shader* dz::ECS< TCID, TProviders >::model_compute_shader = 0

◆ prioritized_provider_ids

template<int TCID, typename... TProviders>
std::map<float, std::vector<size_t> > dz::ECS< TCID, TProviders >::prioritized_provider_ids

◆ priority_glsl_mains

template<int TCID, typename... TProviders>
std::unordered_map<ShaderModuleType, std::map<float, std::vector<std::string> > > dz::ECS< TCID, TProviders >::priority_glsl_mains

◆ provider_id_reflectable_maps

template<int TCID, typename... TProviders>
std::unordered_map<size_t, std::map<size_t, ReflectableGroup*> > dz::ECS< TCID, TProviders >::provider_id_reflectable_maps

◆ provider_index_vectors

template<int TCID, typename... TProviders>
std::unordered_map<size_t, std::vector<size_t> > dz::ECS< TCID, TProviders >::provider_index_vectors

◆ reflectable_group_root_vector

template<int TCID, typename... TProviders>
std::vector<std::shared_ptr<ReflectableGroup> > dz::ECS< TCID, TProviders >::reflectable_group_root_vector

◆ registered_component_map

template<int TCID, typename... TProviders>
std::map<int, RegisteredComponentEntry> dz::ECS< TCID, TProviders >::registered_component_map

◆ restricted_keys

template<int TCID, typename... TProviders>
std::vector<std::string> dz::ECS< TCID, TProviders >::restricted_keys {"Components"}

◆ save_path

template<int TCID, typename... TProviders>
std::filesystem::path dz::ECS< TCID, TProviders >::save_path

◆ window_ptr

template<int TCID, typename... TProviders>
WINDOW* dz::ECS< TCID, TProviders >::window_ptr = 0

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