public void HandleData(byte[] data) { string datastr = System.Text.Encoding.ASCII.GetString(data).Trim('\0'); currentBuffer += datastr; char[] sep = { MultiplayerDataSettings.endChar }; //If current buffer has no ending char, don't invoke incomplete commands. if (!currentBuffer.Contains(MultiplayerDataSettings.endChar.ToString())) { return; } string[] commands = currentBuffer.Split(sep, System.StringSplitOptions.RemoveEmptyEntries); foreach (string s in commands) { ThreadManager.ExecuteOnMainThread(() => { onGameData.Invoke(GameCommandTranslator.StringToCommand(s)); }); } currentBuffer = ""; }