Castor3D 0.12.0
Multiplatform 3D engine
Public Member Functions | Friends | List of all members
castor3d::Submesh Class Reference

#include <Submesh.hpp>

Inheritance diagram for castor3d::Submesh:
Inheritance graph
[legend]
Collaboration diagram for castor3d::Submesh:
Collaboration graph
[legend]

Public Member Functions

C3D_API Submesh (Mesh &mesh, uint32_t id=1)
 Constructor. More...
 
C3D_API ~Submesh ()
 Destructor. More...
 
C3D_API void initialise (RenderDevice const &device)
 Initialises the submesh. More...
 
C3D_API void cleanup (RenderDevice const &device)
 Cleans the submesh. More...
 
C3D_API void update ()
 Updates the buffers. More...
 
C3D_API void computeContainers ()
 Computes the containers (cube and sphere) More...
 
C3D_API void updateContainers (castor::BoundingBox const &boundingBox)
 Updates containers from given bounding box. More...
 
C3D_API uint32_t getFaceCount () const
 
C3D_API uint32_t getPointsCount () const
 
C3D_API int isInMyPoints (castor::Point3f const &position, double precision)
 Tests if the given Point3f is in mine. More...
 
C3D_API InterleavedVertex addPoint (float x, float y, float z)
 Creates and Adds a vertex to my list. More...
 
C3D_API InterleavedVertex addPoint (castor::Point3f const &value)
 Adds a vertex to my list. More...
 
C3D_API InterleavedVertex addPoint (float *value)
 Creates and Adds a vertex to my list. More...
 
C3D_API void addPoint (InterleavedVertex const &value)
 Adds a vertex to the list. More...
 
C3D_API void addPoints (InterleavedVertex const *const begin, InterleavedVertex const *const end)
 Adds a points list to my list. More...
 
C3D_API void computeNormals (bool reverted=false)
 Generates normals and tangents. More...
 
C3D_API void sortByDistance (castor::Point3f const &cameraPosition)
 Sorts the face from farthest to nearest from the camera. More...
 
C3D_API ProgramFlags getProgramFlags (MaterialRPtr material) const
 
C3D_API void setMaterial (MaterialRPtr oldMaterial, MaterialRPtr newMaterial, bool update)
 Sets the material. More...
 
C3D_API GeometryBuffers const & getGeometryBuffers (ShaderFlags const &shaderFlags, ProgramFlags const &programFlags, MaterialRPtr material, TextureFlagsArray const &mask, bool forceTexcoords) const
 
void addPoints (std::vector< InterleavedVertex > const &vertices)
 Adds a points list to my list. More...
 
template<size_t Count>
void addPoints (std::array< InterleavedVertex, Count > const &vertices)
 Adds a points list to my list. More...
 
void setDefaultMaterial (MaterialRPtr material)
 Sets the material. More...
 
void needsUpdate ()
 Sets the submesh to be updated. More...
 
void setIndexMapping (IndexMappingSPtr mapping)
 Sets the index mapping. More...
 
IndexMappingSPtr getIndexMapping () const
 
void addComponent (castor::String const &name, SubmeshComponentSPtr component)
 Adds a component. More...
 
template<typename T >
void addComponent (std::shared_ptr< T > component)
 Adds a component. More...
 
void setTopology (VkPrimitiveTopology value)
 Sets the topology. More...
 
void disableSceneUpdate ()
 Disables scene update on modifications. More...
 
C3D_API void enableSceneUpdate (bool updateScene)
 Enables scene update on modifications. More...
 

Friends

template<typename T >
struct SubmeshComponentAdder
 
class BinaryWriter< Submesh >
 
class BinaryParser< Submesh >
 
static uint32_t constexpr Position = 0u
 
static uint32_t constexpr Normal = 1u
 
static uint32_t constexpr Tangent = 2u
 
static uint32_t constexpr Bitangent = 3u
 
static uint32_t constexpr Texture = 4u
 
