54 lines
No EOL
1.3 KiB
C++
54 lines
No EOL
1.3 KiB
C++
/*
|
|
* Copyright (C)
|
|
*
|
|
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
|
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
|
|
*/
|
|
|
|
#ifndef WMODEL_HNDL_H
|
|
#define WMODEL_HNDL_H
|
|
#include "Define.h"
|
|
#include "Utils.h"
|
|
#include "WorldModelRoot.h"
|
|
#include "ObjectDataHandler.h"
|
|
|
|
#include <set>
|
|
#include <vector>
|
|
|
|
class ADT;
|
|
|
|
struct WorldModelDefinition : public IDefinition
|
|
{
|
|
public:
|
|
WorldModelDefinition() {}
|
|
|
|
uint32 MwidIndex;
|
|
uint32 UniqueId;
|
|
Vector3 UpperExtents;
|
|
Vector3 LowerExtents;
|
|
uint16 Flags;
|
|
uint16 DoodadSet;
|
|
|
|
static WorldModelDefinition Read(FILE* file);
|
|
};
|
|
|
|
class WorldModelHandler : public ObjectDataHandler
|
|
{
|
|
public:
|
|
WorldModelHandler(ADT* adt);
|
|
~WorldModelHandler();
|
|
|
|
std::vector<Vector3> Vertices;
|
|
std::vector<Triangle<uint32> > Triangles;
|
|
bool IsSane() { return _definitions && _paths; }
|
|
static void InsertModelGeometry(std::vector<Vector3>& verts, std::vector<Triangle<uint32> >& tris, const WorldModelDefinition& def, WorldModelRoot* root, bool translate = true);
|
|
protected:
|
|
void ProcessInternal(MapChunk* data);
|
|
private:
|
|
void ReadDefinitions();
|
|
void ReadModelPaths();
|
|
std::set<uint32> _drawn;
|
|
std::vector<WorldModelDefinition>* _definitions;
|
|
std::vector<std::string>* _paths;
|
|
};
|
|
#endif |