public zOSCMessage(byte[] sourceBuff, int startindex = 0) { UnityEngine.Debug.Log("Datratlen " + sourceBuff.Length); data = sourceBuff; timeStamp = DateTime.UtcNow.Ticks; objects = null; parseStatus = ParseStatus.raw; payloadOffsets = null; typetagOffset = 0; payloadOffset = 0; _addressSegments = null; // new List<string>(); UnityEngine.Debug.Log("soruce " + data.ByteArrayToStringAsHex()); OSCWordReader reader = new OSCWordReader(); _address = data.UnpackString(reader); types = null; // UnityEngine.Debug.Log("found address " + _address + " pos is now " + reader.readIndex); UnityEngine.Debug.Log("after alignment " + reader.readIndex); typetagOffset = reader.readIndex; // types = this.UnpackTypeTag(reader); // reader.Align(data); // payloadOffset = reader.readIndex; UnityEngine.Debug.Log("found type count = " + typetagOffset + " payloadOffset= " + payloadOffset + " types.count=" + types.Count); // // // //FindAddressesAndTypeTagIndex(); }
// public static string UnpackString(this byte[] data, ref int startOscSubFrame) // { // int mult4 = startOscSubFrame * 4; // var s = Encoding.ASCII.GetString(data, mult4, data.CountNonZeos(mult4)); // startOscSubFrame += (s.Length / 4 + 1); // return s; // } public static string UnpackString(this byte[] data, OSCWordReader reader) { // int mult4 = startOscSubFrame * 4; Debug.Log("counting zeroes from " + reader.readIndex + " = " + data.CountNonZeos(reader.readIndex)); var s = Encoding.ASCII.GetString(data, reader.readIndex, data.CountNonZeos(reader.readIndex)); Debug.Log(" unpacked string " + s.Length + " " + s); reader.Advance(s.Length, data); reader.Align(data); return(s); }
public static List <System.Type> UnpackTypeTag(this zOSCMessage message, OSCWordReader reader) { UnityEngine.Debug.Log("Starting ubpack of typetags"); byte[] data = message.data; string typetagstring = data.UnpackString(reader); var list = new List <System.Type>(); while (data[reader.readIndex] != 0) { list.AddTypeFromChar((char)data[reader.readIndex]); reader.Advance(data); } return(list); }