public override void Spawn() { // check if spawning event already triggered if (_fsm.ActiveStateName.Equals("Spawning Ship")) { return; } // 1) block spawnings until network event did actually spawn the ship _fsm.SendEvent("Spawn"); // 2) broadcast spawn event var json = PackageFactory.CreateSpawnMessage( new[] { new JObject { { "island_uid", Island.Uid }, { "uid", UidGenerator.GetNewUid() } } }); SocketHandler.EmitNow("spawn-unit", json); // 3 schedule event Spawn(json); }