From d6fe6860967d95803a8b8d0955a33f10d1b7c00f Mon Sep 17 00:00:00 2001 From: sebas77 Date: Mon, 19 Feb 2018 16:53:13 +0000 Subject: [PATCH] DispatchOnChange and DispatchOnSet must hold only value types fix QueryGroupedEntityViews --- Svelto.ECS/Dispatcher/DispatchOnChange.cs | 6 ++---- Svelto.ECS/Dispatcher/DispatchOnSet.cs | 6 +++--- Svelto.ECS/EntityViewsDB.cs | 16 +++++----------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/Svelto.ECS/Dispatcher/DispatchOnChange.cs b/Svelto.ECS/Dispatcher/DispatchOnChange.cs index b000675..bfcf521 100644 --- a/Svelto.ECS/Dispatcher/DispatchOnChange.cs +++ b/Svelto.ECS/Dispatcher/DispatchOnChange.cs @@ -2,14 +2,12 @@ using System.Collections.Generic; namespace Svelto.ECS { - public class DispatchOnChange : DispatchOnSet + public class DispatchOnChange : DispatchOnSet where T:struct { public DispatchOnChange(int senderID) : base(senderID) { } - public DispatchOnChange() - { - } + public DispatchOnChange() {} public new T value { diff --git a/Svelto.ECS/Dispatcher/DispatchOnSet.cs b/Svelto.ECS/Dispatcher/DispatchOnSet.cs index 76b7864..b8c5057 100644 --- a/Svelto.ECS/Dispatcher/DispatchOnSet.cs +++ b/Svelto.ECS/Dispatcher/DispatchOnSet.cs @@ -2,7 +2,7 @@ using Svelto.WeakEvents; namespace Svelto.ECS { - public class DispatchOnSet + public class DispatchOnSet where T:struct { public DispatchOnSet(int senderID) { @@ -42,8 +42,8 @@ namespace Svelto.ECS } protected T _value; - protected int _senderID; + readonly int _senderID; - protected WeakEvent _subscribers; + WeakEvent _subscribers; } } diff --git a/Svelto.ECS/EntityViewsDB.cs b/Svelto.ECS/EntityViewsDB.cs index b92c5ed..7024318 100644 --- a/Svelto.ECS/EntityViewsDB.cs +++ b/Svelto.ECS/EntityViewsDB.cs @@ -31,12 +31,12 @@ namespace Svelto.ECS.Internal public FasterReadOnlyList QueryGroupedEntityViews(int @group) where T:EntityView, new() { - Dictionary entityViews; + Dictionary entitiesInGroupPerType; - if (_groupEntityViewsDB.TryGetValue(group, out entityViews) == false) + if (_groupEntityViewsDB.TryGetValue(group, out entitiesInGroupPerType) == false) return RetrieveEmptyEntityViewList(); - return new FasterReadOnlyList(entityViews as FasterList); + return new FasterReadOnlyList((FasterList) entitiesInGroupPerType[typeof(T)]); } public T[] QueryEntityViewsAsArray(out int count) where T : IEntityView @@ -49,9 +49,7 @@ namespace Svelto.ECS.Internal if (_entityViewsDB.TryGetValue(type, out entityViews) == false) return RetrieveEmptyEntityViewArray(); - var castedEntityViews = (FasterList)entityViews; - - return FasterList < T > .NoVirt.ToArrayFast(castedEntityViews, out count); + return FasterList.NoVirt.ToArrayFast((FasterList)entityViews, out count); } public T[] QueryGroupedEntityViewsAsArray(int @group, out int count) where T : IEntityView @@ -64,11 +62,7 @@ namespace Svelto.ECS.Internal if (_groupEntityViewsDB.TryGetValue(group, out entityViews) == false) return RetrieveEmptyEntityViewArray(); - var castedEntityViews = (FasterList)entityViews[type]; - - count = castedEntityViews.Count; - - return FasterList.NoVirt.ToArrayFast(castedEntityViews, out count); + return FasterList.NoVirt.ToArrayFast((FasterList)entityViews[type], out count); } public ReadOnlyDictionary QueryIndexableEntityViews() where T:IEntityView