12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675 |
- #include <Core/EditorActionsHandler.h>
- #include <AzToolsFramework/ActionManager/Action/ActionManagerInterface.h>
- #include <AzToolsFramework/ActionManager/Action/ActionManagerInternalInterface.h>
- #include <AzToolsFramework/ActionManager/HotKey/HotKeyManagerInterface.h>
- #include <AzToolsFramework/ActionManager/Menu/MenuManagerInterface.h>
- #include <AzToolsFramework/ActionManager/Menu/MenuManagerInternalInterface.h>
- #include <AzToolsFramework/ActionManager/ToolBar/ToolBarManagerInterface.h>
- #include <AzToolsFramework/Editor/ActionManagerIdentifiers/EditorActionUpdaterIdentifiers.h>
- #include <AzToolsFramework/Editor/EditorSettingsAPIBus.h>
- #include <AzToolsFramework/Editor/ActionManagerIdentifiers/EditorContextIdentifiers.h>
- #include <AzToolsFramework/Editor/ActionManagerIdentifiers/EditorMenuIdentifiers.h>
- #include <AzToolsFramework/Editor/ActionManagerIdentifiers/EditorToolBarIdentifiers.h>
- #include <AzToolsFramework/Entity/EditorEntityContextBus.h>
- #include <AzToolsFramework/UI/Outliner/EntityOutlinerRequestBus.h>
- #include <AzToolsFramework/Viewport/LocalViewBookmarkLoader.h>
- #include <AzToolsFramework/Viewport/ViewportSettings.h>
- #include <AzQtComponents/Components/SearchLineEdit.h>
- #include <AzQtComponents/Components/Style.h>
- #include <AtomLyIntegration/AtomViewportDisplayInfo/AtomViewportInfoDisplayBus.h>
- #include <Core/Widgets/PrefabEditVisualModeWidget.h>
- #include <Core/Widgets/ViewportSettingsWidgets.h>
- #include <CryEdit.h>
- #include <EditorCoreAPI.h>
- #include <Editor/EditorViewportCamera.h>
- #include <Editor/EditorViewportSettings.h>
- #include <Editor/Undo/Undo.h>
- #include <GameEngine.h>
- #include <LmbrCentral/Audio/AudioSystemComponentBus.h>
- #include <MainWindow.h>
- #include <QtViewPaneManager.h>
- #include <ToolBox.h>
- #include <ToolsConfigPage.h>
- #include <Util/PathUtil.h>
- #include <QDesktopServices>
- #include <QDir>
- #include <QHBoxLayout>
- #include <QLabel>
- #include <QMainWindow>
- #include <QMenu>
- #include <QTimer>
- #include <QUrl>
- #include <QUrlQuery>
- #include <QWidget>
- static const int maxRecentFiles = 10;
- class EditorViewportDisplayInfoHandler
- : private AZ::AtomBridge::AtomViewportInfoDisplayNotificationBus::Handler
- {
- public:
- EditorViewportDisplayInfoHandler()
- {
- m_actionManagerInterface = AZ::Interface<AzToolsFramework::ActionManagerInterface>::Get();
- AZ_Assert(
- m_actionManagerInterface, "EditorViewportDisplayInfoHandler - could not get ActionManagerInterface on EditorViewportDisplayInfoHandler construction.");
- if (m_actionManagerInterface)
- {
- AZ::AtomBridge::AtomViewportInfoDisplayNotificationBus::Handler::BusConnect();
- }
- }
- ~EditorViewportDisplayInfoHandler()
- {
- if (m_actionManagerInterface)
- {
- AZ::AtomBridge::AtomViewportInfoDisplayNotificationBus::Handler::BusDisconnect();
- }
- }
- void OnViewportInfoDisplayStateChanged([[maybe_unused]] AZ::AtomBridge::ViewportInfoDisplayState state) override
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::ViewportDisplayInfoStateChangedUpdaterIdentifier);
- }
- private:
- AzToolsFramework::ActionManagerInterface* m_actionManagerInterface = nullptr;
- };
- bool IsLevelLoaded()
- {
- auto cryEdit = CCryEditApp::instance();
- return !cryEdit->IsExportingLegacyData() && GetIEditor()->IsLevelLoaded();
- }
- bool AreEntitiesSelected()
- {
- bool result = false;
- AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult(
- result, &AzToolsFramework::ToolsApplicationRequestBus::Handler::AreAnyEntitiesSelected);
- return result;
- }
- static bool CompareLayoutNames(const QString& name1, const QString& name2)
- {
- return name1.compare(name2, Qt::CaseInsensitive) < 0;
- }
- void EditorActionsHandler::Initialize(MainWindow* mainWindow)
- {
- m_mainWindow = mainWindow;
- m_cryEditApp = CCryEditApp::instance();
- m_qtViewPaneManager = QtViewPaneManager::instance();
- m_levelExtension = EditorUtils::LevelFile::GetDefaultFileExtension();
- m_actionManagerInterface = AZ::Interface<AzToolsFramework::ActionManagerInterface>::Get();
- AZ_Assert(m_actionManagerInterface, "EditorActionsHandler - could not get ActionManagerInterface on EditorActionsHandler construction.");
- m_actionManagerInternalInterface = AZ::Interface<AzToolsFramework::ActionManagerInternalInterface>::Get();
- AZ_Assert(
- m_actionManagerInternalInterface,
- "EditorActionsHandler - could not get ActionManagerInternalInterface on EditorActionsHandler construction.");
-
- m_hotKeyManagerInterface = AZ::Interface<AzToolsFramework::HotKeyManagerInterface>::Get();
- AZ_Assert(m_hotKeyManagerInterface, "EditorActionsHandler - could not get HotKeyManagerInterface on EditorActionsHandler construction.");
-
- m_menuManagerInterface = AZ::Interface<AzToolsFramework::MenuManagerInterface>::Get();
- AZ_Assert(m_menuManagerInterface, "EditorActionsHandler - could not get MenuManagerInterface on EditorActionsHandler construction.");
-
- m_menuManagerInternalInterface = AZ::Interface<AzToolsFramework::MenuManagerInternalInterface>::Get();
- AZ_Assert(
- m_menuManagerInternalInterface, "EditorActionsHandler - could not get MenuManagerInternalInterface on EditorActionsHandler construction.");
-
- m_toolBarManagerInterface = AZ::Interface<AzToolsFramework::ToolBarManagerInterface>::Get();
- AZ_Assert(m_toolBarManagerInterface, "EditorActionsHandler - could not get ToolBarManagerInterface on EditorActionsHandler construction.");
-
- m_defaultBookmarkCount = AzToolsFramework::LocalViewBookmarkLoader::DefaultViewBookmarkCount;
- const int DefaultViewportId = 0;
-
- AzFramework::EntityContextId editorEntityContextId = AzFramework::EntityContextId::CreateNull();
- AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult(
- editorEntityContextId, &AzToolsFramework::EditorEntityContextRequests::GetEditorEntityContextId);
- AzToolsFramework::ActionManagerRegistrationNotificationBus::Handler::BusConnect();
- AzToolsFramework::EditorEventsBus::Handler::BusConnect();
- AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusConnect();
- AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusConnect();
- AzToolsFramework::ViewportInteraction::ViewportSettingsNotificationBus::Handler::BusConnect(DefaultViewportId);
- AzToolsFramework::EditorPickModeNotificationBus::Handler::BusConnect(editorEntityContextId);
- AzToolsFramework::ContainerEntityNotificationBus::Handler::BusConnect(editorEntityContextId);
- m_editorViewportDisplayInfoHandler = new EditorViewportDisplayInfoHandler();
- m_initialized = true;
- }
- EditorActionsHandler::~EditorActionsHandler()
- {
- if (m_initialized)
- {
- AzToolsFramework::ContainerEntityNotificationBus::Handler::BusDisconnect();
- AzToolsFramework::EditorPickModeNotificationBus::Handler::BusDisconnect();
- AzToolsFramework::ViewportInteraction::ViewportSettingsNotificationBus::Handler::BusDisconnect();
- AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusDisconnect();
- AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusDisconnect();
- AzToolsFramework::EditorEventsBus::Handler::BusDisconnect();
- AzToolsFramework::ActionManagerRegistrationNotificationBus::Handler::BusDisconnect();
- if (m_editorViewportDisplayInfoHandler)
- {
- delete m_editorViewportDisplayInfoHandler;
- }
- }
- }
- void EditorActionsHandler::OnActionContextRegistrationHook()
- {
-
- {
- AzToolsFramework::ActionContextProperties contextProperties;
- contextProperties.m_name = "O3DE Editor";
- m_actionManagerInterface->RegisterActionContext(
- EditorIdentifiers::MainWindowActionContextIdentifier, contextProperties);
- m_hotKeyManagerInterface->AssignWidgetToActionContext(EditorIdentifiers::MainWindowActionContextIdentifier, m_mainWindow);
- }
-
- {
- AzToolsFramework::ActionContextProperties contextProperties;
- contextProperties.m_name = "O3DE Editor - Asset Browser";
- m_actionManagerInterface->RegisterActionContext(
- EditorIdentifiers::EditorAssetBrowserActionContextIdentifier, contextProperties);
- }
-
- {
- AzToolsFramework::ActionContextProperties contextProperties;
- contextProperties.m_name = "O3DE Editor - Console";
- m_actionManagerInterface->RegisterActionContext(
- EditorIdentifiers::EditorConsoleActionContextIdentifier, contextProperties);
- }
-
- {
- AzToolsFramework::ActionContextProperties contextProperties;
- contextProperties.m_name = "O3DE Editor - Entity Inspector";
- m_actionManagerInterface->RegisterActionContext(
- EditorIdentifiers::EditorEntityPropertyEditorActionContextIdentifier, contextProperties);
- }
- }
- void EditorActionsHandler::OnActionUpdaterRegistrationHook()
- {
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::AngleSnappingStateChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::ContainerEntityStatesChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::EntityPickingModeChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::GridSnappingStateChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::IconsStateChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::RecentFilesChangedUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::UndoRedoUpdaterIdentifier);
- m_actionManagerInterface->RegisterActionUpdater(EditorIdentifiers::ViewportDisplayInfoStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnActionRegistrationHook()
- {
-
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.file.new";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "New Level";
- actionProperties.m_description = "Create a new level";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnCreateLevel();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey("o3de.action.file.new", "Ctrl+N");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.file.open";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Open Level...";
- actionProperties.m_description = "Open an existing level";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnOpenLevel();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey("o3de.action.file.open", "Ctrl+O");
- }
-
- {
- RecentFileList* recentFiles = m_cryEditApp->GetRecentFileList();
- const int recentFilesSize = recentFiles->GetSize();
- for (int index = 0; index < maxRecentFiles; ++index)
- {
- AzToolsFramework::ActionProperties actionProperties;
- if (index < recentFilesSize)
- {
- actionProperties.m_name = AZStd::string::format("%i | %s", index + 1, (*recentFiles)[index].toUtf8().data());
- }
- else
- {
- actionProperties.m_name = AZStd::string::format("Recent File #%i", index + 1);
- }
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::HideWhenDisabled;
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.file.recent.file%i", index + 1);
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [&, index]
- {
- OpenLevelByRecentFileEntryIndex(index);
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(
- actionIdentifier,
- [&, index]() -> bool
- {
- return IsRecentFileActionActive(index);
- }
- );
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::RecentFilesChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.file.recent.clearAll";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Clear All";
- actionProperties.m_description = "Clear the recent files list.";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [&]
- {
- RecentFileList* mruList = CCryEditApp::instance()->GetRecentFileList();
-
- for (int i = mruList->GetSize(); i > 0; i--)
- {
- mruList->Remove(i - 1);
- }
-
- mruList->WriteList();
-
- UpdateRecentFileActions();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Save";
- actionProperties.m_description = "Save the current level";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
-
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.file.save", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnFileSave();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback("o3de.action.file.save", IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, "o3de.action.file.save");
-
- m_hotKeyManagerInterface->SetActionHotKey("o3de.action.file.save", "Ctrl+S");
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Save As...";
- actionProperties.m_description = "Save the current level";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.file.saveAs", actionProperties,
- []
- {
- CCryEditDoc* pDoc = GetIEditor()->GetDocument();
- pDoc->OnFileSaveAs();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback("o3de.action.file.saveAs", IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, "o3de.action.file.saveAs");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.file.saveLevelStatistics";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Save Level Statistics";
- actionProperties.m_description = "Logs Editor memory usage.";
- actionProperties.m_category = "Level";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnToolsLogMemoryUsage();
- }
- );
-
- m_actionManagerInterface->InstallEnabledStateCallback(
- actionIdentifier,
- []() -> bool
- {
- return false;
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.project.editSettings";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Edit Project Settings...";
- actionProperties.m_description = "Open the Project Settings panel.";
- actionProperties.m_category = "Project";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnOpenProjectManagerSettings();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.platform.editSettings";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Edit Platform Settings...";
- actionProperties.m_description = "Open the Platform Settings panel.";
- actionProperties.m_category = "Platform";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [qtViewPaneManager = m_qtViewPaneManager]
- {
- qtViewPaneManager->OpenPane(LyViewPane::ProjectSettingsTool);
- }
- );
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.project.new";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "New Project...";
- actionProperties.m_description = "Create a new project in the Project Manager.";
- actionProperties.m_category = "Project";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnOpenProjectManagerNew();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.project.open";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Open Project...";
- actionProperties.m_description = "Open a different project in the Project Manager.";
- actionProperties.m_category = "Project";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnOpenProjectManager();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.file.showLog";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Show Log File";
- actionProperties.m_category = "Project";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnFileEditLogFile();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Exit";
- actionProperties.m_description = "Exit the Editor";
- actionProperties.m_category = "Editor";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- "o3de.action.editor.exit",
- actionProperties,
- [=]
- {
- m_mainWindow->window()->close();
- }
- );
- }
-
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "&Undo";
- actionProperties.m_description = "Undo last operation";
- actionProperties.m_category = "Edit";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- "o3de.action.edit.undo",
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnUndo();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(
- "o3de.action.edit.undo",
- []() -> bool
- {
- return GetIEditor()->GetUndoManager()->IsHaveUndo();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::UndoRedoUpdaterIdentifier, "o3de.action.edit.undo");
- m_hotKeyManagerInterface->SetActionHotKey("o3de.action.edit.undo", "Ctrl+Z");
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "&Redo";
- actionProperties.m_description = "Redo last undo operation";
- actionProperties.m_category = "Edit";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- "o3de.action.edit.redo",
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnRedo();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(
- "o3de.action.edit.redo",
- []() -> bool
- {
- return GetIEditor()->GetUndoManager()->IsHaveRedo();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::UndoRedoUpdaterIdentifier, "o3de.action.edit.redo");
- m_hotKeyManagerInterface->SetActionHotKey("o3de.action.edit.redo", "Ctrl+Shift+Z");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.edit.snap.toggleAngleSnapping";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Angle snapping";
- actionProperties.m_description = "Toggle angle snapping";
- actionProperties.m_category = "Edit";
- actionProperties.m_iconPath = ":/stylesheet/img/UI20/toolbar/Angle.svg";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- SandboxEditor::SetAngleSnapping(!SandboxEditor::AngleSnappingEnabled());
- },
- []() -> bool
- {
- return SandboxEditor::AngleSnappingEnabled();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::AngleSnappingStateChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.edit.snap.toggleGridSnapping";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Grid snapping";
- actionProperties.m_description = "Toggle grid snapping";
- actionProperties.m_category = "Edit";
- actionProperties.m_iconPath = ":/stylesheet/img/UI20/toolbar/Grid.svg";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- SandboxEditor::SetGridSnapping(!SandboxEditor::GridSnappingEnabled());
- },
- []() -> bool
- {
- return SandboxEditor::GridSnappingEnabled();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::GridSnappingStateChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.edit.snap.toggleShowingGrid";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Show Grid";
- actionProperties.m_description = "Show Grid for entity snapping.";
- actionProperties.m_category = "Edit";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- SandboxEditor::SetShowingGrid(!SandboxEditor::ShowingGrid());
- },
- []()
- {
- return SandboxEditor::ShowingGrid();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::GridShowingChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.edit.globalPreferences";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Global Preferences...";
- actionProperties.m_category = "Editor";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnToolsPreferences();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.edit.editorSettingsManager";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Editor Settings Manager";
- actionProperties.m_category = "Editor";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- QtViewPaneManager::instance()->OpenPane(LyViewPane::EditorSettingsManager);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- const AZStd::string_view actionIdentifier = "o3de.action.entity.rename";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Rename";
- actionProperties.m_description = "Rename the current selection.";
- actionProperties.m_category = "Entity";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []()
- {
- AzToolsFramework::EntityIdList selectedEntities;
- AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(
- selectedEntities, &AzToolsFramework::ToolsApplicationRequests::Bus::Events::GetSelectedEntities);
-
- if (selectedEntities.size() == 1)
- {
- AzToolsFramework::EntityOutlinerRequestBus::Broadcast(
- &AzToolsFramework::EntityOutlinerRequests::TriggerRenameEntityUi, selectedEntities.front());
- }
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(
- actionIdentifier,
- []() -> bool
- {
- int selectedEntitiesCount;
- AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(
- selectedEntitiesCount, &AzToolsFramework::ToolsApplicationRequests::Bus::Events::GetSelectedEntitiesCount);
-
- return selectedEntitiesCount == 1;
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, "F2");
- }
-
- {
- const AZStd::string_view actionIdentifier = "o3de.action.entityOutliner.findEntity";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Find in Entity Outliner";
- actionProperties.m_description = "Ensure the current entity is visible in the Entity Outliner.";
- actionProperties.m_category = "Entity";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []()
- {
- AzToolsFramework::EntityIdList selectedEntities;
- AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(
- selectedEntities, &AzToolsFramework::ToolsApplicationRequests::Bus::Events::GetSelectedEntities);
- if (!selectedEntities.empty())
- {
- AzToolsFramework::EditorEntityContextNotificationBus::Broadcast(
- &EditorEntityContextNotification::OnFocusInEntityOutliner, selectedEntities);
- }
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(
- actionIdentifier,
- []() -> bool
- {
- AzToolsFramework::EntityIdList selectedEntities;
- AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(
- selectedEntities, &AzToolsFramework::ToolsApplicationRequests::Bus::Events::GetSelectedEntities);
- return !selectedEntities.empty();
- }
- );
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier, actionIdentifier);
- }
-
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.play";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Play Game";
- actionProperties.m_description = "Activate the game input mode.";
- actionProperties.m_category = "Game";
- actionProperties.m_iconPath = ":/stylesheet/img/UI20/toolbar/Play.svg";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnViewSwitchToGame();
- },
- []
- {
- return GetIEditor()->IsInGameMode();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, "Ctrl+G");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.playMaximized";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Play Game (Maximized)";
- actionProperties.m_description = "Activate the game input mode (maximized).";
- actionProperties.m_category = "Game";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnViewSwitchToGameFullScreen();
- },
- []
- {
- return GetIEditor()->IsInGameMode();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.simulate";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Simulate";
- actionProperties.m_description = "Enable processing of Physics and AI.";
- actionProperties.m_category = "Game";
- actionProperties.m_iconPath = ":/stylesheet/img/UI20/toolbar/Simulate_Physics.svg";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnSwitchPhysics();
- },
- [cryEdit = m_cryEditApp]
- {
- return !cryEdit->IsExportingLegacyData() && GetIEditor()->GetGameEngine()->GetSimulationMode();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier, actionIdentifier);
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.movePlayerAndCameraSeparately";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Move Player and Camera Separately";
- actionProperties.m_description = "Move Player and Camera Separately.";
- actionProperties.m_category = "Game";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- GetIEditor()->GetGameEngine()->SyncPlayerPosition(!GetIEditor()->GetGameEngine()->IsSyncPlayerPosition());
- },
- []
- {
- return !GetIEditor()->GetGameEngine()->IsSyncPlayerPosition();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.audio.stopAllSounds";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Stop All Sounds";
- actionProperties.m_description = "Stop All Sounds.";
- actionProperties.m_category = "Game";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- LmbrCentral::AudioSystemComponentRequestBus::Broadcast(
- &LmbrCentral::AudioSystemComponentRequestBus::Events::GlobalStopAllSounds);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.audio.refresh";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Refresh";
- actionProperties.m_description = "Refresh Audio System.";
- actionProperties.m_category = "Game";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- AZStd::string levelName;
- AzToolsFramework::EditorRequestBus::BroadcastResult(levelName, &AzToolsFramework::EditorRequestBus::Events::GetLevelName);
- AZStd::to_lower(levelName.begin(), levelName.end());
- if (levelName == "untitled")
- {
- levelName.clear();
- }
- LmbrCentral::AudioSystemComponentRequestBus::Broadcast(
- &LmbrCentral::AudioSystemComponentRequestBus::Events::GlobalRefreshAudio, AZStd::string_view{ levelName });
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.debugging.errorDialog";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Error Report";
- actionProperties.m_description = "Open the Error Report dialog.";
- actionProperties.m_category = "Debugging";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [qtViewPaneManager = m_qtViewPaneManager]
- {
- qtViewPaneManager->OpenPane(LyViewPane::ErrorReport);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.game.debugging.toolboxMacros";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Configure Toolbox Macros...";
- actionProperties.m_description = "Open the Toolbox Macros dialog.";
- actionProperties.m_category = "Debugging";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [&]
- {
- ToolsConfigDialog dlg;
- if (dlg.exec() == QDialog::Accepted)
- {
- RefreshToolboxMacroActions();
- }
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.tools.luaEditor";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Lua Editor";
- actionProperties.m_category = "Tools";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- AzToolsFramework::EditorRequestBus::Broadcast(&AzToolsFramework::EditorRequests::LaunchLuaEditor, nullptr);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.layout.componentEntityLayout";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Component Entity Layout (Default)";
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- m_mainWindow->m_viewPaneManager->RestoreDefaultLayout();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.layout.save";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Save Layout...";
- actionProperties.m_description = "Save the current layout.";
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- m_mainWindow->SaveLayout();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.layout.restoreDefault";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Restore Default Layout";
- actionProperties.m_description = "Restored the default layout for the Editor.";
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- m_mainWindow->m_viewPaneManager->RestoreDefaultLayout(true);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.goToPosition";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Go to Position...";
- actionProperties.m_description = "Move the editor camera to the position and rotation provided.";
- actionProperties.m_category = "View";
- actionProperties.m_iconPath = ":/Menu/camera.svg";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDisplayGotoPosition();
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.centerOnSelection";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Find Selected Entities in Viewport";
- actionProperties.m_description = "Center the viewport to show selected entities.";
- actionProperties.m_category = "View";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- AzToolsFramework::EditorRequestBus::Broadcast(&AzToolsFramework::EditorRequestBus::Events::GoToSelectedEntitiesInViewports);
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, AreEntitiesSelected);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, "Z");
- }
-
- InitializeViewBookmarkActions();
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.toggleIcons";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Show Icons";
- actionProperties.m_description = "Show/Hide Icons.";
- actionProperties.m_category = "View";
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- AzToolsFramework::SetIconsVisible(!AzToolsFramework::IconsVisible());
- AzToolsFramework::EditorSettingsAPIBus::Broadcast(
- &AzToolsFramework::EditorSettingsAPIBus::Events::SaveSettingsRegistryFile);
- },
- []
- {
- return AzToolsFramework::IconsVisible();
- });
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::IconsStateChangedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, "Ctrl+Space");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.showHelpers";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Show Helpers for all entities";
- actionProperties.m_description = "Show Helpers.";
- actionProperties.m_category = "View";
- actionProperties.m_iconPath = ":/Menu/helpers.svg";
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- AzToolsFramework::SetHelpersVisible(true);
- AzToolsFramework::SetOnlyShowHelpersForSelectedEntities(false);
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier);
- AzToolsFramework::EditorSettingsAPIBus::Broadcast(
- &AzToolsFramework::EditorSettingsAPIBus::Events::SaveSettingsRegistryFile);
- },
- []
- {
- return AzToolsFramework::HelpersVisible();
- }
- );
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, "Shift+Space");
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.showSelectedEntityHelpers";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Show Helpers for selected entities";
- actionProperties.m_description = "If enabled, shows Helpers for selected entities only.";
- actionProperties.m_category = "View";
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- AzToolsFramework::SetOnlyShowHelpersForSelectedEntities(true);
- AzToolsFramework::SetHelpersVisible(false);
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier);
- AzToolsFramework::EditorSettingsAPIBus::Broadcast(
- &AzToolsFramework::EditorSettingsAPIBus::Events::SaveSettingsRegistryFile);
- },
- []
- {
- return AzToolsFramework::OnlyShowHelpersForSelectedEntities();
- });
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.hideHelpers";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Hide Helpers";
- actionProperties.m_description = "Hide all helpers";
- actionProperties.m_category = "View";
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [this]
- {
- AzToolsFramework::SetOnlyShowHelpersForSelectedEntities(false);
- AzToolsFramework::SetHelpersVisible(false);
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier);
- AzToolsFramework::EditorSettingsAPIBus::Broadcast(
- &AzToolsFramework::EditorSettingsAPIBus::Events::SaveSettingsRegistryFile);
- },
- []
- {
- return !AzToolsFramework::HelpersVisible() && !AzToolsFramework::OnlyShowHelpersForSelectedEntities();
- });
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier, actionIdentifier);
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.view.refreshEditorStyle";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Refresh Style";
- actionProperties.m_description = "Refreshes the editor stylesheet.";
- actionProperties.m_category = "View";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- []
- {
- GetIEditor()->Notify(eNotify_OnStyleChanged);
- }
- );
- }
-
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Tutorials";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.tutorials", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDocumentationTutorials();
- }
- );
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Open 3D Engine Documentation";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.documentation.o3de", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDocumentationO3DE();
- }
- );
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Release Notes";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.documentation.releasenotes", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDocumentationReleaseNotes();
- }
- );
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "GameDev Blog";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.resources.gamedevblog", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDocumentationGameDevBlog();
- }
- );
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Forums";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.resources.forums", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnDocumentationForums();
- }
- );
- }
-
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "&About O3DE";
- actionProperties.m_category = "Help";
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier, "o3de.action.help.abouto3de", actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnAppAbout();
- }
- );
- }
-
- {
- constexpr AZStd::string_view actionIdentifier = "o3de.action.help.welcome";
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "&Welcome";
- actionProperties.m_category = "Help";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [cryEdit = m_cryEditApp]
- {
- cryEdit->OnAppShowWelcomeScreen();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- }
- }
- void EditorActionsHandler::OnWidgetActionRegistrationHook()
- {
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Search Documentation";
- widgetActionProperties.m_category = "Help";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.help.searchDocumentation",
- widgetActionProperties,
- [&]
- {
- return CreateDocsSearchWidget();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Expander";
- widgetActionProperties.m_category = "Widgets";
- m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.expander",
- widgetActionProperties,
- [&]
- {
- return CreateExpander();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Play Controls Label";
- widgetActionProperties.m_category = "Game";
- m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.game.playControlsLabel",
- widgetActionProperties,
- [&]
- {
- return CreatePlayControlsLabel();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Prefab Edit Visual Mode Selection";
- widgetActionProperties.m_category = "Prefabs";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.prefab.editVisualMode",
- widgetActionProperties,
- []() -> QWidget*
- {
- return new PrefabEditVisualModeWidget();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Viewport Field of View";
- widgetActionProperties.m_category = "Viewport";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.viewport.fieldOfView",
- widgetActionProperties,
- []() -> QWidget*
- {
- return new ViewportFieldOfViewPropertyWidget();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Viewport Camera Speed Scale";
- widgetActionProperties.m_category = "Viewport";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.viewport.cameraSpeedScale",
- widgetActionProperties,
- []() -> QWidget*
- {
- return new ViewportCameraSpeedScalePropertyWidget();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Viewport Grid Snapping Size";
- widgetActionProperties.m_category = "Viewport";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.viewport.gridSnappingSize",
- widgetActionProperties,
- []() -> QWidget*
- {
- return new ViewportGridSnappingSizePropertyWidget();
- }
- );
- }
-
- {
- AzToolsFramework::WidgetActionProperties widgetActionProperties;
- widgetActionProperties.m_name = "Viewport Angle Snapping Size";
- widgetActionProperties.m_category = "Viewport";
- auto outcome = m_actionManagerInterface->RegisterWidgetAction(
- "o3de.widgetAction.viewport.angleSnappingSize",
- widgetActionProperties,
- []() -> QWidget*
- {
- return new ViewportAngleSnappingSizePropertyWidget();
- }
- );
- }
- }
- void EditorActionsHandler::OnMenuBarRegistrationHook()
- {
-
- m_menuManagerInterface->RegisterMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, m_mainWindow);
- }
- void EditorActionsHandler::OnMenuRegistrationHook()
- {
-
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&File";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::FileMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Open Recent";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::RecentFilesMenuIdentifier, menuProperties);
-
- QMenu* menu = m_menuManagerInternalInterface->GetMenu(EditorIdentifiers::FileMenuIdentifier);
- QObject::connect(
- menu,
- &QMenu::aboutToShow,
- m_mainWindow,
- [&]
- {
- UpdateRecentFileActions();
- }
- );
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&Edit";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EditMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Modify";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EditModifyMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Snap";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EditModifySnapMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Transform Mode";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EditModifyModesMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Editor Settings";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EditSettingsMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&Game";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::GameMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Play Game";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::PlayGameMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Audio";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::GameAudioMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Debugging";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::GameDebuggingMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "ToolBox Macros";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::ToolBoxMacrosMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&Tools";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::ToolsMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&View";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::ViewMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Layouts";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::LayoutsMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Viewport";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::ViewportMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Go to Location";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::GoToLocationMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Save Location";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::SaveLocationMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "&Help";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::HelpMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Documentation";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::HelpDocumentationMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "GameDev Resources";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::HelpGameDevResourcesMenuIdentifier, menuProperties);
- }
-
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Entity Outliner Context Menu";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Viewport Context Menu";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::ViewportContextMenuIdentifier, menuProperties);
- }
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = "Create";
- m_menuManagerInterface->RegisterMenu(EditorIdentifiers::EntityCreationMenuIdentifier, menuProperties);
- }
- }
- void EditorActionsHandler::OnMenuBindingHook()
- {
-
-
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::FileMenuIdentifier, 100);
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::EditMenuIdentifier, 200);
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::GameMenuIdentifier, 300);
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::ToolsMenuIdentifier, 400);
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::ViewMenuIdentifier, 500);
- m_menuManagerInterface->AddMenuToMenuBar(EditorIdentifiers::EditorMainWindowMenuBarIdentifier, EditorIdentifiers::HelpMenuIdentifier, 600);
-
-
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.new", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.open", 200);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::FileMenuIdentifier, EditorIdentifiers::RecentFilesMenuIdentifier, 300);
- {
- for (int index = 0; index < maxRecentFiles; ++index)
- {
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.file.recent.file%i", index + 1);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::RecentFilesMenuIdentifier, actionIdentifier, 100);
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::RecentFilesMenuIdentifier, 200);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::RecentFilesMenuIdentifier, "o3de.action.file.recent.clearAll", 300);
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::FileMenuIdentifier, 400);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.save", 500);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.saveAs", 600);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.saveLevelStatistics", 700);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::FileMenuIdentifier, 800);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.project.editSettings", 900);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.platform.editSettings", 1000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::FileMenuIdentifier, 1100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.project.new", 1200);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.project.open", 1300);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::FileMenuIdentifier, 1400);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.file.showLog", 1500);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::FileMenuIdentifier, 1600);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::FileMenuIdentifier, "o3de.action.editor.exit", 1700);
- }
-
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditMenuIdentifier, "o3de.action.edit.undo", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditMenuIdentifier, "o3de.action.edit.redo", 200);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::EditMenuIdentifier, EditorIdentifiers::EditModifyMenuIdentifier, 1800);
- {
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::EditModifyMenuIdentifier, EditorIdentifiers::EditModifySnapMenuIdentifier, 100);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditModifySnapMenuIdentifier, "o3de.action.edit.snap.toggleGridSnapping", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditModifySnapMenuIdentifier, "o3de.action.edit.snap.toggleAngleSnapping", 200);
- }
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::EditModifyMenuIdentifier, EditorIdentifiers::EditModifyModesMenuIdentifier, 200);
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EditMenuIdentifier, 1900);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::EditMenuIdentifier, EditorIdentifiers::EditSettingsMenuIdentifier, 2000);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditSettingsMenuIdentifier, "o3de.action.edit.globalPreferences", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EditSettingsMenuIdentifier, "o3de.action.edit.editorSettingsManager", 200);
- }
- }
-
- {
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::GameMenuIdentifier, EditorIdentifiers::PlayGameMenuIdentifier, 100);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::PlayGameMenuIdentifier, "o3de.action.game.play", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::PlayGameMenuIdentifier, "o3de.action.game.playMaximized", 200);
- }
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GameMenuIdentifier, "o3de.action.game.simulate", 200);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::GameMenuIdentifier, 300);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::GameMenuIdentifier, 600);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GameMenuIdentifier, "o3de.action.game.movePlayerAndCameraSeparately", 700);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::GameMenuIdentifier, 800);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::GameMenuIdentifier, EditorIdentifiers::GameAudioMenuIdentifier, 900);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GameAudioMenuIdentifier, "o3de.action.game.audio.stopAllSounds", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GameAudioMenuIdentifier, "o3de.action.game.audio.refresh", 200);
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::GameMenuIdentifier, 1000);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::GameMenuIdentifier, EditorIdentifiers::GameDebuggingMenuIdentifier, 1100);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GameDebuggingMenuIdentifier, "o3de.action.game.debugging.errorDialog", 100);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::GameDebuggingMenuIdentifier, 200);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::GameDebuggingMenuIdentifier, EditorIdentifiers::ToolBoxMacrosMenuIdentifier, 300);
- {
-
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ToolBoxMacrosMenuIdentifier, 200);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::ToolBoxMacrosMenuIdentifier, "o3de.action.game.debugging.toolboxMacros", 300);
- }
- }
- }
-
- {
- m_menuManagerInterface->AddActionToMenu(
- EditorIdentifiers::ToolsMenuIdentifier,
- "o3de.action.tools.luaEditor",
- m_actionManagerInterface->GenerateActionAlphabeticalSortKey("o3de.action.tools.luaEditor")
- );
- }
-
- {
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::ViewMenuIdentifier, EditorIdentifiers::LayoutsMenuIdentifier, 100);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::LayoutsMenuIdentifier, "o3de.action.layout.componentEntityLayout", 100);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::LayoutsMenuIdentifier, 200);
-
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::LayoutsMenuIdentifier, 400);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::LayoutsMenuIdentifier, "o3de.action.layout.save", 500);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::LayoutsMenuIdentifier, "o3de.action.layout.restoreDefault", 600);
- }
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::ViewMenuIdentifier, EditorIdentifiers::ViewportMenuIdentifier, 200);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::ViewportMenuIdentifier, "o3de.action.view.goToPosition", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::ViewportMenuIdentifier, "o3de.action.view.centerOnSelection", 200);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::ViewportMenuIdentifier, EditorIdentifiers::GoToLocationMenuIdentifier, 300);
- {
- for (int index = 0; index < m_defaultBookmarkCount; ++index)
- {
- const AZStd::string actionIdentifier = AZStd::string::format("o3de.action.view.bookmark[%i].goTo", index);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::GoToLocationMenuIdentifier, actionIdentifier, 0);
- }
- }
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::ViewportMenuIdentifier, EditorIdentifiers::SaveLocationMenuIdentifier, 400);
- {
- for (int index = 0; index < m_defaultBookmarkCount; ++index)
- {
- const AZStd::string actionIdentifier = AZStd::string::format("o3de.action.view.bookmark[%i].save", index);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::SaveLocationMenuIdentifier, actionIdentifier, 0);
- }
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportMenuIdentifier, 500);
- m_menuManagerInterface->AddSubMenuToMenu(
- EditorIdentifiers::ViewportMenuIdentifier, EditorIdentifiers::ViewportHelpersMenuIdentifier, 600);
- }
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::ViewMenuIdentifier, "o3de.action.view.refreshEditorStyle", 300);
- }
-
- {
- m_menuManagerInterface->AddWidgetToMenu(EditorIdentifiers::HelpMenuIdentifier, "o3de.widgetAction.help.searchDocumentation", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpMenuIdentifier, "o3de.action.help.tutorials", 200);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::HelpMenuIdentifier, EditorIdentifiers::HelpDocumentationMenuIdentifier, 300);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpDocumentationMenuIdentifier, "o3de.action.help.documentation.o3de", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpDocumentationMenuIdentifier, "o3de.action.help.documentation.gamelift", 200);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpDocumentationMenuIdentifier, "o3de.action.help.documentation.releasenotes", 300);
- }
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::HelpMenuIdentifier, EditorIdentifiers::HelpGameDevResourcesMenuIdentifier, 400);
- {
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpGameDevResourcesMenuIdentifier, "o3de.action.help.resources.gamedevblog", 100);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpGameDevResourcesMenuIdentifier, "o3de.action.help.resources.forums", 200);
- }
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::HelpMenuIdentifier, 500);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpMenuIdentifier, "o3de.action.help.abouto3de", 600);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::HelpMenuIdentifier, "o3de.action.help.welcome", 700);
- }
-
- m_menuManagerInterface->AddSubMenuToMenu(
- EditorIdentifiers::EntityOutlinerContextMenuIdentifier, EditorIdentifiers::EntityCreationMenuIdentifier, 200);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 10000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 20000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 30000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 40000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 50000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 60000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 70000);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, "o3de.action.entity.rename", 70100);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, 80000);
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::EntityOutlinerContextMenuIdentifier, "o3de.action.view.centerOnSelection", 80100);
-
- m_menuManagerInterface->AddSubMenuToMenu(
- EditorIdentifiers::ViewportContextMenuIdentifier, EditorIdentifiers::EntityCreationMenuIdentifier, 200);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 10000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 20000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 30000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 40000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 50000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 60000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 70000);
- m_menuManagerInterface->AddSeparatorToMenu(EditorIdentifiers::ViewportContextMenuIdentifier, 80000);
- m_menuManagerInterface->AddActionToMenu(
- EditorIdentifiers::ViewportContextMenuIdentifier, "o3de.action.entityOutliner.findEntity", 80100);
- }
- void EditorActionsHandler::OnToolBarAreaRegistrationHook()
- {
- m_toolBarManagerInterface->RegisterToolBarArea(
- EditorIdentifiers::MainWindowTopToolBarAreaIdentifier, m_mainWindow, Qt::ToolBarArea::TopToolBarArea);
- }
- void EditorActionsHandler::OnToolBarRegistrationHook()
- {
-
- {
- AzToolsFramework::ToolBarProperties toolBarProperties;
- toolBarProperties.m_name = "Tools";
- m_toolBarManagerInterface->RegisterToolBar(EditorIdentifiers::ToolsToolBarIdentifier, toolBarProperties);
- }
- {
- AzToolsFramework::ToolBarProperties toolBarProperties;
- toolBarProperties.m_name = "Play Controls";
- m_toolBarManagerInterface->RegisterToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, toolBarProperties);
- }
- }
- void EditorActionsHandler::OnToolBarBindingHook()
- {
-
-
- m_toolBarManagerInterface->AddToolBarToToolBarArea(
- EditorIdentifiers::MainWindowTopToolBarAreaIdentifier, EditorIdentifiers::ToolsToolBarIdentifier, 100);
- m_toolBarManagerInterface->AddToolBarToToolBarArea(
- EditorIdentifiers::MainWindowTopToolBarAreaIdentifier, EditorIdentifiers::PlayControlsToolBarIdentifier, 200);
-
-
- {
- m_toolBarManagerInterface->AddWidgetToToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, "o3de.widgetAction.expander", 100);
- m_toolBarManagerInterface->AddSeparatorToToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, 200);
- m_toolBarManagerInterface->AddWidgetToToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, "o3de.widgetAction.game.playControlsLabel", 300);
- m_toolBarManagerInterface->AddActionWithSubMenuToToolBar(
- EditorIdentifiers::PlayControlsToolBarIdentifier, "o3de.action.game.play", EditorIdentifiers::PlayGameMenuIdentifier, 400);
- m_toolBarManagerInterface->AddSeparatorToToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, 500);
- m_toolBarManagerInterface->AddActionToToolBar(EditorIdentifiers::PlayControlsToolBarIdentifier, "o3de.action.game.simulate", 600);
- }
- }
- void EditorActionsHandler::OnPostActionManagerRegistrationHook()
- {
-
- QObject::connect(
- m_mainWindow->m_viewPaneManager, &QtViewPaneManager::savedLayoutsChanged, m_mainWindow,
- [&]
- {
- RefreshLayoutActions();
- }
- );
- RefreshLayoutActions();
-
- QObject::connect(
- m_qtViewPaneManager, &QtViewPaneManager::registeredPanesChanged, m_mainWindow,
- [&]
- {
- RefreshToolActions();
- }
- );
-
- RefreshToolActions();
-
- RefreshToolboxMacroActions();
- }
- QWidget* EditorActionsHandler::CreateExpander()
- {
- QWidget* expander = new QWidget(m_mainWindow);
- expander->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- expander->setVisible(true);
- return expander;
- }
- QWidget* EditorActionsHandler::CreatePlayControlsLabel()
- {
- QLabel* label = new QLabel(m_mainWindow);
- label->setText("Play Controls");
- return label;
- }
- QWidget* EditorActionsHandler::CreateDocsSearchWidget()
- {
- QWidget* containerWidget = new QWidget(m_mainWindow);
- auto lineEdit = new AzQtComponents::SearchLineEdit(m_mainWindow);
- QHBoxLayout* layout = new QHBoxLayout;
- layout->setContentsMargins(0, 0, 0, 0);
- layout->addWidget(lineEdit);
- containerWidget->setLayout(layout);
- containerWidget->setContentsMargins(2, 0, 2, 0);
- lineEdit->setPlaceholderText(QObject::tr("Search documentation..."));
- auto searchAction = [lineEdit]
- {
- auto text = lineEdit->text();
- if (text.isEmpty())
- {
- QDesktopServices::openUrl(QUrl("https://www.o3de.org/docs/"));
- }
- else
- {
- QUrl docSearchUrl("https://www.o3de.org/search/");
- QUrlQuery docSearchQuery;
- docSearchQuery.addQueryItem("query", text);
- docSearchUrl.setQuery(docSearchQuery);
- QDesktopServices::openUrl(docSearchUrl);
- }
- lineEdit->clear();
- };
- QObject::connect(lineEdit, &QLineEdit::returnPressed, m_mainWindow, searchAction);
- QMenu* helpMenu = m_menuManagerInternalInterface->GetMenu(EditorIdentifiers::HelpMenuIdentifier);
- QObject::connect(helpMenu, &QMenu::aboutToHide, lineEdit, &QLineEdit::clear);
- QObject::connect(helpMenu, &QMenu::aboutToShow, lineEdit, &QLineEdit::clearFocus);
- return containerWidget;
- }
- void EditorActionsHandler::OnViewPaneOpened(const char* viewPaneName)
- {
- AZStd::string toolActionIdentifier = AZStd::string::format("o3de.action.tool.%s", viewPaneName);
- m_actionManagerInterface->UpdateAction(toolActionIdentifier);
- }
- void EditorActionsHandler::OnViewPaneClosed(const char* viewPaneName)
- {
- AZStd::string toolActionIdentifier = AZStd::string::format("o3de.action.tool.%s", viewPaneName);
- m_actionManagerInterface->UpdateAction(toolActionIdentifier);
- }
- void EditorActionsHandler::OnStartPlayInEditor()
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnStopPlayInEditor()
- {
-
- QTimer::singleShot(
- 0,
- nullptr,
- [actionManagerInterface = m_actionManagerInterface]
- {
- actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::GameModeStateChangedUpdaterIdentifier);
- }
- );
- }
- void EditorActionsHandler::AfterEntitySelectionChanged(
- [[maybe_unused]] const AzToolsFramework::EntityIdList& newlySelectedEntities,
- [[maybe_unused]] const AzToolsFramework::EntityIdList& newlyDeselectedEntities)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::EntitySelectionChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::AfterUndoRedo()
- {
-
- QTimer::singleShot(
- 0,
- nullptr,
- [actionManagerInterface = m_actionManagerInterface]
- {
- actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::UndoRedoUpdaterIdentifier);
- }
- );
- }
- void EditorActionsHandler::OnEndUndo([[maybe_unused]] const char* label, [[maybe_unused]] bool changed)
- {
-
- QTimer::singleShot(
- 0,
- nullptr,
- [actionManagerInterface = m_actionManagerInterface]
- {
- actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::UndoRedoUpdaterIdentifier);
- }
- );
- }
- void EditorActionsHandler::OnAngleSnappingChanged([[maybe_unused]] bool enabled)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::AngleSnappingStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnDrawHelpersChanged([[maybe_unused]] bool enabled)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::DrawHelpersStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnGridShowingChanged([[maybe_unused]] bool showing)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::GridShowingChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnGridSnappingChanged([[maybe_unused]] bool enabled)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::GridSnappingStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnIconsVisibilityChanged([[maybe_unused]] bool enabled)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::IconsStateChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnEntityPickModeStarted()
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::EntityPickingModeChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnEntityPickModeStopped()
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::EntityPickingModeChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::OnContainerEntityStatusChanged([[maybe_unused]] AZ::EntityId entityId, [[maybe_unused]] bool open)
- {
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::ContainerEntityStatesChangedUpdaterIdentifier);
- }
- bool EditorActionsHandler::IsRecentFileActionActive(int index)
- {
- return (index < m_recentFileActionsCount);
- }
- bool EditorActionsHandler::IsRecentFileEntryValid(const QString& entry, const QString& gameFolderPath)
- {
- if (entry.isEmpty())
- {
- return false;
- }
- QFileInfo info(entry);
- if (!info.exists())
- {
- return false;
- }
- if (!entry.endsWith(m_levelExtension))
- {
- return false;
- }
- const QDir gameDir(gameFolderPath);
- QDir dir(entry);
- while (dir.cdUp())
- {
- if (dir == gameDir)
- {
- return true;
- }
- }
- return false;
- }
- void EditorActionsHandler::OpenLevelByRecentFileEntryIndex(int index)
- {
-
- if (index >= m_recentFileActionsCount)
- {
- return;
- }
- RecentFileList* recentFiles = m_cryEditApp->GetRecentFileList();
- const int recentFilesSize = recentFiles->GetSize();
- QString sCurDir = QString(Path::GetEditingGameDataFolder().c_str()) + QDir::separator();
- QFileInfo gameDir(sCurDir);
- const QString gameDirPath = gameDir.absolutePath();
-
-
- int counter = 0;
- int fileIndex = 0;
- for (; fileIndex < recentFilesSize; ++fileIndex)
- {
- if (!IsRecentFileEntryValid((*recentFiles)[fileIndex], gameDirPath))
- {
- continue;
- }
- if (counter == index)
- {
- break;
- }
- ++counter;
- }
- m_cryEditApp->OpenDocumentFile((*recentFiles)[fileIndex].toUtf8().data(), true, COpenSameLevelOptions::ReopenLevelIfSame);
-
- }
- void EditorActionsHandler::UpdateRecentFileActions()
- {
- RecentFileList* recentFiles = m_cryEditApp->GetRecentFileList();
- const int recentFilesSize = recentFiles->GetSize();
- QString sCurDir = QString(Path::GetEditingGameDataFolder().c_str()) + QDir::separator();
- QFileInfo gameDir(sCurDir);
- const QString gameDirPath = gameDir.absolutePath();
- m_recentFileActionsCount = 0;
- int index = 0;
-
- for (int counter = 0; counter < maxRecentFiles; ++counter)
- {
-
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.file.recent.file%i", counter + 1);
-
- while (index < recentFilesSize)
- {
- if (IsRecentFileEntryValid((*recentFiles)[index], gameDirPath))
- {
- break;
- }
- ++index;
- }
- if (index < recentFilesSize)
- {
-
- QString displayName;
- recentFiles->GetDisplayName(displayName, index, sCurDir);
- m_actionManagerInterface->SetActionName(
- actionIdentifier, AZStd::string::format("%i | %s", counter + 1, displayName.toUtf8().data()));
- ++m_recentFileActionsCount;
- ++index;
- }
- else
- {
-
-
- m_actionManagerInterface->SetActionName(actionIdentifier, AZStd::string::format("Recent File #%i", counter + 1));
- }
- }
-
- m_actionManagerInterface->TriggerActionUpdater(EditorIdentifiers::RecentFilesChangedUpdaterIdentifier);
- }
- void EditorActionsHandler::RefreshLayoutActions()
- {
- m_menuManagerInterface->RemoveSubMenusFromMenu(EditorIdentifiers::LayoutsMenuIdentifier, m_layoutMenuIdentifiers);
- m_layoutMenuIdentifiers.clear();
-
-
- const int sortKey = 300;
- QStringList layoutNames = m_mainWindow->m_viewPaneManager->LayoutNames();
- std::sort(layoutNames.begin(), layoutNames.end(), CompareLayoutNames);
- for (const auto& layoutName : layoutNames)
- {
- AZStd::string layoutMenuIdentifier = AZStd::string::format("o3de.menu.layout[%s]", layoutName.toUtf8().data());
-
- if (!m_menuManagerInterface->IsMenuRegistered(layoutMenuIdentifier))
- {
- AzToolsFramework::MenuProperties menuProperties;
- menuProperties.m_name = layoutName.toUtf8().data();
- m_menuManagerInterface->RegisterMenu(layoutMenuIdentifier, menuProperties);
- {
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.layout[%s].load", layoutName.toUtf8().data());
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Load";
- actionProperties.m_description = AZStd::string::format("Load the \"%s\" layout.", layoutName.toUtf8().data());
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [layout = layoutName, this]
- {
- m_mainWindow->ViewLoadPaneLayout(layout);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_menuManagerInterface->AddActionToMenu(layoutMenuIdentifier, actionIdentifier, 0);
- }
- {
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.layout[%s].save", layoutName.toUtf8().data());
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Save";
- actionProperties.m_description = AZStd::string::format("Save the \"%s\" layout.", layoutName.toUtf8().data());
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [layout = layoutName, this]
- {
- m_mainWindow->ViewSavePaneLayout(layout);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_menuManagerInterface->AddActionToMenu(layoutMenuIdentifier, actionIdentifier, 100);
- }
- {
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.layout[%s].rename", layoutName.toUtf8().data());
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Rename...";
- actionProperties.m_description = AZStd::string::format("Rename the \"%s\" layout.", layoutName.toUtf8().data());
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [layout = layoutName, this]
- {
- m_mainWindow->ViewRenamePaneLayout(layout);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_menuManagerInterface->AddActionToMenu(layoutMenuIdentifier, actionIdentifier, 200);
- }
- {
- AZStd::string actionIdentifier = AZStd::string::format("o3de.action.layout[%s].delete", layoutName.toUtf8().data());
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = "Delete";
- actionProperties.m_description = AZStd::string::format("Delete the \"%s\" layout.", layoutName.toUtf8().data());
- actionProperties.m_category = "Layout";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [layout = layoutName, this]
- {
- m_mainWindow->ViewDeletePaneLayout(layout);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, actionIdentifier);
- m_menuManagerInterface->AddActionToMenu(layoutMenuIdentifier, actionIdentifier, 300);
- }
- }
- m_layoutMenuIdentifiers.push_back(layoutMenuIdentifier);
- m_menuManagerInterface->AddSubMenuToMenu(EditorIdentifiers::LayoutsMenuIdentifier, layoutMenuIdentifier, sortKey);
- }
- }
- void EditorActionsHandler::RefreshToolboxMacroActions()
- {
-
- m_menuManagerInterface->RemoveActionsFromMenu(EditorIdentifiers::ToolBoxMacrosMenuIdentifier, m_toolboxMacroActionIdentifiers);
- m_toolboxMacroActionIdentifiers.clear();
-
-
- const int sortKey = 0;
- auto tools = GetIEditor()->GetToolBoxManager();
- const int macroCount = tools->GetMacroCount(true);
- for (int macroIndex = 0; macroIndex < macroCount; ++macroIndex)
- {
- auto macro = tools->GetMacro(macroIndex, true);
- const int toolbarId = macro->GetToolbarId();
- if (toolbarId == -1 || toolbarId == ID_TOOLS_TOOL1)
- {
- AZStd::string toolboxMacroActionIdentifier = AZStd::string::format("o3de.action.toolboxMacro[%s]", macro->GetTitle().toStdString().c_str());
-
- if (!m_actionManagerInterface->IsActionRegistered(toolboxMacroActionIdentifier))
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = macro->GetTitle().toStdString().c_str();
- actionProperties.m_category = "Toolbox Macro";
- actionProperties.m_iconPath = macro->GetIconPath().toStdString().c_str();
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- toolboxMacroActionIdentifier,
- actionProperties,
- [macro]
- {
- macro->Execute();
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, toolboxMacroActionIdentifier);
- }
- m_menuManagerInterface->AddActionToMenu(EditorIdentifiers::ToolBoxMacrosMenuIdentifier, toolboxMacroActionIdentifier, sortKey);
- m_toolboxMacroActionIdentifiers.push_back(AZStd::move(toolboxMacroActionIdentifier));
- }
- }
- }
- void EditorActionsHandler::RefreshToolActions()
- {
-
- m_menuManagerInterface->RemoveActionsFromMenu(EditorIdentifiers::ToolsMenuIdentifier, m_toolActionIdentifiers);
- m_toolBarManagerInterface->RemoveActionsFromToolBar(EditorIdentifiers::ToolsToolBarIdentifier, m_toolActionIdentifiers);
- m_toolActionIdentifiers.clear();
- AZStd::vector<AZStd::pair<AZStd::string, int>> toolsMenuItems;
- AZStd::vector<AZStd::pair<AZStd::string, int>> toolsToolBarItems;
-
- const QtViewPanes& viewpanes = m_qtViewPaneManager->GetRegisteredPanes();
- for (const auto& viewpane : viewpanes)
- {
- if (viewpane.IsViewportPane())
- {
- continue;
- }
- AZStd::string toolActionIdentifier = AZStd::string::format("o3de.action.tool.%s", viewpane.m_name.toUtf8().data());
-
- if (!m_actionManagerInterface->IsActionRegistered(toolActionIdentifier))
- {
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = viewpane.m_options.optionalMenuText.length() > 0 ? viewpane.m_options.optionalMenuText.toUtf8().data()
- : viewpane.m_name.toUtf8().data();
- actionProperties.m_category = "Tool";
- actionProperties.m_iconPath = viewpane.m_options.toolbarIcon;
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- actionProperties.m_toolBarVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterCheckableAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- toolActionIdentifier,
- actionProperties,
- [viewpaneManager = m_qtViewPaneManager, viewpaneName = viewpane.m_name]
- {
- viewpaneManager->TogglePane(viewpaneName);
- },
- [viewpaneManager = m_qtViewPaneManager, viewpaneName = viewpane.m_name]() -> bool
- {
- return viewpaneManager->IsEnumeratedInstanceVisible(viewpaneName);
- }
- );
-
- m_actionManagerInterface->AssignModeToAction(AzToolsFramework::DefaultActionContextModeIdentifier, toolActionIdentifier);
- }
- m_toolActionIdentifiers.push_back(toolActionIdentifier);
-
-
-
- int sortKey = m_actionManagerInterface->GenerateActionAlphabeticalSortKey(toolActionIdentifier);
- if (viewpane.m_options.showInMenu)
- {
- toolsMenuItems.push_back({ toolActionIdentifier, sortKey });
- }
- if (viewpane.m_options.showOnToolsToolbar)
- {
- toolsToolBarItems.push_back({ toolActionIdentifier, sortKey });
- }
- }
- m_menuManagerInterface->AddActionsToMenu(EditorIdentifiers::ToolsMenuIdentifier, toolsMenuItems);
- m_toolBarManagerInterface->AddActionsToToolBar(EditorIdentifiers::ToolsToolBarIdentifier, toolsToolBarItems);
- }
- void EditorActionsHandler::InitializeViewBookmarkActions()
- {
-
- for (int index = 0; index < m_defaultBookmarkCount; ++index)
- {
- const AZStd::string actionIdentifier = AZStd::string::format("o3de.action.view.bookmark[%i].goTo", index);
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = AZStd::string::format("Go to Location %i", index+1);
- actionProperties.m_description = AZStd::string::format("Go to Location %i.", index+1);
- actionProperties.m_category = "View Bookmark";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- auto outcome = m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [index]
- {
- AzToolsFramework::ViewBookmarkInterface* viewBookmarkInterface = AZ::Interface<AzToolsFramework::ViewBookmarkInterface>::Get();
- if (!viewBookmarkInterface)
- {
- AZ_Warning("Main Window", false, "Couldn't find View Bookmark Loader");
- return false;
- }
- const AZStd::optional<AzToolsFramework::ViewBookmark> bookmark = viewBookmarkInterface->LoadBookmarkAtIndex(index);
- if (!bookmark.has_value())
- {
- return false;
- }
-
- if (bookmark.value().IsZero())
- {
- QString tagConsoleText = QObject::tr("View Bookmark %1 has not been set yet").arg(index + 1);
- AZ_Warning("Main Window", false, tagConsoleText.toUtf8().data());
- return false;
- }
- SandboxEditor::HandleDefaultViewportCameraTransitionFromSetting(
- bookmark->m_position, AZ::DegToRad(bookmark->m_rotation.GetX()), AZ::DegToRad(bookmark->m_rotation.GetZ()));
- QString tagConsoleText = QObject::tr("View Bookmark %1 loaded position: x=%2, y=%3, z=%4")
- .arg(index + 1)
- .arg(bookmark->m_position.GetX(), 0, 'f', 2)
- .arg(bookmark->m_position.GetY(), 0, 'f', 2)
- .arg(bookmark->m_position.GetZ(), 0, 'f', 2);
- AZ_Printf("MainWindow", tagConsoleText.toUtf8().data());
- return true;
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, AZStd::string::format("Shift+F%i", index+1));
- }
-
- for (int index = 0; index < m_defaultBookmarkCount; ++index)
- {
- const AZStd::string actionIdentifier = AZStd::string::format("o3de.action.view.bookmark[%i].save", index);
- AzToolsFramework::ActionProperties actionProperties;
- actionProperties.m_name = AZStd::string::format("Save Location %i", index+1);
- actionProperties.m_description = AZStd::string::format("Save Location %i.", index+1);
- actionProperties.m_category = "View Bookmark";
- actionProperties.m_menuVisibility = AzToolsFramework::ActionVisibility::AlwaysShow;
- m_actionManagerInterface->RegisterAction(
- EditorIdentifiers::MainWindowActionContextIdentifier,
- actionIdentifier,
- actionProperties,
- [index]
- {
- if (auto viewBookmark = AzToolsFramework::StoreViewBookmarkFromActiveCameraAtIndex(index); viewBookmark.has_value())
- {
- const QString tagConsoleText = QObject::tr("View Bookmark %1 set to the position: x=%2, y=%3, z=%4")
- .arg(index + 1)
- .arg(viewBookmark->m_position.GetX(), 0, 'f', 2)
- .arg(viewBookmark->m_position.GetY(), 0, 'f', 2)
- .arg(viewBookmark->m_position.GetZ(), 0, 'f', 2);
- AZ_Printf("MainWindow", tagConsoleText.toUtf8().data());
- }
- }
- );
- m_actionManagerInterface->InstallEnabledStateCallback(actionIdentifier, IsLevelLoaded);
- m_actionManagerInterface->AddActionToUpdater(EditorIdentifiers::LevelLoadedUpdaterIdentifier, actionIdentifier);
- m_hotKeyManagerInterface->SetActionHotKey(actionIdentifier, AZStd::string::format("Ctrl+F%i", index+1));
- }
- }
|