From ed4c6fc1e892eaaa44b261ab0be10c1734e40747 Mon Sep 17 00:00:00 2001 From: Oleksii Date: Mon, 11 Mar 2019 13:24:30 +0200 Subject: [PATCH 1/6] Add warning when shader macro not found Shader gen material macros is ignored if m_pShaderCommonGlobalFlag has 64 values and new values is skipped. Issue reproduces when you create new shaders and introduce new ShaderGen flags. --- dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp b/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp index a1199db0fc..74466aa9b3 100644 --- a/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp +++ b/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp @@ -737,6 +737,7 @@ uint64 CShaderMan::mfGetShaderGlobalMaskGenFromString(const char* szShaderGen) { nMaskGen |= pIter->second; } + AZ_Warning("Shaders", pIter != pEnd, "Failed to find property \"%s\". Shader macro is ignored.", pCurrFlag); } return nMaskGen; From 934d5b12ae15bfe9a02b21db9d496da1be954c75 Mon Sep 17 00:00:00 2001 From: Oleksii Leleka Date: Mon, 11 Mar 2019 14:30:18 +0200 Subject: [PATCH 2/6] Revert to LY 1.17 This reverts commit ed4c6fc1e892eaaa44b261ab0be10c1734e40747. --- dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp b/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp index 74466aa9b3..a1199db0fc 100644 --- a/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp +++ b/dev/Code/CryEngine/RenderDll/Common/Shaders/ShaderParse.cpp @@ -737,7 +737,6 @@ uint64 CShaderMan::mfGetShaderGlobalMaskGenFromString(const char* szShaderGen) { nMaskGen |= pIter->second; } - AZ_Warning("Shaders", pIter != pEnd, "Failed to find property \"%s\". Shader macro is ignored.", pCurrFlag); } return nMaskGen; From cc4382280b645ec91328e64afc9e76168b28b3ff Mon Sep 17 00:00:00 2001 From: Smbat Makiyan Date: Wed, 15 Jan 2020 13:03:28 +0200 Subject: [PATCH 3/6] AudioEngine Gem memroy allocation fixes --- .../Code/Source/Engine/AudioInput/AudioInputFile.cpp | 4 ++-- .../Code/Source/Engine/AudioInput/AudioInputStream.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp index 2de197aa81..b9198860e8 100644 --- a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp +++ b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp @@ -87,7 +87,7 @@ namespace Audio if (IsOk()) { // Allocate a new buffer to hold the data... - m_dataPtr = new AZ::u8[m_dataSize]; + m_dataPtr = static_cast(azmalloc(m_dataSize)); // Read file into internal buffer... size_t bytesRead = fileStream.Read(m_dataSize, m_dataPtr); @@ -110,7 +110,7 @@ namespace Audio { if (m_dataPtr) { - delete [] m_dataPtr; + azfree(m_dataPtr); m_dataPtr = nullptr; } m_dataSize = 0; diff --git a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp index 98618716c1..6259b5b952 100644 --- a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp +++ b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp @@ -34,11 +34,11 @@ namespace Audio if (m_config.m_sampleType == AudioInputSampleType::Float && m_config.m_bitsPerSample == 32) { - m_buffer.reset(new RingBuffer(numSamples)); + m_buffer.reset(aznew RingBuffer(numSamples)); } else if (m_config.m_sampleType == AudioInputSampleType::Int && m_config.m_bitsPerSample == 16) { - m_buffer.reset(new RingBuffer(numSamples)); + m_buffer.reset(aznew RingBuffer(numSamples)); } else { From 3e2d3c3e524c0e5d6e6a5555259950d329453356 Mon Sep 17 00:00:00 2001 From: Smbat Makiyan Date: Wed, 15 Jan 2020 13:13:30 +0200 Subject: [PATCH 4/6] Revert "AudioEngine Gem memroy allocation fixes" This reverts commit cc4382280b645ec91328e64afc9e76168b28b3ff. --- .../Code/Source/Engine/AudioInput/AudioInputFile.cpp | 4 ++-- .../Code/Source/Engine/AudioInput/AudioInputStream.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp index b9198860e8..2de197aa81 100644 --- a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp +++ b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputFile.cpp @@ -87,7 +87,7 @@ namespace Audio if (IsOk()) { // Allocate a new buffer to hold the data... - m_dataPtr = static_cast(azmalloc(m_dataSize)); + m_dataPtr = new AZ::u8[m_dataSize]; // Read file into internal buffer... size_t bytesRead = fileStream.Read(m_dataSize, m_dataPtr); @@ -110,7 +110,7 @@ namespace Audio { if (m_dataPtr) { - azfree(m_dataPtr); + delete [] m_dataPtr; m_dataPtr = nullptr; } m_dataSize = 0; diff --git a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp index 6259b5b952..98618716c1 100644 --- a/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp +++ b/dev/Gems/AudioEngineWwise/Code/Source/Engine/AudioInput/AudioInputStream.cpp @@ -34,11 +34,11 @@ namespace Audio if (m_config.m_sampleType == AudioInputSampleType::Float && m_config.m_bitsPerSample == 32) { - m_buffer.reset(aznew RingBuffer(numSamples)); + m_buffer.reset(new RingBuffer(numSamples)); } else if (m_config.m_sampleType == AudioInputSampleType::Int && m_config.m_bitsPerSample == 16) { - m_buffer.reset(aznew RingBuffer(numSamples)); + m_buffer.reset(new RingBuffer(numSamples)); } else { From 9dee8aecf91c1ff54569b434707ca0b363368d2a Mon Sep 17 00:00:00 2001 From: "FRAGLAB\\Andrey.Mas" Date: Thu, 5 Mar 2020 16:55:01 +0200 Subject: [PATCH 5/6] Engine crash on level unload --- dev/Code/CryEngine/Cry3DEngine/ParticleList.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dev/Code/CryEngine/Cry3DEngine/ParticleList.h b/dev/Code/CryEngine/Cry3DEngine/ParticleList.h index b95093396d..8a2222818d 100644 --- a/dev/Code/CryEngine/Cry3DEngine/ParticleList.h +++ b/dev/Code/CryEngine/Cry3DEngine/ParticleList.h @@ -213,11 +213,9 @@ class ParticleList void clear() { // Destroy all elements, in reverse order - for (Node* p = m_pTail; p != NULL; ) + while (m_pTail) { - Node* pPrev = p->pPrev; - destroy(p); - p = pPrev; + erase(m_pTail); } reset(); } From f3f8c37c5ebfc5f31eee81e8b991f98c3851943b Mon Sep 17 00:00:00 2001 From: Dmytro Kovalchuk Date: Tue, 26 Jan 2021 15:32:41 +0200 Subject: [PATCH 6/6] Ability for Simple Motion Component & Animgraph Component to Exist on Entity --- .../Integration/AnimGraphComponentBus.h | 6 +++++ .../Components/AnimGraphComponent.cpp | 27 +++++++++++++++++++ .../Components/AnimGraphComponent.h | 3 ++- .../Components/SimpleMotionComponent.h | 1 - 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/dev/Gems/EMotionFX/Code/Include/Integration/AnimGraphComponentBus.h b/dev/Gems/EMotionFX/Code/Include/Integration/AnimGraphComponentBus.h index 32926c1b02..48b401d6e0 100644 --- a/dev/Gems/EMotionFX/Code/Include/Integration/AnimGraphComponentBus.h +++ b/dev/Gems/EMotionFX/Code/Include/Integration/AnimGraphComponentBus.h @@ -195,6 +195,12 @@ namespace EMotionFX /// Making a request to desync from the anim graph to its leader graph /// \param leaderEntityId - the entity id of another anim graph. virtual void DesyncAnimGraph(AZ::EntityId leaderEntityId) = 0; + + /// Starts updating an anim graph instance + virtual void StartAnimGraph() = 0; + + /// Stops updating an anim graph instance and resets its state + virtual void StopAnimGraph() = 0; }; using AnimGraphComponentRequestBus = AZ::EBus; diff --git a/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp b/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp index 8fd717cfe7..f64b199955 100644 --- a/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp +++ b/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp @@ -139,6 +139,9 @@ namespace EMotionFX // Anim Graph Sync ->Event("SyncAnimGraph", &AnimGraphComponentRequestBus::Events::SyncAnimGraph) ->Event("DesyncAnimGraph", &AnimGraphComponentRequestBus::Events::DesyncAnimGraph) + + ->Event("StartAnimGraph", &AnimGraphComponentRequestBus::Events::StartAnimGraph) + ->Event("StopAnimGraph", &AnimGraphComponentRequestBus::Events::StopAnimGraph) ; behaviorContext->EBus("AnimGraphComponentNotificationBus") @@ -1175,5 +1178,29 @@ namespace EMotionFX m_animGraphInstance.get()); } } + + void AnimGraphComponent::StartAnimGraph() + { + if (m_animGraphInstance) + { + if (m_actorInstance) + { + m_actorInstance->SetAnimGraphInstance(m_animGraphInstance.get()); + } + m_animGraphInstance->Start(); + } + } + + void AnimGraphComponent::StopAnimGraph() + { + if (m_animGraphInstance) + { + m_animGraphInstance->Stop(); + if (m_actorInstance) + { + m_actorInstance->SetAnimGraphInstance(nullptr); + } + } + } } // namespace Integration } // namespace EMotionFXAnimation diff --git a/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h b/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h index 772c5b9785..0a1b6e0ba6 100644 --- a/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h +++ b/dev/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h @@ -140,6 +140,8 @@ namespace EMotionFX bool GetVisualizeEnabled() override; void SyncAnimGraph(AZ::EntityId leaderEntityId) override; void DesyncAnimGraph(AZ::EntityId leaderEntityId) override; + void StartAnimGraph() override; + void StopAnimGraph() override; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -174,7 +176,6 @@ namespace EMotionFX static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) { incompatible.push_back(AZ_CRC("EMotionFXAnimGraphService", 0x9ec3c819)); - incompatible.push_back(AZ_CRC("EMotionFXSimpleMotionService", 0xea7a05d8)); } static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent) diff --git a/dev/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.h b/dev/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.h index 6a09f21b1f..1b04d19894 100644 --- a/dev/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.h +++ b/dev/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.h @@ -84,7 +84,6 @@ namespace EMotionFX } static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) { - incompatible.push_back(AZ_CRC("EMotionFXAnimGraphService", 0x9ec3c819)); incompatible.push_back(AZ_CRC("EMotionFXSimpleMotionService", 0xea7a05d8)); } static void Reflect(AZ::ReflectContext* /*context*/);