Cogs.Core
Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Cogs::Core::LoftedCrossSectionsSystem Class Reference
Inheritance diagram for Cogs::Core::LoftedCrossSectionsSystem:
Cogs::Core::ComponentSystemWithDataPool< LoftedCrossSectionsComponent, LoftedCrossSectionsData > Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Classes

struct  CellClassCounts
 

Public Member Functions

 LoftedCrossSectionsSystem (Memory::Allocator *allocator, SizeType capacity)
 
void initialize (Context *context) override
 Initialize the system.
 
void update (Context *context) override
 Provided for custom update logic in derived systems.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPool< LoftedCrossSectionsComponent, LoftedCrossSectionsData >
 ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024)
 
LoftedCrossSectionsDatagetData (const LoftedCrossSectionsComponent *component)
 
const LoftedCrossSectionsDatagetData (const LoftedCrossSectionsComponent *component) const
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes >
 ComponentSystemWithDataPools (Memory::Allocator *allocator, SizeType size=1024, MemBlockType componentMemType=MemBlockType::Component, MemBlockType dataMemType=MemBlockType::ComponentData)
 
ComponentHandle createComponent () override
 
void destroyComponent (ComponentHandle component) override
 
template<typename T >
T & getData (const ComponentType *component)
 Get the data stored for the given component from the data pool storing objects of the specified template type.
 
template<typename T >
const T & getData (const ComponentType *component) const
 Get the const data stored for the given component from the data pool storing objects of the specified template type.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystem< ComponentType >
 ComponentSystem (Memory::Allocator *allocator, SizeType size=16384, MemBlockType componentMemType=MemBlockType::Component)
 
void instrumentedPreUpdate () override
 Provided for tagged engine instrumentation.
 
void instrumentedUpdate () override
 Provided for tagged engine instrumentation.
 
void instrumentedPostUpdate () override
 Provided for tagged engine instrumentation.
 
ComponentHandle createComponent () override
 Create a new component instance.
 
void destroyComponent (ComponentHandle component) override
 Destroy the component held by the given handle.
 
SizeType getComponentIndex (const Component *component) const
 Get the index of the given component in the component pool.
 
size_t size ()
 Returns the number of active components.
 
void clearCarryFlags ()
 Clear carry flags of all active components.
 
void resetFlags ()
 Reset the flags of all active components.
 
void prepareUpdate (Context *) override
 
void postUpdate (Context *) override
 
ComponentHandle getHandle (const ComponentType *component)
 Get a handle to the given Component instance.
 
virtual void addEntitiesWithComponent (std::vector< EntityId > &entities, Reflection::TypeId componentTypeId) override
 Return all entities with a given.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemBase
virtual ~ComponentSystemBase ()
 Provided for destruction via pointer to base.
 
 ComponentSystemBase (Reflection::TypeId componentType)
 Constructs a ComponentSystemBase to manage components of the given componentType.
 
virtual void initialize (Context *context)
 Initialize the system.
 
void preUpdate ()
 Run the pre-update method of the system.
 
void update ()
 Updates the system state to that of the current frame.
 
void postUpdate ()
 Perform post update logic in the system.
 
virtual void preUpdate (Context *)
 Provided for custom pre update logic in derived systems.
 
virtual void prepareUpdate (Context *)
 Provided for custom update preparation logic in derived systems.
 
virtual void update (Context *)
 Provided for custom update logic in derived systems.
 
virtual void postUpdate (Context *)
 Provided for custom post update logic in derived systems.
 
virtual void instrumentedPreUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void instrumentedUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void instrumentedPostUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void addEntitiesWithComponent (std::vector< EntityId > &, Reflection::TypeId)
 Return all entities with a given.
 
virtual void cleanup (Context *)
 Provided for custom cleanup logic in derived systems.
 
virtual ComponentHandle createComponent ()
 Create a new component instance.
 
virtual void destroyComponent (ComponentHandle)
 Destroy the component held by the given handle.
 
Reflection::TypeId getComponentType () const
 Get the reflected type of the components managed by this system.
 

Private Member Functions

void solidInitialize ()
 
void shellInitialize ()
 
void hollowInitialize ()
 
