public static Entity CreateEntity(IntPtr entityPointer) { if (entityPointer == IntPtr.Zero) { return(null); } int index = Entity.GetIndex(entityPointer); if (entityDictionary.ContainsKey(index)) { return(entityDictionary[index]); } else { Edict *edict = (Edict *)entityPointer.ToPointer(); // TODO: 1 and maxplayer can be bot or player if (index >= 1 && index <= Server.MaxPlayers) { return(RegisterEntity(index, new Player(entityPointer))); } string classname = GetClassName(edict); if (classname.StartsWith("weapon_")) { return(RegisterEntity(index, new CounterStrike.Weapon(edict))); } switch (classname) { case "player": return(RegisterEntity(index, new Player(entityPointer))); default: return(RegisterEntity(index, new Entity(entityPointer))); } } }