internal void OnCycle() { if (mGotRollers) { try { room.SendMessage(CycleRollers()); } catch (Exception e) { Logging.LogThreadException(e.ToString(), "rollers for room with ID " + room.RoomId); mGotRollers = false; } } if (roomItemUpdateQueue.Count > 0) { List <RoomItem> addItems = new List <RoomItem>(); lock (roomItemUpdateQueue.SyncRoot) { while (roomItemUpdateQueue.Count > 0) { RoomItem item = (RoomItem)roomItemUpdateQueue.Dequeue(); item.ProcessUpdates(); if (item.IsTrans || item.UpdateCounter > 0) { addItems.Add(item); } } foreach (RoomItem item in addItems) { roomItemUpdateQueue.Enqueue(item); } } } mFloorItems.OnCycle(); mWallItems.OnCycle(); }