Fix entities getting shuffled in the map renderer (#20100)
This commit is contained in:
@@ -9,7 +9,6 @@ using Robust.Client.GameObjects;
|
|||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Map.Components;
|
using Robust.Shared.Map.Components;
|
||||||
using Robust.Shared.Maths;
|
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using SixLabors.ImageSharp;
|
using SixLabors.ImageSharp;
|
||||||
@@ -23,7 +22,6 @@ namespace Content.MapRenderer.Painters
|
|||||||
private readonly DecalPainter _decalPainter;
|
private readonly DecalPainter _decalPainter;
|
||||||
|
|
||||||
private readonly IEntityManager _cEntityManager;
|
private readonly IEntityManager _cEntityManager;
|
||||||
private readonly IMapManager _cMapManager;
|
|
||||||
|
|
||||||
private readonly IEntityManager _sEntityManager;
|
private readonly IEntityManager _sEntityManager;
|
||||||
private readonly IMapManager _sMapManager;
|
private readonly IMapManager _sMapManager;
|
||||||
@@ -37,7 +35,6 @@ namespace Content.MapRenderer.Painters
|
|||||||
_decalPainter = new DecalPainter(client, server);
|
_decalPainter = new DecalPainter(client, server);
|
||||||
|
|
||||||
_cEntityManager = client.ResolveDependency<IEntityManager>();
|
_cEntityManager = client.ResolveDependency<IEntityManager>();
|
||||||
_cMapManager = client.ResolveDependency<IMapManager>();
|
|
||||||
|
|
||||||
_sEntityManager = server.ResolveDependency<IEntityManager>();
|
_sEntityManager = server.ResolveDependency<IEntityManager>();
|
||||||
_sMapManager = server.ResolveDependency<IMapManager>();
|
_sMapManager = server.ResolveDependency<IMapManager>();
|
||||||
@@ -73,26 +70,27 @@ namespace Content.MapRenderer.Painters
|
|||||||
|
|
||||||
var components = new ConcurrentDictionary<EntityUid, List<EntityData>>();
|
var components = new ConcurrentDictionary<EntityUid, List<EntityData>>();
|
||||||
|
|
||||||
foreach (var entity in _sEntityManager.GetEntities())
|
foreach (var serverEntity in _sEntityManager.GetEntities())
|
||||||
{
|
{
|
||||||
if (!_cEntityManager.TryGetComponent(entity, out SpriteComponent? sprite))
|
var clientEntity = _cEntityManager.GetEntity(_sEntityManager.GetNetEntity(serverEntity));
|
||||||
|
if (!_cEntityManager.TryGetComponent(clientEntity, out SpriteComponent? sprite))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var prototype = _sEntityManager.GetComponent<MetaDataComponent>(entity).EntityPrototype;
|
var prototype = _sEntityManager.GetComponent<MetaDataComponent>(serverEntity).EntityPrototype;
|
||||||
if (prototype == null)
|
if (prototype == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var transform = _sEntityManager.GetComponent<TransformComponent>(entity);
|
var transform = _sEntityManager.GetComponent<TransformComponent>(serverEntity);
|
||||||
if (_sMapManager.TryGetGrid(transform.GridUid, out var grid))
|
if (_sMapManager.TryGetGrid(transform.GridUid, out var grid))
|
||||||
{
|
{
|
||||||
var position = transform.LocalPosition;
|
var position = transform.LocalPosition;
|
||||||
|
|
||||||
var (x, y) = TransformLocalPosition(position, grid);
|
var (x, y) = TransformLocalPosition(position, grid);
|
||||||
var data = new EntityData(entity, sprite, x, y);
|
var data = new EntityData(serverEntity, sprite, x, y);
|
||||||
|
|
||||||
components.GetOrAdd(transform.GridUid.Value, _ => new List<EntityData>()).Add(data);
|
components.GetOrAdd(transform.GridUid.Value, _ => new List<EntityData>()).Add(data);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user