Fix crash in Global Surface Atlas when dirty object is missing
This commit is contained in:
@@ -565,7 +565,10 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
|||||||
_vertexBuffer->Data.EnsureCapacity(_dirtyObjectsBuffer.Count() * 6 * sizeof(AtlasTileVertex));
|
_vertexBuffer->Data.EnsureCapacity(_dirtyObjectsBuffer.Count() * 6 * sizeof(AtlasTileVertex));
|
||||||
for (void* actorObject : _dirtyObjectsBuffer)
|
for (void* actorObject : _dirtyObjectsBuffer)
|
||||||
{
|
{
|
||||||
const auto& object = ((const Dictionary<Actor*, GlobalSurfaceAtlasObject>&)surfaceAtlasData.Objects)[actorObject];
|
const GlobalSurfaceAtlasObject* objectPtr = surfaceAtlasData.Objects.TryGet(actorObject);
|
||||||
|
if (!objectPtr)
|
||||||
|
continue;
|
||||||
|
const GlobalSurfaceAtlasObject& object = *objectPtr;
|
||||||
for (int32 tileIndex = 0; tileIndex < 6; tileIndex++)
|
for (int32 tileIndex = 0; tileIndex < 6; tileIndex++)
|
||||||
{
|
{
|
||||||
auto* tile = object.Tiles[tileIndex];
|
auto* tile = object.Tiles[tileIndex];
|
||||||
@@ -587,7 +590,10 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
|||||||
int32 tilesDrawn = 0;
|
int32 tilesDrawn = 0;
|
||||||
for (void* actorObject : _dirtyObjectsBuffer)
|
for (void* actorObject : _dirtyObjectsBuffer)
|
||||||
{
|
{
|
||||||
const auto& object = ((const Dictionary<Actor*, GlobalSurfaceAtlasObject>&)surfaceAtlasData.Objects)[actorObject];
|
const GlobalSurfaceAtlasObject* objectPtr = surfaceAtlasData.Objects.TryGet(actorObject);
|
||||||
|
if (!objectPtr)
|
||||||
|
continue;
|
||||||
|
const GlobalSurfaceAtlasObject& object = *objectPtr;
|
||||||
|
|
||||||
// Clear draw calls list
|
// Clear draw calls list
|
||||||
renderContextTiles.List->DrawCalls.Clear();
|
renderContextTiles.List->DrawCalls.Clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user