OpenClonk
Ogre::Mesh::ChunkGeometryVertexDeclElement Class Reference

#include <StdMeshLoaderBinaryChunks.h>

Inheritance diagram for Ogre::Mesh::ChunkGeometryVertexDeclElement:
[legend]
Collaboration diagram for Ogre::Mesh::ChunkGeometryVertexDeclElement:
[legend]

Public Types

enum  Type {
  VDET_Float1 = 0 , VDET_Float2 = 1 , VDET_Float3 = 2 , VDET_Float4 = 3 ,
  VDET_Short1 = 5 , VDET_Short2 = 6 , VDET_Short3 = 7 , VDET_Short4 = 8 ,
  VDET_UByte4 = 9 , VDET_Color_ARGB = 10 , VDET_Color_ABGR = 11 , VDET_MIN = VDET_Float1 ,
  VDET_MAX = VDET_Color_ABGR
}
 
enum  Semantic {
  VDES_Position = 1 , VDES_Blend_Weights = 2 , VDES_Blend_Indices = 3 , VDES_Normals = 4 ,
  VDES_Diffuse = 5 , VDES_Specular = 6 , VDES_Texcoords = 7 , VDES_Binormal = 8 ,
  VDES_Tangent = 9 , VDES_MIN = VDES_Position , VDES_MAX = VDES_Tangent
}
 

Public Member Functions

Type GetType () const
 
size_t GetSize () const
 

Static Public Member Functions

static std::unique_ptr< ChunkRead (DataStream *stream)
 
static Type Peek (const DataStream *stream)
 

Public Attributes

uint16_t source
 
uint16_t offset
 
enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Type type
 
enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Semantic semantic
 
uint16_t index
 

Static Public Attributes

static const size_t ChunkHeaderLength
 

Protected Member Functions

void ReadImpl (DataStream *stream) override
 

Protected Attributes

size_t size
 

Detailed Description

Definition at line 472 of file StdMeshLoaderBinaryChunks.h.

Member Enumeration Documentation

◆ Semantic

Enumerator
VDES_Position 
VDES_Blend_Weights 
VDES_Blend_Indices 
VDES_Normals 
VDES_Diffuse 
VDES_Specular 
VDES_Texcoords 
VDES_Binormal 
VDES_Tangent 
VDES_MIN 
VDES_MAX 

Definition at line 494 of file StdMeshLoaderBinaryChunks.h.

495  {
496  VDES_Position = 1,
497  VDES_Blend_Weights = 2,
498  VDES_Blend_Indices = 3,
499  VDES_Normals = 4,
500  VDES_Diffuse = 5,
501  VDES_Specular = 6,
502  VDES_Texcoords = 7,
503  VDES_Binormal = 8,
504  VDES_Tangent = 9,
507  } semantic;
enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Semantic semantic

◆ Type

Enumerator
VDET_Float1 
VDET_Float2 
VDET_Float3 
VDET_Float4 
VDET_Short1 
VDET_Short2 
VDET_Short3 
VDET_Short4 
VDET_UByte4 
VDET_Color_ARGB 
VDET_Color_ABGR 
VDET_MIN 
VDET_MAX 

Definition at line 477 of file StdMeshLoaderBinaryChunks.h.

478  {
479  VDET_Float1 = 0,
480  VDET_Float2 = 1,
481  VDET_Float3 = 2,
482  VDET_Float4 = 3,
483  /* 4 omitted intentionally */
484  VDET_Short1 = 5,
485  VDET_Short2 = 6,
486  VDET_Short3 = 7,
487  VDET_Short4 = 8,
488  VDET_UByte4 = 9,
489  VDET_Color_ARGB = 10,
490  VDET_Color_ABGR = 11,
493  } type;
enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Type type

Member Function Documentation

◆ GetSize()

size_t Ogre::ChunkBase< ChunkID >::GetSize ( ) const
inlineinherited

Definition at line 292 of file StdMeshLoaderBinaryChunks.h.

◆ GetType()

Type Ogre::ChunkBase< ChunkID >::GetType ( ) const
inlineinherited

Definition at line 291 of file StdMeshLoaderBinaryChunks.h.

◆ Peek()

static Type Ogre::ChunkBase< ChunkID >::Peek ( const DataStream stream)
inlinestaticinherited

Definition at line 295 of file StdMeshLoaderBinaryChunks.h.

296  {
297  return static_cast<Type>(stream->Peek<uint16_t>());
298  }

◆ Read()

std::unique_ptr< Chunk > Ogre::Mesh::Chunk::Read ( DataStream stream)
staticinherited

Definition at line 42 of file StdMeshLoaderBinaryChunks.cpp.

