예제 #1
0
        public static SpawnNotification Create(ISpawnFactory factory, GameObject spawnedObject, ISpawner spawnPoint)
        {
            if (factory == null)
            {
                throw new System.ArgumentNullException("factory");
            }
            if (spawnedObject == null)
            {
                throw new System.ArgumentNullException("spawnedObject");
            }

            SpawnNotification n;

            if (Notification.TryGetCache <SpawnNotification>(out n))
            {
                n._factory       = factory;
                n._spawnedObject = spawnedObject;
                n._spawnPoint    = spawnPoint;
            }
            else
            {
                n = new SpawnNotification(factory, spawnedObject, spawnPoint);
            }
            return(n);
        }
예제 #2
0
 public SpawnNotification(ISpawnFactory factory, GameObject spawnedObject, ISpawner spawnPoint)
 {
     if (factory == null)
     {
         throw new System.ArgumentNullException("factory");
     }
     if (spawnedObject == null)
     {
         throw new System.ArgumentNullException("spawnedObject");
     }
     _factory       = factory;
     _spawnedObject = spawnedObject;
     _spawnPoint    = spawnPoint;
 }
        public static void SignalOnSpawnedNotification(ISpawner spawnPoint, ISpawnFactory factory, GameObject spawnedObject, IList <ISpawnerModifier> modifiers)
        {
            var spawnNotif = SpawnPointTriggeredNotification.Create(factory, spawnedObject, spawnPoint);

            if (modifiers != null && modifiers.Count > 0)
            {
                for (int i = 0; i < modifiers.Count; i++)
                {
                    if (modifiers[i] != null)
                    {
                        modifiers[i].OnSpawnedNotification(spawnNotif);
                    }
                }
            }
            Notification.PostNotification <SpawnPointTriggeredNotification>(spawnPoint, spawnNotif, false);
            Notification.Release(spawnNotif);
        }
예제 #4
0
        internal void PlaceOnSpawn(ISpawner spawnPoint, ISpawnFactory spawnPool, GameObject spawnedObject)
        {
            if (_busy)
            {
                return;
            }
            if (this.FlagBusyOnSpawn)
            {
                _busy = true;
            }

            spawnedObject.transform.position = this.transform.position;
            spawnedObject.transform.rotation = this.transform.rotation;

            var n = SpawnPointTriggeredNotification.Create(spawnPool, spawnedObject, spawnPoint);

            Notification.PostNotification <SpawnPointTriggeredNotification>(this, n, false);
            Notification.Release(n);
        }
예제 #5
0
 public SpawnPointTriggeredNotification(ISpawnFactory factory, GameObject spawnedObject, ISpawner spawnPoint)
     : base(factory, spawnedObject, spawnPoint)
 {
 }