Replace EntityUid parsing with NetEntity (#23474)

* Replace EntityUid parsing with NetEntity

* fix

* Other changes required for arch

* And anothher
This commit is contained in:
Leon Friedrich
2024-01-03 19:04:31 -05:00
committed by GitHub
parent 292026c584
commit 9bff44d141
15 changed files with 88 additions and 74 deletions

View File

@@ -33,15 +33,15 @@ namespace Content.Server.Administration.Commands
return; return;
} }
var target = new EntityUid(targetId); var targetNet = new NetEntity(targetId);
if (!target.IsValid() || !_entities.EntityExists(target)) if (!_entities.TryGetEntity(targetNet, out var target))
{ {
shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return; return;
} }
_entities.System<MindSystem>().ControlMob(player.UserId, target); _entities.System<MindSystem>().ControlMob(player.UserId, target.Value);
} }
} }
} }

View File

@@ -8,6 +8,8 @@ namespace Content.Server.Administration.Commands;
[AdminCommand(AdminFlags.Fun)] [AdminCommand(AdminFlags.Fun)]
public sealed class OwoifyCommand : IConsoleCommand public sealed class OwoifyCommand : IConsoleCommand
{ {
[Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "owoify"; public string Command => "owoify";
public string Description => "For when you need everything to be cat. Uses OwOAccent's formatting on the name and description of an entity."; public string Description => "For when you need everything to be cat. Uses OwOAccent's formatting on the name and description of an entity.";
@@ -22,22 +24,25 @@ public sealed class OwoifyCommand : IConsoleCommand
return; return;
} }
var entityManager = IoCManager.Resolve<IEntityManager>();
if (!int.TryParse(args[0], out var targetId)) if (!int.TryParse(args[0], out var targetId))
{ {
shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); shell.WriteLine(Loc.GetString("shell-argument-must-be-number"));
return; return;
} }
var eUid = new EntityUid(targetId); var nent = new NetEntity(targetId);
var meta = entityManager.GetComponent<MetaDataComponent>(eUid); if (!_entManager.TryGetEntity(nent, out var eUid))
{
return;
}
var owoSys = entityManager.System<OwOAccentSystem>(); var meta = _entManager.GetComponent<MetaDataComponent>(eUid.Value);
var metaDataSys = entityManager.System<MetaDataSystem>();
metaDataSys.SetEntityName(eUid, owoSys.Accentuate(meta.EntityName), meta); var owoSys = _entManager.System<OwOAccentSystem>();
metaDataSys.SetEntityDescription(eUid, owoSys.Accentuate(meta.EntityDescription), meta); var metaDataSys = _entManager.System<MetaDataSystem>();
metaDataSys.SetEntityName(eUid.Value, owoSys.Accentuate(meta.EntityName), meta);
metaDataSys.SetEntityDescription(eUid.Value, owoSys.Accentuate(meta.EntityDescription), meta);
} }
} }

View File

@@ -11,6 +11,7 @@ namespace Content.Server.Administration.Commands
[AdminCommand(AdminFlags.Admin)] [AdminCommand(AdminFlags.Admin)]
sealed class SetMindCommand : IConsoleCommand sealed class SetMindCommand : IConsoleCommand
{ {
[Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "setmind"; public string Command => "setmind";
@@ -26,7 +27,7 @@ namespace Content.Server.Administration.Commands
return; return;
} }
if (!int.TryParse(args[0], out var entityUid)) if (!int.TryParse(args[0], out var entInt))
{ {
shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number"));
return; return;
@@ -38,17 +39,15 @@ namespace Content.Server.Administration.Commands
ghostOverride = bool.Parse(args[2]); ghostOverride = bool.Parse(args[2]);
} }
var entityManager = IoCManager.Resolve<IEntityManager>(); var nent = new NetEntity(entInt);
var eUid = new EntityUid(entityUid); if (!_entManager.TryGetEntity(nent, out var eUid))
if (!eUid.IsValid() || !entityManager.EntityExists(eUid))
{ {
shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return; return;
} }
if (!entityManager.HasComponent<MindContainerComponent>(eUid)) if (!_entManager.HasComponent<MindContainerComponent>(eUid))
{ {
shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message")); shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message"));
return; return;
@@ -68,8 +67,8 @@ namespace Content.Server.Administration.Commands
return; return;
} }
var mindSystem = entityManager.System<SharedMindSystem>(); var mindSystem = _entManager.System<SharedMindSystem>();
var metadata = entityManager.GetComponent<MetaDataComponent>(eUid); var metadata = _entManager.GetComponent<MetaDataComponent>(eUid.Value);
var mind = playerCData.Mind ?? mindSystem.CreateMind(session.UserId, metadata.EntityName); var mind = playerCData.Mind ?? mindSystem.CreateMind(session.UserId, metadata.EntityName);

