123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
- #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
- #include <MaterialEditorApplication.h>
- #include <Document/MaterialDocument.h>
- #include <Window/MaterialEditorMainWindow.h>
- #if defined(EXTERNAL_CRASH_REPORTING)
- #include <ToolsCrashHandler.h>
- #endif
- void InitMaterialEditorResources()
- {
- // Must register qt resources from other modules
- Q_INIT_RESOURCE(MaterialEditor);
- Q_INIT_RESOURCE(InspectorWidget);
- Q_INIT_RESOURCE(AtomToolsAssetBrowser);
- }
- namespace MaterialEditor
- {
- static const char* GetBuildTargetName()
- {
- #if !defined(LY_CMAKE_TARGET)
- #error "LY_CMAKE_TARGET must be defined in order to add this source file to a CMake executable target"
- #endif
- return LY_CMAKE_TARGET;
- }
- MaterialEditorApplication::MaterialEditorApplication(int* argc, char*** argv)
- : Base(GetBuildTargetName(), argc, argv)
- {
- #if defined(EXTERNAL_CRASH_REPORTING)
- CrashHandler::ToolsCrashHandler::InitCrashHandler("MaterialEditor", {});
- #endif
- InitMaterialEditorResources();
- QApplication::setOrganizationName("O3DE");
- QApplication::setApplicationName("O3DE Material Editor");
- QApplication::setWindowIcon(QIcon(":/Icons/application.svg"));
- AzToolsFramework::EditorWindowRequestBus::Handler::BusConnect();
- }
- MaterialEditorApplication::~MaterialEditorApplication()
- {
- AzToolsFramework::EditorWindowRequestBus::Handler::BusDisconnect();
- m_window.reset();
- }
- void MaterialEditorApplication::Reflect(AZ::ReflectContext* context)
- {
- Base::Reflect(context);
- MaterialDocument::Reflect(context);
- }
- const char* MaterialEditorApplication::GetCurrentConfigurationName() const
- {
- #if defined(_RELEASE)
- return "ReleaseMaterialEditor";
- #elif defined(_DEBUG)
- return "DebugMaterialEditor";
- #else
- return "ProfileMaterialEditor";
- #endif
- }
- void MaterialEditorApplication::StartCommon(AZ::Entity* systemEntity)
- {
- Base::StartCommon(systemEntity);
- // Overriding default document type info to provide a custom view
- auto documentTypeInfo = MaterialDocument::BuildDocumentTypeInfo();
- documentTypeInfo.m_documentViewFactoryCallback = [this]([[maybe_unused]] const AZ::Crc32& toolId, const AZ::Uuid& documentId) {
- auto emptyWidget = new QWidget(m_window.get());
- emptyWidget->setContentsMargins(0, 0, 0, 0);
- emptyWidget->setFixedSize(0, 0);
- return m_window->AddDocumentTab(documentId, emptyWidget);
- };
- AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Event(
- m_toolId, &AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Handler::RegisterDocumentType, documentTypeInfo);
- m_viewportSettingsSystem.reset(aznew AtomToolsFramework::EntityPreviewViewportSettingsSystem(m_toolId));
- m_window.reset(aznew MaterialEditorMainWindow(m_toolId));
- m_window->show();
- }
- void MaterialEditorApplication::Destroy()
- {
- m_window.reset();
- m_viewportSettingsSystem.reset();
- Base::Destroy();
- }
- AZStd::vector<AZStd::string> MaterialEditorApplication::GetCriticalAssetFilters() const
- {
- return AZStd::vector<AZStd::string>({ "passes/", "config/", "MaterialEditor/" });
- }
- QWidget* MaterialEditorApplication::GetAppMainWindow()
- {
- return m_window.get();
- }
- } // namespace MaterialEditor
|