aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp')
-rw-r--r--tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp520
1 files changed, 473 insertions, 47 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp b/tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp
index 62b294c..235dd23 100644
--- a/tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp
+++ b/tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp
@@ -6,20 +6,38 @@
#include <QtCore/QFile>
#include <QtCore/QDebug>
#include "GlobalSettings.h"
+#include "SampleManager.h"
+#include "ViewerOutput.h"
+
+FileReferencesPanel* gFileReferencesPanel = nullptr;
+FileReferencesPanel* FileReferencesPanel::ins()
+{
+ return gFileReferencesPanel;
+}
FileReferencesPanel::FileReferencesPanel(QWidget *parent)
: QWidget(parent)
, ui(new Ui::FileReferencesPanel)
- , _saveFBX(true)
- , _saveBlast(true)
- , _saveCollision(true)
{
ui->setupUi(this);
ui->lineEditFBXSourceAsset->setReadOnly(true);
- ui->checkBoxFBX->setChecked(_saveFBX);
- ui->checkBoxBlast->setChecked(_saveBlast);
- ui->checkBoxCollision->setChecked(_saveCollision);
+ ui->lineEditFBX->setText("New.fbx");
+ ui->lineEditObj->setText("New.obj");
+ ui->lineEditCollision->setText("New.repx");
+ ui->lineEditLLAsset->setText("Newll.blast");
+ ui->lineEditTKAsset->setText("Newtk.blast");
+ ui->lineEditBPXA->setText("New.blast");
+ bValid = false;
+ ui->checkBoxFBX->setChecked(false);
+ ui->checkBoxObj->setChecked(false);
+ ui->checkBoxCollision->setChecked(false);
+ ui->checkBoxLLAsset->setChecked(false);
+ ui->checkBoxTKAsset->setChecked(false);
+ ui->checkBoxBPXA->setChecked(false);
+ bValid = true;
+
+ gFileReferencesPanel = this;
updateValues();
}
@@ -39,40 +57,113 @@ void FileReferencesPanel::updateValues()
else
ui->lineEditFBXSourceAsset->setText("");
- GlobalSettings& globalSettings = GlobalSettings::Inst();
- QString projectFileName = globalSettings.m_projectFileName.c_str();
+ ui->lineEditFBX->setText("");
+ ui->lineEditObj->setText("");
+ ui->lineEditCollision->setText("");
+ ui->lineEditLLAsset->setText("");
+ ui->lineEditTKAsset->setText("");
+ ui->lineEditBPXA->setText("");
+ bValid = false;
+ ui->checkBoxFBX->setChecked(false);
+ ui->checkBoxObj->setChecked(false);
+ ui->checkBoxCollision->setChecked(false);
+ ui->checkBoxLLAsset->setChecked(false);
+ ui->checkBoxTKAsset->setChecked(false);
+ ui->checkBoxBPXA->setChecked(false);
+ bValid = true;
- if (projectFileName.isEmpty())
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
{
- ui->lineEditFBX->setText("New.fbx");
- ui->lineEditBlast->setText("New.Blast");
- ui->lineEditCollision->setText("New.repx");
+ return;
}
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ BPPAsset asset;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ asset = assetArray.buf[aaas];
+ std::string assetname = asset.name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ QFileInfo fileInfo(modelAsset.name.c_str());
+
+ if (asset.fbx.buf != nullptr)
+ ui->lineEditFBX->setText(asset.fbx.buf);
+ else
+ {
+ ui->lineEditFBX->setText(fileInfo.baseName() + "_New.fbx");
+ }
+
+ if (asset.obj.buf != nullptr)
+ ui->lineEditObj->setText(asset.obj.buf);
else
{
- QFileInfo fileInfo(projectFileName);
-
- if (fileReferences.fbx.buf != nullptr)
- ui->lineEditFBX->setText(fileReferences.fbx.buf);
- else
- {
- ui->lineEditFBX->setText(fileInfo.baseName() + " New.fbx");
- }
-
- if (fileReferences.blast.buf != nullptr)
- ui->lineEditBlast->setText(fileReferences.blast.buf);
- else
- {
- ui->lineEditBlast->setText(fileInfo.baseName() + " New.Blast");
- }
-
- if (fileReferences.collision.buf != nullptr)
- ui->lineEditCollision->setText(fileReferences.collision.buf);
- else
- {
- ui->lineEditCollision->setText(fileInfo.baseName() + " New.repX");
- }
+ ui->lineEditObj->setText(fileInfo.baseName() + "_New.obj");
}
+
+ if (asset.collision.buf != nullptr)
+ ui->lineEditCollision->setText(asset.collision.buf);
+ else
+ {
+ ui->lineEditCollision->setText(fileInfo.baseName() + "_New.repx");
+ }
+
+ if (asset.llasset.buf != nullptr)
+ ui->lineEditLLAsset->setText(asset.llasset.buf);
+ else
+ {
+ ui->lineEditLLAsset->setText(fileInfo.baseName() + "_Newll.blast");
+ }
+
+ if (asset.tkasset.buf != nullptr)
+ ui->lineEditTKAsset->setText(asset.tkasset.buf);
+ else
+ {
+ ui->lineEditTKAsset->setText(fileInfo.baseName() + "_Newtk.blast");
+ }
+
+ if (asset.bpxa.buf != nullptr)
+ ui->lineEditBPXA->setText(asset.bpxa.buf);
+ else
+ {
+ ui->lineEditBPXA->setText(fileInfo.baseName() + "_New.blast");
+ }
+
+ bValid = false;
+ ui->checkBoxFBX->setChecked(asset.exportFBX);
+ ui->checkBoxObj->setChecked(asset.exportOBJ);
+ ui->checkBoxCollision->setChecked(asset.exportCollision);
+ ui->checkBoxLLAsset->setChecked(asset.exportLLAsset);
+ ui->checkBoxTKAsset->setChecked(asset.exportTKAsset);
+ ui->checkBoxBPXA->setChecked(asset.exportBPXA);
+ bValid = true;
}
void FileReferencesPanel::on_btnOpenFile_clicked()
@@ -108,17 +199,310 @@ void FileReferencesPanel::on_btnRemove_clicked()
void FileReferencesPanel::on_checkBoxFBX_stateChanged(int arg1)
{
- _saveFBX = (arg1 == 0 ? false : true);
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportFBX = ui->checkBoxFBX->isChecked();
}
-void FileReferencesPanel::on_checkBoxBlast_stateChanged(int arg1)
+void FileReferencesPanel::on_checkBoxObj_stateChanged(int arg1)
{
- _saveBlast = (arg1 == 0 ? false : true);
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportOBJ = ui->checkBoxObj->isChecked();
}
void FileReferencesPanel::on_checkBoxCollision_stateChanged(int arg1)
{
- _saveCollision = (arg1 == 0 ? false : true);
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportCollision = ui->checkBoxCollision->isChecked();
+}
+
+void FileReferencesPanel::on_checkBoxLLAsset_stateChanged(int arg1)
+{
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportLLAsset = ui->checkBoxLLAsset->isChecked();
+}
+
+void FileReferencesPanel::on_checkBoxTKAsset_stateChanged(int arg1)
+{
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportTKAsset = ui->checkBoxTKAsset->isChecked();
+}
+
+void FileReferencesPanel::on_checkBoxBPXA_stateChanged(int arg1)
+{
+ if (!bValid)
+ {
+ return;
+ }
+
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
+ {
+ return;
+ }
+
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
+ {
+ return;
+ }
+
+ BPParams& projectParams = BlastProject::ins().getParams();
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
+ {
+ return;
+ }
+
+ BPPAsset& asset = assetArray.buf[aaas];
+ asset.exportBPXA = ui->checkBoxBPXA->isChecked();
+
+ if (asset.exportBPXA)
+ {
+ bValid = false;
+ ui->checkBoxObj->setChecked(true);
+ asset.exportOBJ = true;
+ bValid = true;
+ }
}
void FileReferencesPanel::on_btnSave_clicked()
@@ -128,21 +512,63 @@ void FileReferencesPanel::on_btnSave_clicked()
copy(fileReferences.fbxSourceAsset, ui->lineEditFBXSourceAsset->text().toUtf8().data());
- if (_saveFBX)
+ SampleManager* pSampleManager = SampleManager::ins();
+ if (pSampleManager == nullptr)
+ {
+ return;
+ }
+
+ BlastAsset* pBlastAsset = pSampleManager->getCurBlastAsset();
+ if (pBlastAsset == nullptr)
+ {
+ return;
+ }
+
+ std::map<BlastAsset*, AssetList::ModelAsset>& AssetDescMap = pSampleManager->getAssetDescMap();
+ std::map<BlastAsset*, AssetList::ModelAsset>::iterator itADM = AssetDescMap.find(pBlastAsset);
+ if (itADM == AssetDescMap.end())
{
- copy(fileReferences.fbx, ui->lineEditFBX->text().toUtf8().data());
- // to do: save fbx file
+ return;
}
- if (_saveBlast)
+ AssetList::ModelAsset modelAsset = itADM->second;
+ if (modelAsset.name.empty())
{
- copy(fileReferences.blast, ui->lineEditBlast->text().toUtf8().data());
- // to do: save blast file
+ return;
}
- if (_saveCollision)
+ BPPAssetArray& assetArray = projectParams.blast.blastAssets;
+ int aaas = 0;
+ for (; aaas < assetArray.arraySizes[0]; aaas++)
+ {
+ std::string assetname = assetArray.buf[aaas].name;
+ if (assetname == modelAsset.name)
+ break;
+ }
+ if (aaas == assetArray.arraySizes[0])
{
- copy(fileReferences.collision, ui->lineEditCollision->text().toUtf8().data());
- // to do: save collision file
+ return;
}
+
+ BPPAsset& asset = assetArray.buf[aaas];
+
+ copy(asset.fbx, ui->lineEditFBX->text().toUtf8().data());
+ asset.exportFBX = ui->checkBoxFBX->isChecked();
+
+ copy(asset.obj, ui->lineEditObj->text().toUtf8().data());
+ asset.exportOBJ = ui->checkBoxObj->isChecked();
+
+ copy(asset.collision, ui->lineEditCollision->text().toUtf8().data());
+ asset.exportCollision = ui->checkBoxCollision->isChecked();
+
+ copy(asset.llasset, ui->lineEditLLAsset->text().toUtf8().data());
+ asset.exportLLAsset = ui->checkBoxLLAsset->isChecked();
+
+ copy(asset.tkasset, ui->lineEditTKAsset->text().toUtf8().data());
+ asset.exportTKAsset = ui->checkBoxTKAsset->isChecked();
+
+ copy(asset.bpxa, ui->lineEditBPXA->text().toUtf8().data());
+ asset.exportBPXA = ui->checkBoxBPXA->isChecked();
+
+ SampleManager::ins()->exportAsset();
}