// 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);
    }
示例#2
0
    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();
    }