public static Vector2di startCamera(MetaioCamera camera) { metaio.unitycommunication.StartCameraProtocol protocol = metaio.unitycommunication.StartCameraProtocol.CreateBuilder().SetCamera(camera.ToPB()).Build(); using (MemoryStream stream = new MemoryStream()) { protocol.WriteTo(stream); byte[] buf = stream.ToArray(); GCHandle arrayHandle = GCHandle.Alloc(buf, GCHandleType.Pinned); try { usingCamera = true; requestedCamera = camera.Clone(); Vector2di ret; checked { IntPtr ptr = arrayHandle.AddrOfPinnedObject(); ret = parseUInt64ToVector2diUnsigned(startCameraInternal(ptr, (uint)buf.LongLength)); } metaioCamera.updateCameraProjectionMatrix(); return(ret); } finally { arrayHandle.Free(); } } }