Jelajahi Sumber

Fixed compilation error in blast experimental gem (#236)

Fixes https://github.com/o3de/o3de/issues/15445

Fixed Blast unit tests as well. They pass successfully.

Signed-off-by: moraaar <[email protected]>
moraaar 2 tahun lalu
induk
melakukan
5fd4d98187

+ 1 - 1
Gems/Blast/Code/Include/Blast/BlastActor.h

@@ -37,7 +37,7 @@ namespace Blast
     class BlastActor
     {
     public:
-        AZ_CLASS_ALLOCATOR(BlastActor, AZ::SystemAllocator, 0);
+        AZ_CLASS_ALLOCATOR(BlastActor, AZ::SystemAllocator);
 
         virtual ~BlastActor() = default;
 

+ 3 - 1
Gems/Blast/Code/Source/Editor/EditorBlastMeshDataComponent.cpp

@@ -183,7 +183,9 @@ namespace Blast
                 materials, GetEntityId(), &AZ::Render::MaterialComponentRequests::GetMaterialMap);
 
             m_meshFeatureProcessor->ReleaseMesh(m_meshHandle);
-            m_meshHandle = m_meshFeatureProcessor->AcquireMesh(AZ::Render::MeshHandleDescriptor{ m_meshAssets[0] }, materials);
+            m_meshHandle = m_meshFeatureProcessor->AcquireMesh(
+                AZ::Render::MeshHandleDescriptor{ m_meshAssets[0] }, 
+                AZ::Render::ConvertToCustomMaterialMap(materials));
             m_meshFeatureProcessor->ConnectModelChangeEventHandler(m_meshHandle, m_changeEventHandler);
 
             HandleModelChange(m_meshFeatureProcessor->GetModel(m_meshHandle));

+ 3 - 1
Gems/Blast/Code/Source/Family/ActorRenderManager.cpp

@@ -41,7 +41,9 @@ namespace Blast
         {
             m_chunkActors[chunkId] = &actor;
             m_chunkMeshHandles[chunkId] =
-                m_meshFeatureProcessor->AcquireMesh(AZ::Render::MeshHandleDescriptor{ m_meshData->GetMeshAsset(chunkId) }, m_materialMap);
+                m_meshFeatureProcessor->AcquireMesh(
+                    AZ::Render::MeshHandleDescriptor{ m_meshData->GetMeshAsset(chunkId) }, 
+                    AZ::Render::ConvertToCustomMaterialMap(m_materialMap));
         }
     }
 

+ 1 - 0
Gems/Blast/Code/Source/Family/ActorRenderManager.h

@@ -8,6 +8,7 @@
 #pragma once
 
 #include <Atom/Feature/Mesh/MeshFeatureProcessorInterface.h>
+#include <AtomLyIntegration/CommonFeatures/Material/MaterialAssignment.h>
 #include <AzCore/std/containers/vector.h>
 #include <AzCore/Math/Vector3.h>
 

+ 3 - 3
Gems/Blast/Code/Source/Family/BlastFamily.h