SkeletonSPtr getSkeleton () const
 
InterleavedVertex const & operator[] (uint32_t index) const
 
InterleavedVertexoperator[] (uint32_t index)
 
InterleavedVertex const & getPoint (uint32_t index) const
 
InterleavedVertexgetPoint (uint32_t index)
 
MaterialRPtr getDefaultMaterial () const
 
castor::BoundingBox const & getBoundingBox () const
 
castor::BoundingBox & getBoundingBox ()
 
castor::BoundingSphere const & getBoundingSphere () const
 
castor::BoundingSphere & getBoundingSphere ()
 
InterleavedVertexArray const & getPoints () const
 
InterleavedVertexArraygetPoints ()
 
bool hasBufferOffsets () const
 
ObjectBufferOffset const & getBufferOffsets () const
 
bool isInitialised () const
 
bool isDynamic () const
 
Mesh const & getParent () const
 
MeshgetParent ()
 
uint32_t getId () const
 
bool hasComponent (castor::String const &name) const
 
SubmeshComponentSPtr getComponent (castor::String const &name) const
 
template<typename T >
std::shared_ptr< T > getComponent () const
 
InstantiationComponentgetInstantiation ()
 
InstantiationComponent const & getInstantiation () const
 
SubmeshComponentIDMap const & getComponents () const
 
VkPrimitiveTopology getTopology () const
 

Constructor & Destructor Documentation

◆ Submesh()

C3D_API castor3d::Submesh::Submesh ( Mesh mesh,
uint32_t  id = 1 
)
explicit

Constructor.

Parameters
[in]meshThe parent mesh.
[in]idThe submesh ID.

◆ ~Submesh()

C3D_API castor3d::Submesh::~Submesh ( )

Destructor.

Member Function Documentation

◆ addComponent() [1/2]

void castor3d::Submesh::addComponent ( castor::String const &  name,
SubmeshComponentSPtr  component 
)
inline

Adds a component.

Parameters
[in]nameThe component name.
[in]componentThe component.

◆ addComponent() [2/2]

template<typename T >
void castor3d::Submesh::addComponent ( std::shared_ptr< T >  component)
inline

Adds a component.

Parameters
[in]componentThe component.

◆ addPoint() [1/4]

C3D_API InterleavedVertex castor3d::Submesh::addPoint ( castor::Point3f const &  value)

Adds a vertex to my list.

Parameters
[in]valueThe vertex to add
Returns
The vertex

◆ addPoint() [2/4]

C3D_API InterleavedVertex castor3d::Submesh::addPoint ( float *  value)

Creates and Adds a vertex to my list.

Parameters
[in]valueThe vertex coordinates
Returns
The created vertex

◆ addPoint() [3/4]

C3D_API InterleavedVertex castor3d::Submesh::addPoint ( float  x,
float  y,
float  z 
)

Creates and Adds a vertex to my list.

Parameters
[in]xThe vertex X coordinate
[in]yThe vertex Y coordinate
[in]zThe vertex Z coordinate
Returns
The created vertex

◆ addPoint() [4/4]

C3D_API void castor3d::Submesh::addPoint ( InterleavedVertex const &  value)

Adds a vertex to the list.

Parameters
[in]valueThe vertex.

◆ addPoints() [1/3]

C3D_API void castor3d::Submesh::addPoints ( InterleavedVertex const *const  begin,
InterleavedVertex const *const  end 
)

Adds a points list to my list.

Parameters
[in]beginThe vertices data begin.
[in]endThe vertices data end.

◆ addPoints() [2/3]

template<size_t Count>
void castor3d::Submesh::addPoints ( std::array< InterleavedVertex, Count > const &  vertices)
inline

Adds a points list to my list.

Parameters
[in]verticesThe vertices

◆ addPoints() [3/3]

void castor3d::Submesh::addPoints ( std::vector< InterleavedVertex > const &  vertices)
inline

Adds a points list to my list.

Parameters
[in]verticesThe vertices

