internal void UnregisterObject(Object obj) { lock (ManagedObjects) { if (!ManagedObjects.Contains(obj)) { return; } ManagedObjects.Remove(obj); if (obj is GameObject gameObject) { if ((gameObject.Id.Flags & ObjectIdFlags.Spawned) != 0) { SpawnedObjects.Remove(gameObject); } } var updated = UpdatedObjects.FirstOrDefault(u => u.Associate == obj); if (updated == default) { return; } UpdatedObjects.Remove(updated); } }
internal void RegisterObject(Object obj) { lock (ManagedObjects) { if (ManagedObjects.Contains(obj)) { return; } OnObject.Invoke(obj); ManagedObjects.Add(obj); if (!(obj is GameObject gameObject)) { return; } if ((gameObject.Id.Flags & ObjectIdFlags.Spawned) != 0) { SpawnedObjects.Add(gameObject); } } }