Beispiel #1
0
        private SpriteLoadingStatus GetSpriteInfo(uint spriteId, out string filename, out Rect spriteRect, out Vector2 realSpriteSize, out Texture2D tex2D)
        {
            SpriteTypeImpl match = _spriteSheet.Find(m => spriteId >= m.FirstSpriteId && spriteId <= m.LastSpriteId);

            SpriteLoadingStatus loadingStatus = SpriteLoadingStatus.Failed;

            if (match != null)
            {
                loadingStatus = GetOrLoadTexture(match.File, out tex2D);
            }
            else
            {
                tex2D = null;
            }

            if (tex2D == null)
            {
                filename       = null;
                spriteRect     = Rect.zero;
                realSpriteSize = Vector2.zero;
                return(loadingStatus);
            }

            filename       = match.File;
            realSpriteSize = SpriteTypeSizeRefs[match.SpriteType - 1] * Constants.FieldSize;
            uint realId    = spriteId - match.FirstSpriteId;
            int  texPerRow = (int)(tex2D.width / realSpriteSize.x);

            float x = (realId % texPerRow) * realSpriteSize.x;
            float y = tex2D.width - (realId / texPerRow * realSpriteSize.y) - realSpriteSize.y;

            spriteRect = new Rect(x / tex2D.width, y / tex2D.height, realSpriteSize.x / tex2D.width, realSpriteSize.y / tex2D.height);
            return(loadingStatus);
        }
 public CachedSpriteRequest(SpriteLoadingStatus status, CachedSprite cachedSprite)
 {
     Status       = status;
     CachedSprite = cachedSprite;
 }