CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::StreamingMesh Class Referencefinal

A mesh that stores it's vertex and index streams to a resource stream. More...

#include <CeresEngine/Mesh/Mesh.hpp>

Inheritance diagram for CeresEngine::StreamingMesh:
CeresEngine::TResource< StreamingMesh, Mesh > CeresEngine::Mesh CeresEngine::TResource< Mesh > CeresEngine::Resource CeresEngine::IReflectable

Public Member Functions

 StreamingMesh (Vector< Byte > vertexBuffer, MeshProperties &&properties)
 Creates a new MemoryMesh from an existing vertex buffer.
 
 StreamingMesh (Vector< Byte > vertexBuffer, Vector< Byte > indexBuffer, MeshProperties &&properties)
 Creates a new MemoryMesh from an existing vertex and index buffers.
 
 StreamingMesh (MemoryView< const Byte > vertexBuffer, MeshProperties &&properties)
 Creates a new MemoryMesh from an existing vertex buffer.
 
 StreamingMesh (MemoryView< const Byte > vertexBuffer, MemoryView< const Byte > indexBuffer, MeshProperties &&properties)
 Creates a new MemoryMesh from an existing vertex and index buffers.
 
 StreamingMesh (Vector< Byte > vertexBuffer, VertexDeclaration vertexDeclaration, Vector< SubMesh > subMeshes)
 Creates a new MemoryMesh from an existing vertex buffer.
 
 StreamingMesh (Vector< Byte > vertexBuffer, VertexDeclaration vertexDeclaration, Vector< Byte > indexBuffer, const IndexType indexType, Vector< SubMesh > subMeshes)
 Creates a new MemoryMesh from an existing vertex and index buffers.
 
 StreamingMesh (Vector< Byte > vertexBuffer, const VertexDeclaration &vertexDeclaration, Vector< Byte > indexBuffer, const Vector< SubMesh > subMeshes)
 Creates a new MemoryMesh from an existing vertex and index buffers.
 
ConstRawVertexBufferView getRawVertexBufferView () const final
 Gets a raw view of the vertex buffer data.
 
ConstRawIndexBufferView getRawIndexBufferView () const final
 Gets a raw view of the index buffer data.
 
MemoryView< const Byte > getVertexBuffer () const noexcept
 
MemoryView< const Byte > getIndexBuffer () const noexcept
 
- Public Member Functions inherited from CeresEngine::TResource< StreamingMesh, Mesh >
ResourceHandle< StreamingMesh > getResourceHandle () const noexcept
 Generates a hash for the provided type.
 
SPtr< StreamingMesh > getShared () noexcept
 Gets a shared pointer to the resource.
 
SPtr< const StreamingMesh > getShared () const noexcept
 Gets a shared pointer to the resource.
 
const ResourceTypeInfo & getResourceType () const noexcept override
 Returns the resource type information descriptor.
 
 TResource (ResourceData &data, InputStream &dataStream)
 
void serialize (OutputStream &dataStream) const override
 Serializes a resource by writing data to dataStream.
 
- Public Member Functions inherited from CeresEngine::Mesh
 Mesh ()
 Creates a new empty mesh.
 
 Mesh (MeshProperties &&properties)
 Creates a new Mesh by constructing a new MeshProperties object.
 
 ~Mesh () override
 Destroys the mesh object.
 
template<typename T >
VertexBufferView< const T > getVertexBufferView () const
 Gets a structured view of the vertex buffer data.
 
template<typename T >
IndexBufferView< const T > getIndexBufferView () const
 Gets a structured view of the index buffer data.
 
const MeshProperties & getProperties () const noexcept
 A structure that contains a set of properties for the mesh.
 
const Vector< SubMesh > & getSubMeshes () const
 The sub meshes in the mesh.
 
const VertexDeclaration & getVertexDeclaration () const
 The vertex declaration format used by the mesh.
 
const IndexType & getIndexType () const
 The format used by the mesh index buffer, if an index buffer is available.
 
