Fix up particle emitter to work with Atom (#626)
* Fix up particle emitter component to work with Atom * PR feedback and disable render target tests until supported
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
|
||||
#include "UiParticleEmitterComponent.h"
|
||||
#include "EditorPropertyTypes.h"
|
||||
#include "Sprite.h"
|
||||
#include "RenderGraph.h"
|
||||
|
||||
#include <AzCore/Math/Crc.h>
|
||||
#include <AzCore/RTTI/BehaviorContext.h>
|
||||
@@ -21,7 +23,6 @@
|
||||
#include <AzCore/std/sort.h>
|
||||
|
||||
#include <LyShine/ISprite.h>
|
||||
#include <IRenderer.h>
|
||||
|
||||
#include <LyShine/IDraw2d.h>
|
||||
#include <LyShine/ISprite.h>
|
||||
@@ -764,6 +765,12 @@ void UiParticleEmitterComponent::InGamePostActivate()
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void UiParticleEmitterComponent::Render(LyShine::IRenderGraph* renderGraph)
|
||||
{
|
||||
AZ::u32 particlesToRender = AZ::GetMin<AZ::u32>(m_particleContainer.size(), m_particleBufferSize);
|
||||
if (particlesToRender == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AZ::Matrix4x4 transform = AZ::Matrix4x4::CreateIdentity();
|
||||
|
||||
AZ::Vector2 emitterOffset = AZ::Vector2::CreateZero();
|
||||
@@ -781,9 +788,15 @@ void UiParticleEmitterComponent::Render(LyShine::IRenderGraph* renderGraph)
|
||||
EBUS_EVENT_ID_RESULT(transform, canvasID, UiCanvasBus, GetCanvasToViewportMatrix);
|
||||
}
|
||||
|
||||
AZ::u32 particlesToRender = AZ::GetMin<AZ::u32>(m_particleContainer.size(), m_particleBufferSize);
|
||||
|
||||
ITexture* texture = (m_sprite) ? m_sprite->GetTexture() : nullptr;
|
||||
AZ::Data::Instance<AZ::RPI::Image> image;
|
||||
if (m_sprite)
|
||||
{
|
||||
CSprite* sprite = dynamic_cast<CSprite*>(m_sprite);
|
||||
if (sprite)
|
||||
{
|
||||
image = sprite->GetImage();
|
||||
}
|
||||
}
|
||||
|
||||
bool isClampTextureMode = true;
|
||||
bool isTextureSRGB = false;
|
||||
@@ -836,7 +849,11 @@ void UiParticleEmitterComponent::Render(LyShine::IRenderGraph* renderGraph)
|
||||
|
||||
m_cachedPrimitive.m_numVertices = totalVerticesInserted;
|
||||
m_cachedPrimitive.m_numIndices = totalParticlesInserted * indicesPerParticle;
|
||||
renderGraph->AddPrimitive(&m_cachedPrimitive, texture, isClampTextureMode, isTextureSRGB, isTexturePremultipliedAlpha, m_blendMode);
|
||||
LyShine::RenderGraph* lyRenderGraph = dynamic_cast<LyShine::RenderGraph*>(renderGraph);
|
||||
if (lyRenderGraph)
|
||||
{
|
||||
lyRenderGraph->AddPrimitiveAtom(&m_cachedPrimitive, image, isClampTextureMode, isTextureSRGB, isTexturePremultipliedAlpha, m_blendMode);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user