View File

@@ -34,21 +34,21 @@ namespace Content.Server.Administration.Commands
return; return;
} }
if (!int.TryParse(args[0], out var entityUid)) if (!int.TryParse(args[0], out var entInt))
{ {
shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number"));
return; return;
} }
var target = new EntityUid(entityUid); var nent = new NetEntity(entInt);
if (!target.IsValid() || !_entities.EntityExists(target)) if (!_entities.TryGetEntity(nent, out var target))
{ {
shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return; return;
} }
if (!_entities.HasComponent<InventoryComponent?>(target)) if (!_entities.HasComponent<InventoryComponent>(target))
{ {
shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory"))); shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory")));
return; return;
@@ -63,12 +63,12 @@ namespace Content.Server.Administration.Commands
} }
var eui = IoCManager.Resolve<EuiManager>(); var eui = IoCManager.Resolve<EuiManager>();
var ui = new SetOutfitEui(target); var ui = new SetOutfitEui(nent);
eui.OpenEui(ui, player); eui.OpenEui(ui, player);
return; return;
} }
if (!SetOutfit(target, args[1], _entities)) if (!SetOutfit(target.Value, args[1], _entities))
shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error"));
} }

View File

@@ -385,7 +385,7 @@ namespace Content.Server.Administration.Systems
Text = Loc.GetString("set-outfit-verb-get-data-text"), Text = Loc.GetString("set-outfit-verb-get-data-text"),
Category = VerbCategory.Debug, Category = VerbCategory.Debug,
Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")),
Act = () => _euiManager.OpenEui(new SetOutfitEui(args.Target), player), Act = () => _euiManager.OpenEui(new SetOutfitEui(GetNetEntity(args.Target)), player),
Impact = LogImpact.Medium Impact = LogImpact.Medium
}; };
args.Verbs.Add(verb); args.Verbs.Add(verb);

View File

