1 #pragma once 2 3 #include "Types.h" 4 #include "Stream.h" 5 #include <memory> 6 7 class CIcon 8 { 9 public: 10 struct VERTEX 11 { 12 float nX; 13 float nY; 14 float nZ; 15 }; 16 17 struct TEXCOORD 18 { 19 float nS; 20 float nT; 21 }; 22 23 #pragma pack(push, 1) 24 25 struct KEY 26 { 27 float nTime; 28 float nAmplitude; 29 }; 30 31 #pragma pack(pop) 32 33 struct FRAME 34 { 35 uint32 nShapeId; 36 uint32 nKeyCount; 37 KEY* pKeys; 38 }; 39 40 CIcon(Framework::CStream&); 41 virtual ~CIcon(); 42 43 const VERTEX* GetShape(unsigned int) const; 44 const TEXCOORD* GetTexCoords() const; 45 const FRAME* GetFrame(unsigned int) const; 46 const uint16* GetTexture() const; 47 unsigned int GetShapeCount() const; 48 unsigned int GetVertexCount() const; 49 unsigned int GetFrameCount() const; 50 51 private: 52 void ReadHeader(Framework::CStream&); 53 void ReadVertices(Framework::CStream&); 54 void ReadAnimations(Framework::CStream&); 55 void ReadTexture(Framework::CStream&); 56 void UncompressTexture(Framework::CStream&); 57 58 VERTEX** m_pShapes; 59 TEXCOORD* m_pTexCoords; 60 FRAME* m_pFrames; 61 62 uint32 m_nShapeCount; 63 uint32 m_nVertexCount; 64 uint32 m_nFrameCount; 65 uint32 m_nTextureType; 66 uint16* m_pTexture; 67 }; 68 69 typedef std::shared_ptr<CIcon> IconPtr; 70