byte[] Pack(Transform transform) { var data = new byte[10 * 4]; var union32 = new MessageEncoder.Union32(); var pos = transform.localPosition; var scl = transform.localScale; var rot = transform.localRotation; for (var i = 0; i < 3; i++) { union32.floatdata = pos[i]; union32.Pack(data, i * 4); } for (var i = 0; i < 3; i++) { union32.floatdata = scl[i]; union32.Pack(data, 12 + i * 4); } for (var i = 0; i < 4; i++) { union32.floatdata = rot[i]; union32.Pack(data, 24 + i * 4); } return data; }
void Unpack(byte[] data, Transform outTransform) { var union32 = new MessageEncoder.Union32(); var pos = Vector3.zero; var scl = Vector3.zero; var rot = Quaternion.identity; for (var i = 0; i < 3; i++) { union32.Unpack(data, i * 4); pos[i] = union32.floatdata; } for (var i = 0; i < 3; i++) { union32.Unpack(data, 12 + i * 4); scl[i] = union32.floatdata; } for (var i = 0; i < 4; i++) { union32.Unpack(data, 24 + i * 4); rot[i] = union32.floatdata; } outTransform.localPosition = pos; outTransform.localScale = scl; outTransform.localRotation = rot; }
float ReadFloat32() { var union32 = new MessageEncoder.Union32(); union32.Unpack(readBuffer, readPoint); readPoint += 4; return union32.floatdata; }