void CompleteLoad()
            {
                var location  = Context as IResourceLocation;
                var assetPath = location == null ? string.Empty : location.InternalId;
                var t         = typeof(TObject);

                if (t.IsArray)
                {
                    SetResult(ResourceManagerConfig.CreateArrayResult <TObject>(AssetDatabase.LoadAllAssetRepresentationsAtPath(assetPath)));
                }
                else if (t.IsGenericType && typeof(IList <>) == t.GetGenericTypeDefinition())
                {
                    SetResult(ResourceManagerConfig.CreateListResult <TObject>(AssetDatabase.LoadAllAssetRepresentationsAtPath(assetPath)));
                }
                else
                {
                    SetResult(AssetDatabase.LoadAssetAtPath(assetPath, typeof(TObject)) as TObject);
                }
                OnComplete();
            }
 /// <inheritdoc/>
 public override bool CanProvide <TObject>(IResourceLocation location)
 {
     return(base.CanProvide <TObject>(location) && ResourceManagerConfig.IsInstance <TObject, Texture2D>());
 }
예제 #3
0
 /// <inheritdoc/>
 public bool CanProvideInstance <TObject>(IResourceProvider loadProvider, IResourceLocation location) where TObject : Object
 {
     return(loadProvider != null && loadProvider.CanProvide <TObject>(location) && ResourceManagerConfig.IsInstance <TObject, GameObject>());
 }
예제 #4
0
        /// <inheritdoc/>
        public override IAsyncOperation <TObject> Provide <TObject>(IResourceLocation location, IAsyncOperation <IList <object> > loadDependencyOperation)
        {
            if (location == null)
            {
                throw new ArgumentNullException("location");
            }

            var t = typeof(TObject);

            if (t.IsArray)
            {
                return(new CompletedOperation <TObject>().Start(location, location.InternalId, ResourceManagerConfig.CreateArrayResult <TObject>(Resources.LoadAll(location.InternalId, t.GetElementType()))));
            }
            if (t.IsGenericType && typeof(IList <>) == t.GetGenericTypeDefinition())
            {
                return(new CompletedOperation <TObject>().Start(location, location.InternalId, ResourceManagerConfig.CreateListResult <TObject>(Resources.LoadAll(location.InternalId, t.GetGenericArguments()[0]))));
            }
            return(AsyncOperationCache.Instance.Acquire <InternalOp <TObject> >().StartOp(location));
        }