1f9b284de2
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> # Conflicts: # Code/Editor/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin_precompiled.h # Code/Editor/Plugins/EditorCommon/EditorCommon_precompiled.h # Code/Editor/Plugins/EditorCommon/stdafx.cpp # Code/Editor/Plugins/FFMPEGPlugin/FFMPEGPlugin_precompiled.h # Code/Editor/Plugins/PerforcePlugin/PerforcePlugin_precompiled.h # Code/Editor/Plugins/ProjectSettingsTool/ProjectSettingsTool_precompiled.h # Code/Framework/AzToolsFramework/AzToolsFramework/AzToolsFramework_precompiled.h # Code/Tools/AssetProcessor/native/precompiled.h # Code/Tools/Standalone/StandaloneTools_precompiled.h # Gems/AssetMemoryAnalyzer/Code/Source/AssetMemoryAnalyzer_precompiled.h # Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageProcessing_precompiled.h # Gems/Atom/RHI/DX12/Code/Source/RHI/Atom_RHI_DX12_precompiled.h # Gems/Atom/RHI/Metal/Code/Include/Platform/Mac/Atom_RHI_Metal_precompiled_Platform.h # Gems/Atom/RHI/Metal/Code/Include/Platform/iOS/Atom_RHI_Metal_precompiled_Platform.h # Gems/Atom/RHI/Metal/Code/Source/Atom_RHI_Metal_precompiled.h # Gems/Atom/RHI/Metal/Code/atom_rhi_metal_common_files.cmake # Gems/Atom/RHI/Null/Code/Source/Atom_RHI_Null_precompiled.h # Gems/Atom/RHI/Null/Code/atom_rhi_null_common_files.cmake # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Android/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Linux/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Mac/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Windows/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Source/Atom_RHI_Vulkan_precompiled.h # Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp # Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_common_files.cmake # Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/AtomFont_precompiled.h # Gems/Blast/Code/Source/StdAfx.cpp # Gems/Camera/Code/Source/Camera_precompiled.h # Gems/EMotionFX/Code/Source/EMotionFX_precompiled.h # Gems/FastNoise/Code/Source/FastNoise_precompiled.h # Gems/Gestures/Code/Source/Gestures_precompiled.h # Gems/GradientSignal/Code/Source/GradientSignal_precompiled.h # Gems/GraphCanvas/Code/precompiled.h # Gems/ImGui/Code/Source/ImGui_precompiled.h # Gems/InAppPurchases/Code/Source/InAppPurchases_precompiled.h # Gems/LmbrCentral/Code/Source/LmbrCentral_precompiled.h # Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp # Gems/LyShine/Code/Editor/UiCanvasEditor_precompiled.h # Gems/LyShine/Code/Source/Animation/LyShine_precompiled.h # Gems/LyShine/Code/Source/LyShine_precompiled.h # Gems/LyShineExamples/Code/Source/LyShineExamples_precompiled.h # Gems/Maestro/Code/Source/Cinematics/Maestro_precompiled.h # Gems/Maestro/Code/Source/Maestro_precompiled.h # Gems/MessagePopup/Code/Source/MessagePopup_precompiled.h # Gems/Metastream/Code/Source/Metastream_precompiled.h # Gems/Microphone/Code/Source/Microphone_precompiled.h # Gems/Multiplayer/Code/Source/Multiplayer_precompiled.h # Gems/PhysX/Code/NumericalMethods/Source/NumericalMethods_precompiled.h # Gems/PhysX/Code/Source/PhysXUnsupported_precompiled.h # Gems/PhysX/Code/Source/PhysX_precompiled.h # Gems/PhysX/Code/physx_unsupported_files.cmake # Gems/PhysXDebug/Code/Source/PhysXDebugUnsupported_precompiled.h # Gems/PhysXDebug/Code/Source/PhysXDebug_precompiled.h # Gems/ScriptCanvas/Code/Editor/precompiled.h # Gems/ScriptCanvas/Code/Source/precompiled.h # Gems/ScriptCanvasDeveloper/Code/Source/precompiled.h # Gems/ScriptCanvasPhysics/Code/Source/ScriptCanvasPhysics_precompiled.h # Gems/ScriptEvents/Code/Source/precompiled.h # Gems/ScriptEvents/Code/Tests/Editor/EditorTests.cpp # Gems/ScriptedEntityTweener/Code/Source/ScriptedEntityTweener_precompiled.h # Gems/SliceFavorites/Code/Source/SliceFavorites_precompiled.h # Gems/StartingPointCamera/Code/Source/StartingPointCamera_precompiled.h # Gems/StartingPointInput/Code/Source/StartingPointInput_precompiled.h # Gems/StartingPointMovement/Code/Source/StartingPointMovement_precompiled.h # Gems/SurfaceData/Code/Source/SurfaceData_precompiled.h # Gems/TextureAtlas/Code/Source/TextureAtlas_precompiled.h # Gems/TickBusOrderViewer/Code/Source/TickBusOrderViewer_precompiled.h # Gems/Twitch/Code/Source/Twitch_precompiled.h # Gems/VirtualGamepad/Code/Source/VirtualGamepad_precompiled.h # Gems/WhiteBox/Code/Source/WhiteBoxUnsupported_precompiled.h # Gems/WhiteBox/Code/Source/WhiteBox_precompiled.h
173 lines
4.7 KiB
C++
173 lines
4.7 KiB
C++
/*
|
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*
|
|
*/
|
|
|
|
|
|
#include "EditorDefs.h"
|
|
#include "UiAnimViewFindDlg.h"
|
|
#include "UiAnimViewDialog.h"
|
|
#include "UiAnimViewSequenceManager.h"
|
|
|
|
#include <LyShine/Animation/IUiAnimation.h>
|
|
#include <StringUtils.h>
|
|
#include <QtUtilWin.h>
|
|
|
|
#include <QListWidgetItem>
|
|
|
|
#include <Editor/Animation/ui_UiAnimViewFindDlg.h>
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUiAnimViewFindDlg dialog
|
|
|
|
|
|
CUiAnimViewFindDlg::CUiAnimViewFindDlg(const char* title, QWidget* pParent /*=NULL*/)
|
|
: QDialog(pParent)
|
|
, ui(new Ui::UiAnimViewFindDlg)
|
|
{
|
|
setWindowTitle(title);
|
|
|
|
m_tvDlg = 0;
|
|
m_numSeqs = 0;
|
|
|
|
ui->setupUi(this);
|
|
ui->LIST->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
|
connect(ui->OK, &QPushButton::clicked, this, &CUiAnimViewFindDlg::OnOK);
|
|
connect(ui->CANCEL, &QPushButton::clicked, this, &CUiAnimViewFindDlg::OnCancel);
|
|
connect(ui->FILTER, &QLineEdit::textEdited, this, &CUiAnimViewFindDlg::OnFilterChange);
|
|
connect(ui->LIST, &QListWidget::itemDoubleClicked, this, &CUiAnimViewFindDlg::OnItemDoubleClicked);
|
|
|
|
FillData();
|
|
}
|
|
|
|
CUiAnimViewFindDlg::~CUiAnimViewFindDlg()
|
|
{
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::FillData()
|
|
{
|
|
IUiAnimationSystem* animationSystem = nullptr;
|
|
EBUS_EVENT_RESULT(animationSystem, UiEditorAnimationBus, GetAnimationSystem);
|
|
|
|
m_numSeqs = 0;
|
|
m_objs.resize(0);
|
|
for (int k = 0; k < animationSystem->GetNumSequences(); ++k)
|
|
{
|
|
IUiAnimSequence* seq = animationSystem->GetSequence(k);
|
|
for (int i = 0; i < seq->GetNodeCount(); i++)
|
|
{
|
|
IUiAnimNode* pNode = seq->GetNode(i);
|
|
ObjName obj;
|
|
obj.m_objName = pNode->GetName();
|
|
obj.m_directorName = pNode->HasDirectorAsParent() ? pNode->HasDirectorAsParent()->GetName() : "";
|
|
string fullname = seq->GetName();
|
|
obj.m_seqName = fullname.c_str();
|
|
m_objs.push_back(obj);
|
|
}
|
|
m_numSeqs++;
|
|
}
|
|
FillList();
|
|
}
|
|
|
|
|
|
void CUiAnimViewFindDlg::Init(CUiAnimViewDialog* tvDlg)
|
|
{
|
|
m_tvDlg = tvDlg;
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::FillList()
|
|
{
|
|
QString filter = ui->FILTER->text();
|
|
ui->LIST->clear();
|
|
|
|
for (int i = 0; i < m_objs.size(); i++)
|
|
{
|
|
ObjName pObj = m_objs[i];
|
|
if (filter.isEmpty() || pObj.m_objName.contains(filter, Qt::CaseInsensitive))
|
|
{
|
|
QString text = pObj.m_objName;
|
|
if (!pObj.m_directorName.isEmpty())
|
|
{
|
|
text += " (";
|
|
text += pObj.m_directorName;
|
|
text += ")";
|
|
}
|
|
if (m_numSeqs > 1)
|
|
{
|
|
text += " / ";
|
|
text += pObj.m_seqName;
|
|
}
|
|
ui->LIST->addItem(text);
|
|
}
|
|
}
|
|
ui->LIST->setCurrentRow(0);
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::OnOK()
|
|
{
|
|
ProcessSel();
|
|
accept();
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::OnCancel()
|
|
{
|
|
reject();
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::OnFilterChange([[maybe_unused]] const QString& text)
|
|
{
|
|
FillList();
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::ProcessSel()
|
|
{
|
|
QList<QListWidgetItem*> selection = ui->LIST->selectedItems();
|
|
|
|
if (selection.size() != 1)
|
|
{
|
|
return;
|
|
}
|
|
int index = ui->LIST->row(selection.first());
|
|
|
|
if (index >= 0 && m_tvDlg)
|
|
{
|
|
ObjName object = m_objs[index];
|
|
|
|
const CUiAnimViewSequenceManager* pSequenceManager = CUiAnimViewSequenceManager::GetSequenceManager();
|
|
CUiAnimViewSequence* pSequence = pSequenceManager->GetSequenceByName(object.m_seqName);
|
|
|
|
if (pSequence)
|
|
{
|
|
CUiAnimationContext* pAnimationContext = nullptr;
|
|
EBUS_EVENT_RESULT(pAnimationContext, UiEditorAnimationBus, GetAnimationContext);
|
|
pAnimationContext->SetSequence(pSequence, false, false, true);
|
|
|
|
CUiAnimViewAnimNode* pParentDirector = pSequence;
|
|
CUiAnimViewAnimNodeBundle foundDirectorNodes = pSequence->GetAnimNodesByName(object.m_directorName.toUtf8().data());
|
|
if (foundDirectorNodes.GetCount() > 0 && foundDirectorNodes.GetNode(0)->GetType() == eUiAnimNodeType_Director)
|
|
{
|
|
pParentDirector = foundDirectorNodes.GetNode(0);
|
|
}
|
|
|
|
CUiAnimViewAnimNodeBundle foundNodes = pParentDirector->GetAnimNodesByName(object.m_objName.toUtf8().data());
|
|
|
|
const uint numNodes = foundNodes.GetCount();
|
|
for (uint i = 0; i < numNodes; ++i)
|
|
{
|
|
foundNodes.GetNode(i)->SetSelected(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUiAnimViewFindDlg::OnItemDoubleClicked()
|
|
{
|
|
ProcessSel();
|
|
}
|
|
|
|
#include <Animation/moc_UiAnimViewFindDlg.cpp>
|