Skip to content

Commit 7d0e9e1

Browse files
committed
More texture tool fixes and allow the tool to be opened without behavior workspace
1 parent 6e554f5 commit 7d0e9e1

File tree

7 files changed

+192
-209
lines changed

7 files changed

+192
-209
lines changed

gui/src/hkx/ResourceManager.cpp

Lines changed: 122 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -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

171173
ResourceManager::~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
}

gui/src/hkx/ResourceManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ namespace ckcmd {
187187
QStringList assetsList(int project_index, AssetType type);
188188
QStringList clipList(int project_index);
189189
QStringList clipAnimationsList(int project_index);
190-
QStringList attackEventList(int project_index);
190+
QStringList eventList(int project_index, bool attacksOnly);
191191
QStringList wordVariableList(int project_index);
192192

193193
/* CACHE SETS */

gui/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ int main(int argc, char *argv[])
387387
return 1; // Error, for example
388388
}
389389
Settings.set("/general/workspace_folder", launcher._workspace_folder);
390-
workspace_path = launcher._workspace_folder.toStdString();
390+
workspace_path = launcher._workspace_folder.toUtf8().constData();
391391
}
392392

393393
//Check if the workspace is empty

gui/src/models/ProjectModel.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -575,23 +575,24 @@ QAbstractItemModel* ProjectModel::editModel(const QModelIndex& index, AssetType
575575
}
576576
else if (AssetType::events == type)
577577
{
578-
auto top_behavior_index = getChildAssetProxy(index, NodeType::BehaviorHkxNode);
579-
if (top_behavior_index.isValid())
580-
{
581-
if (AssetType::events == type)
582-
{
583-
auto events_node = getChildAssetProxy(top_behavior_index, NodeType::behaviorEventNames);
584-
if (events_node.isValid())
585-
return new SelectionProxyModel(this, events_node);
586-
}
587-
}
588-
return nullptr;
578+
//auto top_behavior_index = getChildAssetProxy(index, NodeType::BehaviorHkxNode);
579+
//if (top_behavior_index.isValid())
580+
//{
581+
// if (AssetType::events == type)
582+
// {
583+
// auto events_node = getChildAssetProxy(top_behavior_index, NodeType::behaviorEventNames);
584+
// if (events_node.isValid())
585+
// return new SelectionProxyModel(this, events_node);
586+
// }
587+
//}
588+
//return nullptr;
589+
return new StringListModel(_resourceManager.eventList(edge._project, false));
589590
}
590591
else if (AssetType::variable_words == type) {
591592
return new StringListModel(_resourceManager.wordVariableList(edge._project));
592593
}
593594
else if (AssetType::attack_events == type) {
594-
return new StringListModel(_resourceManager.attackEventList(edge._project));
595+
return new StringListModel(_resourceManager.eventList(edge._project, true));
595596
}
596597
else if (AssetType::clips == type) {
597598
return new StringListModel(_resourceManager.clipList(edge._project));

gui/src/widgets/TextureTool.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,14 @@ void TextureTool::on_folderLineEdit_textChanged(const QString& text)
5454
{
5555
_proxyModel->setFilterFixedString(pattern);
5656
nifView->expandAll();
57+
nifView->resizeColumnToContents(0);
5758
}
5859
);
5960

6061
nifView->setModel(_proxyModel.get());
6162
nifView->setVisible(false);
62-
nifView->resizeColumnToContents(0);
6363
nifView->expandAll();
64+
nifView->resizeColumnToContents(0);
6465
nifView->setVisible(true);
6566

6667
connect(nifView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TextureTool::on_nifView_selectionChanged);

0 commit comments

Comments
 (0)