43  {
44  assert(stream->GetRemainingBytes() >= ChunkHeaderLength);
45 
46  // Read metadata
47  ChunkID id = CID_Invalid;
48  id = static_cast<ChunkID>(stream->Read<uint16_t>());
49  size_t size = 0;
50  // Special case: CID_Header doesn't have any size info.
51  if (id != CID_Header)
52  {
53  // All others are proper chunks.
54  size = stream->Read<uint32_t>();
56  }
57 
58  // Create chunk
59  std::unique_ptr<Chunk> chunk;
60  switch (id)
61  {
62  case CID_Header: chunk = std::make_unique<Ogre::Mesh::ChunkFileHeader>(); break;
63  case CID_Mesh: chunk = std::make_unique<Ogre::Mesh::ChunkMesh>(); break;
66  chunk = std::make_unique<Ogre::Mesh::ChunkMeshBoneAssignments>(); break;
67  case CID_Mesh_Skeleton_Link: chunk = std::make_unique<Ogre::Mesh::ChunkMeshSkeletonLink>(); break;
68  case CID_Mesh_Bounds: chunk = std::make_unique<Ogre::Mesh::ChunkMeshBounds>(); break;
69  case CID_Submesh: chunk = std::make_unique<Ogre::Mesh::ChunkSubmesh>(); break;
70  case CID_Submesh_Op: chunk = std::make_unique<Ogre::Mesh::ChunkSubmeshOp>(); break;
71  case CID_Geometry: chunk = std::make_unique<Ogre::Mesh::ChunkGeometry>(); break;
72  case CID_Geometry_Vertex_Buffer: chunk = std::make_unique<Ogre::Mesh::ChunkGeometryVertexBuffer>(); break;
73  case CID_Geometry_Vertex_Data: chunk = std::make_unique<Ogre::Mesh::ChunkGeometryVertexData>(); break;
74  case CID_Geometry_Vertex_Decl: chunk = std::make_unique<Ogre::Mesh::ChunkGeometryVertexDecl>(); break;
75  case CID_Geometry_Vertex_Decl_Element: chunk = std::make_unique<Ogre::Mesh::ChunkGeometryVertexDeclElement>(); break;
76  default:
77  LogF("StdMeshLoader: I don't know what to do with a chunk of type 0x%xu", id);
78  // Fall through
80  // We don't care about these
81  chunk = std::make_unique<Ogre::Mesh::ChunkUnknown>(); break;
82  };
83  chunk->type = id;
84  chunk->size = size;
85  chunk->ReadImpl(stream);
86  return chunk;
87  }
bool LogF(const char *strMessage,...)
Definition: C4Log.cpp:262

References Ogre::ChunkBase< ChunkID >::ChunkHeaderLength, Ogre::Mesh::CID_Edge_List, Ogre::Mesh::CID_Geometry, Ogre::Mesh::CID_Geometry_Vertex_Buffer, Ogre::Mesh::CID_Geometry_Vertex_Data, Ogre::Mesh::CID_Geometry_Vertex_Decl, Ogre::Mesh::CID_Geometry_Vertex_Decl_Element, Ogre::Mesh::CID_Header, Ogre::Mesh::CID_Invalid, Ogre::Mesh::CID_Mesh, Ogre::Mesh::CID_Mesh_Bone_Assignment, Ogre::Mesh::CID_Mesh_Bounds, Ogre::Mesh::CID_Mesh_Skeleton_Link, Ogre::Mesh::CID_Submesh, Ogre::Mesh::CID_Submesh_Bone_Assignment, Ogre::Mesh::CID_Submesh_Name_Table, Ogre::Mesh::CID_Submesh_Op, Ogre::DataStream::GetRemainingBytes(), LogF(), Ogre::DataStream::Read(), and Ogre::ChunkBase< ChunkID >::size.

Referenced by StdMeshLoader::LoadMeshBinary(), Ogre::Mesh::ChunkMesh::ReadImpl(), Ogre::Mesh::ChunkSubmesh::ReadImpl(), Ogre::Mesh::ChunkGeometry::ReadImpl(), Ogre::Mesh::ChunkGeometryVertexDecl::ReadImpl(), and Ogre::Mesh::ChunkGeometryVertexBuffer::ReadImpl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadImpl()

void Ogre::Mesh::ChunkGeometryVertexDeclElement::ReadImpl ( DataStream stream)
overrideprotectedvirtual

Implements Ogre::ChunkBase< ChunkID >.

Definition at line 274 of file StdMeshLoaderBinaryChunks.cpp.

275  {
276  source = stream->Read<uint16_t>();
277  int32_t t = stream->Read<uint16_t>();
278  if (t < VDET_MIN || t > VDET_MAX)
279  throw InvalidVertexType();
280  type = static_cast<Type>(t);
281  t = stream->Read<uint16_t>();
282  if (t < VDES_MIN || t > VDES_MAX)
283  throw InvalidVertexSemantic();
284  semantic = static_cast<Semantic>(t);
285  offset = stream->Read<uint16_t>();
286  index = stream->Read<uint16_t>();
287  }

References index, offset, Ogre::DataStream::Read(), semantic, source, type, VDES_MAX, and VDET_MAX.

Here is the call graph for this function:

Member Data Documentation

◆ ChunkHeaderLength

const size_t Ogre::ChunkBase< ChunkID >::ChunkHeaderLength
staticinherited

Definition at line 294 of file StdMeshLoaderBinaryChunks.h.

◆ index

uint16_t Ogre::Mesh::ChunkGeometryVertexDeclElement::index

Definition at line 508 of file StdMeshLoaderBinaryChunks.h.

Referenced by ReadImpl().

◆ offset

uint16_t Ogre::Mesh::ChunkGeometryVertexDeclElement::offset

Definition at line 476 of file StdMeshLoaderBinaryChunks.h.

Referenced by ReadImpl().

◆ semantic

enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Semantic Ogre::Mesh::ChunkGeometryVertexDeclElement::semantic

Referenced by ReadImpl().

◆ size

size_t Ogre::ChunkBase< ChunkID >::size
protectedinherited

Definition at line 288 of file StdMeshLoaderBinaryChunks.h.

◆ source

uint16_t Ogre::Mesh::ChunkGeometryVertexDeclElement::source

Definition at line 475 of file StdMeshLoaderBinaryChunks.h.

Referenced by ReadImpl().

◆ type

enum Ogre::Mesh::ChunkGeometryVertexDeclElement::Type Ogre::Mesh::ChunkGeometryVertexDeclElement::type

Referenced by ReadImpl().


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