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; }