107 lines
3.0 KiB
Plaintext
107 lines
3.0 KiB
Plaintext
#import "Foundation/Foundation.h"
|
|
#if ENABLE_IOS_ON_DEMAND_RESOURCES
|
|
#import "Foundation/NSBundle.h"
|
|
#endif
|
|
|
|
|
|
typedef void (*OnDemandResourcesRequestCompleteHandler)(void* handlerData, const char* error);
|
|
|
|
|
|
#if ENABLE_IOS_ON_DEMAND_RESOURCES
|
|
|
|
|
|
struct OnDemandResourcesRequestData
|
|
{
|
|
NSBundleResourceRequest* request;
|
|
};
|
|
|
|
|
|
extern "C" OnDemandResourcesRequestData* UnityOnDemandResourcesCreateRequest(NSSet * tags, OnDemandResourcesRequestCompleteHandler handler, void* handlerData)
|
|
{
|
|
OnDemandResourcesRequestData* data = new OnDemandResourcesRequestData();
|
|
data->request = [[NSBundleResourceRequest alloc] initWithTags: tags];
|
|
[data->request beginAccessingResourcesWithCompletionHandler:^(NSError* error) {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
const char* errorMessage = error ? [[error localizedDescription] UTF8String] : NULL;
|
|
handler(handlerData, errorMessage);
|
|
});
|
|
}];
|
|
return data;
|
|
}
|
|
|
|
extern "C" void UnityOnDemandResourcesRelease(OnDemandResourcesRequestData* data)
|
|
{
|
|
[data->request endAccessingResources];
|
|
delete data;
|
|
}
|
|
|
|
extern "C" float UnityOnDemandResourcesGetProgress(OnDemandResourcesRequestData* data)
|
|
{
|
|
return data->request.progress.fractionCompleted;
|
|
}
|
|
|
|
extern "C" float UnityOnDemandResourcesGetLoadingPriority(OnDemandResourcesRequestData* data)
|
|
{
|
|
float priority = (float)data->request.loadingPriority;
|
|
return priority;
|
|
}
|
|
|
|
extern "C" void UnityOnDemandResourcesSetLoadingPriority(OnDemandResourcesRequestData* data, float priority)
|
|
{
|
|
if (priority < 0.0f)
|
|
priority = 0.0f;
|
|
|
|
if (priority > 1.0f)
|
|
data->request.loadingPriority = NSBundleResourceRequestLoadingPriorityUrgent;
|
|
else
|
|
data->request.loadingPriority = (double)priority;
|
|
}
|
|
|
|
extern "C" NSString* UnityOnDemandResourcesGetResourcePath(OnDemandResourcesRequestData * data, const char* resource)
|
|
{
|
|
NSString* path = [[data->request bundle] pathForResource: [NSString stringWithUTF8String: resource] ofType: nil];
|
|
return path;
|
|
}
|
|
|
|
#else // ENABLE_IOS_ON_DEMAND_RESOURCES
|
|
|
|
|
|
struct OnDemandResourcesRequestData
|
|
{
|
|
};
|
|
|
|
|
|
extern "C" OnDemandResourcesRequestData* UnityOnDemandResourcesCreateRequest(NSSet * tags, OnDemandResourcesRequestCompleteHandler handler, void* handlerData)
|
|
{
|
|
OnDemandResourcesRequestData* data = new OnDemandResourcesRequestData();
|
|
if (handler)
|
|
handler(handlerData, NULL);
|
|
return data;
|
|
}
|
|
|
|
extern "C" void UnityOnDemandResourcesRelease(OnDemandResourcesRequestData* data)
|
|
{
|
|
delete data;
|
|
}
|
|
|
|
extern "C" float UnityOnDemandResourcesGetProgress(OnDemandResourcesRequestData* data)
|
|
{
|
|
return 1.0f;
|
|
}
|
|
|
|
extern "C" float UnityOnDemandResourcesGetLoadingPriority(OnDemandResourcesRequestData* data)
|
|
{
|
|
return 0.5;
|
|
}
|
|
|
|
extern "C" void UnityOnDemandResourcesSetLoadingPriority(OnDemandResourcesRequestData* data, float priority)
|
|
{
|
|
}
|
|
|
|
extern "C" NSString* UnityOnDemandResourcesGetResourcePath(OnDemandResourcesRequestData * data, const char* resource)
|
|
{
|
|
return [NSString stringWithUTF8String: resource];
|
|
}
|
|
|
|
#endif // ENABLE_IOS_ON_DEMAND_RESOURCES
|