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)));
}
}
}