// safe to call on a background thread static public byte[] GetRawBytesSafe(string s) { if (PlanetUnityGameObject.IsMainThread()) { return(((TextAsset)PlanetUnityOverride.LoadResource(typeof(TextAsset), s)).bytes); } // Note: if we get here, we're being called on a background thread. As such, we need to do a little hairy stuff to make this work byte[] loadedBytes = null; AutoResetEvent autoEvent = new AutoResetEvent(false); PlanetUnityGameObject.ScheduleTask(() => { loadedBytes = ((TextAsset)PlanetUnityOverride.LoadResource(typeof(TextAsset), s)).bytes; autoEvent.Set(); }); autoEvent.WaitOne(); return(loadedBytes); }
public static void PerformTask(Action block) { if (System.Object.ReferenceEquals(currentGameObject, null)) { return; } if (PlanetUnityGameObject.IsMainThread()) { block(); return; } AutoResetEvent autoEvent = new AutoResetEvent(false); PlanetUnityGameObject.ScheduleTask(() => { block(); autoEvent.Set(); }); autoEvent.WaitOne(); }