/// <summary> /// Updates the room a number of ticks. If we have entities waiting to be /// added, this function will check them and add them if applicable. /// </summary> public void ClientUpdate(Tick localTick, Tick estimatedServerTick) { Tick = estimatedServerTick; UpdatePendingEntities(estimatedServerTick); OnPreRoomUpdate(Tick); // Collect the entities in the priority order and // separate them out for either update or removal foreach (RailEntityBase railEntityBase in Entities) { RailEntityClient entity = (RailEntityClient)railEntityBase; if (entity.ShouldRemove) { ToRemove.Add(entity); } else { ToUpdate.Add(entity); } } // Wave 0: Remove all sunsetted entities ToRemove.ForEach(RemoveEntity); // Wave 1: Start/initialize all entities ToUpdate.ForEach(e => e.PreUpdate()); // Wave 2: Update all entities ToUpdate.ForEach(e => e.ClientUpdate(localTick)); // Wave 3: Post-update all entities ToUpdate.ForEach(e => e.PostUpdate()); ToRemove.Clear(); ToUpdate.Clear(); OnPostRoomUpdate(Tick); }
public void ServerUpdate() { Tick = Tick.GetNext(); OnPreRoomUpdate(Tick); // Collect the entities in the priority order and // separate them out for either update or removal foreach (RailEntityBase railEntityBase in Entities) { RailEntityServer entity = (RailEntityServer)railEntityBase; if (entity.ShouldRemove) { ToRemove.Add(entity); } else { ToUpdate.Add(entity); } } // Wave 0: Remove all sunsetted entities ToRemove.ForEach(RemoveEntity); // Wave 1: Start/initialize all entities ToUpdate.ForEach(e => e.PreUpdate()); // Wave 2: Update all entities ToUpdate.ForEach(e => e.ServerUpdate()); // Wave 3: Post-update all entities ToUpdate.ForEach(e => e.PostUpdate()); ToRemove.Clear(); ToUpdate.Clear(); OnPostRoomUpdate(Tick); }