Exemple #1
0
        private async Task <Sprite> LoadSpriteAsync(string basePath, JObject spriteNode, ResourceLoadContext context)
        {
            if (spriteNode.ContainsKey("texturePath"))
            {
                //sprite node is an importable sprite object
                var sd = SpriteData.FromJObject(spriteNode);
                if (sd.TextureIsResource)
                {
                    Debug.LogWarning("TextureIsResource will break in FacingSpriteAssetImporter, use resource:path instead");
                }
                return((Sprite)await SpriteAssetImporter.LoadSpriteAsync(basePath, context, sd));
            }
            else if (spriteNode.ContainsKey("spritePath"))
            {
                //sprite node references an asset on disk
                string path;
                if (spriteNode.ContainsKey("pathIsAbsolute") && spriteNode["pathIsAbsolute"].ToObject <bool>())
                {
                    path = spriteNode["spritePath"].ToString();
                }
                else
                {
                    path = Path.Combine(Path.GetDirectoryName(basePath), spriteNode["spritePath"].ToString());
                }

                return((Sprite)await context.ResourceLoader.LoadAsync(path, new ResourceLoadContext()
                {
                    AttemptingSyncLoad = false, ResourceLoader = context.ResourceLoader, ResourceManager = context.ResourceManager
                }));
            }
            else if (spriteNode.ContainsKey("resource"))
            {
                //sprite node references a resource
                string path;
                if (spriteNode.ContainsKey("pathIsAbsolute") && spriteNode["pathIsAbsolute"].ToObject <bool>())
                {
                    path = spriteNode["resource"].ToString();
                }
                else
                {
                    path = Path.Combine(Path.GetDirectoryName(basePath), spriteNode["resource"].ToString());
                }

                return(context.ResourceManager.GetResource <Sprite>(path, false));
            }

            throw new NotSupportedException();
        }