コード例 #1
0
        private static IEnumerable <SdnFileEntry> LoadAssets(Spriter spriter, string rootFolder)
        {
            for (int i = 0; i < spriter.Folders.Length; ++i)
            {
                SpriterFolder folder = spriter.Folders[i];

                for (int j = 0; j < folder.Files.Length; ++j)
                {
                    SpriterFile file = folder.Files[j];
                    string      path = rootFolder;
                    path += "/";
                    path += file.Name;

                    SdnFileEntry entry = new SdnFileEntry
                    {
                        FolderId = folder.Id,
                        FileId   = file.Id
                    };

                    if (file.Type == SpriterFileType.Sound)
                    {
                        entry.Sound = ContentLoader.Load <AudioClip>(path);
                    }
                    else
                    {
                        entry.Sprite = ContentLoader.Load <Sprite>(path);
                    }

                    yield return(entry);
                }
            }
        }
コード例 #2
0
        private static IEnumerable <SdnFileEntry> LoadAssets(Spriter spriter, string rootFolder, SpriterDotNetBehaviour spriterDotNetBehaviour, bool andAssignAudioClips)
        {
            for (int i = 0; i < spriter.Folders.Length; ++i)
            {
                SpriterFolder folder = spriter.Folders[i];

                for (int j = 0; j < folder.Files.Length; ++j)
                {
                    SpriterFile file = folder.Files[j];
                    string      path = rootFolder;
                    path += "/";
                    path += file.Name;

                    SdnFileEntry entry = new SdnFileEntry
                    {
                        FolderId = folder.Id,
                        FileId   = file.Id
                    };

                    if (file.Type == SpriterFileType.Sound)
                    {
                        spriterDotNetBehaviour.StartCoroutine(GetAudioClip(entry, path, spriterDotNetBehaviour, andAssignAudioClips));
                    }
                    else
                    {
                        entry.Sprite = LoadNewSprite(path);
                    }

                    yield return(entry);
                }
            }
        }
コード例 #3
0
        private string FormatPath(SpriterFolder folder, SpriterFile file, string spriterName)
        {
            string fileName = Path.GetFileNameWithoutExtension(file.Name);

            if (String.IsNullOrEmpty(folder.Name))
            {
                return(String.Format("{0}/{1}", spriterName, fileName));
            }
            return(String.Format("{0}/{1}/{2}", spriterName, folder.Name, fileName));
        }
コード例 #4
0
        private void AddAtlasFolder(SpriterFolder folder, DefaultProviderFactory <ISprite, SoundEffect> factory)
        {
            int id = folder.AtlasId;
            TexturePackerSheet             atlas      = atlases[id];
            Texture2D                      texture    = LoadContent <Texture2D>(FormatPath(atlas.Meta.Image));
            Dictionary <string, ImageInfo> imageInfos = infos[atlas];

            foreach (SpriterFile file in folder.Files)
            {
                ImageInfo info = imageInfos[file.Name];

                // "x", "y" = location in spritesheet, "w", "h" = trimmed unrotated image size
                Size frame = info.Frame;

                // "w", "h" = original image size
                Size source = info.SourceSize;

                // "x", "y" = trimmed offset - pixels trimmed from the top and left
                Size spriteSource = info.SpriteSourceSize;

                Rectangle sourceRectangle;
                bool      rotated = false;

                if (info.Rotated)
                {
                    sourceRectangle = new Rectangle(frame.X, frame.Y, frame.H, frame.W);
                    rotated         = true;
                }
                else
                {
                    sourceRectangle = new Rectangle(frame.X, frame.Y, frame.W, frame.H);
                }

                float trimLeft   = spriteSource.X;
                float trimRight  = source.W - frame.W - spriteSource.X;
                float trimTop    = spriteSource.Y;
                float trimBottom = source.H - frame.H - spriteSource.Y;

                int width  = source.W;
                int height = source.H;

                TexturePackerSprite sprite = new TexturePackerSprite(texture, sourceRectangle, width, height, rotated, trimLeft, trimRight, trimTop, trimBottom);

                factory.SetSprite(Spriter, folder, file, sprite);
            }
        }
コード例 #5
0
        private void AddAtlasFolder(SpriterFolder folder, DefaultProviderFactory <Sprite, SoundEffect> factory)
        {
            SpriterAtlas atlas   = atlases[folder.AtlasId];
            Texture2D    texture = content.Load <Texture2D>(FormatPath(atlas.Meta.Image));
            Dictionary <string, ImageInfo> imageInfos = infos[atlas];

            foreach (SpriterFile file in folder.Files)
            {
                ImageInfo info = imageInfos[file.Name];

                // "x", "y" = location in spritesheet, "w", "h" = trimmed unrotated image size
                Size frame = info.Frame;

                // "w", "h" = original image size
                Size source = info.SourceSize;

                // "x", "y" = trimmed offset - pixels trimmed from the top and left
                Size spriteSource = info.SpriteSourceSize;

                Sprite sprite = new Sprite
                {
                    Texture = texture,
                    Width   = source.W,
                    Height  = source.H
                };

                sprite.TrimLeft   = spriteSource.X;
                sprite.TrimRight  = source.W - frame.W - spriteSource.X;
                sprite.TrimTop    = spriteSource.Y;
                sprite.TrimBottom = source.H - frame.H - spriteSource.Y;

                if (info.Rotated)
                {
                    sprite.SourceRectangle = new Rectangle(frame.X, frame.Y, frame.H, frame.W);
                    sprite.Rotated         = true;
                }
                else
                {
                    sprite.SourceRectangle = new Rectangle(frame.X, frame.Y, frame.W, frame.H);
                }

                factory.SetSprite(Spriter, folder, file, sprite);
            }
        }
コード例 #6
0
        private void AddRegularFolder(SpriterFolder folder, DefaultProviderFactory <ISprite, SoundEffect> factory)
        {
            foreach (SpriterFile file in folder.Files)
            {
                string path = FormatPath(file.Name);

                if (file.Type == SpriterFileType.Sound)
                {
                    SoundEffect sound = LoadContent <SoundEffect>(path);
                    factory.SetSound(Spriter, folder, file, sound);
                }
                else
                {
                    Texture2D     texture = LoadContent <Texture2D>(path);
                    TextureSprite sprite  = new TextureSprite(texture);
                    factory.SetSprite(Spriter, folder, file, sprite);
                }
            }
        }
コード例 #7
0
 private string FormatPath(SpriterFolder folder, SpriterFile file, string spriterName)
 {
     string fileName = Path.GetFileNameWithoutExtension(file.Name);
     if (String.IsNullOrEmpty(folder.Name)) return String.Format("{0}/{1}", spriterName, fileName);
     return String.Format("{0}/{1}/{2}", spriterName, folder.Name, fileName);
 }
コード例 #8
0
        public virtual void SetSound(Spriter spriter, SpriterFolder folder, SpriterFile file, TSound sound)
        {
            IAssetProvider <TSound> provider = SoundProviders.GetOrCreate(spriter);

            provider.Set(folder.Id, file.Id, sound);
        }
コード例 #9
0
        public virtual void SetSprite(Spriter spriter, SpriterFolder folder, SpriterFile file, TSprite sprite)
        {
            IAssetProvider <TSprite> provider = SpriteProviders.GetOrCreate(spriter);

            provider.Set(folder.Id, file.Id, sprite);
        }