const Sphere & getBoundingSphere () const
 The mesh bounding sphere, can be used to perform culling.
 
const AABox & getBoundingBox () const
 The mesh axis-aligned bounding box, can be used to perform culling.
 
- Public Member Functions inherited from CeresEngine::TResource< Mesh >
ResourceHandle< Mesh > getResourceHandle () const noexcept
 Generates a hash for the provided type.
 
SPtr< Mesh > getShared () noexcept
 Gets a shared pointer to the resource.
 
SPtr< const Mesh > getShared () const noexcept
 Gets a shared pointer to the resource.
 
 TResource (ResourceData &data, InputStream &dataStream)
 
- Public Member Functions inherited from CeresEngine::Resource
 Resource ()
 Default constructor for the Resource class.
 
 Resource (ResourceData &data)
 Creates a new Resource instance by passing a ResourceData instance.
 
virtual ~Resource () noexcept=default
 Resource virtual destructor.
 
ResourceManager * getResourceManager () const noexcept
 
HResource getResourceHandle () const noexcept
 Generates a hash for the provided type.
 
UUID getResourceID () const noexcept
 
HResource getParentResource () const noexcept
 A parent resource to which this resource is attached to.
 
SPtr< ResourceMetadata > getResourceMetadata () const noexcept
 A pointer to the user-defined resource metadata.
 
const PackagePtr & getPackage () const noexcept
 The package from which the resource was loaded from.
 
template<typename T = Resource>
SPtr< T > getShared () noexcept
 Gets a shared pointer to the resource.
 
template<typename T = Resource>
SPtr< const T > getShared () const noexcept
 Gets a shared pointer to the resource.
 
 Resource (ResourceData &data, InputStream &dataStream)
 Creates a new resource by reading data from dataStream.
 
- Public Member Functions inherited from CeresEngine::IReflectable
virtual ~IReflectable () noexcept=default
 

Static Public Member Functions

template<typename Processor >
static constexpr void reflect (Processor &&RTTI)
 Executes the given processor for every field of the struct.
 
- Static Public Member Functions inherited from CeresEngine::Mesh
template<typename Processor >
static constexpr void reflect (Processor &&RTTI)
 Executes the given processor for every field of the struct.
 
- Static Public Member Functions inherited from CeresEngine::Resource
template<typename Processor >
static constexpr void reflect (Processor &&RTTI)
 Executes the given processor for every field of the struct.
 

Private Types

using super = TResource< StreamingMesh, Mesh >
 

Friends

class TUserTypeInfo< StreamingMesh >
 

Additional Inherited Members

- Public Attributes inherited from CeresEngine::Mesh
MeshProperties mProperties
 A structure that contains a set of properties for the mesh.
 
- Protected Member Functions inherited from CeresEngine::Mesh
void recalculateMeshBounds ()
 Recalculate the mesh bounds based on the sub-mesh bounds.
 
- Protected Member Functions inherited from CeresEngine::Resource
HResourceStream createStream (const ResourceStreamFlags &flags=ResourceStreamFlag::Default)
 Creates a new resource stream.
 
void destroyStream (HResourceStream &stream)
 Destroys a stream.
 
void markAsDirty ()
 Marks the resource as dirty.
 

Detailed Description

A mesh that stores it's vertex and index streams to a resource stream.

Allows for very lightweight loading of meshes, but defers the actual loading of the actual mesh vertices and indices to a later date.

Member Typedef Documentation

◆ super

Constructor & Destructor Documentation

◆ StreamingMesh() [1/7]

CeresEngine::StreamingMesh::StreamingMesh ( Vector< Byte >  vertexBuffer,
MeshProperties &&  properties 
)
explicit

Creates a new MemoryMesh from an existing vertex buffer.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
propertiesThe mesh properties data.

◆ StreamingMesh() [2/7]

