WoW Model Viewer
Your premiere tool for viewing, equipping and animating World of Warcraft models.
Loading...
Searching...
No Matches
CharDetails.h
Go to the documentation of this file.
1/*
2* CharDetails.h
3*
4* Created on: 26 oct. 2013
5*
6*/
7
8#pragma once
9
10#include <set>
11#include <string>
12
13#include "CharTexture.h"
14#include "database.h"
15#include "RaceInfos.h"
16#include "types.h"
17#include "wow_enums.h"
18
19#include "Observable.h"
20
21#include "pugixml.hpp"
22
23class WoWModel;
24
29class CharDetails : public Observable
30{
31public:
33
34 // Types
46
47 // Types
67
80
90
92
94
95 bool isNPC;
96
97 std::map<uint, uint> geosets; // map <geoset type, geosetid>
98 std::vector<TextureCustomization> textures;
99
100 // save + load
101 void save(pugi::xml_node& parentNode);
102 void load(const std::string& filepath);
103
104 void reset(WoWModel* m = nullptr);
105 void randomise();
106
107 // accessors to customization
111
113 bool isDemonHunter() const { return isDemonHunter_; }
114
115 void refresh();
116
117private:
119
122
123 std::map<uint, uint> currentCustomization_; // map <ChrCustomizationOption::ID, ChrCustomizationChoice::ID>
124
126 {
127 public:
128 std::vector<std::pair<uint, uint>> geosets; // std::vector<std::pair<GeosetType, GeosetID>>
129 std::vector<TextureCustomization> textures;
130 std::vector<std::pair<uint, std::pair<uint, uint>>> models;
131 // std::vector<std::pair<GameFileId, std::pair<GeosetType, GeosetID>>>
132 void clear()
133 {
134 geosets.clear();
135 textures.clear();
136 models.clear();
137 }
138 };
139
142 static int bitMaskToSectionType(int mask);
143 void refreshGeosets();
144 void refreshTextures();
146
147 std::map<uint, std::vector<uint>> choicesPerOptionMap_;
148 // map < ChrCustomizationOption::ID, vector <ChrCustomizationChoice::ID> >
149 std::set<uint> defaultOptionIds_;
150 // options without Flags & 0x20 get a default choice on reset (matches wow.export)
151 std::map<uint, CustomizationElements> customizationElementsPerOption_;
152 // keep track of current elements applied for a given option
153 std::vector<std::pair<uint, std::pair<uint, uint>>> models_;
154 // vector < pair < GameFileId, pair <GeosetType, GeosetID> > >
155};
std::vector< std::pair< uint, uint > > geosets
std::vector< TextureCustomization > textures
std::vector< std::pair< uint, std::pair< uint, uint > > > models
Manages character customisation options (skin, face, hair, etc.).
Definition CharDetails.h:30
void rebuildAllCustomizationElements()
bool isDemonHunter() const
EyeGlowTypes eyeGlowType
Definition CharDetails.h:91
std::map< uint, CustomizationElements > customizationElementsPerOption_
void setDemonHunterMode(bool val)
void save(pugi::xml_node &parentNode)
WoWModel * model_
void set(uint chrCustomizationOptionID, uint chrCustomizationChoiceID)
static int bitMaskToSectionType(int mask)
@ FACIAL_CUSTOMIZATION_STYLE
Definition CharDetails.h:72
@ ADDITIONAL_FACIAL_CUSTOMIZATION
Definition CharDetails.h:74
@ FACIAL_CUSTOMIZATION_COLOR
Definition CharDetails.h:73
void reset(WoWModel *m=nullptr)
void refreshGeosets()
std::map< uint, std::vector< uint > > choicesPerOptionMap_
bool showFacialHair
Definition CharDetails.h:93
std::set< uint > defaultOptionIds_
bool showUnderwear
Definition CharDetails.h:93
void refreshSkinnedModels()
bool autoHideGeosetsForHeadItems
Definition CharDetails.h:93
void fillCustomizationMap()
std::map< uint, uint > currentCustomization_
void refreshTextures()
std::map< uint, uint > geosets
Definition CharDetails.h:97
bool isDemonHunter_
void fillCustomizationMapForOption(uint chrCustomizationOption)
uint get(uint chrCustomizationOptionID) const
std::vector< uint > getCustomizationChoices(const uint chrCustomizationOptionID)
std::vector< TextureCustomization > textures
Definition CharDetails.h:98
std::vector< std::pair< uint, std::pair< uint, uint > > > models_
void load(const std::string &filepath)
Subject in the Observer pattern; maintains a list of Observer subscribers.
Definition Observable.h:12
Core WoW .m2 model: geometry, animation, textures, and character data.
Definition WoWModel.h:50
unsigned int uint
Definition types.h:36
EyeGlowTypes
Definition wow_enums.h:333