public virtual RegisteredSpawner CreateSpawner(IPeer peer, SpawnerOptions options) { var spawner = new RegisteredSpawner(GenerateSpawnerId(), peer, options); Dictionary <int, RegisteredSpawner> peerSpawners = peer.GetProperty((int)MstPeerPropertyCodes.RegisteredSpawners) as Dictionary <int, RegisteredSpawner>; // If this is the first time registering a spawners if (peerSpawners == null) { // Save the dictionary peerSpawners = new Dictionary <int, RegisteredSpawner>(); peer.SetProperty((int)MstPeerPropertyCodes.RegisteredSpawners, peerSpawners); peer.OnPeerDisconnectedEvent += OnRegisteredPeerDisconnect; } // Add a new spawner peerSpawners[spawner.SpawnerId] = spawner; // Add the spawner to a list of all spawners spawnersList[spawner.SpawnerId] = spawner; // Invoke the event if (OnSpawnerRegisteredEvent != null) { OnSpawnerRegisteredEvent.Invoke(spawner); } return(spawner); }
public SpawnTask(int spawnTaskId, RegisteredSpawner spawner, MstProperties options, MstProperties customOptions) { Id = spawnTaskId; Spawner = spawner; Options = options; CustomOptions = customOptions; UniqueCode = Mst.Helper.CreateRandomAlphanumericString(6); whenDoneCallbacks = new List <Action <SpawnTask> >(); }
public void DestroySpawner(RegisteredSpawner spawner) { var peer = spawner.Peer; if (peer != null) { var peerRooms = peer.GetProperty((int)MstPeerPropertyCodes.RegisteredSpawners) as Dictionary <int, RegisteredSpawner>; // Remove the spawner from peer if (peerRooms != null) { peerRooms.Remove(spawner.SpawnerId); } } // Remove the spawner from all spawners spawnersList.Remove(spawner.SpawnerId); // Invoke the event if (OnSpawnerDestroyedEvent != null) { OnSpawnerDestroyedEvent.Invoke(spawner); } }
/// <summary> /// Destroys spawner /// </summary> /// <param name="spawner"></param> public void DestroySpawner(RegisteredSpawner spawner) { // Get spawner owner peer var peer = spawner.Peer; // If peer exists if (peer != null) { // Get spawners from peer property var peerSpawners = peer.GetProperty((int)MstPeerPropertyCodes.RegisteredSpawners) as Dictionary <int, RegisteredSpawner>; // Remove the spawner from peer if (peerSpawners != null) { peerSpawners.Remove(spawner.SpawnerId); } } // Remove the spawner from all spawners spawnersList.Remove(spawner.SpawnerId); // Invoke the event OnSpawnerDestroyedEvent?.Invoke(spawner); }
/// <summary> /// Start process on spawner side with given spawn <paramref name="options"/>, <paramref name="customOptions"/> and <paramref name="spawner"/> /// </summary> /// <param name="options"></param> /// <param name="customOptions"></param> /// <param name="spawner"></param> /// <returns></returns> public virtual SpawnTask Spawn(MstProperties options, MstProperties customOptions, RegisteredSpawner spawner) { // Create new spawn task var task = new SpawnTask(GenerateSpawnTaskId(), spawner, options, customOptions); // List this task spawnTasksList[task.Id] = task; // Add this task to queue spawner.AddTaskToQueue(task); logger.Debug("Spawner was found, and spawn task created: " + task); return(task); }