CeresEngine::StreamingMesh::StreamingMesh ( Vector< Byte >  vertexBuffer,
Vector< Byte >  indexBuffer,
MeshProperties &&  properties 
)
explicit

Creates a new MemoryMesh from an existing vertex and index buffers.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
indexBufferThe index buffer to create the mesh from.
propertiesThe mesh properties data.

◆ StreamingMesh() [3/7]

CeresEngine::StreamingMesh::StreamingMesh ( MemoryView< const Byte >  vertexBuffer,
MeshProperties &&  properties 
)
explicit

Creates a new MemoryMesh from an existing vertex buffer.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
propertiesThe mesh properties data.

◆ StreamingMesh() [4/7]

CeresEngine::StreamingMesh::StreamingMesh ( MemoryView< const Byte >  vertexBuffer,
MemoryView< const Byte >  indexBuffer,
MeshProperties &&  properties 
)
explicit

Creates a new MemoryMesh from an existing vertex and index buffers.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
indexBufferThe index buffer to create the mesh from.
propertiesThe mesh properties data.

◆ StreamingMesh() [5/7]

CeresEngine::StreamingMesh::StreamingMesh ( Vector< Byte >  vertexBuffer,
VertexDeclaration  vertexDeclaration,
Vector< SubMesh >  subMeshes 
)
inlineexplicit

Creates a new MemoryMesh from an existing vertex buffer.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
vertexDeclarationThe format of the vertex buffer data.
subMeshesA vector of all sub-meshes contained in the buffer.

◆ StreamingMesh() [6/7]

CeresEngine::StreamingMesh::StreamingMesh ( Vector< Byte >  vertexBuffer,
VertexDeclaration  vertexDeclaration,
Vector< Byte >  indexBuffer,
const IndexType  indexType,
Vector< SubMesh >  subMeshes 
)
inlineexplicit

Creates a new MemoryMesh from an existing vertex and index buffers.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
vertexDeclarationThe format of the vertex buffer data.
indexBufferThe index buffer to create the mesh from.
indexTypeThe data type used for vertex indices.
subMeshesA vector of all sub-meshes contained in the buffer.

◆ StreamingMesh() [7/7]

CeresEngine::StreamingMesh::StreamingMesh ( Vector< Byte >  vertexBuffer,
const VertexDeclaration &  vertexDeclaration,
Vector< Byte >  indexBuffer,
const Vector< SubMesh >  subMeshes 
)
inlineexplicit

Creates a new MemoryMesh from an existing vertex and index buffers.

Parameters
vertexBufferThe vertex buffer to create the mesh from.
vertexDeclarationThe format of the vertex buffer data.
indexBufferThe index buffer to create the mesh from.
indexTypeThe data type used for vertex indices.
subMeshesA vector of all sub-meshes contained in the buffer.

Member Function Documentation

◆ getIndexBuffer()

MemoryView< const Byte > CeresEngine::StreamingMesh::getIndexBuffer ( ) const
inlinenoexcept

◆ getRawIndexBufferView()

ConstRawIndexBufferView CeresEngine::StreamingMesh::getRawIndexBufferView ( ) const
inlinefinalvirtual

Gets a raw view of the index buffer data.

Implements CeresEngine::Mesh.

◆ getRawVertexBufferView()

ConstRawVertexBufferView CeresEngine::StreamingMesh::getRawVertexBufferView ( ) const
inlinefinalvirtual

Gets a raw view of the vertex buffer data.

Implements CeresEngine::Mesh.

◆ getVertexBuffer()

MemoryView< const Byte > CeresEngine::StreamingMesh::getVertexBuffer ( ) const
inlinenoexcept

◆ reflect()

template<typename Processor >
static constexpr void CeresEngine::StreamingMesh::reflect ( Processor &&  RTTI)
inlinestaticconstexpr

Executes the given processor for every field of the struct.

Parameters
RTTIThe processor to be ran for every field.

Friends And Related Symbol Documentation

◆ TUserTypeInfo< StreamingMesh >


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