123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #if UNITY_EDITOR || UNITY_IOS
- using UnityEngine;
-
- namespace NativeCameraNamespace
- {
- public class NCCameraCallbackiOS : MonoBehaviour
- {
- private static NCCameraCallbackiOS instance;
- private NativeCamera.CameraCallback callback;
-
- private float nextBusyCheckTime;
-
- public static bool IsBusy { get; private set; }
-
- [System.Runtime.InteropServices.DllImport( "__Internal" )]
- private static extern int _NativeCamera_IsCameraBusy();
-
- public static void Initialize( NativeCamera.CameraCallback callback )
- {
- if( IsBusy )
- return;
-
- if( instance == null )
- {
- instance = new GameObject( "NCCameraCallbackiOS" ).AddComponent<NCCameraCallbackiOS>();
- DontDestroyOnLoad( instance.gameObject );
- }
-
- instance.callback = callback;
-
- instance.nextBusyCheckTime = Time.realtimeSinceStartup + 1f;
- IsBusy = true;
- }
-
- private void Update()
- {
- if( IsBusy )
- {
- if( Time.realtimeSinceStartup >= nextBusyCheckTime )
- {
- nextBusyCheckTime = Time.realtimeSinceStartup + 1f;
-
- if( _NativeCamera_IsCameraBusy() == 0 )
- {
- IsBusy = false;
-
- NativeCamera.CameraCallback _callback = callback;
- callback = null;
-
- if( _callback != null )
- _callback( null );
- }
- }
- }
- }
-
- public void OnMediaReceived( string path )
- {
- IsBusy = false;
-
- if( string.IsNullOrEmpty( path ) )
- path = null;
-
- NativeCamera.CameraCallback _callback = callback;
- callback = null;
-
- if( _callback != null )
- _callback( path );
- }
- }
- }
- #endif
|