@@ -51,14 +51,14 @@ namespace Blast
     class BlastFamily
     {
     public:
+        //! Class allocator to use aznew
+        AZ_CLASS_ALLOCATOR(BlastFamily, AZ::SystemAllocator);
+
         //! Constructor for the BlastFamily
         //! @param desc Creation descriptor
         static AZStd::unique_ptr<BlastFamily> Create(const BlastFamilyDesc& desc);
         virtual ~BlastFamily() = default;
 
-        //! Class allocator to use aznew
-        AZ_CLASS_ALLOCATOR(BlastFamily, AZ::SystemAllocator, 0);
-
         //! Spawns this BlastFamily, creating the initial actors.
         //! @param transform Initial transform of the destructible object.
         virtual bool Spawn(const AZ::Transform& transform) = 0;

+ 1 - 2
Gems/Blast/Code/Tests/ActorRenderManagerTest.cpp

@@ -44,7 +44,6 @@ namespace Blast
 
     class ActorRenderManagerTest
         : public testing::Test
-        , public FastScopedAllocatorsBase
     {
     protected:
         void SetUp() override
@@ -92,7 +91,7 @@ namespace Blast
         // ActorRenderManager::OnActorCreated
         {
             EXPECT_CALL(
-                *m_mockMeshFeatureProcessor, AcquireMesh(_, testing::A<const AZ::Render::MaterialAssignmentMap&>()))
+                *m_mockMeshFeatureProcessor, AcquireMesh(_, testing::A<const AZ::Render::CustomMaterialMap&>()))
                 .Times(aznumeric_cast<int>(m_actorFactory->m_mockActors[0]->GetChunkIndices().size()))
                 .WillOnce(Return(testing::ByMove(AZ::Render::MeshFeatureProcessorInterface::MeshHandle())))
                 .WillOnce(Return(testing::ByMove(AZ::Render::MeshFeatureProcessorInterface::MeshHandle())));

+ 0 - 1
Gems/Blast/Code/Tests/BlastActorTest.cpp

@@ -40,7 +40,6 @@ namespace Blast
 
     class BlastActorTest
         : public testing::Test
-        , public FastScopedAllocatorsBase
     {
     protected:
         void SetUp() override

+ 0 - 1
Gems/Blast/Code/Tests/BlastFamilyTest.cpp

@@ -29,7 +29,6 @@ namespace Blast
 {
     class BlastFamilyTest
         : public testing::Test
-        , public FastScopedAllocatorsBase
     {
     protected:
         void SetUp() override

+ 0 - 1
Gems/Blast/Code/Tests/DamageManagerTest.cpp

@@ -34,7 +34,6 @@ namespace Blast
 
     class DamageManagerTest
         : public testing::Test
-        , public FastScopedAllocatorsBase
     {
     public:
     protected:

+ 8 - 15
Gems/Blast/Code/Tests/Mocks/BlastMocks.h

@@ -32,20 +32,6 @@
 
 namespace Blast
 {
-    class FastScopedAllocatorsBase
-    {
-    public:
-        FastScopedAllocatorsBase()
-        {
-            AZ::AllocatorInstance<AZ::SystemAllocator>::Create();
-        }
-
-        ~FastScopedAllocatorsBase()
-        {
-            AZ::AllocatorInstance<AZ::SystemAllocator>::Destroy();
-        }
-    };
-
     class BlastFamily;
 
     class FakeExtPxAsset : public Nv::Blast::ExtPxAsset
@@ -281,6 +267,8 @@ namespace Blast
     class FakeBlastActor : public BlastActor
     {
     public:
+        AZ_CLASS_ALLOCATOR(FakeBlastActor, AZ::SystemAllocator);
+
         FakeBlastActor(bool isStatic, AzPhysics::SimulatedBody* worldBody, MockTkActor* tkActor)
             : m_isStatic(isStatic)
             , m_transform(worldBody->GetTransform())
@@ -340,6 +328,7 @@ namespace Blast
     public:
         MOCK_METHOD1(SetMaterial, void(const AZStd::shared_ptr<Physics::Material>&));
         MOCK_CONST_METHOD0(GetMaterial, AZStd::shared_ptr<Physics::Material>());
+        MOCK_CONST_METHOD0(GetMaterialId, Physics::MaterialId());
         MOCK_METHOD1(SetCollisionLayer, void (const AzPhysics::CollisionLayer&));
         MOCK_CONST_METHOD0(GetCollisionLayer, AzPhysics::CollisionLayer ());
         MOCK_METHOD1(SetCollisionGroup, void (const AzPhysics::CollisionGroup&));
@@ -368,6 +357,8 @@ namespace Blast
     class FakeRigidBody : public AzPhysics::RigidBody
     {
     public:
+        AZ_CLASS_ALLOCATOR(FakeRigidBody, AZ::SystemAllocator);
+
         FakeRigidBody(
             AZ::EntityId entityId = AZ::EntityId(0), AZ::Transform transform = AZ::Transform::CreateIdentity())
             : m_entityId(entityId)
@@ -541,7 +532,7 @@ namespace Blast
 
         AzPhysics::SceneQueryHit RayCast([[maybe_unused]] const AzPhysics::RayCastRequest& request) override
         {
-            return {};
+            return AzPhysics::SceneQueryHit();
         }
 
         AZ::Crc32 GetNativeType() const override
@@ -747,6 +738,8 @@ namespace Blast
     class FakeBlastFamily : public BlastFamily
     {
     public:
+        AZ_CLASS_ALLOCATOR(FakeBlastFamily, AZ::SystemAllocator);
+
         FakeBlastFamily()
             : m_pxAsset(NvBlastActorDesc{1, nullptr, 1, nullptr})
         {