TrinityCore
Loading...
Searching...
No Matches
wmo.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef WMO_H
19#define WMO_H
20
21#include <string>
22#include <unordered_set>
23#include <vector>
24#include <memory>
25#include "vec3d.h"
26#include "loadlib/loadlib.h"
27
28// MOPY flags
40
41class WMOInstance;
42class WMOManager;
43class MPQFile;
44namespace ADT { struct MODF; }
45
46namespace WMO
47{
48 struct MODS
49 {
50 char Name[20];
51 uint32 StartIndex; // index of first doodad instance in this set
52 uint32 Count; // number of doodad instances in this set
53 char _pad[4];
54 };
55
64}
65
66/* for whatever reason a certain company just can't stick to one coordinate system... */
67static inline Vec3D fixCoords(Vec3D const& v){ return Vec3D(v.z, v.x, v.y); }
68
70{
71 std::vector<WMO::MODS> Sets;
72 std::unique_ptr<char[]> Paths;
73 std::vector<WMO::MODD> Spawns;
74 std::unordered_set<uint16> References;
75};
76
78{
79private:
80 std::string filename;
81public:
82 unsigned int color;
84 float bbcorn1[3];
85 float bbcorn2[3];
86
87 std::vector<char> GroupNames;
89 std::unordered_set<uint32> ValidDoodadNames;
90
91 WMORoot(std::string const& filename);
92
93 bool open();
94 bool ConvertToVMAPRootWmo(FILE* output);
95};
96
97#pragma pack(push, 1)
98
100{
102 float pos_x;
103 float pos_y;
104 float pos_z;
105 short material;
106};
107
114
115#pragma pack(pop)
116
118{
119private:
120 std::string filename;
121public:
122 // MOGP
123
124 char* MOPY;
127 float* MOVT;
129 int* MobaEx;
135 float bbcorn1[3];
136 float bbcorn2[3];
142
145 unsigned int nVertices; // number when loaded
146 int nTriangles; // number when loaded
148
149 std::vector<uint16> DoodadReferences;
150
151 WMOGroup(std::string const& filename);
152 ~WMOGroup();
153
154 bool open(WMORoot* rootWMO);
155 int ConvertToVMAPGroupWmo(FILE* output, bool preciseVectorData);
156 uint32 GetLiquidTypeId(uint32 liquidTypeId);
157 bool ShouldSkip(WMORoot const* root) const;
158};
159
160namespace MapObject
161{
162 void Extract(ADT::MODF const& mapObjDef, char const* WmoInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE* pDirfile);
163}
164
165#endif
uint16_t uint16
Definition Define.h:134
uint32_t uint32
Definition Define.h:133
Extract
Definition System.cpp:62
Definition vec3d.h:25
float x
Definition vec3d.h:27
float y
Definition vec3d.h:27
float z
Definition vec3d.h:27
uint32 nBatchC
Definition wmo.h:141
float * MOVT
Definition wmo.h:127
int moba_size
Definition wmo.h:143
uint16 * MOVI
Definition wmo.h:125
uint16 nBatchA
Definition wmo.h:139
uint32 fogIdx
Definition wmo.h:141
uint32 groupLiquid
Definition wmo.h:141
uint16 moprIdx
Definition wmo.h:137
std::string filename
Definition wmo.h:120
int groupName
Definition wmo.h:133
int descGroupName
Definition wmo.h:133
int LiquEx_size
Definition wmo.h:144
uint32 groupWMOID
Definition wmo.h:141
uint16 nBatchB
Definition wmo.h:140
float bbcorn2[3]
Definition wmo.h:136
std::vector< uint16 > DoodadReferences
Definition wmo.h:149
int mogpFlags
Definition wmo.h:134
unsigned int nVertices
Definition wmo.h:145
WMOLiquidVert * LiquEx
Definition wmo.h:131
uint16 * MOBA
Definition wmo.h:128
uint32 liquflags
Definition wmo.h:147
char * MOPY
Definition wmo.h:124
bool open(WMORoot *rootWMO)
Definition wmo.cpp:170
int nTriangles
Definition wmo.h:146
uint32 GetLiquidTypeId(uint32 liquidTypeId)
Definition wmo.cpp:482
char * LiquBytes
Definition wmo.h:132
int mopy_size
Definition wmo.h:143
~WMOGroup()
Definition wmo.cpp:514
int * MobaEx
Definition wmo.h:129
WMOLiquidHeader * hlq
Definition wmo.h:130
int ConvertToVMAPGroupWmo(FILE *output, bool preciseVectorData)
Definition wmo.cpp:291
uint16 * MoviEx
Definition wmo.h:126
bool ShouldSkip(WMORoot const *root) const
Definition wmo.cpp:498
uint16 moprNItems
Definition wmo.h:138
float bbcorn1[3]
Definition wmo.h:135
Definition wmo.h:78
float bbcorn1[3]
Definition wmo.h:84
std::vector< char > GroupNames
Definition wmo.h:87
uint32 nDoodadSets
Definition wmo.h:83
uint32 nDoodadDefs
Definition wmo.h:83
WMODoodadData DoodadData
Definition wmo.h:88
uint32 nLights
Definition wmo.h:83
uint32 nPortals
Definition wmo.h:83
bool open()
Definition wmo.cpp:39
float bbcorn2[3]
Definition wmo.h:85
uint32 nGroups
Definition wmo.h:83
std::unordered_set< uint32 > ValidDoodadNames
Definition wmo.h:89
std::string filename
Definition wmo.h:80
bool ConvertToVMAPRootWmo(FILE *output)
Definition wmo.cpp:147
uint32 nDoodadNames
Definition wmo.h:83
unsigned int color
Definition wmo.h:82
uint32 nTextures
Definition wmo.h:83
uint32 flags
Definition wmo.h:83
uint32 RootWMOID
Definition wmo.h:83
Definition adtfile.h:27
Definition wmo.h:47
std::unordered_set< uint16 > References
Definition wmo.h:74
std::vector< WMO::MODS > Sets
Definition wmo.h:71
std::vector< WMO::MODD > Spawns
Definition wmo.h:73
std::unique_ptr< char[]> Paths
Definition wmo.h:72
float pos_z
Definition wmo.h:104
float pos_y
Definition wmo.h:103
short material
Definition wmo.h:105
float pos_x
Definition wmo.h:102
uint16 unk2
Definition wmo.h:111
uint16 unk1
Definition wmo.h:110
float height
Definition wmo.h:112
uint32 Color
Definition wmo.h:62
Quaternion Rotation
Definition wmo.h:60
uint32 NameIndex
Definition wmo.h:58
float Scale
Definition wmo.h:61
Vec3D Position
Definition wmo.h:59
uint32 StartIndex
Definition wmo.h:51
uint32 Count
Definition wmo.h:52
char _pad[4]
Definition wmo.h:53
char Name[20]
Definition wmo.h:50
bool preciseVectorData
MopyFlags
Definition wmo.h:30
@ WMO_MATERIAL_DETAIL
Definition wmo.h:33
@ WMO_MATERIAL_COLLISION
Definition wmo.h:34
@ WMO_MATERIAL_RENDER
Definition wmo.h:36
@ WMO_MATERIAL_UNK01
Definition wmo.h:31
@ WMO_MATERIAL_WALL_SURFACE
Definition wmo.h:37
@ WMO_MATERIAL_COLLIDE_HIT
Definition wmo.h:38
@ WMO_MATERIAL_NOCAMCOLLIDE
Definition wmo.h:32
@ WMO_MATERIAL_HINT
Definition wmo.h:35
static Vec3D fixCoords(Vec3D const &v)
Definition wmo.h:67