SharpMod.Entity.CreateEntity C# (CSharp) Method

CreateEntity() public static method

public static CreateEntity ( IntPtr entityPointer ) : Entity
entityPointer System.IntPtr
return Entity
        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));
                }
            }
        }

Usage Example

Beispiel #1
0
        /// <summary>
        /// Gets a Player according to the entity pointer.
        /// Needed most of the time for internal engine calls, since the entity pointer
        /// is used a lot.
        /// </summary>
        /// <param name="entity">
        /// A pointer to the entity class <see cref="IntPtr"/>
        /// </param>
        /// <returns>
        /// A player class <see cref="Player"/>
        /// </returns>
        public static Player GetPlayer(IntPtr entity)
        {
            int index = MetaModEngine.engineFunctions.IndexOfEdict(entity);

            if (Player.playerlist[index] == null)
            {
                Player.playerlist[index] = Entity.CreateEntity(entity) as Player;
            }
            return(Player.playerlist[index]);
        }