public void UpdateCachedBody(WorldBody worldBody, uint time) { if (worldBody == null || !worldBody.Exists) { return; } if (!Bodies.TryGetValue(worldBody.ID, out BucketBody bucket)) { bucket = new BucketBody() { Stale = false }; Bodies.Add(worldBody.ID, bucket); } bucket.Stale = false; bucket.ReadBody(worldBody, time); if (worldBody.Group != null) { if (!Groups.TryGetValue(worldBody.Group.ID, out BucketGroup group)) { group = new BucketGroup(); Groups.Add(worldBody.Group.ID, group); group.Stale = true; } if (group.Stale) { group.Stale = false; group.ReadGroup(worldBody.Group, time); } } }
private void UpdateLocalBodies(IEnumerable <Body> bodies) { foreach (var bucket in Bodies.Values) { bucket.Stale = true; } foreach (var obj in bodies) { BucketBody bucket = null; if (Bodies.ContainsKey(obj.ID)) { Bodies[obj.ID].Stale = false; Bodies[obj.ID].BodyUpdated = obj; } else { bucket = new BucketBody { BodyUpdated = obj, Stale = false }; Bodies.Add(obj.ID, bucket); } } }