61{
62 printf("Extracting GameObject models...");
63 DBCFile dbc(
"DBFilesClient\\GameObjectDisplayInfo.dbc");
64 if (!dbc.open())
65 {
66 printf("Fatal error: Invalid GameObjectDisplayInfo.dbc file format!\n");
67 exit(1);
68 }
69
71 basepath += "/";
72 std::string path;
73
74 std::string modelListPath = basepath + "temp_gameobject_models";
75 FILE*
model_list = fopen(modelListPath.c_str(),
"wb");
77 {
78 printf("Fatal error: Could not open file %s\n", modelListPath.c_str());
79 return;
80 }
81
83
84 for (const auto & it : dbc)
85 {
86 path = it.getString(1);
87
88 if (path.length() < 4)
89 continue;
90
91 fixnamen((
char*)path.c_str(), path.size());
94
96 if (!ch_ext)
97 continue;
98
100
101 bool result = false;
103 if (!strcmp(ch_ext, ".wmo"))
104 {
105 isWmo = 1;
107 }
108 else if (!strcmp(ch_ext, ".mdl"))
109 {
111 continue;
112 }
113 else
114 {
116 }
117
118 if (result)
119 {
120 uint32 displayId = it.getUInt(0);
121 uint32 path_length = strlen(name);
125 fwrite(name,
sizeof(
char), path_length,
model_list);
126 }
127 }
128
130
131 printf("Done!\n");
132}
ModelList model_list
Definition: GameObjectModel.cpp:43
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
void strToLower(std::string &str)
Definition: Util.cpp:384
void fixnamen(char *name, size_t len)
Definition: adtfile.cpp:45
void fixname2(char *name, size_t len)
Definition: adtfile.cpp:63
char const * GetPlainName(char const *FileName)
Definition: adtfile.cpp:27
char * GetExtension(char *FileName)
Definition: adtfile.cpp:73
bool ExtractSingleModel(std::string &fname)
Definition: gameobject_extract.cpp:25
char const * szWorkDirWmo
Definition: vmapexport.cpp:68
bool ExtractSingleWmo(std::string &fname)
Definition: vmapexport.cpp:98
const char RAW_VMAP_MAGIC[]
Definition: VMapDefinitions.h:27