18ea4ba6a8
The CriticalAssetsCompiled event can be handled to detect when the
AssetProcessor has finished processing Critical Assets
Also with the new event, an audit has been performed over all the
locations where the AssetCatalogEventBus OnCatalogLoaded event was being
handle to make sure it was the proper event to use.
If the handler was actually examing the enumerating over the full
catalog or querying all assets within the catalog, then it was a proper
use.
For handlers that were interested in a particular asset it was not
Moreover added implementations of `OnCatalogAssetChanged` and
`OnCatalogAssetAdded` to the FileTagComponent and the MaterialViewportComponent.
Any applications which uses the AtomToolsApplication
class(MaterialEditor, AtomSampleViewerStandalone,
ShaderMangementConsole) now signals a "CriticalAssetsCompiled" lifecycle
event as well as loads the "assetcatalog.xml" if it exists.
The Launcher application signals the "CrticalAssetsCompiled" event and
reloads the "assetcatalog.xml" for the ${project}.GameLauncher and
${project}.ServerLauncher in Launcher.cpp
Finally the Editor signals the "CriticalAssetsCompiled" and reloads the
"assetcatalog.xml" in CryEdit.cpp
resolves #6093
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
83 lines
3.6 KiB
C++
83 lines
3.6 KiB
C++
/*
|
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#include <AzCore/Asset/AssetCommon.h>
|
|
#include <AzCore/Component/Component.h>
|
|
#include <AzFramework/Application/Application.h>
|
|
#include <AzToolsFramework/API/EditorLevelNotificationBus.h>
|
|
#include <AzToolsFramework/AssetBrowser/Previewer/PreviewerBus.h>
|
|
#include <AzToolsFramework/Entity/SliceEditorEntityOwnershipServiceBus.h>
|
|
#include <SharedPreview/SharedPreviewerFactory.h>
|
|
#include <SharedPreview/SharedThumbnailRenderer.h>
|
|
|
|
namespace AZ
|
|
{
|
|
namespace Render
|
|
{
|
|
class SkinnedMeshDebugDisplay;
|
|
|
|
//! This is the editor-counterpart to this gem's main CommonSystemComponent class.
|
|
class EditorCommonFeaturesSystemComponent
|
|
: public AZ::Component
|
|
, public AzToolsFramework::EditorLevelNotificationBus::Handler
|
|
, public AzToolsFramework::SliceEditorEntityOwnershipServiceNotificationBus::Handler
|
|
, public AzToolsFramework::AssetBrowser::PreviewerRequestBus::Handler
|
|
, public AzFramework::ApplicationLifecycleEvents::Bus::Handler
|
|
{
|
|
public:
|
|
AZ_COMPONENT(EditorCommonFeaturesSystemComponent, "{D73D77CF-D5AF-428B-909B-324E96D3DEF5}");
|
|
|
|
EditorCommonFeaturesSystemComponent();
|
|
~EditorCommonFeaturesSystemComponent();
|
|
|
|
static void Reflect(AZ::ReflectContext* context);
|
|
|
|
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
|
|
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
|
|
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
|
|
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
|
|
|
|
protected:
|
|
// AZ::Component interface implementation
|
|
void Init() override;
|
|
void Activate() override;
|
|
void Deactivate() override;
|
|
|
|
// EditorLevelNotificationBus overrides ...
|
|
void OnNewLevelCreated() override;
|
|
|
|
// SliceEditorEntityOwnershipServiceBus overrides ...
|
|
void OnSliceInstantiated(
|
|
const AZ::Data::AssetId&, AZ::SliceComponent::SliceInstanceAddress&, const AzFramework::SliceInstantiationTicket&) override;
|
|
void OnSliceInstantiationFailed(const AZ::Data::AssetId&, const AzFramework::SliceInstantiationTicket&) override;
|
|
|
|
// AzToolsFramework::AssetBrowser::PreviewerRequestBus::Handler overrides...
|
|
const AzToolsFramework::AssetBrowser::PreviewerFactory* GetPreviewerFactory(
|
|
const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) const override;
|
|
|
|
// AzFramework::ApplicationLifecycleEvents overrides...
|
|
void OnApplicationAboutToStop() override;
|
|
|
|
void SetupThumbnails();
|
|
void TeardownThumbnails();
|
|
|
|
private:
|
|
AZStd::unique_ptr<SkinnedMeshDebugDisplay> m_skinnedMeshDebugDisplay;
|
|
|
|
AZ::Data::AssetId m_levelDefaultSliceAssetId;
|
|
AZStd::string m_atomLevelDefaultAssetPath{ "LevelAssets/default.slice" };
|
|
float m_envProbeHeight{ 200.0f };
|
|
|
|
AZStd::unique_ptr<AZ::LyIntegration::SharedThumbnailRenderer> m_thumbnailRenderer;
|
|
AZStd::unique_ptr<LyIntegration::SharedPreviewerFactory> m_previewerFactory;
|
|
AZ::SettingsRegistryInterface::NotifyEventHandler m_criticalAssetsHandler;
|
|
};
|
|
} // namespace Render
|
|
} // namespace AZ
|