{LYN-4514} Engine updates to enable PAB for the Blast Gem (#2140)
* {LYN-4514} Engine updates to enable PAB for the Blast Gem
* Engine updates to enable Python Asset Building for the Blast Gem
* added API to detect IsPythonActive()
* ExportProductList behavior
* scene manifest usage of generated assetinfo
* updated ScriptProcessorRuleBehavior to handle OnPrepareForExport
Tests: new tests for scene behavior via ExportProduct
Signed-off-by: Jackson <23512001+jackalbe@users.noreply.github.com>
* updated base on PR feedback
added more comments for IsPythonActive()
added a serializeContext for export product list
Signed-off-by: Jackson <23512001+jackalbe@users.noreply.github.com>
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
*/
|
||||
|
||||
#include <SceneAPI/SceneCore/Events/ExportProductList.h>
|
||||
#include <AzCore/RTTI/BehaviorContext.h>
|
||||
#include <AzCore/std/limits.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
@@ -49,6 +51,45 @@ namespace AZ
|
||||
return *this;
|
||||
}
|
||||
|
||||
void ExportProductList::Reflect(ReflectContext* context)
|
||||
{
|
||||
if (auto* serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
|
||||
{
|
||||
serializeContext->Class<ExportProduct>()->Version(1);
|
||||
serializeContext->Class<ExportProductList>()->Version(1);
|
||||
}
|
||||
|
||||
if (auto* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
|
||||
{
|
||||
behaviorContext->Class<ExportProduct>("ExportProduct")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
|
||||
->Attribute(AZ::Script::Attributes::Module, "scene")
|
||||
->Property("filename", BehaviorValueProperty(&ExportProduct::m_filename))
|
||||
->Property("sourceId", BehaviorValueProperty(&ExportProduct::m_id))
|
||||
->Property("assetType", BehaviorValueProperty(&ExportProduct::m_assetType))
|
||||
->Property("productDependencies", BehaviorValueProperty(&ExportProduct::m_productDependencies))
|
||||
->Property("subId",
|
||||
[](ExportProduct* self) { return self->m_subId.has_value() ? self->m_subId.value() : 0; },
|
||||
[](ExportProduct* self, u32 subId) { self->m_subId = AZStd::optional<u32>(subId); });
|
||||
|
||||
behaviorContext->Class<ExportProductList>("ExportProductList")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
|
||||
->Attribute(AZ::Script::Attributes::Module, "scene")
|
||||
->Method("AddProduct", [](ExportProductList& self, ExportProduct& product)
|
||||
{
|
||||
self.AddProduct(
|
||||
product.m_filename,
|
||||
product.m_id,
|
||||
product.m_assetType,
|
||||
product.m_lod,
|
||||
product.m_subId,
|
||||
product.m_dependencyFlags);
|
||||
})
|
||||
->Method("GetProducts", &ExportProductList::GetProducts)
|
||||
->Method("AddDependencyToProduct", &ExportProductList::AddDependencyToProduct);
|
||||
}
|
||||
}
|
||||
|
||||
ExportProduct& ExportProductList::AddProduct(const AZStd::string& filename, Uuid id, Data::AssetType assetType, AZStd::optional<u8> lod, AZStd::optional<u32> subId,
|
||||
Data::ProductDependencyInfo::ProductDependencyFlags dependencyFlags)
|
||||
{
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
class ReflectContext;
|
||||
|
||||
namespace SceneAPI
|
||||
{
|
||||
namespace Events
|
||||
@@ -24,6 +26,7 @@ namespace AZ
|
||||
Data::ProductDependencyInfo::ProductDependencyFlags dependencyFlags = Data::ProductDependencyInfo::CreateFlags(Data::AssetLoadBehavior::NoLoad));
|
||||
SCENE_CORE_API ExportProduct(AZStd::string&& filename, Uuid id, Data::AssetType assetType, AZStd::optional<u8> lod, AZStd::optional<u32> subId,
|
||||
Data::ProductDependencyInfo::ProductDependencyFlags dependencyFlags = Data::ProductDependencyInfo::CreateFlags(Data::AssetLoadBehavior::NoLoad));
|
||||
ExportProduct() = default;
|
||||
ExportProduct(const ExportProduct& rhs) = default;
|
||||
SCENE_CORE_API ExportProduct(ExportProduct&& rhs);
|
||||
|
||||
@@ -54,6 +57,8 @@ namespace AZ
|
||||
class ExportProductList
|
||||
{
|
||||
public:
|
||||
static void Reflect(ReflectContext* context);
|
||||
|
||||
SCENE_CORE_API ExportProduct& AddProduct(const AZStd::string& filename, Uuid id, Data::AssetType assetType, AZStd::optional<u8> lod, AZStd::optional<u32> subId,
|
||||
Data::ProductDependencyInfo::ProductDependencyFlags dependencyFlags = Data::ProductDependencyInfo::CreateFlags(Data::AssetLoadBehavior::NoLoad));
|
||||
SCENE_CORE_API ExportProduct& AddProduct(AZStd::string&& filename, Uuid id, Data::AssetType assetType, AZStd::optional<u8> lod, AZStd::optional<u32> subId,
|
||||
@@ -69,3 +74,9 @@ namespace AZ
|
||||
} // namespace Events
|
||||
} // namespace SceneAPI
|
||||
} // namespace AZ
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
AZ_TYPE_INFO_SPECIALIZE(SceneAPI::Events::ExportProduct, "{6054EDCB-4C04-4D96-BF26-704999FFB725}");
|
||||
AZ_TYPE_INFO_SPECIALIZE(SceneAPI::Events::ExportProductList, "{1C76A51F-431B-4987-B653-CFCC940D0D0F}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user