From 909a9fe3e743628ac87a2bd4de9eca2fb6334500 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 23 Dec 2023 20:17:28 +0800 Subject: [PATCH] update EcsGroup --- src/{ => Collections}/EcsGroup.cs | 20 ++++++++++++++++---- src/{ => Collections}/EcsGroup.cs.meta | 0 2 files changed, 16 insertions(+), 4 deletions(-) rename src/{ => Collections}/EcsGroup.cs (95%) rename src/{ => Collections}/EcsGroup.cs.meta (100%) diff --git a/src/EcsGroup.cs b/src/Collections/EcsGroup.cs similarity index 95% rename from src/EcsGroup.cs rename to src/Collections/EcsGroup.cs index 65c1fb5..4f71c6b 100644 --- a/src/EcsGroup.cs +++ b/src/Collections/EcsGroup.cs @@ -93,6 +93,11 @@ namespace DCFApixels.DragonECS #endregion + #region Convertions + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator ReadOnlySpan(EcsReadonlyGroup a) => a.ToSpan(); + #endregion + #region DebuggerProxy internal class DebuggerProxy : EcsGroup.DebuggerProxy { @@ -623,7 +628,7 @@ namespace DCFApixels.DragonECS public Enumerator(EcsGroup group) { _dense = group._dense; - _count = group._count; + _count = group._count > _dense.Length ? _dense.Length : group._count; _index = 0; } public int Current @@ -632,7 +637,7 @@ namespace DCFApixels.DragonECS get => _dense[_index]; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool MoveNext() => ++_index <= _count && _count < _dense.Length; // <= потму что отсчет начинается с индекса 1 //_count < _dense.Length дает среде понять что проверки на выход за границы не нужны + public bool MoveNext() => ++_index <= _count; // <= потму что отсчет начинается с индекса 1 //_count < _dense.Length дает среде понять что проверки на выход за границы не нужны } public readonly struct LongsIterator : IEnumerable { @@ -661,7 +666,7 @@ namespace DCFApixels.DragonECS { world = group.World; _dense = group._dense; - _count = group._count; + _count = group._count > _dense.Length ? _dense.Length : group._count; _index = 0; } public entlong Current @@ -670,7 +675,7 @@ namespace DCFApixels.DragonECS get => world.GetEntityLong(_dense[_index]); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool MoveNext() => ++_index <= _count && _count < _dense.Length; // <= потму что отсчет начинается с индекса 1 //_count < _dense.Length дает среде понять что проверки на выход за границы не нужны + public bool MoveNext() => ++_index <= _count; // <= потму что отсчет начинается с индекса 1 //_count < _dense.Length дает среде понять что проверки на выход за границы не нужны } } #endregion @@ -694,6 +699,13 @@ namespace DCFApixels.DragonECS } #endregion + #region Convertions + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator EcsReadonlyGroup(EcsGroup a) => a.Readonly; + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator ReadOnlySpan(EcsGroup a) => a.ToSpan(); + #endregion + #region DebuggerProxy internal class DebuggerProxy { diff --git a/src/EcsGroup.cs.meta b/src/Collections/EcsGroup.cs.meta similarity index 100% rename from src/EcsGroup.cs.meta rename to src/Collections/EcsGroup.cs.meta