Skip to content

Commit 2e74ebe

Browse files
committed
优化viewer
1 parent 42a7d97 commit 2e74ebe

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

Live2DViewer/Live2DView.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
#include <QSlider>
99
#include <QTreeWidgetItem>
1010

11-
12-
1311
Live2DView::Live2DView(const QString &filePath, QWidget *parent) : QWidget(parent), hasCdi(false), syncTimer(this), selectedPartIndex(-1)
1412
{
1513
ui.setupUi(this);
@@ -77,11 +75,22 @@ void Live2DView::initMotions(Model *model)
7775
item->setText(0, "Motions");
7876
ui.treeWidget->addTopLevelItem(item);
7977

80-
model->GetMotions(item,
81-
[](void *collector, const char *group, int no, const char *file, const char*)
78+
QMap<QString, QTreeWidgetItem *> groups;
79+
void *collector[2] = {item, &groups};
80+
model->GetMotions(collector,
81+
[](void *collector, const char *group, int no, const char *file, const char *)
8282
{
83-
QTreeWidgetItem *topLevel = (QTreeWidgetItem *)collector;
84-
QTreeWidgetItem *item = new QTreeWidgetItem(topLevel);
83+
QTreeWidgetItem *topLevel = (QTreeWidgetItem *)(((void **)collector)[0]);
84+
QMap<QString, QTreeWidgetItem *> *groups = (QMap<QString, QTreeWidgetItem *> *)(((void **)collector)[1]);
85+
QTreeWidgetItem *groupItem;
86+
if (!groups->contains(group))
87+
{
88+
groupItem = new QTreeWidgetItem(topLevel);
89+
groupItem->setText(0, group);
90+
groups->insert(group, groupItem);
91+
}
92+
groupItem = groups->value(group);
93+
QTreeWidgetItem *item = new QTreeWidgetItem(groupItem);
8594
QFileInfo info(file);
8695
item->setText(0, info.fileName());
8796
item->setData(0, Qt::UserRole, QVariant(group));
@@ -102,7 +111,7 @@ void Live2DView::onTreeItemDoubleClicked(QTreeWidgetItem *item, int column)
102111
{
103112
model->SetExpression(item->data(0, Qt::UserRole).toString().toStdString().c_str());
104113
}
105-
else if (item->parent()->text(0) == "Motions")
114+
else if (item->parent()->parent() != nullptr && item->parent()->parent()->text(0) == "Motions")
106115
{
107116
model->StartMotion(item->data(0, Qt::UserRole).toString().toStdString().c_str(), item->data(0, Qt::UserRole + 1).toInt());
108117
}

package/main_pygame_fine_grained.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
expressions = model.GetExpressions()
5858
print(expressions)
5959

60+
# only motions that are defined in model3.json
61+
# extra motions are not included
6062
motions = model.GetMotions()
6163
print(motions)
6264

0 commit comments

Comments
 (0)