12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #if UNITY_EDITOR || UNITY_ANDROID
- using System;
- using UnityEngine;
-
- namespace NativeGalleryNamespace
- {
- public class NGCallbackHelper : MonoBehaviour
- {
- private bool autoDestroyWithCallback;
- private Action mainThreadAction = null;
-
- public static NGCallbackHelper Create( bool autoDestroyWithCallback )
- {
- NGCallbackHelper result = new GameObject( "NGCallbackHelper" ).AddComponent<NGCallbackHelper>();
- result.autoDestroyWithCallback = autoDestroyWithCallback;
- DontDestroyOnLoad( result.gameObject );
- return result;
- }
-
- public void CallOnMainThread( Action function )
- {
- lock( this )
- {
- mainThreadAction += function;
- }
- }
-
- private void Update()
- {
- if( mainThreadAction != null )
- {
- try
- {
- Action temp;
- lock( this )
- {
- temp = mainThreadAction;
- mainThreadAction = null;
- }
-
- temp();
- }
- finally
- {
- if( autoDestroyWithCallback )
- Destroy( gameObject );
- }
- }
- }
- }
- }
- #endif
|