5 using System.Collections.Generic;
7 #if UNITY_EDITOR || UNITY_STANDALONE_WIN 22 [Tooltip(
"The IPv4 Address of the machine running the Unity editor.")]
25 [Tooltip(
"The connection port on the machine to use.")]
26 public int ConnectionPort = 11000;
28 #if UNITY_EDITOR || UNITY_STANDALONE_WIN 29 private TcpListener networkListener;
37 private TcpClient networkClient;
42 private bool clientConnected;
48 IPAddress localAddr = IPAddress.Parse(ServerIP.Trim());
49 networkListener =
new TcpListener(localAddr, ConnectionPort);
50 networkListener.Start();
53 AsyncCallback callback = OnClientConnect;
54 networkListener.BeginAcceptTcpClient(callback,
this);
64 NetworkStream stream = networkClient.GetStream();
67 if (stream.DataAvailable)
70 int datasize = ReadInt(stream);
73 byte[] dataBuffer =
new byte[datasize];
79 while (readsize != datasize)
81 readsize += stream.Read(dataBuffer, readsize, datasize - readsize);
84 if (readsize != datasize)
86 Debug.Log(
"reading mesh failed: " + readsize +
" != " + datasize);
99 for (
int index = 0; index < meshes.Count; index++)
101 int meshID = SurfaceObjects.Count;
105 objectName:
"Beamed-" + meshID,
106 parentObject: transform,
112 AddSurfaceObject(surface);
116 clientConnected =
false;
117 networkClient.Close();
120 AsyncCallback callback = OnClientConnect;
121 networkListener.BeginAcceptTcpClient(callback,
this);
131 private int ReadInt(Stream stream)
134 byte[] bytes =
new byte[4];
135 stream.Read(bytes, 0, 4);
145 return BitConverter.ToInt32(bytes, 0);
152 private void OnClientConnect(IAsyncResult result)
154 if (result.IsCompleted)
156 networkClient = networkListener.EndAcceptTcpClient(result);
157 if (networkClient != null)
159 Debug.Log(
"Connected");
160 clientConnected =
true;