public void Start() { //get the gameServer/Client GameObject gameClient = GameObject.FindWithTag("GameClient"); //get the client and setup events client = gameClient.GetComponent <MultiClient>(); client.MessageReceived += MessageReceived; if (doSyncedObjectsDictSetup) { ID = client.syncedObjectsTotal; client.syncedObjects.Add(client.syncedObjectsTotal, this); //increment the total synced objects count client.syncedObjectsTotal += 1; } //if the parent is locally owned, so are we if (parent) { localOwned = localOwned | parent.GetComponent <MultiSyncedObject>().localOwned; } //start syncing the object every syncInterval seconds SyncObject(); }
private void Awake() { //get the client(if it exists) if (FindObjectOfType <MultiClient>()) { client = FindObjectOfType <MultiClient>(); } }
public async Task ShouldSendAndReceiveBinaryDataCorrectly() { var seed1 = "b71a349865ed5907821e903389e83424d037d4e1680935fd3c1f33408df2fdf5"; var seed2 = "f40bc0903ae5064ec225a82d1ca8ca6c63d4ecf2c41689b82fc6bf581ea3b67b"; var address1 = "3fc6bbdae9be658e7b7e85de65d04f3bd39ad41afc316b82314cca7c62e9fd6e"; var address2 = "fc6c231915d568f50e4dac2858e833ec7fc6c27e9cd040ced08f941e5c8a32f7"; MultiClient client1 = default; var client2 = new MultiClient(new MultiClientOptions { SeedHex = seed2 }); var expectedRequestData = new byte[] { 5, 5, 5, 5 }; var expectedResponseData = new byte[] { 1, 2, 3, 4, 5 }; client2.OnMessage(request => { Assert.Equal(address1, request.Source); Assert.Equal(expectedRequestData, request.Payload); return(Task.FromResult((object)expectedResponseData)); }); var finished = false; client2.OnConnect(request => { Task.Delay(500).GetAwaiter().GetResult(); client1 = new MultiClient(new MultiClientOptions { SeedHex = seed1 }); client1.OnConnect(request => { var response = client1.SendAsync <byte[]>(address2, expectedRequestData); Assert.NotNull(response.Result); Assert.Equal(expectedResponseData, response.Result); finished = true; }); }); while (finished == false) { await Task.Delay(100); } client1.CloseAsync(); client2.CloseAsync(); Assert.True(finished); }
// Use this for initialization void Start() { m_SendButton.onClick.AddListener(OnClickCallBack); m_InputField.onEndEdit.AddListener(OnInputEndedEdit); m_cbText = ""; m_text = ""; m_client = new MultiClient(); m_client.InitClient(GetMsg); m_client.StartClient(); }
private IEnumerator _Host() { Debug.Log("Hosting " + inputMethod.ToString() + " at " + IP); GameObject server = Instantiate(gameServerPrefab); server.GetComponent <MultiServer>().IPString = IP; server.GetComponent <MultiServer>().StartServer(); yield return(new WaitForSeconds(1)); MultiClient multiClient = _Connect(); multiClient.actions.Enqueue(() => StartCoroutine(multiClient.ChangeScene(0, forceSceneChange: true))); DontDestroyOnLoad(server); }
public async Task ShouldSendAndReceiveTextMessageCorrectly() { var seed1 = "b71a349865ed5907821e903389e83424d037d4e1680935fd3c1f33408df2fdf5"; var seed2 = "f40bc0903ae5064ec225a82d1ca8ca6c63d4ecf2c41689b82fc6bf581ea3b67b"; var address1 = "3fc6bbdae9be658e7b7e85de65d04f3bd39ad41afc316b82314cca7c62e9fd6e"; var address2 = "fc6c231915d568f50e4dac2858e833ec7fc6c27e9cd040ced08f941e5c8a32f7"; MultiClient client1 = default; var client2 = new MultiClient(new MultiClientOptions { SeedHex = seed2 }); var expectedRequestText = "Hello world!"; var expectedResponseText = "Hi there!"; client2.OnMessage(async request => { Assert.Equal(address1, request.Source); Assert.Equal(expectedRequestText, request.TextMessage); return(await Task.FromResult(expectedResponseText)); }); var finished = false; client2.OnConnect(request => { client1 = new MultiClient(new MultiClientOptions { SeedHex = seed1 }); client1.OnConnect(request => { var response = client1.SendAsync <string>(address2, expectedRequestText); Assert.NotNull(response.Result); Assert.Equal(expectedResponseText, response.Result); finished = true; }); }); client1.CloseAsync(); client2.CloseAsync(); Assert.True(finished); }
private void Start() { //find the team system and store ourselves there FindObjectOfType <TeamSystem>().playerListUI = this; //get all of the players from the client and create playerpannels for them MultiClient client = FindObjectOfType <MultiClient>(); foreach (int key in client.gamePlayers.Keys) { AddPlayerToTeamList(client.gamePlayers[key].AsPlayerData(), client.gamePlayers[key].team); } LoadLevelButton.onClick.AddListener(() => { FindObjectOfType <LevelSelectUI>().LoadSelectedScene(); }); }
private MultiClient _Connect() { Debug.Log("Connecting " + inputMethod.ToString() + " at " + IP); //make client and connect GameObject client = Instantiate(gameClientPrefab); MultiClient multiClient = client.GetComponent <MultiClient>(); multiClient.ConnectionIP = IP; multiClient.inputMethod = inputMethod; multiClient.PlayerName = playerNameInput.text; multiClient.spawnableObjects = spawnableObjects; multiClient.possibleScenes = loadableScenes; multiClient.ConnectToTcpServer(); //keep client between scenes DontDestroyOnLoad(client); return(multiClient); }
public void PlayerSetup(int _clientID, TeamSystem.Team _team, string _name) { client = FindObjectOfType <MultiClient>(); ClientID = _clientID; team = _team; PlayerName = _name; nameText.text = PlayerName; LocalOwned = ClientID == client._ClientID; TeamSystem teamSystem = FindObjectOfType <TeamSystem>(); if (teamSystem) { teamSystem.ChangeTeam(_team); } #if UNITY_EDITOR Debug.Log(String.Format("Player {0} Spawned in {1}", ClientID, UnityEngine.SceneManagement.SceneManager.GetActiveScene().name)); #endif }
/// <summary> /// 分享 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ApplicationBarIconButton_Click(object sender, EventArgs e) { UmengLink link = new UmengLink(); link.Url = @"http://www.windowsphone.com/zh-cn/search?q=MangoStudio"; link.Type = LinkType.Picture; link.Title = "丁香医生"; link.Text = linkTitle + " 快来下载《丁香医生》查看吧~"; GetPicBuffer(); link.ThumbnailImage = images;//只对微信有效 List <UmengClient> clients = new List <UmengClient>() { new SinaWeiboClient(umengKey), new RenrenClient(umengKey), new QzoneClient(umengKey), new TencentWeiboClient(umengKey), new DoubanClient(umengKey), new WeixinClient(umengKey, weixinAppID) }; UmengClient umengClient = new MultiClient(clients); var res = await umengClient.ShareLinkAsync(link); }
private void Start() { SelectUI = FindObjectOfType <LevelSelectUI>(); Client = FindObjectOfType <MultiClient>(); }
public void ShouldSendAndReceiveSessionMessagesCorrectly() { var seed1 = "d0de404077ede0fdd1dfd15ab2934018fa2f8d1ac1effb4af577dbedc897b0b8"; var seed2 = "16735a849deaa136ba6030c3695c4cbdc9b275d5d9a9f46b836841ab4a36179e"; var address1 = "a4a5d152f83fe8802ba1329ed3e31aa2f3492fc1a775ee02f41927103f0cc088"; var address2 = "7ade8659d490283303beb2f224cff1f3709364ce6765a7132d65ed1a6e10ecf9"; var data = new List <byte[]> { new byte[] { 1, 1, 1 }, new byte[] { 2, 2, 2 }, new byte[] { 3, 3, 3 }, new byte[] { 4, 4, 4 }, new byte[] { 5, 5, 5 }, }; var dataCount = data.Count; MultiClient client1 = default; var client2 = new MultiClient(new MultiClientOptions { SeedHex = seed2 }); client2.Listen(new string[] { address1 }); var finished = false; client2.OnConnect(async request => { Thread.Sleep(500); client1 = new MultiClient(new MultiClientOptions { SeedHex = seed1 }); client1.OnConnect(async request => { var session = client1.DialAsync(address2); Assert.Equal(address2, session.RemoteAddress); for (int i = 0; i < dataCount; i++) { session.WriteAsync(data[i]); } }); }); while (finished == false) { Thread.Sleep(100); } Thread.Sleep(1_000); client1.CloseAsync(); client2.CloseAsync(); Thread.Sleep(PauseBetweenTests); Assert.True(finished); }
private async void shareAppBarButton_Click(object sender, RoutedEventArgs e) { //ProgressGrid.Visibility = Visibility.Visible; App.isVisibility = true; RenderTargetBitmap mBitmap = new RenderTargetBitmap(); await mBitmap.RenderAsync(CalendarStackPanel); IBuffer buffer = await mBitmap.GetPixelsAsync(); IStorageFolder mapplicationFolder = ApplicationData.Current.TemporaryFolder; IStorageFile saveFile = await mapplicationFolder.CreateFileAsync("Share.png", CreationCollisionOption.OpenIfExists); using (var fileStream = await saveFile.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)mBitmap.PixelWidth, (uint)mBitmap.PixelHeight, DisplayInformation.GetForCurrentView().LogicalDpi, DisplayInformation.GetForCurrentView().LogicalDpi, buffer.ToArray()); await encoder.FlushAsync(); } byte[] imageData = null; using (var stream = await saveFile.OpenStreamForReadAsync()) { imageData = new byte[stream.Length]; await stream.ReadAsync(imageData, 0, imageData.Length); } UmengLink link = new UmengLink(); //显示平台列表,由用户选择平台进行分享 List<UmengClient> clients = new List<UmengClient>() { new SinaWeiboClient(Umeng_App_Key), new RenrenClient(Umeng_App_Key), //new QzoneClient(Umeng_App_Key), new TencentWeiboClient(Umeng_App_Key), new DoubanClient(Umeng_App_Key), }; UmengClient umengClient = new MultiClient(clients); var res = await umengClient.SharePictureAsync(new UmengPicture(imageData, "快来运动吧") { Title = "图片分享" }); Debug.WriteLine(res.Status.ToString()); if (res.Status.ToString() == "Success") { XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); XmlNodeList elements = toastXml.GetElementsByTagName("text"); elements[0].AppendChild(toastXml.CreateTextNode("分享成功")); ToastNotification toast = new ToastNotification(toastXml); ToastNotificationManager.CreateToastNotifier().Show(toast); //从通知中心删除 await Task.Delay(1000); ToastNotificationManager.History.Clear(); } else { XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); XmlNodeList elements = toastXml.GetElementsByTagName("text"); elements[0].AppendChild(toastXml.CreateTextNode("分享失败")); ToastNotification toast = new ToastNotification(toastXml); ToastNotificationManager.CreateToastNotifier().Show(toast); //从通知中心删除 await Task.Delay(1000); ToastNotificationManager.History.Clear(); } }
public async Task ShouldSendAndReceiveSessionMessagesCorrectly() { var seed1 = "d0de404077ede0fdd1dfd15ab2934018fa2f8d1ac1effb4af577dbedc897b0b8"; var seed2 = "16735a849deaa136ba6030c3695c4cbdc9b275d5d9a9f46b836841ab4a36179e"; var address1 = "a4a5d152f83fe8802ba1329ed3e31aa2f3492fc1a775ee02f41927103f0cc088"; var address2 = "7ade8659d490283303beb2f224cff1f3709364ce6765a7132d65ed1a6e10ecf9"; var data = new List <byte[]> { new byte[] { 1, 1, 1 }, new byte[] { 2, 2, 2 }, new byte[] { 3, 3, 3 }, new byte[] { 4, 4, 4 }, new byte[] { 5, 5, 5 }, }; var dataCount = data.Count; MultiClient client1 = default; var client2 = new MultiClient(new MultiClientOptions { SeedHex = seed2 }); client2.Listen(new string[] { address1 }); var finished = false; client2.OnSession(session => { Task.Delay(500).GetAwaiter().GetResult(); Assert.Equal(address1, session.RemoteAddress); var dataSize = data.Select(x => x.Length).FirstOrDefault(); for (int i = 0; i < dataCount; i++) { var received = session.ReadAsync(dataSize).GetAwaiter().GetResult(); Assert.Equal(data[i], received); } finished = true; return(Task.FromResult((object)true)); }); client2.OnConnect(async request => { await Task.Delay(500); client1 = new MultiClient(new MultiClientOptions { SeedHex = seed1 }); client1.OnConnect(async request => { var session = await client1.DialAsync(address2); Assert.Equal(address2, session.RemoteAddress); for (int i = 0; i < dataCount; i++) { await session.WriteAsync(data[i]); } }); await Task.Yield(); }); while (finished == false) { await Task.Delay(100); } await Task.Delay(1_000); var closeTasks = new List <Task> { client1.CloseAsync(), client2.CloseAsync() }; await Task.WhenAll(closeTasks); await Task.Delay(PauseBetweenTests); Assert.True(finished); }