@@ -10,10 +10,9 @@ namespace Content.Server.Administration.UI
public sealed class SetOutfitEui : BaseEui public sealed class SetOutfitEui : BaseEui
{ {
[Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IEntityManager _entManager = default!; private readonly NetEntity _target;
private readonly EntityUid _target;
public SetOutfitEui(EntityUid entity) public SetOutfitEui(NetEntity entity)
{ {
_target = entity; _target = entity;
IoCManager.InjectDependencies(this); IoCManager.InjectDependencies(this);
@@ -31,7 +30,7 @@ namespace Content.Server.Administration.UI
{ {
return new SetOutfitEuiState return new SetOutfitEuiState
{ {
TargetNetEntity = _entManager.GetNetEntity(_target) TargetNetEntity = _target,
}; };
} }

View File

@@ -31,13 +31,13 @@ internal sealed class UpgradeActionCommand : IConsoleCommand
var actionUpgrade = _entMan.EntitySysManager.GetEntitySystem<ActionUpgradeSystem>(); var actionUpgrade = _entMan.EntitySysManager.GetEntitySystem<ActionUpgradeSystem>();
var id = args[0]; var id = args[0];
if (!EntityUid.TryParse(id, out var uid)) if (!NetEntity.TryParse(id, out var nuid))
{ {
shell.WriteLine(Loc.GetString("upgradeaction-command-incorrect-entityuid-format")); shell.WriteLine(Loc.GetString("upgradeaction-command-incorrect-entityuid-format"));
return; return;
} }
if (!_entMan.EntityExists(uid)) if (!_entMan.TryGetEntity(nuid, out var uid))
{ {
shell.WriteLine(Loc.GetString("upgradeaction-command-entity-does-not-exist")); shell.WriteLine(Loc.GetString("upgradeaction-command-entity-does-not-exist"));
return; return;

View File

@@ -52,7 +52,8 @@ public sealed class RandomHumanoidSystem : EntitySystem
{ {
var comp = (Component) _serialization.CreateCopy(entry.Component, notNullableOverride: true); var comp = (Component) _serialization.CreateCopy(entry.Component, notNullableOverride: true);
comp.Owner = humanoid; // This .owner must survive for now. comp.Owner = humanoid; // This .owner must survive for now.
EntityManager.AddComponent(humanoid, comp, true); EntityManager.RemoveComponent(humanoid, comp.GetType());
EntityManager.AddComponent(humanoid, comp);
} }
} }

View File

@@ -27,7 +27,8 @@ namespace Content.Server.Jobs
var temp = (object) component; var temp = (object) component;
serializationManager.CopyTo(data.Component, ref temp); serializationManager.CopyTo(data.Component, ref temp);
entityManager.AddComponent(mob, (Component) temp!, true); entityManager.RemoveComponent(mob, temp!.GetType());
entityManager.AddComponent(mob, (Component) temp);
} }
} }
} }

View File

@@ -24,11 +24,11 @@ namespace Content.Server.NPC.Commands
return; return;
} }
var entId = new EntityUid(int.Parse(args[0])); var nent = new NetEntity(int.Parse(args[0]));
if (!_entities.EntityExists(entId)) if (!_entities.TryGetEntity(nent, out var entId))
{ {
shell.WriteError($"Unable to find entity with uid {entId}"); shell.WriteError($"Unable to find entity {nent}");
return; return;
} }
@@ -38,7 +38,7 @@ namespace Content.Server.NPC.Commands
return; return;
} }
var comp = _entities.AddComponent<HTNComponent>(entId); var comp = _entities.AddComponent<HTNComponent>(entId.Value);
comp.RootTask = new HTNCompoundTask() comp.RootTask = new HTNCompoundTask()
{ {
Task = args[1] Task = args[1]

View File

@@ -11,6 +11,9 @@ namespace Content.Server.Sandbox.Commands
[AnyCommand] [AnyCommand]
public sealed class ColorNetworkCommand : IConsoleCommand public sealed class ColorNetworkCommand : IConsoleCommand
{ {
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "colornetwork"; public string Command => "colornetwork";
public string Description => Loc.GetString("color-network-command-description"); public string Description => Loc.GetString("color-network-command-description");
public string Help => Loc.GetString("color-network-command-help-text", ("command",Command)); public string Help => Loc.GetString("color-network-command-help-text", ("command",Command));
@@ -30,25 +33,21 @@ namespace Content.Server.Sandbox.Commands
return; return;
} }
var entityManager = IoCManager.Resolve<IEntityManager>();
if (!int.TryParse(args[0], out var targetId)) if (!int.TryParse(args[0], out var targetId))
{ {
shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); shell.WriteLine(Loc.GetString("shell-argument-must-be-number"));
return; return;
} }
var eUid = new EntityUid(targetId); var nent = new NetEntity(targetId);
if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) if (!_entManager.TryGetEntity(nent, out var eUid))
{ {
shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return; return;
} }
if (!entityManager.TryGetComponent(eUid, out NodeContainerComponent? nodeContainerComponent)) if (!_entManager.TryGetComponent(eUid, out NodeContainerComponent? nodeContainerComponent))
{ {
shell.WriteLine(Loc.GetString("shell-entity-is-not-node-container")); shell.WriteLine(Loc.GetString("shell-entity-is-not-node-container"));
return; return;
@@ -74,13 +73,15 @@ namespace Content.Server.Sandbox.Commands
{ {
var group = nodeContainerComponent.Nodes[nodeGroupId.ToString().ToLower()].NodeGroup; var group = nodeContainerComponent.Nodes[nodeGroupId.ToString().ToLower()].NodeGroup;
if (group == null) return; if (group == null)
return;
foreach (var x in group.Nodes) foreach (var x in group.Nodes)
{ {
if (!IoCManager.Resolve<IEntityManager>().TryGetComponent(x.Owner, out AtmosPipeColorComponent? atmosPipeColorComponent)) continue; if (!_entManager.TryGetComponent(x.Owner, out AtmosPipeColorComponent? atmosPipeColorComponent))
continue;
EntitySystem.Get<AtmosPipeColorSystem>().SetColor(x.Owner, atmosPipeColorComponent, color); _entManager.System<AtmosPipeColorSystem>().SetColor(x.Owner, atmosPipeColorComponent, color);
} }
} }
} }

