using System.Threading;
using Hjg.Pngcs;
-
+using Mono.Collections.Generic;
using ProtoBuf;
using Vintagestory.API.Client;
using Vintagestory.API.Common;
+using Vintagestory.API.Common.Entities;
using Vintagestory.API.Config;
using Vintagestory.API.Datastructures;
using Vintagestory.API.MathTools;
Logger.Debug("Presently {0} Entities", ClientAPI.World.LoadedEntities.Count);
#endif
- //Handles mutations better than a plain Iterator
- for (int entIndex = 0; entIndex < ClientAPI.World.LoadedEntities.Count; entIndex++ )
+ var keyList = new long[ClientAPI.World.LoadedEntities.Keys.Count];
+ ClientAPI.World.LoadedEntities.Keys.CopyTo(keyList, 0);
+
+ //'ElementAt'; worse! instead; walk fixed list...
+ Entity loadedEntity;
+ foreach (var key in keyList)
{
- var loadedEntity = ClientAPI.World.LoadedEntities.Values.ElementAt(entIndex);
-
- #if DEBUG
- //Logger.VerboseDebug($"ENTITY: ({loadedEntity.Value.Code}) = #{loadedEntity.Value.EntityId} {loadedEntity.Value.State} {loadedEntity.Value.LocalPos} <<<<<<<<<<<<");
- #endif
+ if (ClientAPI.World.LoadedEntities.TryGetValue(key, out loadedEntity))
+ {
+ #if DEBUG
+ //Logger.VerboseDebug($"ENTITY: ({loadedEntity.Value.Code}) = #{loadedEntity.Value.EntityId} {loadedEntity.Value.State} {loadedEntity.Value.LocalPos} <<<<<<<<<<<<");
+ #endif
- var dMatch = Entity_Designators.SingleOrDefault(se => se.Key.Equals(loadedEntity.Code));
- if (dMatch.Value != null)
- {
- dMatch.Value.SpecialAction(ClientAPI, this.EOIs, loadedEntity.Pos.AsBlockPos.Copy( ), loadedEntity);
- }
- }
+ var dMatch = Entity_Designators.SingleOrDefault(se => se.Key.Equals(loadedEntity.Code));
+ if (dMatch.Value != null)
+ {
+ dMatch.Value.SpecialAction(ClientAPI, this.EOIs, loadedEntity.Pos.AsBlockPos.Copy( ), loadedEntity);
+ }
+ }
+ }
}
private void AddNote(string notation)