private void InsertCachedSprite(CachedSprite cachedSprite) { int index = 0; int lastIndex = _cachedSprites.Count - 1; while (index <= lastIndex) { int tmpIndex = index + lastIndex >> 1; var foundCache = _cachedSprites[tmpIndex]; if (foundCache.id < cachedSprite.id) { index = tmpIndex + 1; } else if (foundCache.id > cachedSprite.id) { lastIndex = tmpIndex - 1; } else { return; } } _cachedSprites.Insert(index, cachedSprite); }
public SpriteLoadingStatus GetSprite(uint spriteId, out CachedSprite cachedSprite) { cachedSprite = FindCachedSprite(spriteId); if (cachedSprite != null) { return(SpriteLoadingStatus.Completed); } var loadingStatus = GetSpriteInfo(spriteId, out Vector4 uv, out Vector2 size, out Texture2D texture); if (loadingStatus != SpriteLoadingStatus.Completed) { return(loadingStatus); } cachedSprite = new CachedSprite { id = spriteId, uv = uv, size = size, texture = texture, materialProperyBlock = new MaterialPropertyBlock(), }; cachedSprite.GenerateMaterialProps(cachedSprite.materialProperyBlock); InsertCachedSprite(cachedSprite); return(SpriteLoadingStatus.Completed); }
public SpriteLoadingStatus GetSprite(uint spriteId, out CachedSprite cachedSprite) { cachedSprite = FindCachedSprite(spriteId); if (cachedSprite != null) { return(SpriteLoadingStatus.Completed); } string filename; Rect spriteRect; Vector2 realSize; Texture2D tex2D; var loadingStatus = GetSpriteInfo(spriteId, out filename, out spriteRect, out realSize, out tex2D); if (loadingStatus != SpriteLoadingStatus.Completed) { return(loadingStatus); } cachedSprite = new CachedSprite(); cachedSprite.id = spriteId; cachedSprite.rect = spriteRect; cachedSprite.spriteSize = realSize; cachedSprite.texture = tex2D; BinaryInsert(cachedSprite); return(SpriteLoadingStatus.Completed); }
private void InsertCachedSprite(CachedSprite sprite) { int l = 0, r = _cachedSprites.Count - 1; while (l <= r) { int i = l + (r - l) / 2; var other = _cachedSprites[i]; if (other.id < sprite.id) { l = i + 1; } else if (other.id > sprite.id) { r = i - 1; } else { return; } } _cachedSprites.Insert(l, sprite); }