From a5bba55d6db265e9871f5315a2bc0cf7c5412820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Matth=C3=A4us?= Date: Fri, 2 Aug 2024 18:41:05 +0200 Subject: [PATCH] Some performance improvements. --- src/Arch.SourceGen/Fundamentals/Get.cs | 5 +++-- src/Arch.SourceGen/Fundamentals/Set.cs | 5 +++-- src/Arch/Core/World.cs | 15 +++++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Arch.SourceGen/Fundamentals/Get.cs b/src/Arch.SourceGen/Fundamentals/Get.cs index b5b11cf2..6e0ea394 100644 --- a/src/Arch.SourceGen/Fundamentals/Get.cs +++ b/src/Arch.SourceGen/Fundamentals/Get.cs @@ -260,8 +260,9 @@ public static StringBuilder AppendWorldGet(this StringBuilder sb, int amount) [Pure] public Components<{{generics}}> Get<{{generics}}>(Entity entity) { - var slot = EntityInfo.GetSlot(entity.Id); - var archetype = EntityInfo.GetArchetype(entity.Id); + var entitySlot = EntityInfo.GetEntitySlot(entity.Id); + var slot = entitySlot.Slot; + var archetype = entitySlot.Archetype; return archetype.Get<{{generics}}>(ref slot); } """; diff --git a/src/Arch.SourceGen/Fundamentals/Set.cs b/src/Arch.SourceGen/Fundamentals/Set.cs index ed480134..0855962a 100644 --- a/src/Arch.SourceGen/Fundamentals/Set.cs +++ b/src/Arch.SourceGen/Fundamentals/Set.cs @@ -146,8 +146,9 @@ public static StringBuilder AppendWorldSet(this StringBuilder sb, int amount) [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Set<{{generics}}>(Entity entity, {{parameters}}) { - var slot = EntityInfo.GetSlot(entity.Id); - var archetype = EntityInfo.GetArchetype(entity.Id); + var entitySlot = EntityInfo.GetEntitySlot(entity.Id); + var slot = entitySlot.Slot; + var archetype = entitySlot.Archetype; archetype.Set<{{generics}}>(ref slot, {{insertParams}}); {{events}} } diff --git a/src/Arch/Core/World.cs b/src/Arch/Core/World.cs index 58b1f6d2..a8fb347d 100644 --- a/src/Arch/Core/World.cs +++ b/src/Arch/Core/World.cs @@ -955,8 +955,9 @@ public partial class World [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Set(Entity entity, in T? component = default) { - var slot = EntityInfo.GetSlot(entity.Id); - var archetype = EntityInfo.GetArchetype(entity.Id); + var entitySlot = EntityInfo.GetEntitySlot(entity.Id); + var slot = entitySlot.Slot; + var archetype = entitySlot.Archetype; archetype.Set(ref slot, in component); OnComponentSet(entity); } @@ -1005,8 +1006,9 @@ public bool TryGet(Entity entity, out T? component) { component = default; - var slot = EntityInfo.GetSlot(entity.Id); - var archetype = EntityInfo.GetArchetype(entity.Id); + var entitySlot = EntityInfo.GetEntitySlot(entity.Id); + var slot = entitySlot.Slot; + var archetype = entitySlot.Archetype; if (!archetype.Has()) { @@ -1028,8 +1030,9 @@ public bool TryGet(Entity entity, out T? component) [Pure] public ref T TryGetRef(Entity entity, out bool exists) { - var slot = EntityInfo.GetSlot(entity.Id); - var archetype = EntityInfo.GetArchetype(entity.Id); + var entitySlot = EntityInfo.GetEntitySlot(entity.Id); + var slot = entitySlot.Slot; + var archetype = entitySlot.Archetype; if (!(exists = archetype.Has())) {