Пример #1
0
        /// <summary>Creates a new GameObject with the given parameters</summary>
        public static GameObject Create(GOEntry entry, IWorldLocation where, GOSpawnEntry spawnEntry = null,
                                        GOSpawnPoint spawnPoint = null)
        {
            GameObject gameObject = entry.GOCreator();

            gameObject.GoId = entry.GOId;
            Func <GameObjectHandler> handlerCreator = entry.HandlerCreator;

            gameObject.Init(entry, spawnEntry, spawnPoint);
            if (handlerCreator != null)
            {
                gameObject.Handler = handlerCreator();
                gameObject.Phase   = where.Phase;
                Vector3 position = where.Position;
                if (spawnPoint == null)
                {
                    position.Z = where.Map.Terrain.GetGroundHeightUnderneath(position);
                }
                where.Map.AddObject(gameObject, ref position);
                gameObject.MarkUpdate(GameObjectFields.DYNAMIC);
                return(gameObject);
            }

            log.Warn("GOEntry {0} did not have a HandlerCreator set - Type: {1}", entry,
                     entry.Type);
            gameObject.Delete();
            return(null);
        }
Пример #2
0
        /// <summary>
        /// Creates a new GameObject with the given parameters
        /// </summary>
        public static GameObject Create(GOEntry entry, IWorldLocation where, GOSpawnEntry spawnEntry = null, GOSpawnPoint spawnPoint = null)
        {
            var go             = entry.GOCreator();
            var handlerCreator = entry.HandlerCreator;

            go.Init(entry, spawnEntry, spawnPoint);
            if (handlerCreator != null)
            {
                go.Handler = handlerCreator();
            }
            else
            {
                log.Warn("GOEntry {0} did not have a HandlerCreator set - Type: {1}", entry, entry.Type);
                go.Delete();
                return(null);
            }
            go.Phase = where.Phase;
            var pos = where.Position;

            if (spawnPoint == null)
            {
                pos.Z = where.Map.Terrain.GetGroundHeightUnderneath(pos);
            }
            where.Map.AddObject(go, ref pos);

            go.MarkUpdate(GameObjectFields.DYNAMIC);
            return(go);
        }