◆ cleanup()

C3D_API void castor3d::Submesh::cleanup ( RenderDevice const &  device)

Cleans the submesh.

◆ computeContainers()

C3D_API void castor3d::Submesh::computeContainers ( )

Computes the containers (cube and sphere)

◆ computeNormals()

C3D_API void castor3d::Submesh::computeNormals ( bool  reverted = false)

Generates normals and tangents.

◆ disableSceneUpdate()

void castor3d::Submesh::disableSceneUpdate ( )
inline

Disables scene update on modifications.

◆ enableSceneUpdate()

C3D_API void castor3d::Submesh::enableSceneUpdate ( bool  updateScene)

Enables scene update on modifications.

Parameters
[in]updateSceneTells if this call triggers a scene update.

◆ getBoundingBox() [1/2]

castor::BoundingBox & castor3d::Submesh::getBoundingBox ( )
inline

◆ getBoundingBox() [2/2]

castor::BoundingBox const & castor3d::Submesh::getBoundingBox ( ) const
inline

◆ getBoundingSphere() [1/2]

castor::BoundingSphere & castor3d::Submesh::getBoundingSphere ( )
inline

◆ getBoundingSphere() [2/2]

castor::BoundingSphere const & castor3d::Submesh::getBoundingSphere ( ) const
inline

◆ getBufferOffsets()

ObjectBufferOffset const & castor3d::Submesh::getBufferOffsets ( ) const
inline

◆ getComponent() [1/2]

template<typename T >
std::shared_ptr< T > castor3d::Submesh::getComponent ( ) const
inline

◆ getComponent() [2/2]

SubmeshComponentSPtr castor3d::Submesh::getComponent ( castor::String const &  name) const
inline

◆ getComponents()

SubmeshComponentIDMap const & castor3d::Submesh::getComponents ( ) const
inline

◆ getDefaultMaterial()

MaterialRPtr castor3d::Submesh::getDefaultMaterial ( ) const
inline

◆ getFaceCount()

C3D_API uint32_t castor3d::Submesh::getFaceCount ( ) const
Returns
The faces number

◆ getGeometryBuffers()

C3D_API GeometryBuffers const & castor3d::Submesh::getGeometryBuffers ( ShaderFlags const &  shaderFlags,
ProgramFlags const &  programFlags,
MaterialRPtr  material,
TextureFlagsArray const &  mask,
bool  forceTexcoords 
) const
Returns
The geometry buffers for given material.
Parameters
[in]shaderFlagsThe shader flags.
[in]programFlagsThe program flags.
[in]materialThe material.
[in]maskThe textures mask.
[in]forceTexcoordstrue to force texture coordinates in the vertex layout.

◆ getId()

uint32_t castor3d::Submesh::getId ( ) const
inline

◆ getIndexMapping()

IndexMappingSPtr castor3d::Submesh::getIndexMapping ( ) const
inline
Returns
The index mapping.

◆ getInstantiation() [1/2]

InstantiationComponent & castor3d::Submesh::getInstantiation ( )
inline

◆ getInstantiation() [2/2]

InstantiationComponent const & castor3d::Submesh::getInstantiation ( ) const
inline

◆ getParent() [1/2]

Mesh & castor3d::Submesh::getParent ( )
inline

◆ getParent() [2/2]

Mesh const & castor3d::Submesh::getParent ( ) const
inline

◆ getPoint() [1/2]

InterleavedVertex & castor3d::Submesh::getPoint ( uint32_t  index)
inline

◆ getPoint() [2/2]

InterleavedVertex const & castor3d::Submesh::getPoint ( uint32_t  index) const
inline

◆ getPoints() [1/2]

InterleavedVertexArray & castor3d::Submesh::getPoints ( )
inline

◆ getPoints() [2/2]

InterleavedVertexArray const & castor3d::Submesh::getPoints ( ) const
inline

◆ getPointsCount()

C3D_API uint32_t castor3d::Submesh::getPointsCount ( ) const
Returns
The points count

