@@ -47,125 +47,127 @@ ResourceManager::ResourceManager(WorkspaceConfig& workspace) :
4747 scanWorkspace ();
4848 }
4949
50- _charactersNames = _workspace.getCharacterProjects ();
51- for (auto & character : _charactersNames)
50+ if (!_workspace.empty ())
5251 {
53- _characters.push_back (_workspace.getFolder () / character.toUtf8 ().constData ());
54- }
52+ _charactersNames = _workspace.getCharacterProjects ();
53+ for (auto & character : _charactersNames)
54+ {
55+ _characters.push_back (_workspace.getFolder () / character.toUtf8 ().constData ());
56+ }
5557
56- _miscellaneousNames = _workspace.getMiscellaneousProjects ();
57- for (auto & misc : _miscellaneousNames)
58- {
59- _miscellaneous.push_back (_workspace.getFolder () / misc.toUtf8 ().constData ());
60- }
58+ _miscellaneousNames = _workspace.getMiscellaneousProjects ();
59+ for (auto & misc : _miscellaneousNames)
60+ {
61+ _miscellaneous.push_back (_workspace.getFolder () / misc.toUtf8 ().constData ());
62+ }
6163
62- _esp = new Collection ((char * const )_workspace.getFolder ().string ().c_str (), 3 );
64+ _esp = new Collection ((char * const )_workspace.getFolder ().string ().c_str (), 3 );
6365
64- ModFlags masterFlags = ModFlags (0xA );
65- ModFile* skyrimMod = _esp->AddMod (" creatures.esp" , masterFlags);
66+ ModFlags masterFlags = ModFlags (0xA );
67+ ModFile* skyrimMod = _esp->AddMod (" creatures.esp" , masterFlags);
6668
67- char * argvv[4 ];
68- argvv[0 ] = new char ();
69- argvv[1 ] = new char ();
70- argvv[2 ] = new char ();
71- argvv[3 ] = new char ();
72- logger.init (4 , argvv);
69+ char * argvv[4 ];
70+ argvv[0 ] = new char ();
71+ argvv[1 ] = new char ();
72+ argvv[2 ] = new char ();
73+ argvv[3 ] = new char ();
74+ logger.init (4 , argvv);
7375
74- _esp->Load ();
76+ _esp->Load ();
7577
76- // find children classes;
77- hkDefaultClassNameRegistry& defaultRegistry = hkDefaultClassNameRegistry::getInstance ();
78- hkArray<const hkClass*> classes;
79- defaultRegistry.getClasses (classes);
80- for (int i = 0 ; i < classes.getSize (); ++i)
81- {
82- // bool isParent = false;
83- // for (int j = 0; j < classes.getSize(); ++j)
78+ // find children classes;
79+ hkDefaultClassNameRegistry& defaultRegistry = hkDefaultClassNameRegistry::getInstance ();
80+ hkArray<const hkClass*> classes;
81+ defaultRegistry.getClasses (classes);
82+ for (int i = 0 ; i < classes.getSize (); ++i)
83+ {
84+ // bool isParent = false;
85+ // for (int j = 0; j < classes.getSize(); ++j)
86+ // {
87+ // if (classes[j]->getParent() == classes[i])
88+ // {
89+ // isParent = true;
90+ // break;
91+ // }
92+ // }
93+ bool not_serializable = classes[i]->getFlags ().allAreSet (hkClass::FLAGS_NOT_SERIALIZABLE);
94+ if (!not_serializable)
95+ _concreate_classes.push_back (classes[i]);
96+ }
97+
98+ // used to generate the Special members map
99+ // std::set<std::array<std::string, 3>> interesting_members;
100+ // std::set<std::string> interesting_classes;
101+ // for (int c = 0; c < _concreate_classes.size(); ++c)
84102 // {
85- // if (classes[j]->getParent() == classes[i])
103+ // for (size_t i = 0; i < _concreate_classes[c]->getNumMembers(); ++i) {
104+ // const auto& member_declaration = _concreate_classes[c]->getMember(i);
105+ // if (member_declaration.getFlags().get() & hkClassMember::SERIALIZE_IGNORED)
106+ // continue;
107+ // switch (member_declaration.getType()) {
108+ // case hkClassMember::TYPE_INT8:
109+ // case hkClassMember::TYPE_UINT8:
110+ // case hkClassMember::TYPE_INT16:
111+ // case hkClassMember::TYPE_UINT16:
112+ // case hkClassMember::TYPE_INT32:
113+ // case hkClassMember::TYPE_UINT32:
114+ // case hkClassMember::TYPE_INT64:
115+ // case hkClassMember::TYPE_UINT64:
116+ // interesting_classes.insert(std::string(_concreate_classes[c]->getName()) + "Class");
117+ // interesting_members.insert(
118+ // {
119+ // "&" + std::string(_concreate_classes[c]->getName()) + "Class",
120+ // std::to_string(i),
121+ // member_declaration.getName()
122+ // }
123+ // );
124+ // default:
125+ // break;
126+ // }
127+ // }
128+ // }
129+ // ofstream myfile;
130+ // myfile.open("int_class_members.txt");
131+ // for (auto& entry : interesting_classes)
132+ // {
133+ // myfile << "extern const hkClass " << entry << ";" << std::endl;
134+ // }
135+ // myfile << std::endl;
136+ // for (auto& entry : interesting_members)
137+ // {
138+ // std::string guessed_type = "MemberIndexType::Invalid";
139+ // if (
140+ // entry[0].find("ragdoll") != string::npos || entry[0].find("Ragdoll") != string::npos ||
141+ // entry[2].find("ragdoll") != string::npos || entry[2].find("Ragdoll") != string::npos
142+ // )
143+ // {
144+ // guessed_type = "MemberIndexType::ragdollBoneIndex";
145+ // }
146+ // else if (
147+ // entry[0].find("bone") != string::npos || entry[0].find("Bone") != string::npos ||
148+ // entry[2].find("bone") != string::npos || entry[2].find("Bone") != string::npos
149+ // )
150+ // {
151+ // guessed_type = "MemberIndexType::boneIndex";
152+ // }
153+ // else if (
154+ // entry[0].find("event") != string::npos || entry[0].find("Event") != string::npos ||
155+ // entry[2].find("event") != string::npos || entry[2].find("Event") != string::npos
156+ // )
86157 // {
87- // isParent = true;
88- // break;
158+ // guessed_type = "MemberIndexType::eventIndex";
89159 // }
160+ // else if (
161+ // entry[0].find("variable") != string::npos || entry[0].find("Variable") != string::npos ||
162+ // entry[2].find("variable") != string::npos || entry[2].find("Variable") != string::npos
163+ // )
164+ // {
165+ // guessed_type = "MemberIndexType::variableIndex";
166+ // }
167+ // myfile << "\t{{" << entry[0] << "," << entry[1] << "}, " << guessed_type <<"}, //" << entry[2] << std::endl;
90168 // }
91- bool not_serializable = classes[i]->getFlags ().allAreSet (hkClass::FLAGS_NOT_SERIALIZABLE);
92- if (!not_serializable)
93- _concreate_classes.push_back (classes[i]);
94- }
95-
96- // used to generate the Special members map
97- // std::set<std::array<std::string, 3>> interesting_members;
98- // std::set<std::string> interesting_classes;
99- // for (int c = 0; c < _concreate_classes.size(); ++c)
100- // {
101- // for (size_t i = 0; i < _concreate_classes[c]->getNumMembers(); ++i) {
102- // const auto& member_declaration = _concreate_classes[c]->getMember(i);
103- // if (member_declaration.getFlags().get() & hkClassMember::SERIALIZE_IGNORED)
104- // continue;
105- // switch (member_declaration.getType()) {
106- // case hkClassMember::TYPE_INT8:
107- // case hkClassMember::TYPE_UINT8:
108- // case hkClassMember::TYPE_INT16:
109- // case hkClassMember::TYPE_UINT16:
110- // case hkClassMember::TYPE_INT32:
111- // case hkClassMember::TYPE_UINT32:
112- // case hkClassMember::TYPE_INT64:
113- // case hkClassMember::TYPE_UINT64:
114- // interesting_classes.insert(std::string(_concreate_classes[c]->getName()) + "Class");
115- // interesting_members.insert(
116- // {
117- // "&" + std::string(_concreate_classes[c]->getName()) + "Class",
118- // std::to_string(i),
119- // member_declaration.getName()
120- // }
121- // );
122- // default:
123- // break;
124- // }
125- // }
126- // }
127- // ofstream myfile;
128- // myfile.open("int_class_members.txt");
129- // for (auto& entry : interesting_classes)
130- // {
131- // myfile << "extern const hkClass " << entry << ";" << std::endl;
132- // }
133- // myfile << std::endl;
134- // for (auto& entry : interesting_members)
135- // {
136- // std::string guessed_type = "MemberIndexType::Invalid";
137- // if (
138- // entry[0].find("ragdoll") != string::npos || entry[0].find("Ragdoll") != string::npos ||
139- // entry[2].find("ragdoll") != string::npos || entry[2].find("Ragdoll") != string::npos
140- // )
141- // {
142- // guessed_type = "MemberIndexType::ragdollBoneIndex";
143- // }
144- // else if (
145- // entry[0].find("bone") != string::npos || entry[0].find("Bone") != string::npos ||
146- // entry[2].find("bone") != string::npos || entry[2].find("Bone") != string::npos
147- // )
148- // {
149- // guessed_type = "MemberIndexType::boneIndex";
150- // }
151- // else if (
152- // entry[0].find("event") != string::npos || entry[0].find("Event") != string::npos ||
153- // entry[2].find("event") != string::npos || entry[2].find("Event") != string::npos
154- // )
155- // {
156- // guessed_type = "MemberIndexType::eventIndex";
157- // }
158- // else if (
159- // entry[0].find("variable") != string::npos || entry[0].find("Variable") != string::npos ||
160- // entry[2].find("variable") != string::npos || entry[2].find("Variable") != string::npos
161- // )
162- // {
163- // guessed_type = "MemberIndexType::variableIndex";
164- // }
165- // myfile << "\t{{" << entry[0] << "," << entry[1] << "}, " << guessed_type <<"}, //" << entry[2] << std::endl;
166- // }
167- // myfile.close();
168-
169+ // myfile.close();
170+ }
169171}
170172
171173ResourceManager::~ResourceManager ()
@@ -1263,7 +1265,7 @@ QStringList ResourceManager::clipAnimationsList(int project_index)
12631265 return out.toList ();
12641266}
12651267
1266- QStringList ResourceManager::attackEventList (int project_index)
1268+ QStringList ResourceManager::eventList (int project_index, bool attacksOnly )
12671269{
12681270 HKXWrapper wrap;
12691271 QSet<QString> out;
@@ -1287,13 +1289,18 @@ QStringList ResourceManager::attackEventList(int project_index)
12871289 for (int e = 0 ; e < string_data->m_eventNames .getSize (); ++e)
12881290 {
12891291 QString eventName = string_data->m_eventNames [e].cString ();
1290- if (
1291- eventName.startsWith (" attackStart" ) ||
1292- eventName.startsWith (" attackPowerStart" ) ||
1293- eventName.startsWith (" bashStart" ) ||
1294- eventName.startsWith (" bashPowerStart" )
1295- )
1292+ if (attacksOnly)
12961293 {
1294+ if (eventName.startsWith (" attackStart" ) ||
1295+ eventName.startsWith (" attackPowerStart" ) ||
1296+ eventName.startsWith (" bashStart" ) ||
1297+ eventName.startsWith (" bashPowerStart" )
1298+ )
1299+ {
1300+ out << eventName;
1301+ }
1302+ }
1303+ else {
12971304 out << eventName;
12981305 }
12991306 }
0 commit comments