View File

@@ -12,6 +12,10 @@ namespace Content.Server.Traitor.Uplink.Commands
[AdminCommand(AdminFlags.Admin)] [AdminCommand(AdminFlags.Admin)]
public sealed class AddUplinkCommand : IConsoleCommand public sealed class AddUplinkCommand : IConsoleCommand
{ {
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
[Dependency] private readonly IEntityManager _entManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
public string Command => "adduplink"; public string Command => "adduplink";
public string Description => Loc.GetString("add-uplink-command-description"); public string Description => Loc.GetString("add-uplink-command-description");
@@ -41,7 +45,7 @@ namespace Content.Server.Traitor.Uplink.Commands
if (args.Length > 0) if (args.Length > 0)
{ {
// Get player entity // Get player entity
if (!IoCManager.Resolve<IPlayerManager>().TryGetSessionByUsername(args[0], out session)) if (!_playerManager.TryGetSessionByUsername(args[0], out session))
{ {
shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist")); shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist"));
return; return;
@@ -60,7 +64,6 @@ namespace Content.Server.Traitor.Uplink.Commands
// Get target item // Get target item
EntityUid? uplinkEntity = null; EntityUid? uplinkEntity = null;
var entityManager = IoCManager.Resolve<IEntityManager>();
if (args.Length >= 2) if (args.Length >= 2)
{ {
if (!int.TryParse(args[1], out var itemID)) if (!int.TryParse(args[1], out var itemID))
@@ -69,8 +72,9 @@ namespace Content.Server.Traitor.Uplink.Commands
return; return;
} }
var eUid = new EntityUid(itemID); var eNet = new NetEntity(itemID);
if (!eUid.IsValid() || !entityManager.EntityExists(eUid))
if (!_entManager.TryGetEntity(eNet, out var eUid))
{ {
shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return; return;
@@ -80,11 +84,10 @@ namespace Content.Server.Traitor.Uplink.Commands
} }
// Get TC count // Get TC count
var configManager = IoCManager.Resolve<IConfigurationManager>(); var tcCount = _cfgManager.GetCVar(CCVars.TraitorStartingBalance);
var tcCount = configManager.GetCVar(CCVars.TraitorStartingBalance); Logger.Debug(_entManager.ToPrettyString(user));
Logger.Debug(entityManager.ToPrettyString(user));
// Finally add uplink // Finally add uplink
var uplinkSys = entityManager.EntitySysManager.GetEntitySystem<UplinkSystem>(); var uplinkSys = _entManager.System<UplinkSystem>();
if (!uplinkSys.AddUplink(user, FixedPoint2.New(tcCount), uplinkEntity: uplinkEntity)) if (!uplinkSys.AddUplink(user, FixedPoint2.New(tcCount), uplinkEntity: uplinkEntity))
{ {
shell.WriteLine(Loc.GetString("add-uplink-command-error-2")); shell.WriteLine(Loc.GetString("add-uplink-command-error-2"));

View File

@@ -9,6 +9,8 @@ namespace Content.Server.Verbs.Commands
[AdminCommand(AdminFlags.Admin)] [AdminCommand(AdminFlags.Admin)]
public sealed class InvokeVerbCommand : IConsoleCommand public sealed class InvokeVerbCommand : IConsoleCommand
{ {
[Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "invokeverb"; public string Command => "invokeverb";
public string Description => Loc.GetString("invoke-verb-command-description"); public string Description => Loc.GetString("invoke-verb-command-description");
public string Help => Loc.GetString("invoke-verb-command-help"); public string Help => Loc.GetString("invoke-verb-command-help");
@@ -21,8 +23,7 @@ namespace Content.Server.Verbs.Commands
return; return;
} }
var entityManager = IoCManager.Resolve<IEntityManager>(); var verbSystem = _entManager.System<SharedVerbSystem>();
var verbSystem = entityManager.System<SharedVerbSystem>();
// get the 'player' entity (defaulting to command user, otherwise uses a uid) // get the 'player' entity (defaulting to command user, otherwise uses a uid)
EntityUid? playerEntity = null; EntityUid? playerEntity = null;
@@ -40,7 +41,7 @@ namespace Content.Server.Verbs.Commands
} }
else else
{ {
entityManager.EntityExists(new EntityUid(intPlayerUid)); _entManager.TryGetEntity(new NetEntity(intPlayerUid), out playerEntity);
} }
// gets the target entity // gets the target entity
@@ -56,16 +57,16 @@ namespace Content.Server.Verbs.Commands
return; return;
} }
var target = new EntityUid(intUid); var targetNet = new NetEntity(intUid);
if (!entityManager.EntityExists(target))
if (!_entManager.TryGetEntity(targetNet, out var target))
{ {
shell.WriteError(Loc.GetString("invoke-verb-command-invalid-target-entity")); shell.WriteError(Loc.GetString("invoke-verb-command-invalid-target-entity"));
return; return;
} }
var verbName = args[2].ToLowerInvariant(); var verbName = args[2].ToLowerInvariant();
var verbs = verbSystem.GetLocalVerbs(target, playerEntity.Value, Verb.VerbTypes, true); var verbs = verbSystem.GetLocalVerbs(target.Value, playerEntity.Value, Verb.VerbTypes, true);
// if the "verb name" is actually a verb-type, try run any verb of that type. // if the "verb name" is actually a verb-type, try run any verb of that type.
var verbType = Verb.VerbTypes.FirstOrDefault(x => x.Name == verbName); var verbType = Verb.VerbTypes.FirstOrDefault(x => x.Name == verbName);
@@ -74,7 +75,7 @@ namespace Content.Server.Verbs.Commands
var verb = verbs.FirstOrDefault(v => v.GetType() == verbType); var verb = verbs.FirstOrDefault(v => v.GetType() == verbType);
if (verb != null) if (verb != null)
{ {
verbSystem.ExecuteVerb(verb, playerEntity.Value, target, forced: true); verbSystem.ExecuteVerb(verb, playerEntity.Value, target.Value, forced: true);
shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verbName), ("target", target), ("player", playerEntity))); shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verbName), ("target", target), ("player", playerEntity)));
return; return;
} }
@@ -84,7 +85,7 @@ namespace Content.Server.Verbs.Commands
{ {
if (verb.Text.ToLowerInvariant() == verbName) if (verb.Text.ToLowerInvariant() == verbName)
{ {
verbSystem.ExecuteVerb(verb, playerEntity.Value, target, forced: true); verbSystem.ExecuteVerb(verb, playerEntity.Value, target.Value, forced: true);
shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verb.Text), ("target", target), ("player", playerEntity))); shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verb.Text), ("target", target), ("player", playerEntity)));
return; return;
} }

