public void RegisterInstance <T>(T o) { Type t = o.GetType(); if (CurrentInstancesByType.ContainsKey(t)) { CurrentInstancesByType[t].Add(o); } else { CurrentInstancesByType.Add(t, new List <object>() { o }); } if (!UpdateInstancesFibersByType.ContainsKey(t)) { Game.LogTrivial($"[{nameof(UpdateInstancesFibersManager)}] Creating update fiber for {t.Name} instances"); GameFiber fiber = GameFiber.StartNew(() => { UpdateInstancesLoop <T>(CurrentInstancesByType[t]); }, $"{t.Name} Update Fiber"); UpdateInstancesFibersByType.Add(t, fiber); } }
public object[] GetAllInstancesOfType(Type type) { return(CurrentInstancesByType.ContainsKey(type) ? CurrentInstancesByType[type].ToArray() : null); }
public T[] GetAllInstancesOfType <T>() { return(CurrentInstancesByType.ContainsKey(typeof(T)) ? CurrentInstancesByType[typeof(T)].Cast <T>().ToArray() : null); }