void solidOpenAlignedCountCellResources (size_t &newVertices, size_t &outIndices, size_t &cutIndices, std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const std::vector< uint8_t > &inside, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
void shellOpenAlignedCountCellResources (size_t &newVertices, size_t &outIndices, std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const std::vector< uint8_t > &inside, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
void hollowOpenAlignedCountCellResources (size_t &newVertices, size_t &outIndices, size_t &cutIndices, std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const std::vector< uint8_t > &inside, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
void solidClosedSkin (std::vector< unsigned int > &outSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const std::vector< glm::vec3 > &spine, const int slices, const int samples, const bool doubleSeam)
 
void shellClosedSkin (std::vector< unsigned int > &outSurface, const int slices, const int samples, const bool doubleSeam)
 
void hollowClosedSkin (std::vector< unsigned int > &outSurface, const int slices, const int samples, const bool doubleSeam)
 
bool process (Context *context, glm::vec4 viewer_world, LoftedCrossSectionsComponent &component, LoftedCrossSectionsData &data, Mesh *mesh)
 

Static Private Member Functions

static void solidOpenAlignedClassifySamples (std::vector< uint8_t > &inside, const float *pos, const size_t pos_stride, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples)
 
static void shellOpenAlignedClassifySamples (std::vector< uint8_t > &inside, const float *pos, const size_t pos_stride, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples)
 
static void hollowOpenAlignedClassifySamples (std::vector< uint8_t > &inside, const float *pos, const size_t pos_stride, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples)
 
static void solidOpenAlignedSkin (std::vector< unsigned int > &outSurface, std::vector< unsigned int > &cutSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
static void shellOpenAlignedSkin (std::vector< unsigned int > &outSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
static void hollowOpenAlignedSkin (std::vector< unsigned int > &outSurface, std::vector< unsigned int > &cutSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const std::vector< uint8_t > &classification, const std::vector< glm::vec3 > &spine, const glm::vec3 &viewer, const int slices, const int samples, const bool doubleSeam)
 
static void solidOpenCountCellResources (size_t &newVertices, size_t &outIndices, size_t &cutIndices, const int slices, const int samples, const bool doubleSeam)
 
static void shellOpenCountCellResources (size_t &outIndices, const int slices, const int samples, const bool doubleSeam)
 
static void hollowOpenCountCellResources (size_t &newVertices, size_t &outIndices, size_t &cutIndices, const int slices, const int samples, const bool doubleSeam)
 
static void solidOpenSkin (std::vector< unsigned int > &outSurface, std::vector< unsigned int > &cutSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const std::vector< glm::vec3 > &spine, const int slices, const int samples, const bool doubleSeam)
 
static void shellOpenSkin (std::vector< unsigned int > &outSurface, const int slices, const int samples, const bool doubleSeam)
 
static void hollowOpenSkin (std::vector< unsigned int > &outSurface, std::vector< unsigned int > &cutSurface, float *pos, const size_t pos_stride, float *tex, const size_t tex_stride, float *nrm, const size_t nrm_stride, const int slices, const int samples, const bool doubleSeam)
 
static void solidClosedCountCellResources (size_t &newVertices, size_t &outIndices, const int slices, const int samples, const bool doubleSeam)
 
static void shellClosedCountCellResources (size_t &outIndices, const int slices, const int samples, const bool doubleSeam)
 
static void hollowClosedCountCellResources (size_t &newVertices, size_t &outIndices, size_t &cutIndices, const int slices, const int samples, const bool doubleSeam)
 

Private Attributes

std::vector< CellClassCountsshellCellClassCounts
 
std::vector< CellClassCountshollowCellClassCounts
 
std::vector< CellClassCountssolidCellClassCounts
 

Additional Inherited Members

- Public Types inherited from Cogs::Core::ComponentSystem< ComponentType >
typedef ComponentType component_type
 
- Static Public Member Functions inherited from Cogs::Core::ComponentSystem< ComponentType >
static Reflection::TypeId getTypeId ()
 Get the type id of the component type used by the system.
 
- Public Attributes inherited from Cogs::Core::ComponentSystem< ComponentType >
ComponentPool< ComponentType > pool
 Pool of components managed by the system.
 
- Public Attributes inherited from Cogs::Core::ComponentSystemBase
Reflection::TypeId componentType
 The type of components managed by this instance.
 
Contextcontext = nullptr
 Pointer to the Context instance the system lives in.
 

Detailed Description

Definition at line 27 of file LoftedCrossSectionsSystem.h.

Constructor & Destructor Documentation

◆ LoftedCrossSectionsSystem()

Cogs::Core::LoftedCrossSectionsSystem::LoftedCrossSectionsSystem ( Memory::Allocator allocator,
SizeType  capacity 
)
inline

Definition at line 31 of file LoftedCrossSectionsSystem.h.

Member Function Documentation

◆ hollowClosedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::hollowClosedCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
size_t &  cutIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 359 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowClosedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::hollowClosedSkin ( std::vector< unsigned int > &  outSurface,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 369 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowInitialize()

void Cogs::Core::LoftedCrossSectionsSystem::hollowInitialize ( )
private

Definition at line 19 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowOpenAlignedClassifySamples()

void Cogs::Core::LoftedCrossSectionsSystem::hollowOpenAlignedClassifySamples ( std::vector< uint8_t > &  inside,
const float *  pos,
const size_t  pos_stride,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples 
)
staticprivate

Definition at line 68 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowOpenAlignedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::hollowOpenAlignedCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
size_t &  cutIndices,
std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const std::vector< uint8_t > &  inside,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 91 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowOpenAlignedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::hollowOpenAlignedSkin ( std::vector< unsigned int > &  outSurface,
std::vector< unsigned int > &  cutSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 139 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowOpenCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::hollowOpenCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
size_t &  cutIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 271 of file LoftedCrossSectionsSystemHollow.cpp.

◆ hollowOpenSkin()

void Cogs::Core::LoftedCrossSectionsSystem::hollowOpenSkin ( std::vector< unsigned int > &  outSurface,
std::vector< unsigned int > &  cutSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 280 of file LoftedCrossSectionsSystemHollow.cpp.

◆ initialize()

void Cogs::Core::LoftedCrossSectionsSystem::initialize ( Context context)
overridevirtual

Initialize the system.

Initialization is performed after all systems are created and a renderer initialized, but before the first time anything is rendered.

Parameters
contextPointer to the context the system lives in.

Reimplemented from Cogs::Core::ComponentSystemBase.

Definition at line 21 of file LoftedCrossSectionsSystem.cpp.

References Cogs::Core::ComponentSystemBase::initialize().

◆ process()

bool Cogs::Core::LoftedCrossSectionsSystem::process ( Context context,
glm::vec4  viewer_world,
LoftedCrossSectionsComponent component,
LoftedCrossSectionsData data,
Mesh mesh 
)
private

Definition at line 30 of file LoftedCrossSectionsSystem.cpp.

◆ shellClosedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::shellClosedCountCellResources ( size_t &  outIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 189 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellClosedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::shellClosedSkin ( std::vector< unsigned int > &  outSurface,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 198 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellInitialize()

void Cogs::Core::LoftedCrossSectionsSystem::shellInitialize ( )
private

Definition at line 17 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellOpenAlignedClassifySamples()

void Cogs::Core::LoftedCrossSectionsSystem::shellOpenAlignedClassifySamples ( std::vector< uint8_t > &  inside,
const float *  pos,
const size_t  pos_stride,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples 
)
staticprivate

Definition at line 41 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellOpenAlignedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::shellOpenAlignedCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const std::vector< uint8_t > &  inside,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 56 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellOpenAlignedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::shellOpenAlignedSkin ( std::vector< unsigned int > &  outSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 85 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellOpenCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::shellOpenCountCellResources ( size_t &  outIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 158 of file LoftedCrossSectionsSystemShell.cpp.

◆ shellOpenSkin()

void Cogs::Core::LoftedCrossSectionsSystem::shellOpenSkin ( std::vector< unsigned int > &  outSurface,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 167 of file LoftedCrossSectionsSystemShell.cpp.

◆ solidClosedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::solidClosedCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 472 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidClosedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::solidClosedSkin ( std::vector< unsigned int > &  outSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const std::vector< glm::vec3 > &  spine,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 481 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidInitialize()

void Cogs::Core::LoftedCrossSectionsSystem::solidInitialize ( )
private

Definition at line 17 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidOpenAlignedClassifySamples()

void Cogs::Core::LoftedCrossSectionsSystem::solidOpenAlignedClassifySamples ( std::vector< uint8_t > &  inside,
const float *  pos,
const size_t  pos_stride,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples 
)
staticprivate

Definition at line 96 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidOpenAlignedCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::solidOpenAlignedCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
size_t &  cutIndices,
std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const std::vector< uint8_t > &  inside,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
private

Definition at line 114 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidOpenAlignedSkin()

void Cogs::Core::LoftedCrossSectionsSystem::solidOpenAlignedSkin ( std::vector< unsigned int > &  outSurface,
std::vector< unsigned int > &  cutSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const std::vector< uint8_t > &  classification,
const std::vector< glm::vec3 > &  spine,
const glm::vec3 &  viewer,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 157 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidOpenCountCellResources()

void Cogs::Core::LoftedCrossSectionsSystem::solidOpenCountCellResources ( size_t &  newVertices,
size_t &  outIndices,
size_t &  cutIndices,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 328 of file LoftedCrossSectionsSystemSolid.cpp.

◆ solidOpenSkin()

void Cogs::Core::LoftedCrossSectionsSystem::solidOpenSkin ( std::vector< unsigned int > &  outSurface,
std::vector< unsigned int > &  cutSurface,
float *  pos,
const size_t  pos_stride,
float *  tex,
const size_t  tex_stride,
float *  nrm,
const size_t  nrm_stride,
const std::vector< glm::vec3 > &  spine,
const int  slices,
const int  samples,
const bool  doubleSeam 
)
staticprivate

Definition at line 338 of file LoftedCrossSectionsSystemSolid.cpp.

◆ update()

void Cogs::Core::LoftedCrossSectionsSystem::update ( Context )
overridevirtual

Member Data Documentation

◆ hollowCellClassCounts

std::vector<CellClassCounts> Cogs::Core::LoftedCrossSectionsSystem::hollowCellClassCounts
private

Definition at line 47 of file LoftedCrossSectionsSystem.h.

◆ shellCellClassCounts

std::vector<CellClassCounts> Cogs::Core::LoftedCrossSectionsSystem::shellCellClassCounts
private

Definition at line 46 of file LoftedCrossSectionsSystem.h.

◆ solidCellClassCounts

std::vector<CellClassCounts> Cogs::Core::LoftedCrossSectionsSystem::solidCellClassCounts
private

Definition at line 48 of file LoftedCrossSectionsSystem.h.


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