View File

@@ -8,6 +8,8 @@ namespace Content.Server.Verbs.Commands
[AdminCommand(AdminFlags.Admin)] [AdminCommand(AdminFlags.Admin)]
public sealed class ListVerbsCommand : IConsoleCommand public sealed class ListVerbsCommand : IConsoleCommand
{ {
[Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "listverbs"; public string Command => "listverbs";
public string Description => Loc.GetString("list-verbs-command-description"); public string Description => Loc.GetString("list-verbs-command-description");
public string Help => Loc.GetString("list-verbs-command-help"); public string Help => Loc.GetString("list-verbs-command-help");
@@ -20,11 +22,11 @@ namespace Content.Server.Verbs.Commands
return; return;
} }
var entityManager = IoCManager.Resolve<IEntityManager>(); var verbSystem = _entManager.System<SharedVerbSystem>();
var verbSystem = EntitySystem.Get<SharedVerbSystem>();
// get the 'player' entity (defaulting to command user, otherwise uses a uid) // get the 'player' entity (defaulting to command user, otherwise uses a uid)
EntityUid? playerEntity = null; EntityUid? playerEntity = null;
if (!int.TryParse(args[0], out var intPlayerUid)) if (!int.TryParse(args[0], out var intPlayerUid))
{ {
if (args[0] == "self" && shell.Player?.AttachedEntity != null) if (args[0] == "self" && shell.Player?.AttachedEntity != null)
@@ -39,7 +41,7 @@ namespace Content.Server.Verbs.Commands
} }
else else
{ {
entityManager.EntityExists(new EntityUid(intPlayerUid)); _entManager.TryGetEntity(new NetEntity(intPlayerUid), out playerEntity);
} }
// gets the target entity // gets the target entity
@@ -55,14 +57,15 @@ namespace Content.Server.Verbs.Commands
return; return;
} }
var target = new EntityUid(intUid); var targetNet = new NetEntity(intUid);
if (!entityManager.EntityExists(target))
if (!_entManager.TryGetEntity(targetNet, out var target))
{ {
shell.WriteError(Loc.GetString("list-verbs-command-invalid-target-entity")); shell.WriteError(Loc.GetString("list-verbs-command-invalid-target-entity"));
return; return;
} }
var verbs = verbSystem.GetLocalVerbs(target, playerEntity.Value, Verb.VerbTypes); var verbs = verbSystem.GetLocalVerbs(target.Value, playerEntity.Value, Verb.VerbTypes);
foreach (var verb in verbs) foreach (var verb in verbs)
{ {

View File

@@ -199,8 +199,8 @@ public sealed partial class ArtifactSystem
var temp = (object) comp; var temp = (object) comp;
_serialization.CopyTo(entry.Component, ref temp); _serialization.CopyTo(entry.Component, ref temp);
EntityManager.RemoveComponent(uid, temp!.GetType());
EntityManager.AddComponent(uid, (Component) temp!, true); EntityManager.AddComponent(uid, (Component) temp!);
} }
node.Discovered = true; node.Discovered = true;
@@ -234,7 +234,8 @@ public sealed partial class ArtifactSystem
comp.Owner = uid; comp.Owner = uid;
var temp = (object) comp; var temp = (object) comp;
_serialization.CopyTo(entry, ref temp); _serialization.CopyTo(entry, ref temp);
EntityManager.AddComponent(uid, (Component) temp!, true); EntityManager.RemoveComponent(uid, temp!.GetType());
EntityManager.AddComponent(uid, (Component) temp);
continue; continue;
} }