Merge branch 'main' of https://github.com/aws-lumberyard/o3de
This commit is contained in:
+3
-2
@@ -1344,14 +1344,15 @@ namespace AzToolsFramework
|
||||
emit EnableSelectionUpdates(false);
|
||||
auto parentIndex = GetIndexFromEntity(parentId);
|
||||
auto childIndex = GetIndexFromEntity(childId);
|
||||
beginRemoveRows(parentIndex, childIndex.row(), childIndex.row());
|
||||
beginResetModel();
|
||||
}
|
||||
|
||||
void EntityOutlinerListModel::OnEntityInfoUpdatedRemoveChildEnd(AZ::EntityId parentId, AZ::EntityId childId)
|
||||
{
|
||||
(void)childId;
|
||||
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework);
|
||||
endRemoveRows();
|
||||
|
||||
endResetModel();
|
||||
|
||||
//must refresh partial lock/visibility of parents
|
||||
m_isFilterDirty = true;
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace AWSClientAuth
|
||||
m_settingsRegistry = AZStd::make_shared<AZ::SettingsRegistryImpl>();
|
||||
|
||||
AZStd::array<char, AZ::IO::MaxPathLength> resolvedPath{};
|
||||
AZ::IO::FileIOBase::GetInstance()->ResolvePath(settingsRegistryPath.data(), resolvedPath.data(), resolvedPath.size());
|
||||
fileIO->ResolvePath(settingsRegistryPath.data(), resolvedPath.data(), resolvedPath.size());
|
||||
|
||||
|
||||
if (!m_settingsRegistry->MergeSettingsFile(resolvedPath.data(), AZ::SettingsRegistryInterface::Format::JsonMergePatch))
|
||||
|
||||
@@ -74,7 +74,8 @@ namespace AZ
|
||||
|
||||
const RHI::BufferView* Buffer::GetBufferView() const
|
||||
{
|
||||
if(RHI::CheckBitsAny(m_rhiBuffer->GetDescriptor().m_bindFlags, RHI::BufferBindFlags::InputAssembly | RHI::BufferBindFlags::DynamicInputAssembly))
|
||||
if (m_rhiBuffer->GetDescriptor().m_bindFlags == RHI::BufferBindFlags::InputAssembly ||
|
||||
m_rhiBuffer->GetDescriptor().m_bindFlags == RHI::BufferBindFlags::DynamicInputAssembly)
|
||||
{
|
||||
|
||||
AZ_Assert(false, "Input assembly buffer doesn't need a regular buffer view, it requires a stream or index buffer view.");
|
||||
|
||||
@@ -10,36 +10,32 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Views/AssetBrowserTreeView.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetSelectionModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
|
||||
#include <Atom/RPI.Reflect/Material/MaterialAsset.h>
|
||||
#include <Atom/RPI.Reflect/Image/StreamingImageAsset.h>
|
||||
|
||||
#include <Atom/Document/MaterialDocumentSystemRequestBus.h>
|
||||
#include <Atom/Document/MaterialDocumentRequestBus.h>
|
||||
#include <Atom/Document/MaterialDocumentSystemRequestBus.h>
|
||||
#include <Atom/RPI.Reflect/Image/StreamingImageAsset.h>
|
||||
#include <Atom/RPI.Reflect/Material/MaterialAsset.h>
|
||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetSelectionModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Views/AssetBrowserTreeView.h>
|
||||
|
||||
#include <Source/Window/MaterialBrowserWidget.h>
|
||||
|
||||
#include <Source/Window/ui_MaterialBrowserWidget.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QDesktopServices>
|
||||
#include <QUrl>
|
||||
#include <QMessageBox>
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
#include <QCursor>
|
||||
#include <QPushButton>
|
||||
#include <QList>
|
||||
#include <QByteArray>
|
||||
#include <QCursor>
|
||||
#include <QDesktopServices>
|
||||
#include <QList>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QUrl>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace MaterialEditor
|
||||
@@ -99,7 +95,6 @@ namespace MaterialEditor
|
||||
}
|
||||
});
|
||||
|
||||
AssetBrowserModelNotificationBus::Handler::BusConnect();
|
||||
MaterialDocumentNotificationBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
@@ -108,7 +103,7 @@ namespace MaterialEditor
|
||||
// Maintains the tree expansion state between runs
|
||||
m_ui->m_assetBrowserTreeViewWidget->SaveState();
|
||||
MaterialDocumentNotificationBus::Handler::BusDisconnect();
|
||||
AssetBrowserModelNotificationBus::Handler::BusDisconnect();
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
AzToolsFramework::AssetBrowser::FilterConstType MaterialBrowserWidget::CreateFilter() const
|
||||
@@ -151,72 +146,65 @@ namespace MaterialEditor
|
||||
|
||||
for (const AssetBrowserEntry* entry : entries)
|
||||
{
|
||||
const SourceAssetBrowserEntry* sourceEntry = azrtti_cast<const SourceAssetBrowserEntry*>(entry);
|
||||
if (!sourceEntry)
|
||||
if (entry)
|
||||
{
|
||||
const ProductAssetBrowserEntry* productEntry = azrtti_cast<const ProductAssetBrowserEntry*>(entry);
|
||||
if (productEntry)
|
||||
if (AzFramework::StringFunc::Path::IsExtension(entry->GetFullPath().c_str(), MaterialExtension))
|
||||
{
|
||||
sourceEntry = azrtti_cast<const SourceAssetBrowserEntry*>(productEntry->GetParent());
|
||||
MaterialDocumentSystemRequestBus::Broadcast(&MaterialDocumentSystemRequestBus::Events::OpenDocument, entry->GetFullPath());
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceEntry)
|
||||
{
|
||||
if (AzFramework::StringFunc::Path::IsExtension(sourceEntry->GetFullPath().c_str(), MaterialExtension))
|
||||
{
|
||||
MaterialDocumentSystemRequestBus::Broadcast(&MaterialDocumentSystemRequestBus::Events::OpenDocument, sourceEntry->GetFullPath());
|
||||
}
|
||||
else if (AzFramework::StringFunc::Path::IsExtension(sourceEntry->GetFullPath().c_str(), MaterialTypeExtension))
|
||||
else if (AzFramework::StringFunc::Path::IsExtension(entry->GetFullPath().c_str(), MaterialTypeExtension))
|
||||
{
|
||||
//ignore MaterialTypeExtension
|
||||
}
|
||||
else
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(sourceEntry->GetFullPath().c_str()));
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(entry->GetFullPath().c_str()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::EntryAdded(const AssetBrowserEntry* entry)
|
||||
{
|
||||
if (m_pathToSelect.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const SourceAssetBrowserEntry* sourceEntry = azrtti_cast<const SourceAssetBrowserEntry*>(entry);
|
||||
if (!sourceEntry)
|
||||
{
|
||||
const ProductAssetBrowserEntry* productEntry = azrtti_cast<const ProductAssetBrowserEntry*>(entry);
|
||||
if (productEntry)
|
||||
{
|
||||
sourceEntry = azrtti_cast<const SourceAssetBrowserEntry*>(productEntry->GetParent());
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceEntry)
|
||||
{
|
||||
AZStd::string sourcePath = sourceEntry->GetFullPath();
|
||||
AzFramework::StringFunc::Path::Normalize(sourcePath);
|
||||
if (m_pathToSelect == sourcePath)
|
||||
{
|
||||
m_ui->m_assetBrowserTreeViewWidget->SelectFileAtPath(m_pathToSelect);
|
||||
m_pathToSelect.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::OnDocumentOpened(const AZ::Uuid& documentId)
|
||||
{
|
||||
AZStd::string absolutePath;
|
||||
MaterialDocumentRequestBus::EventResult(absolutePath, documentId, &MaterialDocumentRequestBus::Events::GetAbsolutePath);
|
||||
if (!absolutePath.empty())
|
||||
{
|
||||
// Selecting a new asset in the browser is not guaranteed to happen immediately.
|
||||
// The asset browser model notifications are sent before the model is updated.
|
||||
// Instead of relying on the notifications, queue the selection and process it on tick until this change occurs.
|
||||
m_pathToSelect = absolutePath;
|
||||
AzFramework::StringFunc::Path::Normalize(m_pathToSelect);
|
||||
m_ui->m_assetBrowserTreeViewWidget->SelectFileAtPath(m_pathToSelect);
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::OnTick(float deltaTime, AZ::ScriptTimePoint time)
|
||||
{
|
||||
AZ_UNUSED(time);
|
||||
AZ_UNUSED(deltaTime);
|
||||
|
||||
if (!m_pathToSelect.empty())
|
||||
{
|
||||
// Attempt to select the new path
|
||||
AzToolsFramework::AssetBrowser::AssetBrowserViewRequestBus::Broadcast(
|
||||
&AzToolsFramework::AssetBrowser::AssetBrowserViewRequestBus::Events::SelectFileAtPath, m_pathToSelect);
|
||||
|
||||
// Iterate over the selected entries to verify if the selection was made
|
||||
for (const AssetBrowserEntry* entry : m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets())
|
||||
{
|
||||
if (entry)
|
||||
{
|
||||
AZStd::string sourcePath = entry->GetFullPath();
|
||||
AzFramework::StringFunc::Path::Normalize(sourcePath);
|
||||
if (m_pathToSelect == sourcePath)
|
||||
{
|
||||
// Once the selection is confirmed, cancel the operation and disconnect
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
m_pathToSelect.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
#pragma once
|
||||
|
||||
#if !defined(Q_MOC_RUN)
|
||||
#include <Atom/Document/MaterialDocumentNotificationBus.h>
|
||||
#include <AzCore/Component/TickBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Entries/AssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
#include <Atom/Document/MaterialDocumentNotificationBus.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QWidget>
|
||||
@@ -26,8 +26,6 @@ AZ_POP_DISABLE_WARNING
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
namespace AssetBrowser
|
||||
@@ -50,8 +48,8 @@ namespace MaterialEditor
|
||||
//! Provides a tree view of all available materials and other assets exposed by the MaterialEditor.
|
||||
class MaterialBrowserWidget
|
||||
: public QWidget
|
||||
, public AzToolsFramework::AssetBrowser::AssetBrowserModelNotificationBus::Handler
|
||||
, public MaterialDocumentNotificationBus::Handler
|
||||
, protected AZ::TickBus::Handler
|
||||
, protected MaterialDocumentNotificationBus::Handler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -62,20 +60,20 @@ namespace MaterialEditor
|
||||
AzToolsFramework::AssetBrowser::FilterConstType CreateFilter() const;
|
||||
void OpenSelectedEntries();
|
||||
|
||||
// MaterialDocumentNotificationBus::Handler implementation
|
||||
void OnDocumentOpened(const AZ::Uuid& documentId) override;
|
||||
|
||||
// AZ::TickBus::Handler
|
||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
||||
|
||||
void OpenOptionsMenu();
|
||||
|
||||
QScopedPointer<Ui::MaterialBrowserWidget> m_ui;
|
||||
AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* m_filterModel = nullptr;
|
||||
|
||||
//! if new asset is being created with this path it will automatically be selected
|
||||
AZStd::string m_pathToSelect;
|
||||
|
||||
// AssetBrowserModelNotificationBus::Handler implementation
|
||||
void EntryAdded(const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) override;
|
||||
|
||||
// MaterialDocumentNotificationBus::Handler implementation
|
||||
void OnDocumentOpened(const AZ::Uuid& documentId) override;
|
||||
|
||||
void OpenOptionsMenu();
|
||||
|
||||
QByteArray m_materialBrowserState;
|
||||
};
|
||||
} // namespace MaterialEditor
|
||||
|
||||
@@ -212,19 +212,26 @@ namespace AZ
|
||||
|
||||
void AtomActorInstance::SetModelAsset([[maybe_unused]] Data::Asset<RPI::ModelAsset> modelAsset)
|
||||
{
|
||||
// Atom Actor Instance is not based on an actual Model Asset yet,
|
||||
// it's created at runtime from an Actor Asset.
|
||||
// Changing model asset is not supported by Atom Actor Instance.
|
||||
// The model asset is obtained from the Actor inside the ActorAsset,
|
||||
// which is passed to the constructor. To set a different model asset
|
||||
// this instance should use a different Actor.
|
||||
AZ_Assert(false, "AtomActorInstance::SetModelAsset not supported");
|
||||
}
|
||||
|
||||
const Data::Asset<RPI::ModelAsset>& AtomActorInstance::GetModelAsset() const
|
||||
{
|
||||
return m_skinnedMeshInstance->m_model->GetModelAsset();
|
||||
AZ_Assert(GetActor(), "Expecting a Atom Actor Instance having a valid Actor.");
|
||||
return GetActor()->GetMeshAsset();
|
||||
}
|
||||
|
||||
void AtomActorInstance::SetModelAssetId([[maybe_unused]] Data::AssetId modelAssetId)
|
||||
{
|
||||
// Atom Actor Instance is not based on an actual Model Asset yet,
|
||||
// it's created at runtime from an Actor Asset.
|
||||
// Changing model asset is not supported by Atom Actor Instance.
|
||||
// The model asset is obtained from the Actor inside the ActorAsset,
|
||||
// which is passed to the constructor. To set a different model asset
|
||||
// this instance should use a different Actor.
|
||||
AZ_Assert(false, "AtomActorInstance::SetModelAssetId not supported");
|
||||
}
|
||||
|
||||
Data::AssetId AtomActorInstance::GetModelAssetId() const
|
||||
@@ -234,8 +241,11 @@ namespace AZ
|
||||
|
||||
void AtomActorInstance::SetModelAssetPath([[maybe_unused]] const AZStd::string& modelAssetPath)
|
||||
{
|
||||
// Atom Actor Instance is not based on an actual Model Asset yet,
|
||||
// it's created at runtime from an Actor Asset.
|
||||
// Changing model asset is not supported by Atom Actor Instance.
|
||||
// The model asset is obtained from the Actor inside the ActorAsset,
|
||||
// which is passed to the constructor. To set a different model asset
|
||||
// this instance should use a different Actor.
|
||||
AZ_Assert(false, "AtomActorInstance::SetModelAssetPath not supported");
|
||||
}
|
||||
|
||||
AZStd::string AtomActorInstance::GetModelAssetPath() const
|
||||
@@ -278,28 +288,6 @@ namespace AZ
|
||||
return IsVisible();
|
||||
}
|
||||
|
||||
void AtomActorInstance::SetMeshAsset(const AZ::Data::AssetId& id)
|
||||
{
|
||||
AZ::Data::Asset<EMotionFX::Integration::ActorAsset> asset =
|
||||
AZ::Data::AssetManager::Instance().GetAsset<EMotionFX::Integration::ActorAsset>(
|
||||
id, m_actorAsset.GetAutoLoadBehavior());
|
||||
if (asset)
|
||||
{
|
||||
m_actorAsset = asset;
|
||||
Create();
|
||||
}
|
||||
}
|
||||
|
||||
AZ::Data::Asset<AZ::Data::AssetData> AtomActorInstance::GetMeshAsset()
|
||||
{
|
||||
return m_actorAsset;
|
||||
}
|
||||
|
||||
bool AtomActorInstance::GetVisibility()
|
||||
{
|
||||
return static_cast<const AtomActorInstance&>(*this).GetVisibility();
|
||||
}
|
||||
|
||||
AZ::u32 AtomActorInstance::GetJointCount()
|
||||
{
|
||||
return m_actorInstance->GetActor()->GetSkeleton()->GetNumNodes();
|
||||
@@ -469,7 +457,6 @@ namespace AZ
|
||||
TransformNotificationBus::Handler::BusConnect(m_entityId);
|
||||
MaterialComponentNotificationBus::Handler::BusConnect(m_entityId);
|
||||
MeshComponentRequestBus::Handler::BusConnect(m_entityId);
|
||||
LmbrCentral::MeshComponentRequestBus::Handler::BusConnect(m_entityId);
|
||||
|
||||
const Data::Instance<RPI::Model> model = m_meshFeatureProcessor->GetModel(*m_meshHandle);
|
||||
MeshComponentNotificationBus::Event(m_entityId, &MeshComponentNotificationBus::Events::OnModelReady, model->GetModelAsset(), model);
|
||||
@@ -479,7 +466,6 @@ namespace AZ
|
||||
{
|
||||
MeshComponentNotificationBus::Event(m_entityId, &MeshComponentNotificationBus::Events::OnModelPreDestroy);
|
||||
|
||||
LmbrCentral::MeshComponentRequestBus::Handler::BusDisconnect();
|
||||
MeshComponentRequestBus::Handler::BusDisconnect();
|
||||
MaterialComponentNotificationBus::Handler::BusDisconnect();
|
||||
TransformNotificationBus::Handler::BusDisconnect();
|
||||
|
||||
@@ -62,7 +62,6 @@ namespace AZ
|
||||
, public AzFramework::BoundsRequestBus::Handler
|
||||
, public AZ::Render::MaterialComponentNotificationBus::Handler
|
||||
, public AZ::Render::MeshComponentRequestBus::Handler
|
||||
, public LmbrCentral::MeshComponentRequestBus::Handler
|
||||
, private AZ::Render::SkinnedMeshFeatureProcessorNotificationBus::Handler
|
||||
, private AZ::Render::SkinnedMeshOutputStreamNotificationBus::Handler
|
||||
, private LmbrCentral::SkeletalHierarchyRequestBus::Handler
|
||||
@@ -143,14 +142,6 @@ namespace AZ
|
||||
bool GetVisibility() const override;
|
||||
// GetWorldBounds/GetLocalBounds already overridden by BoundsRequestBus::Handler
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// LmbrCentral::MeshComponentRequestBus::Handler
|
||||
void SetMeshAsset(const AZ::Data::AssetId& id) override;
|
||||
AZ::Data::Asset<AZ::Data::AssetData> GetMeshAsset() override;
|
||||
bool GetVisibility() override;
|
||||
// SetVisibility already overridden by MeshComponentRequestBus::Handler
|
||||
// GetWorldBounds/GetLocalBounds already overridden by BoundsRequestBus::Handler
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SkeletalHierarchyRequestBus::Handler overrides...
|
||||
AZ::u32 GetJointCount() override;
|
||||
|
||||
@@ -69,4 +69,4 @@ namespace Blast
|
||||
// DO NOT MODIFY THIS LINE UNLESS YOU RENAME THE GEM
|
||||
// The first parameter should be GemName_GemIdLower
|
||||
// The second should be the fully qualified name of the class above
|
||||
AZ_DECLARE_MODULE_CLASS(Blast_414bd211c99d4f74aef3a266b9ca208c, Blast::BlastModule)
|
||||
AZ_DECLARE_MODULE_CLASS(Gem_Blast, Blast::BlastModule)
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
// DO NOT MODIFY THIS LINE UNLESS YOU RENAME THE GEM
|
||||
// The first parameter should be GemName_GemIdLower
|
||||
// The second should be the fully qualified name of the class above
|
||||
AZ_DECLARE_MODULE_CLASS(Blast_414bd211c99d4f74aef3a266b9ca208c, AZ::Module)
|
||||
AZ_DECLARE_MODULE_CLASS(Gem_Blast, AZ::Module)
|
||||
|
||||
@@ -1,362 +1,172 @@
|
||||
<ObjectStream version="3">
|
||||
<Class name="SceneManifest" version="1" type="{9274AD17-3212-4651-9F3B-7DCCB080E467}">
|
||||
<Class name="AZStd::vector" field="values" type="{5D6A7C67-11CA-59A4-829B-0B20B781B292}">
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{EB7522F9-0E87-55A9-A191-E924DC5AE867}">
|
||||
<Class name="ActorGroup" field="element" version="4" type="{D1AC3803-8282-46C5-8610-93CD39B0F843}">
|
||||
<Class name="IActorGroup" field="BaseClass1" version="2" type="{C86945A8-AEE8-4CFC-8FBF-A20E9BC71348}">
|
||||
<Class name="ISceneNodeGroup" field="BaseClass1" version="1" type="{1D20FA11-B184-429E-8C86-745852234845}">
|
||||
<Class name="IGroup" field="BaseClass1" version="1" type="{DE008E67-790D-4672-A73A-5CA0F31EDD2D}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="name" value="chicken" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="selectedRootBone" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="SceneNodeSelectionList" field="nodeSelectionList" version="1" type="{D0CE66CE-1BAD-42F5-86ED-3923573B3A02}">
|
||||
<Class name="ISceneNodeSelectionList" field="BaseClass1" version="1" type="{DC3F9996-E550-4780-A03B-80B0DDA1DA45}"/>
|
||||
<Class name="AZStd::vector" field="selectedNodes" type="{99DAD0BC-740E-5E82-826B-8FC7968CC02C}">
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_feet_skin" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_eyes_skin" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_body_skin" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_mohawk" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_feet_skin.SkinWeight_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_feet_skin.map1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_feet_skin.chicken_body_mat" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_eyes_skin.SkinWeight_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_eyes_skin.uvSet1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_eyes_skin.chicken_eye_mat" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_body_skin.SkinWeight_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_body_skin.map1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_body_skin.chicken_body_mat" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_mohawk.SkinWeight_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_mohawk.colorSet1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_mohawk.map1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_mohawk.mohawkMat" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="AZStd::vector" field="unselectedNodes" type="{99DAD0BC-740E-5E82-826B-8FC7968CC02C}">
|
||||
<Class name="AZStd::string" field="element" value="RootNode" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint.def_l_ball_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint.def_r_ball_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint.def_c_tail2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint.def_l_wing_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint.def_r_wing_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint.def_l_ball_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint.def_r_ball_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint.def_c_tail2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint.def_l_wing_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint.def_r_wing_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint.def_c_mouth_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint.def_c_mouth_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint.def_c_waddle_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint.def_c_feather_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint.def_c_waddle_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint.def_c_feather_end.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZ::Uuid" field="id" value="{C086F309-EE7E-5AFD-A9C2-69DE5BA48461}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="RuleContainer" field="rules" version="1" type="{2C20D3DF-57FF-4A31-8680-A4D45302B9CF}">
|
||||
<Class name="AZStd::vector" field="rules" type="{B5BDB053-178F-5D55-8663-70897A71B7C9}">
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="CoordinateSystemRule" field="element" version="1" type="{603207E2-4F55-4C33-9AAB-98CA75C1E351}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
<Class name="int" field="targetCoordinateSystem" value="0" type="{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="TangentsRule" field="element" version="1" type="{4BD1CE13-D2EB-4CCF-AB21-4877EF69DE7D}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
<Class name="int" field="tangentSpace" value="1" type="{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}"/>
|
||||
<Class name="int" field="bitangentMethod" value="1" type="{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}"/>
|
||||
<Class name="bool" field="normalize" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="AZ::u64" field="uvSetIndex" value="0" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="SkinRule" field="element" version="2" type="{B26E7FC9-86A1-4711-8415-8BE4861C08BA}">
|
||||
<Class name="ISkinRule" field="BaseClass1" version="1" type="{5496ECAF-B096-4455-AE72-D55C5B675443}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="maxWeightsPerVertex" value="4" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="float" field="weightThreshold" value="0.0010000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="MeshRule" field="element" version="4" type="{7F115A73-28A2-4E35-8C87-1A1982773034}">
|
||||
<Class name="IMeshRule" field="BaseClass1" version="1" type="{299934A2-22EC-48AF-AB2B-953AFF8E0B19}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="vertexColorStreamName" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="unsigned char" field="vertexColorMode" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="ClothRule" field="element" version="2" type="{2F5AC324-314A-4C53-AFFF-DDFA46605DDB}">
|
||||
<Class name="IClothRule" field="BaseClass1" version="1" type="{5185510A-50BF-418A-ACB4-1A9E014C7E43}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="meshNodeName" value="RootNode.chicken_mohawk" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="inverseMassesStreamName" value="colorSet1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="unsigned char" field="inverseMassesChannel" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::string" field="motionConstraintsStreamName" value="Default: 1.0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="unsigned char" field="motionConstraintsChannel" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::string" field="backstopStreamName" value="None" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="unsigned char" field="backstopOffsetChannel" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="unsigned char" field="backstopRadiusChannel" value="1" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="MetaDataRule" field="element" version="2" type="{8D759063-7D2E-4543-8EB3-AB510A5886CF}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
<Class name="AZStd::vector" field="commands" type="{C9984A24-DA9E-518F-9F81-27E51FAEB1F7}"/>
|
||||
<Class name="AZStd::string" field="metaData" value='AdjustActor -actorID $(ACTORID) -name "chicken"
|
||||
ActorSetCollisionMeshes -actorID $(ACTORID) -lod 0 -nodeList ""
|
||||
AdjustActor -actorID $(ACTORID) -nodesExcludedFromBounds "" -nodeAction "select"
|
||||
AdjustActor -actorID $(ACTORID) -nodeAction "replace" -attachmentNodes ""
|
||||
' type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="ActorPhysicsSetupRule" field="element" version="1" type="{B18E9412-85DC-442D-9AA3-293B583EC1A6}">
|
||||
<Class name="AZStd::shared_ptr" field="data" type="{40A77278-7D0F-51EB-A537-72AE8478D1C0}">
|
||||
<Class name="PhysicsSetup" field="element" version="4" type="{4749DFCB-5CBE-434D-9551-34F4C0CCA428}">
|
||||
<Class name="AnimationConfiguration" field="config" version="3" type="{6D53168F-470E-4B41-986A-612506F09B40}">
|
||||
<Class name="CharacterColliderConfiguration" field="hitDetectionConfig" version="1" type="{4DFF1434-DF5B-4ED5-BE0F-D3E66F9B331A}">
|
||||
<Class name="AZStd::vector" field="nodes" type="{70C9FE19-65A8-5FA9-A447-7561B0C9FA9A}"/>
|
||||
</Class>
|
||||
<Class name="RagdollConfiguration" field="ragdollConfig" version="2" type="{7C96D332-61D8-4C58-A2BF-707716D38D14}">
|
||||
<Class name="WorldBodyConfiguration" field="BaseClass1" version="1" type="{6EEB377C-DC60-4E10-AF12-9626C0763B2D}">
|
||||
<Class name="AZStd::string" field="name" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="AZStd::vector" field="nodes" type="{023260FD-3D32-570B-A75E-4099359BE960}"/>
|
||||
<Class name="CharacterColliderConfiguration" field="colliders" version="1" type="{4DFF1434-DF5B-4ED5-BE0F-D3E66F9B331A}">
|
||||
<Class name="AZStd::vector" field="nodes" type="{70C9FE19-65A8-5FA9-A447-7561B0C9FA9A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="CharacterColliderConfiguration" field="clothConfig" version="1" type="{4DFF1434-DF5B-4ED5-BE0F-D3E66F9B331A}">
|
||||
<Class name="AZStd::vector" field="nodes" type="{70C9FE19-65A8-5FA9-A447-7561B0C9FA9A}">
|
||||
<Class name="CharacterColliderNodeConfiguration" field="element" version="1" type="{C16F3301-0979-400C-B734-692D83755C39}">
|
||||
<Class name="AZStd::string" field="name" value="def_c_head_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::vector" field="shapes" type="{EDCE8AC7-3324-5A75-9B44-27983A0CBFDB}">
|
||||
<Class name="AZStd::pair" field="element" type="{9EEDBBE5-F74D-528D-8089-580876B248C5}">
|
||||
<Class name="AZStd::shared_ptr" field="value1" type="{FBE2C86C-C034-57E1-A1A3-9066B3F60C0E}">
|
||||
<Class name="ColliderConfiguration" field="element" version="4" type="{16206828-F867-4DA9-9E4E-549B7B2C6174}">
|
||||
<Class name="CollisionLayer" field="CollisionLayer" version="1" type="{5AA459C8-2D92-46D2-9154-ED49EE4FE70E}">
|
||||
<Class name="unsigned char" field="Index" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
</Class>
|
||||
<Class name="Id" field="CollisionGroupId" version="1" type="{DFED4FE5-2292-4F07-A318-41C68DAEFE9C}">
|
||||
<Class name="AZ::Uuid" field="GroupId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
<Class name="bool" field="Visible" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Trigger" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Simulated" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="InSceneQueries" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Exclusive" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="Vector3" field="Position" value="-0.0850560 0.0000000 0.0093709" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
<Class name="Quaternion" field="Rotation" value="0.7071437 0.0000000 0.0000000 0.7089844" type="{73103120-3DD3-4873-BAB3-9713FA2804FB}"/>
|
||||
<Class name="MaterialSelection" field="MaterialSelection" version="2" type="{F571AFF4-C4BB-4590-A204-D11D9EEABBC4}">
|
||||
<Class name="Asset" field="Material" value="id={00000000-0000-0000-0000-000000000000}:0,type={9E366D8C-33BB-4825-9A1F-FA3ADBE11D0F},hint={},loadBehavior=2" version="2" type="{77A19D40-8731-4D3C-9041-1B43047366A4}"/>
|
||||
<Class name="AZStd::vector" field="MaterialIds" type="{82111EAD-9C65-57F0-BA72-46D6D931B434}">
|
||||
<Class name="MaterialId" field="element" version="1" type="{744CCE6C-9F69-4E2F-B950-DAB8514F870B}">
|
||||
<Class name="AZ::Uuid" field="MaterialId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="unsigned char" field="propertyVisibilityFlags" value="248" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::string" field="ColliderTag" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="float" field="RestOffset" value="0.0000000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
<Class name="float" field="ContactOffset" value="0.0200000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="value2" type="{568500E4-F003-54B8-B728-711DB5DF0AE4}">
|
||||
<Class name="CapsuleShapeConfiguration" field="element" version="1" type="{19C6A07E-5644-46B7-A49E-48703B56ED32}">
|
||||
<Class name="ShapeConfiguration" field="BaseClass1" version="1" type="{1FD56C72-6055-4B35-9253-07D432B94E91}">
|
||||
<Class name="Vector3" field="Scale" value="1.0000000 1.0000000 1.0000000" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
</Class>
|
||||
<Class name="float" field="Height" value="0.1912735" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
<Class name="float" field="Radius" value="0.0506367" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="CharacterColliderNodeConfiguration" field="element" version="1" type="{C16F3301-0979-400C-B734-692D83755C39}">
|
||||
<Class name="AZStd::string" field="name" value="def_c_neck_joint" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::vector" field="shapes" type="{EDCE8AC7-3324-5A75-9B44-27983A0CBFDB}">
|
||||
<Class name="AZStd::pair" field="element" type="{9EEDBBE5-F74D-528D-8089-580876B248C5}">
|
||||
<Class name="AZStd::shared_ptr" field="value1" type="{FBE2C86C-C034-57E1-A1A3-9066B3F60C0E}">
|
||||
<Class name="ColliderConfiguration" field="element" version="4" type="{16206828-F867-4DA9-9E4E-549B7B2C6174}">
|
||||
<Class name="CollisionLayer" field="CollisionLayer" version="1" type="{5AA459C8-2D92-46D2-9154-ED49EE4FE70E}">
|
||||
<Class name="unsigned char" field="Index" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
</Class>
|
||||
<Class name="Id" field="CollisionGroupId" version="1" type="{DFED4FE5-2292-4F07-A318-41C68DAEFE9C}">
|
||||
<Class name="AZ::Uuid" field="GroupId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
<Class name="bool" field="Visible" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Trigger" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Simulated" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="InSceneQueries" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Exclusive" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="Vector3" field="Position" value="-0.0381019 0.0000000 -0.0313244" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
<Class name="Quaternion" field="Rotation" value="0.0000000 0.0000000 0.0000000 1.0000000" type="{73103120-3DD3-4873-BAB3-9713FA2804FB}"/>
|
||||
<Class name="MaterialSelection" field="MaterialSelection" version="2" type="{F571AFF4-C4BB-4590-A204-D11D9EEABBC4}">
|
||||
<Class name="Asset" field="Material" value="id={00000000-0000-0000-0000-000000000000}:0,type={9E366D8C-33BB-4825-9A1F-FA3ADBE11D0F},hint={},loadBehavior=2" version="2" type="{77A19D40-8731-4D3C-9041-1B43047366A4}"/>
|
||||
<Class name="AZStd::vector" field="MaterialIds" type="{82111EAD-9C65-57F0-BA72-46D6D931B434}">
|
||||
<Class name="MaterialId" field="element" version="1" type="{744CCE6C-9F69-4E2F-B950-DAB8514F870B}">
|
||||
<Class name="AZ::Uuid" field="MaterialId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="unsigned char" field="propertyVisibilityFlags" value="248" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::string" field="ColliderTag" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="float" field="RestOffset" value="0.0000000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
<Class name="float" field="ContactOffset" value="0.0200000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="value2" type="{568500E4-F003-54B8-B728-711DB5DF0AE4}">
|
||||
<Class name="SphereShapeConfiguration" field="element" version="1" type="{0B9F3D2E-0780-4B0B-BFEE-B41C5FDE774A}">
|
||||
<Class name="ShapeConfiguration" field="BaseClass1" version="1" type="{1FD56C72-6055-4B35-9253-07D432B94E91}">
|
||||
<Class name="Vector3" field="Scale" value="1.0000000 1.0000000 1.0000000" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
</Class>
|
||||
<Class name="float" field="Radius" value="0.1606994" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="CharacterColliderNodeConfiguration" field="element" version="1" type="{C16F3301-0979-400C-B734-692D83755C39}">
|
||||
<Class name="AZStd::string" field="name" value="def_c_spine_end" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::vector" field="shapes" type="{EDCE8AC7-3324-5A75-9B44-27983A0CBFDB}">
|
||||
<Class name="AZStd::pair" field="element" type="{9EEDBBE5-F74D-528D-8089-580876B248C5}">
|
||||
<Class name="AZStd::shared_ptr" field="value1" type="{FBE2C86C-C034-57E1-A1A3-9066B3F60C0E}">
|
||||
<Class name="ColliderConfiguration" field="element" version="4" type="{16206828-F867-4DA9-9E4E-549B7B2C6174}">
|
||||
<Class name="CollisionLayer" field="CollisionLayer" version="1" type="{5AA459C8-2D92-46D2-9154-ED49EE4FE70E}">
|
||||
<Class name="unsigned char" field="Index" value="0" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
</Class>
|
||||
<Class name="Id" field="CollisionGroupId" version="1" type="{DFED4FE5-2292-4F07-A318-41C68DAEFE9C}">
|
||||
<Class name="AZ::Uuid" field="GroupId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
<Class name="bool" field="Visible" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Trigger" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Simulated" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="InSceneQueries" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="Exclusive" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="Vector3" field="Position" value="-0.0000002 0.0126462 -0.2410437" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
<Class name="Quaternion" field="Rotation" value="0.0000000 0.0000000 0.0000000 1.0000000" type="{73103120-3DD3-4873-BAB3-9713FA2804FB}"/>
|
||||
<Class name="MaterialSelection" field="MaterialSelection" version="2" type="{F571AFF4-C4BB-4590-A204-D11D9EEABBC4}">
|
||||
<Class name="Asset" field="Material" value="id={00000000-0000-0000-0000-000000000000}:0,type={9E366D8C-33BB-4825-9A1F-FA3ADBE11D0F},hint={},loadBehavior=2" version="2" type="{77A19D40-8731-4D3C-9041-1B43047366A4}"/>
|
||||
<Class name="AZStd::vector" field="MaterialIds" type="{82111EAD-9C65-57F0-BA72-46D6D931B434}">
|
||||
<Class name="MaterialId" field="element" version="1" type="{744CCE6C-9F69-4E2F-B950-DAB8514F870B}">
|
||||
<Class name="AZ::Uuid" field="MaterialId" value="{00000000-0000-0000-0000-000000000000}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="unsigned char" field="propertyVisibilityFlags" value="248" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::string" field="ColliderTag" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="float" field="RestOffset" value="0.0000000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
<Class name="float" field="ContactOffset" value="0.0200000" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="value2" type="{568500E4-F003-54B8-B728-711DB5DF0AE4}">
|
||||
<Class name="SphereShapeConfiguration" field="element" version="1" type="{0B9F3D2E-0780-4B0B-BFEE-B41C5FDE774A}">
|
||||
<Class name="ShapeConfiguration" field="BaseClass1" version="1" type="{1FD56C72-6055-4B35-9253-07D432B94E91}">
|
||||
<Class name="Vector3" field="Scale" value="1.0000000 1.0000000 1.0000000" type="{8379EB7D-01FA-4538-B64B-A6543B4BE73D}"/>
|
||||
</Class>
|
||||
<Class name="float" field="Radius" value="0.2487596" type="{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="CharacterColliderConfiguration" field="simulatedObjectColliderConfig" version="1" type="{4DFF1434-DF5B-4ED5-BE0F-D3E66F9B331A}">
|
||||
<Class name="AZStd::vector" field="nodes" type="{70C9FE19-65A8-5FA9-A447-7561B0C9FA9A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::shared_ptr" field="element" type="{0BB4AFBA-F087-55C7-95DF-01D71F6CB052}">
|
||||
<Class name="MaterialRule" field="element" version="2" type="{35620013-A27C-4F6D-87BF-72F11688ACAD}">
|
||||
<Class name="IMaterialRule" field="BaseClass1" version="1" type="{428C9752-6EDF-4FA2-9BDF-DBDFCEB4CC0F}">
|
||||
<Class name="IRule" field="BaseClass1" version="1" type="{81267F8B-3963-423B-9FF7-D276D82CD110}">
|
||||
<Class name="IManifestObject" field="BaseClass1" type="{3B839407-1884-4FF4-ABEA-CA9D347E83F7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="bool" field="updateMaterials" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
<Class name="bool" field="removeMaterials" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
</ObjectStream>
|
||||
|
||||
{
|
||||
"values": [
|
||||
{
|
||||
"$type": "ActorGroup",
|
||||
"name": "chicken",
|
||||
"id": "{C086F309-EE7E-5AFD-A9C2-69DE5BA48461}",
|
||||
"rules": {
|
||||
"rules": [
|
||||
{
|
||||
"$type": "MetaDataRule",
|
||||
"metaData": "AdjustActor -actorID $(ACTORID) -name \"chicken\"\r\nActorSetCollisionMeshes -actorID $(ACTORID) -lod 0 -nodeList \"\"\r\nAdjustActor -actorID $(ACTORID) -nodesExcludedFromBounds \"\" -nodeAction \"select\"\r\nAdjustActor -actorID $(ACTORID) -nodeAction \"replace\" -attachmentNodes \"\"\r\n"
|
||||
},
|
||||
{
|
||||
"$type": "ActorPhysicsSetupRule",
|
||||
"data": {
|
||||
"config": {
|
||||
"clothConfig": {
|
||||
"nodes": [
|
||||
{
|
||||
"name": "def_c_head_joint",
|
||||
"shapes": [
|
||||
[
|
||||
{
|
||||
"Visible": true,
|
||||
"Position": [
|
||||
-0.08505599945783615,
|
||||
0.0,
|
||||
0.009370899759232998
|
||||
],
|
||||
"Rotation": [
|
||||
0.7071437239646912,
|
||||
0.0,
|
||||
0.0,
|
||||
0.708984375
|
||||
],
|
||||
"propertyVisibilityFlags": 248
|
||||
},
|
||||
{
|
||||
"$type": "CapsuleShapeConfiguration",
|
||||
"Height": 0.191273495554924,
|
||||
"Radius": 0.05063670128583908
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "def_c_neck_joint",
|
||||
"shapes": [
|
||||
[
|
||||
{
|
||||
"Visible": true,
|
||||
"Position": [
|
||||
-0.03810190036892891,
|
||||
0.0,
|
||||
-0.03132440149784088
|
||||
],
|
||||
"propertyVisibilityFlags": 248
|
||||
},
|
||||
{
|
||||
"$type": "SphereShapeConfiguration",
|
||||
"Radius": 0.16069939732551576
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "def_c_spine_end",
|
||||
"shapes": [
|
||||
[
|
||||
{
|
||||
"Visible": true,
|
||||
"Position": [
|
||||
-2.0000000233721949e-7,
|
||||
0.012646200135350228,
|
||||
-0.24104370176792146
|
||||
],
|
||||
"propertyVisibilityFlags": 248
|
||||
},
|
||||
{
|
||||
"$type": "SphereShapeConfiguration",
|
||||
"Radius": 0.24875959753990174
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"$type": "CoordinateSystemRule"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"$type": "{07B356B7-3635-40B5-878A-FAC4EFD5AD86} MeshGroup",
|
||||
"name": "chicken",
|
||||
"nodeSelectionList": {
|
||||
"selectedNodes": [
|
||||
{},
|
||||
"RootNode",
|
||||
"RootNode.chicken_skeleton",
|
||||
"RootNode.chicken_feet_skin",
|
||||
"RootNode.chicken_eyes_skin",
|
||||
"RootNode.chicken_body_skin",
|
||||
"RootNode.chicken_mohawk",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_l_uprLeg_joint.def_l_lwrLeg_joint.def_l_foot_joint.def_l_ball_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_r_uprLeg_joint.def_r_lwrLeg_joint.def_r_foot_joint.def_r_ball_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_tail1_joint.def_c_tail2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_l_wing1_joint.def_l_wing2_joint.def_l_wing_end",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_r_wing1_joint.def_r_wing2_joint.def_r_wing_end",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_mouth_joint.def_c_mouth_end",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_waddle1_joint.def_c_waddle2_joint.def_c_waddle3_joint.def_c_waddle_end",
|
||||
"RootNode.chicken_skeleton.def_c_chickenRoot_joint.def_c_spine1_joint.def_c_spine2_joint.def_c_spine3_joint.def_c_spine_end.def_c_neck_joint.def_c_head_joint.def_c_feather1_joint.def_c_feather2_joint.def_c_feather3_joint.def_c_feather4_joint.def_c_feather_end"
|
||||
]
|
||||
},
|
||||
"rules": {
|
||||
"rules": [
|
||||
{
|
||||
"$type": "SkinRule"
|
||||
},
|
||||
{
|
||||
"$type": "StaticMeshAdvancedRule",
|
||||
"vertexColorStreamName": "Disabled"
|
||||
},
|
||||
{
|
||||
"$type": "MaterialRule"
|
||||
},
|
||||
{
|
||||
"$type": "CoordinateSystemRule"
|
||||
},
|
||||
{
|
||||
"$type": "ClothRule",
|
||||
"meshNodeName": "RootNode.chicken_mohawk",
|
||||
"inverseMassesStreamName": "colorSet1",
|
||||
"motionConstraintsStreamName": "Default: 1.0",
|
||||
"backstopStreamName": "None"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "{55E26F74-B35F-4BC1-87BB-83E3DE85C346}"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -448,9 +448,18 @@ namespace NvCloth
|
||||
const auto& renderTangents = renderData.m_tangents;
|
||||
const auto& renderBitangents = renderData.m_bitangents;
|
||||
|
||||
AZ::Data::Asset<AZ::RPI::ModelAsset> modelAsset;
|
||||
AZ::Render::MeshComponentRequestBus::EventResult(
|
||||
modelAsset, m_entityId, &AZ::Render::MeshComponentRequestBus::Events::GetModelAsset);
|
||||
// Since Atom has a 1:1 relation with between ModelAsset buffers and Model buffers,
|
||||
// internally it created a new asset for the model instance. So it's important to
|
||||
// get the asset from the model when we want to write to them, instead of getting the
|
||||
// ModelAsset directly from the bus (which returns the original asset shared by all entities).
|
||||
AZ::Data::Instance<AZ::RPI::Model> model;
|
||||
AZ::Render::MeshComponentRequestBus::EventResult(model, m_entityId, &AZ::Render::MeshComponentRequestBus::Events::GetModel);
|
||||
if (!model)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AZ::Data::Asset<AZ::RPI::ModelAsset> modelAsset = model->GetModelAsset();
|
||||
if (!modelAsset.IsReady())
|
||||
{
|
||||
return;
|
||||
|
||||
@@ -13,11 +13,7 @@
|
||||
#include <Utils/AssetHelper.h>
|
||||
|
||||
#include <Utils/MeshAssetHelper.h>
|
||||
#include <Utils/ActorAssetHelper.h>
|
||||
|
||||
#include <AtomLyIntegration/CommonFeatures/Mesh/MeshComponentBus.h>
|
||||
|
||||
#include <Integration/ActorComponentBus.h>
|
||||
|
||||
namespace NvCloth
|
||||
{
|
||||
@@ -30,25 +26,9 @@ namespace NvCloth
|
||||
|
||||
AZStd::unique_ptr<AssetHelper> AssetHelper::CreateAssetHelper(AZ::EntityId entityId)
|
||||
{
|
||||
// Does the entity have an Actor Asset?
|
||||
EMotionFX::ActorInstance* actorInstance = nullptr;
|
||||
EMotionFX::Integration::ActorComponentRequestBus::EventResult(
|
||||
actorInstance, entityId, &EMotionFX::Integration::ActorComponentRequestBus::Events::GetActorInstance);
|
||||
if (actorInstance)
|
||||
{
|
||||
return AZStd::make_unique<ActorAssetHelper>(entityId);
|
||||
}
|
||||
|
||||
AZ::Data::Asset<AZ::RPI::ModelAsset> modelAsset;
|
||||
AZ::Render::MeshComponentRequestBus::EventResult(
|
||||
modelAsset, entityId, &AZ::Render::MeshComponentRequestBus::Events::GetModelAsset);
|
||||
if (modelAsset.GetId().IsValid())
|
||||
{
|
||||
return AZStd::make_unique<MeshAssetHelper>(entityId);
|
||||
}
|
||||
|
||||
AZ_Warning("AssetHelper", false, "Unexpected asset type");
|
||||
return nullptr;
|
||||
return entityId.IsValid()
|
||||
? AZStd::make_unique<MeshAssetHelper>(entityId)
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
float AssetHelper::ConvertBackstopOffset(float backstopOffset)
|
||||
|
||||
@@ -14,11 +14,17 @@
|
||||
|
||||
#include <Utils/MeshAssetHelper.h>
|
||||
|
||||
#include <Integration/ActorComponentBus.h>
|
||||
|
||||
namespace NvCloth
|
||||
{
|
||||
MeshAssetHelper::MeshAssetHelper(AZ::EntityId entityId)
|
||||
: AssetHelper(entityId)
|
||||
{
|
||||
EMotionFX::ActorInstance* actorInstance = nullptr;
|
||||
EMotionFX::Integration::ActorComponentRequestBus::EventResult(
|
||||
actorInstance, entityId, &EMotionFX::Integration::ActorComponentRequestBus::Events::GetActorInstance);
|
||||
m_supportSkinnedAnimation = actorInstance != nullptr;
|
||||
}
|
||||
|
||||
void MeshAssetHelper::GatherClothMeshNodes(MeshNodeList& meshNodes)
|
||||
|
||||
@@ -35,12 +35,14 @@ namespace NvCloth
|
||||
MeshClothInfo& meshClothInfo) override;
|
||||
bool DoesSupportSkinnedAnimation() const override
|
||||
{
|
||||
return false;
|
||||
return m_supportSkinnedAnimation;
|
||||
}
|
||||
|
||||
private:
|
||||
bool CopyDataFromMeshes(
|
||||
const AZStd::vector<const AZ::RPI::ModelLodAsset::Mesh*>& meshes,
|
||||
MeshClothInfo& meshClothInfo);
|
||||
|
||||
bool m_supportSkinnedAnimation = false;
|
||||
};
|
||||
} // namespace NvCloth
|
||||
|
||||
@@ -145,8 +145,8 @@ namespace UnitTest
|
||||
const AZStd::vector<NvCloth::CapsuleCollider>& capsuleColliders = actorClothColliders->GetCapsuleColliders();
|
||||
const AZStd::vector<uint32_t>& nativeCapsuleIndices = actorClothColliders->GetCapsuleIndices();
|
||||
|
||||
EXPECT_EQ(sphereColliders.size(), 1);
|
||||
EXPECT_EQ(nativeSpheres.size(), 1);
|
||||
ASSERT_EQ(sphereColliders.size(), 1);
|
||||
ASSERT_EQ(nativeSpheres.size(), 1);
|
||||
EXPECT_TRUE(capsuleColliders.empty());
|
||||
EXPECT_TRUE(nativeCapsuleIndices.empty());
|
||||
|
||||
@@ -189,9 +189,9 @@ namespace UnitTest
|
||||
const AZStd::vector<uint32_t>& nativeCapsuleIndices = actorClothColliders->GetCapsuleIndices();
|
||||
|
||||
EXPECT_TRUE(sphereColliders.empty());
|
||||
EXPECT_EQ(nativeSpheres.size(), 2); // Each capsule produces 2 spheres
|
||||
EXPECT_EQ(capsuleColliders.size(), 1);
|
||||
EXPECT_EQ(nativeCapsuleIndices.size(), 2); // Each capsule is 2 indices
|
||||
ASSERT_EQ(nativeSpheres.size(), 2); // Each capsule produces 2 spheres
|
||||
ASSERT_EQ(capsuleColliders.size(), 1);
|
||||
ASSERT_EQ(nativeCapsuleIndices.size(), 2); // Each capsule is 2 indices
|
||||
|
||||
EXPECT_NEAR(capsuleColliders[0].m_height, height, Tolerance);
|
||||
EXPECT_NEAR(capsuleColliders[0].m_radius, radius, Tolerance);
|
||||
|
||||
@@ -144,8 +144,12 @@ namespace UnitTest
|
||||
EXPECT_TRUE(renderData.m_bitangents.empty());
|
||||
EXPECT_TRUE(renderData.m_normals.empty());
|
||||
}
|
||||
|
||||
TEST_F(NvClothComponentMesh, ClothComponentMesh_InitWithEntityActorWithNoClothData_TriggersError)
|
||||
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothComponentMesh, DISABLED_ClothComponentMesh_InitWithEntityActorWithNoClothData_TriggersError)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -165,8 +169,12 @@ namespace UnitTest
|
||||
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // Expect 1 error
|
||||
}
|
||||
|
||||
TEST_F(NvClothComponentMesh, ClothComponentMesh_InitWithEntityActor_ReturnsValidRenderData)
|
||||
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothComponentMesh, DISABLED_ClothComponentMesh_InitWithEntityActor_ReturnsValidRenderData)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -265,7 +273,11 @@ namespace UnitTest
|
||||
EXPECT_TRUE(renderData.m_normals.empty());
|
||||
}
|
||||
|
||||
TEST_F(NvClothComponentMesh, ClothComponentMesh_UpdateConfigurationDifferentEntity_ReturnsRenderDataFromNewEntity)
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothComponentMesh, DISABLED_ClothComponentMesh_UpdateConfigurationDifferentEntity_ReturnsRenderDataFromNewEntity)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -341,7 +353,11 @@ namespace UnitTest
|
||||
EXPECT_TRUE(renderData.m_normals.empty());
|
||||
}
|
||||
|
||||
TEST_F(NvClothComponentMesh, ClothComponentMesh_UpdateConfigurationNewMeshNode_ReturnsRenderDataFromNewMeshNode)
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothComponentMesh, DISABLED_ClothComponentMesh_UpdateConfigurationNewMeshNode_ReturnsRenderDataFromNewMeshNode)
|
||||
{
|
||||
const AZStd::string meshNode2Name = "cloth_node_2";
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ namespace UnitTest
|
||||
|
||||
const NvCloth::MeshNodeList& meshNodeList = editorClothComponent->GetMeshNodeList();
|
||||
|
||||
EXPECT_EQ(meshNodeList.size(), 1);
|
||||
ASSERT_EQ(meshNodeList.size(), 1);
|
||||
EXPECT_TRUE(meshNodeList[0] == NvCloth::Internal::StatusMessageNoAsset);
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ namespace UnitTest
|
||||
|
||||
const NvCloth::MeshNodeList& meshNodeList = editorClothComponent->GetMeshNodeList();
|
||||
|
||||
EXPECT_EQ(meshNodeList.size(), 1);
|
||||
ASSERT_EQ(meshNodeList.size(), 1);
|
||||
EXPECT_TRUE(meshNodeList[0] == NvCloth::Internal::StatusMessageNoClothNodes);
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ namespace UnitTest
|
||||
|
||||
const NvCloth::MeshNodeList& meshNodeList = editorClothComponent->GetMeshNodeList();
|
||||
|
||||
EXPECT_EQ(meshNodeList.size(), 1);
|
||||
ASSERT_EQ(meshNodeList.size(), 1);
|
||||
EXPECT_TRUE(meshNodeList[0] == NvCloth::Internal::StatusMessageNoClothNodes);
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ namespace UnitTest
|
||||
|
||||
const NvCloth::MeshNodeList& meshNodeList = editorClothComponent->GetMeshNodeList();
|
||||
|
||||
EXPECT_EQ(meshNodeList.size(), 2);
|
||||
ASSERT_EQ(meshNodeList.size(), 2);
|
||||
EXPECT_TRUE(meshNodeList[0] == NvCloth::Internal::StatusMessageSelectNode);
|
||||
EXPECT_TRUE(meshNodeList[1] == MeshNodeName);
|
||||
}
|
||||
@@ -322,9 +322,11 @@ namespace UnitTest
|
||||
EXPECT_TRUE(meshNodesWithBackstopData.find(MeshNodeName) != meshNodesWithBackstopData.end());
|
||||
}
|
||||
|
||||
// [TODO LYN-2252]
|
||||
// Enable test once OnModelDestroyed is available.
|
||||
TEST_F(NvClothEditorClothComponent, DISABLED_EditorClothComponent_OnMeshDestroyed_ReturnsMeshNodeListWithNoAssetMessage)
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothEditorClothComponent, DISABLED_EditorClothComponent_OnModelPreDestroy_ReturnsMeshNodeListWithNoAssetMessage)
|
||||
{
|
||||
auto editorEntity = CreateInactiveEditorEntity("ClothComponentEditorEntity");
|
||||
auto* editorClothComponent = editorEntity->CreateComponent<NvCloth::EditorClothComponent>();
|
||||
@@ -341,12 +343,12 @@ namespace UnitTest
|
||||
editorActorComponent->SetActorAsset(CreateAssetFromActor(AZStd::move(actor)));
|
||||
}
|
||||
|
||||
//editorClothComponent->OnModelDestroyed();
|
||||
editorClothComponent->OnModelPreDestroy();
|
||||
|
||||
const NvCloth::MeshNodeList& meshNodeList = editorClothComponent->GetMeshNodeList();
|
||||
const auto& meshNodesWithBackstopData = editorClothComponent->GetMeshNodesWithBackstopData();
|
||||
|
||||
EXPECT_EQ(meshNodeList.size(), 1);
|
||||
ASSERT_EQ(meshNodeList.size(), 1);
|
||||
EXPECT_TRUE(meshNodeList[0] == NvCloth::Internal::StatusMessageNoAsset);
|
||||
EXPECT_TRUE(meshNodesWithBackstopData.empty());
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ namespace UnitTest
|
||||
|
||||
EXPECT_EQ(initialParticles.size(), nvClothCurrentParticles.size());
|
||||
EXPECT_EQ(initialParticles.size(), nvClothPreviousParticles.size());
|
||||
for (size_t i = 0; i < nvClothCurrentParticles.size(); ++i)
|
||||
for (size_t i = 0; i < initialParticles.size(); ++i)
|
||||
{
|
||||
ExpectEq(initialParticles[i], nvClothCurrentParticles[i]);
|
||||
ExpectEq(initialParticles[i], nvClothPreviousParticles[i]);
|
||||
|
||||
@@ -283,7 +283,7 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
NvCloth::Internal::WeldVertices(vertices, indices, weldedVertices, weldedIndices, remappedVertices);
|
||||
|
||||
EXPECT_EQ(weldedVertices.size(), expectedSizeAfterWelding);
|
||||
ASSERT_EQ(weldedVertices.size(), expectedSizeAfterWelding);
|
||||
EXPECT_THAT(weldedVertices[0].GetAsVector3(), IsCloseTolerance(vertexPosition, Tolerance));
|
||||
EXPECT_NEAR(weldedVertices[0].GetW(), lowestInverseMass, Tolerance);
|
||||
}
|
||||
@@ -307,9 +307,9 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
NvCloth::Internal::WeldVertices(vertices, indices, weldedVertices, weldedIndices, remappedVertices);
|
||||
|
||||
EXPECT_EQ(weldedVertices.size(), expectedSizeAfterWelding);
|
||||
EXPECT_EQ(weldedIndices.size(), indices.size());
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(weldedVertices.size(), expectedSizeAfterWelding);
|
||||
ASSERT_EQ(weldedIndices.size(), indices.size());
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -347,9 +347,9 @@ namespace UnitTest
|
||||
|
||||
// The result after calling WeldVertices is expected to have the same size.
|
||||
// The vertices inside will be reordered though due to the welding process.
|
||||
EXPECT_EQ(weldedVertices.size(), vertices.size());
|
||||
EXPECT_EQ(weldedIndices.size(), indices.size());
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(weldedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(weldedIndices.size(), indices.size());
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -422,9 +422,9 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
NvCloth::Internal::RemoveStaticTriangles(vertices, indices, simplifiedVertices, simplifiedIndices, remappedVertices);
|
||||
|
||||
EXPECT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
EXPECT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
ASSERT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -477,9 +477,9 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
NvCloth::Internal::RemoveStaticTriangles(vertices, indices, simplifiedVertices, simplifiedIndices, remappedVertices);
|
||||
|
||||
EXPECT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
EXPECT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
ASSERT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -532,9 +532,9 @@ namespace UnitTest
|
||||
|
||||
// The result after calling RemoveStaticTriangles is expected to have the same size.
|
||||
// The vertices will be reordered though due to the processing during simplification.
|
||||
EXPECT_EQ(simplifiedVertices.size(), vertices.size());
|
||||
EXPECT_EQ(simplifiedIndices.size(), indices.size());
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedIndices.size(), indices.size());
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -576,9 +576,9 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
AZ::Interface<NvCloth::IFabricCooker>::Get()->SimplifyMesh(vertices, indices, simplifiedVertices, simplifiedIndices, remappedVertices, removeStaticTriangles);
|
||||
|
||||
EXPECT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
EXPECT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
ASSERT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
@@ -635,9 +635,9 @@ namespace UnitTest
|
||||
AZStd::vector<int> remappedVertices;
|
||||
AZ::Interface<NvCloth::IFabricCooker>::Get()->SimplifyMesh(vertices, indices, simplifiedVertices, simplifiedIndices, remappedVertices, removeStaticTriangles);
|
||||
|
||||
EXPECT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
EXPECT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
EXPECT_EQ(remappedVertices.size(), vertices.size());
|
||||
ASSERT_EQ(simplifiedVertices.size(), expectedVerticesSizeAfterSimplification);
|
||||
ASSERT_EQ(simplifiedIndices.size(), expectedIndicesSizeAfterSimplification);
|
||||
ASSERT_EQ(remappedVertices.size(), vertices.size());
|
||||
|
||||
for (size_t i = 0; i < remappedVertices.size(); ++i)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <AzCore/Component/Entity.h>
|
||||
#include <AzFramework/Components/TransformComponent.h>
|
||||
|
||||
#include <Utils/ActorAssetHelper.h>
|
||||
#include <Utils/MeshAssetHelper.h>
|
||||
|
||||
#include <UnitTestHelper.h>
|
||||
#include <ActorHelper.h>
|
||||
@@ -24,7 +24,7 @@
|
||||
namespace UnitTest
|
||||
{
|
||||
//! Fixture to setup entity with actor component and the tests data.
|
||||
class NvClothActorAssetHelper
|
||||
class NvClothMeshAssetHelper
|
||||
: public ::testing::Test
|
||||
{
|
||||
public:
|
||||
@@ -75,7 +75,7 @@ namespace UnitTest
|
||||
AZStd::unique_ptr<AZ::Entity> m_entity;
|
||||
};
|
||||
|
||||
void NvClothActorAssetHelper::SetUp()
|
||||
void NvClothMeshAssetHelper::SetUp()
|
||||
{
|
||||
m_entity = AZStd::make_unique<AZ::Entity>();
|
||||
m_entity->CreateComponent<AzFramework::TransformComponent>();
|
||||
@@ -84,14 +84,14 @@ namespace UnitTest
|
||||
m_entity->Activate();
|
||||
}
|
||||
|
||||
void NvClothActorAssetHelper::TearDown()
|
||||
void NvClothMeshAssetHelper::TearDown()
|
||||
{
|
||||
m_entity->Deactivate();
|
||||
m_actorComponent = nullptr;
|
||||
m_entity.reset();
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_CreateAssetHelperWithInvalidEntityId_ReturnsNull)
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_CreateAssetHelperWithInvalidEntityId_ReturnsNull)
|
||||
{
|
||||
AZ::EntityId entityId;
|
||||
|
||||
@@ -100,7 +100,18 @@ namespace UnitTest
|
||||
EXPECT_TRUE(assetHelper.get() == nullptr);
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_CreateAssetHelperWithActor_ReturnsValidActorAssetHelper)
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_CreateAssetHelperWithValidEntityId_ReturnsValidMeshAssetHelper)
|
||||
{
|
||||
AZStd::unique_ptr<AZ::Entity> entity = AZStd::make_unique<AZ::Entity>();
|
||||
|
||||
AZStd::unique_ptr<NvCloth::AssetHelper> assetHelper = NvCloth::AssetHelper::CreateAssetHelper(entity->GetId());
|
||||
|
||||
EXPECT_TRUE(assetHelper.get() != nullptr);
|
||||
EXPECT_TRUE(azrtti_cast<NvCloth::MeshAssetHelper*>(assetHelper.get()) != nullptr);
|
||||
EXPECT_FALSE(assetHelper->DoesSupportSkinnedAnimation());
|
||||
}
|
||||
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_CreateAssetHelperWithActor_ReturnsValidMeshAssetHelper)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -112,10 +123,11 @@ namespace UnitTest
|
||||
AZStd::unique_ptr<NvCloth::AssetHelper> assetHelper = NvCloth::AssetHelper::CreateAssetHelper(m_actorComponent->GetEntityId());
|
||||
|
||||
EXPECT_TRUE(assetHelper.get() != nullptr);
|
||||
EXPECT_TRUE(azrtti_cast<NvCloth::ActorAssetHelper*>(assetHelper.get()) != nullptr);
|
||||
EXPECT_TRUE(azrtti_cast<NvCloth::MeshAssetHelper*>(assetHelper.get()) != nullptr);
|
||||
EXPECT_TRUE(assetHelper->DoesSupportSkinnedAnimation());
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_DoesSupportSkinnedAnimation_ReturnsTrue)
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_DoesSupportSkinnedAnimation_ReturnsTrue)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -129,7 +141,7 @@ namespace UnitTest
|
||||
EXPECT_TRUE(assetHelper->DoesSupportSkinnedAnimation());
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_GatherClothMeshNodesWithEmptyActor_ReturnsEmptyInfo)
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_GatherClothMeshNodesWithEmptyActor_ReturnsEmptyInfo)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -146,7 +158,7 @@ namespace UnitTest
|
||||
EXPECT_TRUE(meshNodes.empty());
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_ObtainClothMeshNodeInfoWithEmptyActor_ReturnsFalse)
|
||||
TEST_F(NvClothMeshAssetHelper, MeshAssetHelper_ObtainClothMeshNodeInfoWithEmptyActor_ReturnsFalse)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -164,7 +176,11 @@ namespace UnitTest
|
||||
EXPECT_FALSE(infoObtained);
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_GatherClothMeshNodesWithActor_ReturnsCorrectMeshNodeList)
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothMeshAssetHelper, DISABLED_MeshAssetHelper_GatherClothMeshNodesWithActor_ReturnsCorrectMeshNodeList)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -185,12 +201,16 @@ namespace UnitTest
|
||||
NvCloth::MeshNodeList meshNodes;
|
||||
assetHelper->GatherClothMeshNodes(meshNodes);
|
||||
|
||||
EXPECT_EQ(meshNodes.size(), 2);
|
||||
ASSERT_EQ(meshNodes.size(), 2);
|
||||
EXPECT_TRUE(meshNodes[0] == MeshNode1Name);
|
||||
EXPECT_TRUE(meshNodes[1] == MeshNode2Name);
|
||||
}
|
||||
|
||||
TEST_F(NvClothActorAssetHelper, ActorAssetHelper_ObtainClothMeshNodeInfoWithActor_ReturnsCorrectClothInfo)
|
||||
|
||||
// [TODO LYN-1891]
|
||||
// Revisit when Cloth Component Mesh works with Actors adapted to Atom models.
|
||||
// Editor Cloth component now uses the new AZ::Render::MeshComponentNotificationBus::OnModelReady
|
||||
// notification and this test does not setup a model yet.
|
||||
TEST_F(NvClothMeshAssetHelper, DISABLED_MeshAssetHelper_ObtainClothMeshNodeInfoWithActor_ReturnsCorrectClothInfo)
|
||||
{
|
||||
{
|
||||
auto actor = AZStd::make_unique<ActorHelper>("actor_test");
|
||||
@@ -215,7 +235,7 @@ namespace UnitTest
|
||||
EXPECT_TRUE(infoObtained);
|
||||
|
||||
EXPECT_EQ(meshNodeInfo.m_lodLevel, LodLevel);
|
||||
EXPECT_EQ(meshNodeInfo.m_subMeshes.size(), 1);
|
||||
ASSERT_EQ(meshNodeInfo.m_subMeshes.size(), 1);
|
||||
EXPECT_EQ(meshNodeInfo.m_subMeshes[0].m_primitiveIndex, 2);
|
||||
EXPECT_EQ(meshNodeInfo.m_subMeshes[0].m_verticesFirstIndex, 0);
|
||||
EXPECT_EQ(meshNodeInfo.m_subMeshes[0].m_numVertices, MeshVertices.size());
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# This script must be run as root
|
||||
if [[ $EUID -ne 0 ]]
|
||||
then
|
||||
echo "This script must be run as root (sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Install curl if its not installed
|
||||
#
|
||||
curl --version >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Installing curl"
|
||||
apt-get install curl -y
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup AWS CLI if needed
|
||||
#
|
||||
aws --version >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Setting up AWS CLI
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
./aws/install
|
||||
rm -rf ./aws
|
||||
else
|
||||
AWS_CLI_VERSION=`aws --version | awk '{print $1}' | awk -F/ '{print $2}'`
|
||||
echo AWS CLI \(version $AWS_CLI_VERSION\) already installed
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
#!/bin/bash
|
||||
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# This script must be run as root
|
||||
if [[ $EUID -ne 0 ]]
|
||||
then
|
||||
echo "This script must be run as root (sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Make sure we are installing on a supported ubuntu distro
|
||||
#
|
||||
lsb_release -c >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo This script is only supported on Ubuntu Distros
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UBUNTU_DISTRO="`lsb_release -c | awk '{print $2}'`"
|
||||
if [ "$UBUNTU_DISTRO" == "bionic" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 18.04 LTS ($UBUNTU_DISTRO)"
|
||||
elif [ "$UBUNTU_DISTRO" == "focal" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 20.04 LTS ($UBUNTU_DISTRO)"
|
||||
else
|
||||
echo "Unsupported version of Ubuntu $UBUNTU_DISTRO"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Install curl if its not installed
|
||||
#
|
||||
curl --version >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Installing curl"
|
||||
apt-get install curl -y
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# If the linux distro is 20.04 (focal), we need libffi.so.6, which is not part of the focal distro. We
|
||||
# will install it from the bionic distro manually into focal. This is needed since Ubuntu 20.04 supports
|
||||
# python 3.8 out of the box, but we are using 3.7
|
||||
#
|
||||
LIBFFI6_COUNT=`apt list --installed 2>/dev/null | grep libffi6 | wc -l`
|
||||
if [ "$UBUNTU_DISTRO" == "focal" ] && [ $LIBFFI6_COUNT -eq 0 ]
|
||||
then
|
||||
echo "Installing libffi for Ubuntu 20.04"
|
||||
|
||||
pushd /tmp >/dev/null
|
||||
|
||||
LIBFFI_PACKAGE_NAME=libffi6_3.2.1-8_amd64.deb
|
||||
LIBFFI_PACKAGE_URL=http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/
|
||||
|
||||
curl --location $LIBFFI_PACKAGE_URL/$LIBFFI_PACKAGE_NAME -o $LIBFFI_PACKAGE_NAME
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Unable to download $LIBFFI_PACKAGE_URL/$LIBFFI_PACKAGE_NAME
|
||||
popd
|
||||
exit 1
|
||||
fi
|
||||
|
||||
apt install ./$LIBFFI_PACKAGE_NAME -y
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Unable to install $LIBFFI_PACKAGE_NAME
|
||||
rm -f ./$LIBFFI_PACKAGE_NAME
|
||||
popd
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -f ./$LIBFFI_PACKAGE_NAME
|
||||
popd
|
||||
echo "libffi.so.6 installed"
|
||||
fi
|
||||
|
||||
# Install the required build packages
|
||||
apt-get install clang-6.0 -y # For the compiler and its dependencies
|
||||
apt-get install libglu1-mesa-dev -y # For Qt (GL dependency)
|
||||
|
||||
# The following packages resolves a runtime error with Qt Plugins
|
||||
apt-get install libxcb-xinerama0 -y # For Qt plugins at runtime
|
||||
apt-get install libxcb-xinput0 -y # For Qt plugins at runtime
|
||||
|
||||
apt-get install libcurl4-openssl-dev -y # For HttpRequestor
|
||||
apt-get install libsdl2-dev -y # For WWise
|
||||
|
||||
apt-get install libz-dev -y
|
||||
apt-get install mesa-common-dev -y
|
||||
|
||||
echo Build Libraries Setup Complete
|
||||
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# This script must be run as root
|
||||
if [[ $EUID -ne 0 ]]
|
||||
then
|
||||
echo "This script must be run as root (sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Make sure we are installing on a supported ubuntu distro
|
||||
#
|
||||
lsb_release -c >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo This script is only supported on Ubuntu Distros
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UBUNTU_DISTRO="`lsb_release -c | awk '{print $2}'`"
|
||||
if [ "$UBUNTU_DISTRO" == "bionic" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 18.04 LTS ($UBUNTU_DISTRO)"
|
||||
elif [ "$UBUNTU_DISTRO" == "focal" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 20.04 LTS ($UBUNTU_DISTRO)"
|
||||
else
|
||||
echo "Unsupported version of Ubuntu $UBUNTU_DISTRO"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Always install the latest version of cmake (from kitware)
|
||||
#
|
||||
echo Installing CMake package $CMAKE_DISTRO_VERSION
|
||||
|
||||
# Remove any pre-existing version of cmake
|
||||
apt purge --auto-remove cmake -y
|
||||
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
|
||||
CMAKE_DEB_REPO="'deb https://apt.kitware.com/ubuntu/ $UBUNTU_DISTRO main'"
|
||||
|
||||
# Add the appropriate kitware repository to apt
|
||||
if [ "$UBUNTU_DISTRO" == "bionic" ]
|
||||
then
|
||||
CMAKE_DISTRO_VERSION=3.20.1-0kitware1ubuntu20.04.1
|
||||
apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
|
||||
elif [ "$UBUNTU_DISTRO" == "focal" ]
|
||||
then
|
||||
CMAKE_DISTRO_VERSION=3.20.1-0kitware1ubuntu18.04.1
|
||||
apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
|
||||
fi
|
||||
apt-get update
|
||||
|
||||
# Install cmake
|
||||
apt-get install cmake $CMAKE_DISTRO_VERSION -y
|
||||
|
||||
|
||||
#
|
||||
# Make sure that Ninja is installed
|
||||
#
|
||||
echo Installing Ninja
|
||||
apt-get install ninja-build -y
|
||||
|
||||
|
||||
echo Build Tools Setup Complete
|
||||
@@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# This script must be run as root
|
||||
if [[ $EUID -ne 0 ]]
|
||||
then
|
||||
echo "This script must be run as root (sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Make sure we are installing on a supported ubuntu distro
|
||||
#
|
||||
lsb_release -c >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo This script is only supported on Ubuntu Distros
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UBUNTU_DISTRO="`lsb_release -c | awk '{print $2}'`"
|
||||
if [ "$UBUNTU_DISTRO" == "bionic" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 18.04 LTS ($UBUNTU_DISTRO)"
|
||||
elif [ "$UBUNTU_DISTRO" == "focal" ]
|
||||
then
|
||||
echo "Setup for Ubuntu 20.04 LTS ($UBUNTU_DISTRO)"
|
||||
else
|
||||
echo "Unsupported version of Ubuntu $UBUNTU_DISTRO"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup and get the latest from git if necessary
|
||||
#
|
||||
git --version > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Setting up latest version of GIT
|
||||
add-apt-repository ppa:git-core/ppa -y
|
||||
apt-get update
|
||||
apt-get install git -y
|
||||
else
|
||||
GIT_VERSION=`git --version | awk '{print $3}'`
|
||||
echo Git $GIT_VERSION already Installed. Skipping Git installation
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup Git-LFS if needed
|
||||
#
|
||||
GIT_LFS_PACKAGE_COUNT=`apt list --installed 2>/dev/null | grep git-lfs/ | wc -l`
|
||||
if [ $GIT_LFS_PACKAGE_COUNT -eq 0 ]
|
||||
then
|
||||
echo Setting up Git-LFS
|
||||
pushd /tmp
|
||||
wget https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh -o script.deb.sh
|
||||
rm script.deb.sh
|
||||
mv script.deb.sh.1 script.deb.sh
|
||||
chmod +x script.deb.sh
|
||||
./script.deb.sh
|
||||
sudo apt-get install git-lfs -y
|
||||
popd
|
||||
else
|
||||
echo Git LFS already installed. Skipping Git-LFS installation
|
||||
fi
|
||||
|
||||
# Setup GCM if needed
|
||||
git-credential-manager-core --version > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# Download and setup Git Credential Manager
|
||||
GCM_PACKAGE_NAME=gcmcore-linux_amd64.2.0.394.50751.deb
|
||||
GCM_PACKAGE_URL=https://github.com/microsoft/Git-Credential-Manager-Core/releases/download/v2.0.394-beta
|
||||
|
||||
echo Installing Git Credential Manager \($GCM_PACKAGE_NAME\)
|
||||
|
||||
pushd /tmp > /dev/null
|
||||
curl --location $GCM_PACKAGE_URL/$GCM_PACKAGE_NAME -o $GCM_PACKAGE_NAME
|
||||
dpkg -i $GCM_PACKAGE_NAME
|
||||
popd
|
||||
else
|
||||
GCM_VERSION=`git-credential-manager-core --version`
|
||||
echo Git Credential Manager \(GCM\) version $GCM_VERSION already installed. Skipping GCM installation
|
||||
fi
|
||||
|
||||
# Setup pass (password manager) for git-credential-manager
|
||||
apt-get install pass -y
|
||||
|
||||
Reference in New Issue
Block a user