Пример #1
0
        bool INatShare.SaveToCameraRoll(byte[] pngData)
        {
            var handle = GCHandle.Alloc(pngData, GCHandleType.Pinned);
            var result = NatShareBridge.SaveToCameraRoll(handle.AddrOfPinnedObject(), pngData.Length);

            handle.Free();
            return(result);
        }
Пример #2
0
        void INatShare.GetThumbnail(string videoPath, Action <Texture2D> callback, float time)
        {
            IntPtr[] thumbnailData = new IntPtr[3]; int unused = 0;
            var      thumbnailHandle = GCHandle.Alloc(thumbnailData, GCHandleType.Pinned);

            NatShareBridge.GetThumbnail(videoPath, time, ref thumbnailData[0], ref unused, ref unused);
            var callbackObject = new GameObject("NatShareWebGL Delegate").AddComponent <ThumbnailDelegate>();

            callbackObject.StartCoroutine(GetThumbnail(thumbnailHandle, callback, callbackObject));
        }
Пример #3
0
        private IEnumerator GetThumbnail(GCHandle thumbnailHandle, Action <Texture2D> callback, ThumbnailDelegate callbackObject)
        {
            yield return(new WaitUntil(() => Marshal.ReadIntPtr(thumbnailHandle.AddrOfPinnedObject()) != IntPtr.Zero));

            MonoBehaviour.Destroy(callbackObject); // We don't need this anymore
            var pixelBuffer = Marshal.ReadIntPtr(thumbnailHandle.AddrOfPinnedObject());
            var width       = Marshal.ReadInt32(new IntPtr(thumbnailHandle.AddrOfPinnedObject().ToInt32() + sizeof(int)));
            var height      = Marshal.ReadInt32(new IntPtr(thumbnailHandle.AddrOfPinnedObject().ToInt32() + 2 * sizeof(int)));
            var thumbnail   = new Texture2D(width, height, TextureFormat.RGBA32, false);

            thumbnail.LoadRawTextureData(pixelBuffer, width * height * 4);
            thumbnail.Apply();
            NatShareBridge.FreeThumbnail(thumbnailHandle.AddrOfPinnedObject());
            thumbnailHandle.Free();
            callback(thumbnail);
        }
Пример #4
0
        void INatShare.GetThumbnail(string videoPath, Action <Texture2D> callback, float time)
        {
            IntPtr pixelBuffer = IntPtr.Zero; int width = 0, height = 0;

            if (!NatShareBridge.GetThumbnail(videoPath, time, ref pixelBuffer, ref width, ref height))
            {
                Debug.LogError("NatShare Error: Failed to get thumbnail for video at path: " + videoPath);
                callback(null);
            }
            var thumbnail = new Texture2D(width, height, TextureFormat.BGRA32, false);

            thumbnail.LoadRawTextureData(pixelBuffer, width * height * 4);
            thumbnail.Apply();
            NatShareBridge.FreeThumbnail(pixelBuffer);
            callback(thumbnail);
        }
Пример #5
0
 bool INatShare.SaveToCameraRoll(string videoPath)
 {
     return(NatShareBridge.SaveToCameraRoll(videoPath));
 }
Пример #6
0
 bool INatShare.Share(string path)
 {
     return(NatShareBridge.Share(path));
 }