#ifndef DOOADHNDL_H #define DOOADHNDL_H #include "ObjectDataHandler.h" #include "Utils.h" #include "Chunk.h" #include "Model.h" #include #include class DoodadDefinition : IDefinition { public: uint32 MmidIndex; uint32 UniqueId; uint16 DecimalScale; uint16 Flags; float Scale() { return DecimalScale / 1024.0f; } void Read(FILE* stream) { fread(&MmidIndex, sizeof(uint32), 1, stream); fread(&UniqueId, sizeof(uint32), 1, stream); Position = Vector3::Read(stream); Rotation = Vector3::Read(stream); fread(&DecimalScale, sizeof(uint16), 1, stream); fread(&Flags, sizeof(uint16), 1, stream); } }; class DoodadHandler : public ObjectDataHandler { public: DoodadHandler(ADT* adt); std::vector Vertices; std::vector > Triangles; bool IsSane() { return _definitions && _paths; } protected: void ProcessInternal(ChunkedData* chunk); private: void ReadDoodadDefinitions(Chunk* chunk); void ReadDoodadPaths(Chunk* id, Chunk* data); void InsertModelGeometry(DoodadDefinition def, Model* model); std::set _drawn; std::vector* _definitions; std::vector* _paths; }; #endif