Integrating latest 47acbe8

This commit is contained in:
alexpete
2021-03-25 13:57:57 -07:00
parent 448c549698
commit 75dc720198
10312 changed files with 2711566 additions and 671451 deletions
@@ -15,16 +15,19 @@
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/RTTI/BehaviorContext.h>
#include <AzCore/RTTI/ReflectContext.h>
#include <AzCore/Script/ScriptAsset.h>
#include <AzCore/Script/ScriptContext.h>
#include <AzCore/Serialization/EditContext.h>
#include <AzCore/Serialization/SerializeContext.h>
#include <AzFramework/Asset/GenericAssetHandler.h>
#include <AzFramework/Asset/SimpleAsset.h>
#include "ScriptEventDefinition.h"
#include <AzFramework/Asset/GenericAssetHandler.h>
#include "ScriptEventsBus.h"
#include "ScriptEvent.h"
namespace ScriptEventAsset
{
constexpr const char* k_RuntimeAssetIdStr = "{CB4D603E-8CB0-4D80-8165-4244F28AF187}";
}
namespace ScriptEvents
{
@@ -33,7 +36,7 @@ namespace ScriptEvents
{
public:
AZ_RTTI(ScriptEventsAsset, "{CB4D603E-8CB0-4D80-8165-4244F28AF187}", AZ::Data::AssetData);
AZ_RTTI(ScriptEventsAsset, ScriptEventAsset::k_RuntimeAssetIdStr, AZ::Data::AssetData);
AZ_CLASS_ALLOCATOR(ScriptEventsAsset, AZ::SystemAllocator, 0);
ScriptEventsAsset(const AZ::Data::AssetId& assetId = AZ::Data::AssetId(), AZ::Data::AssetData::AssetStatus status = AZ::Data::AssetData::AssetStatus::NotLoaded)
@@ -50,8 +53,7 @@ namespace ScriptEvents
static const char* GetDisplayName() { return "Script Events"; }
static const char* GetGroup() { return "ScriptEvents"; }
static const char* GetFileFilter() { return "*.scriptevents"; }
static const char* GetFileExtension() { return ".scriptevents"; }
static const char* GetFileFilter() { return "scriptevents"; }
AZ::Crc32 GetBusId() const { return AZ::Crc32(GetId().ToString<AZStd::string>().c_str()); }
@@ -88,7 +90,7 @@ namespace ScriptEvents
AZ_RTTI(ScriptEventsAssetPtr, "{CE2C30CB-709B-4BC0-BAEE-3D192D33367D}", BaseType);
AZ_CLASS_ALLOCATOR(ScriptEventsAssetPtr, AZ::SystemAllocator, 0);
ScriptEventsAssetPtr(AZ::Data::AssetLoadBehavior loadBehavior = AZ::Data::AssetLoadBehavior::PreLoad)
explicit ScriptEventsAssetPtr(AZ::Data::AssetLoadBehavior loadBehavior = AZ::Data::AssetLoadBehavior::PreLoad)
: AZ::Data::Asset<ScriptEventsAsset>(loadBehavior)
{}
@@ -117,38 +119,9 @@ namespace ScriptEvents
public:
AZ_RTTI(ScriptEventAssetRuntimeHandler, "{002E913D-339A-4238-BCCD-ED077BBD72C5}", AzFramework::GenericAssetHandler<ScriptEventsAsset>);
ScriptEventAssetRuntimeHandler(const char* displayName, const char* group, const char* extension, const AZ::Uuid& componentTypeId = AZ::Uuid::CreateNull(), AZ::SerializeContext* serializeContext = nullptr)
: AzFramework::GenericAssetHandler<ScriptEventsAsset>(displayName, group, extension, componentTypeId, serializeContext)
{
}
using AzFramework::GenericAssetHandler<ScriptEventsAsset>::LoadAssetData;
AZ::Data::AssetHandler::LoadResult LoadAssetData(
const AZ::Data::Asset<AZ::Data::AssetData>& asset,
AZStd::shared_ptr<AZ::Data::AssetDataStream> stream,
const AZ::Data::AssetFilterCB& assetLoadFilterCB) override
{
if (AzFramework::GenericAssetHandler<ScriptEventsAsset>::LoadAssetData(asset, stream, assetLoadFilterCB) ==
AZ::Data::AssetHandler::LoadResult::LoadComplete)
{
// Queue the registration against the AssetBus to be run on the main thread
// This avoids the following deadlock situation by moving RegisterScriptEvent to the main thread only:
// JobThread: LoadAssetData -> lock ScriptEventBus -> lock AssetBus
// MainThread: lock AssetBus OnAssetReady -> LoadAssetData -> ...
AZ::Data::AssetBus::QueueFunction([asset]()
{
const ScriptEvents::ScriptEvent& definition = asset.GetAs<ScriptEventsAsset>()->m_definition;
AZStd::intrusive_ptr<Internal::ScriptEvent> scriptEvent;
ScriptEvents::ScriptEventBus::BroadcastResult(scriptEvent, &ScriptEvents::ScriptEventRequests::RegisterScriptEvent, asset.GetId(), definition.GetVersion());
});
return AZ::Data::AssetHandler::LoadResult::LoadComplete;
}
return AZ::Data::AssetHandler::LoadResult::Error;
}
ScriptEventAssetRuntimeHandler(const char* displayName, const char* group, const char* extension, const AZ::Uuid& componentTypeId = AZ::Uuid::CreateNull(), AZ::SerializeContext* serializeContext = nullptr);
void InitAsset(const AZ::Data::Asset<AZ::Data::AssetData>& asset, bool loadStageSucceeded, bool isReload) override;
};
}