Fix inventory flickering and missing InventoryTemplateUpdated event (#39379)

* fix flickering

* move InitClothing

* fix this
This commit is contained in:
slarticodefast
2025-08-06 22:14:28 +02:00
committed by GitHub
parent f76e3b63b7
commit 6b6bb2e319
3 changed files with 11 additions and 6 deletions

View File

@@ -115,6 +115,13 @@ namespace Content.Client.Inventory
OnLinkInventorySlots?.Invoke(uid, component); OnLinkInventorySlots?.Invoke(uid, component);
} }
protected override void OnInit(Entity<InventoryComponent> ent, ref ComponentInit args)
{
base.OnInit(ent, ref args);
_clothingVisualsSystem.InitClothing(ent.Owner, ent.Comp);
}
public override void Shutdown() public override void Shutdown()
{ {
CommandBinds.Unregister<ClientInventorySystem>(); CommandBinds.Unregister<ClientInventorySystem>();
@@ -261,7 +268,6 @@ namespace Content.Client.Inventory
TryAddSlotData((ent.Owner, inventorySlots), (SlotData)slot); TryAddSlotData((ent.Owner, inventorySlots), (SlotData)slot);
} }
_clothingVisualsSystem.InitClothing(ent, ent.Comp);
if (ent.Owner == _playerManager.LocalEntity) if (ent.Owner == _playerManager.LocalEntity)
ReloadInventory(inventorySlots); ReloadInventory(inventorySlots);
} }

View File

@@ -194,8 +194,6 @@ public abstract partial class InventorySystem
if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0))
TriggerHandContactInteraction(target); TriggerHandContactInteraction(target);
Dirty(target, inventory);
_movementSpeed.RefreshMovementSpeedModifiers(target); _movementSpeed.RefreshMovementSpeedModifiers(target);
return true; return true;
@@ -487,8 +485,6 @@ public abstract partial class InventorySystem
if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0))
TriggerHandContactInteraction(target); TriggerHandContactInteraction(target);
Dirty(target, inventory);
_movementSpeed.RefreshMovementSpeedModifiers(target); _movementSpeed.RefreshMovementSpeedModifiers(target);
return true; return true;

View File

@@ -74,7 +74,7 @@ public partial class InventorySystem : EntitySystem
Dirty(target, targetComp); Dirty(target, targetComp);
} }
private void OnInit(Entity<InventoryComponent> ent, ref ComponentInit args) protected virtual void OnInit(Entity<InventoryComponent> ent, ref ComponentInit args)
{ {
UpdateInventoryTemplate(ent); UpdateInventoryTemplate(ent);
} }
@@ -111,6 +111,9 @@ public partial class InventorySystem : EntitySystem
container.OccludesLight = false; container.OccludesLight = false;
ent.Comp.Containers[i] = container; ent.Comp.Containers[i] = container;
} }
var ev = new InventoryTemplateUpdated();
RaiseLocalEvent(ent, ref ev);
} }
private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args) private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args)