diff options
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp')
| -rw-r--r-- | tools/ArtistTools/source/BlastPlugin/Window/FileReferencesPanel.cpp | 520 |
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(); } |