◆ getProgramFlags()

C3D_API ProgramFlags castor3d::Submesh::getProgramFlags ( MaterialRPtr  material) const
Returns
The shader program flags.

◆ getSkeleton()

SkeletonSPtr castor3d::Submesh::getSkeleton ( ) const
inline

name Getters.

◆ getTopology()

VkPrimitiveTopology castor3d::Submesh::getTopology ( ) const
inline

◆ hasBufferOffsets()

bool castor3d::Submesh::hasBufferOffsets ( ) const
inline

◆ hasComponent()

bool castor3d::Submesh::hasComponent ( castor::String const &  name) const
inline

◆ initialise()

C3D_API void castor3d::Submesh::initialise ( RenderDevice const &  device)

Initialises the submesh.

◆ isDynamic()

bool castor3d::Submesh::isDynamic ( ) const
inline

◆ isInitialised()

bool castor3d::Submesh::isInitialised ( ) const
inline

◆ isInMyPoints()

C3D_API int castor3d::Submesh::isInMyPoints ( castor::Point3f const &  position,
double  precision 
)

Tests if the given Point3f is in mine.

Parameters
[in]positionThe vertex to test
[in]precisionThe comparison precision
Returns
The index of the vertex equal to parameter, -1 if not found

◆ needsUpdate()

void castor3d::Submesh::needsUpdate ( )
inline

Sets the submesh to be updated.

◆ operator[]() [1/2]

InterleavedVertex & castor3d::Submesh::operator[] ( uint32_t  index)
inline

◆ operator[]() [2/2]

InterleavedVertex const & castor3d::Submesh::operator[] ( uint32_t  index) const
inline

◆ setDefaultMaterial()

void castor3d::Submesh::setDefaultMaterial ( MaterialRPtr  material)
inline

Sets the material.

Parameters
[in]materialThe new value

◆ setIndexMapping()

void castor3d::Submesh::setIndexMapping ( IndexMappingSPtr  mapping)
inline

Sets the index mapping.

Parameters
[in]mappingThe mapping.

◆ setMaterial()

C3D_API void castor3d::Submesh::setMaterial ( MaterialRPtr  oldMaterial,
MaterialRPtr  newMaterial,
bool  update 
)

Sets the material.

Parameters
[in]oldMaterialThe old material.
[in]newMaterialThe new material.
[in]updateTells if the buffers must be updated.

◆ setTopology()

void castor3d::Submesh::setTopology ( VkPrimitiveTopology  value)
inline

Sets the topology.

Parameters
[in]valueThe new value.

◆ sortByDistance()

C3D_API void castor3d::Submesh::sortByDistance ( castor::Point3f const &  cameraPosition)

Sorts the face from farthest to nearest from the camera.

Parameters
[in]cameraPositionThe camera position, relative to submesh

◆ update()

C3D_API void castor3d::Submesh::update ( )

Updates the buffers.

◆ updateContainers()

C3D_API void castor3d::Submesh::updateContainers ( castor::BoundingBox const &  boundingBox)

Updates containers from given bounding box.

Friends And Related Function Documentation

◆ BinaryParser< Submesh >

friend class BinaryParser< Submesh >
friend

◆ BinaryWriter< Submesh >

friend class BinaryWriter< Submesh >
friend

◆ SubmeshComponentAdder

template<typename T >
friend struct SubmeshComponentAdder
friend

Member Data Documentation

◆ Bitangent

uint32_t constexpr castor3d::Submesh::Bitangent = 3u
staticconstexpr

◆ Normal

uint32_t constexpr castor3d::Submesh::Normal = 1u
staticconstexpr

◆ Position

uint32_t constexpr castor3d::Submesh::Position = 0u
staticconstexpr

◆ Tangent

uint32_t constexpr castor3d::Submesh::Tangent = 2u
staticconstexpr

◆ Texture

uint32_t constexpr castor3d::Submesh::Texture = 4u
staticconstexpr

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