void LoadTextureAsyncCallback(string texName, Texture2D texture, bool success) { if (m_SpriteManager == null) { EB.Debug.LogError("Dynamic Sprite Manager is null for DynamicAtlas: {0}", gameObject.name); return; } if (success && texture != null) { DynamicSpriteData data = m_SpriteManager.GetSpriteData(texName); if (data != null) { data.AddReference(); } else { m_SpriteManager.AddDynamicSpriteData(texName, texture, DynamicSpriteData.eSpriteResTypes.Asset_Bundle); m_UVUpdateFlag = true; CurrentAsyncedTexture = texture.name; EventDelegate.Execute(onTextureAsyncSucceeded); } } else { //EB.Debug.LogWarning(string.Format("Load texture [{0}] from assetbundle failed.", texName)); CurrentAsyncedTexture = texName; EventDelegate.Execute(onTextureAsyncFailed); } }
public DynamicSpriteData TryAddSpriteReference(string spriteName) { DynamicSpriteData sprite_data = GetSpriteData(spriteName); if (sprite_data != null) { sprite_data.AddReference(); sprite_data.RuntimeFlag = true; return(sprite_data); } return(null); }
public override void AddDynamicSpriteData(string spriteName, Texture2D textureReference, DynamicSpriteData.eSpriteResTypes type, bool is_runtime = true) { //EB.Debug.LogError("AddDynamicSpriteData spriteName : {0}", spriteName); DynamicSpriteData data = GetSpriteData(spriteName); if (data != null) { EB.Debug.LogError("AddDynamicSpriteData: spriteName {0} exists", spriteName); data.AddReference(); return; } data = new DynamicSpriteData(); data.name = spriteName; data.SpriteResourceType = type; data.UsageReference = is_runtime ? 1 : 0; data.RuntimeFlag = is_runtime; data.TextureReference = textureReference; m_DynamicSpriteDatas.Add(data); if (!m_SpritePacker.PackSprites(m_DynamicSpriteDatas)) { //Debug.Log("AddDynamicSpriteData: CAN NOT pack all of the sprites in the atlas, try reuse unused node"); //failed to pack, get free space from current page. var freeData = FindFreeSpriteData(textureReference.width, textureReference.height); if (freeData == null) { //Debug.LogWarning("AddDynamicSpriteData: CAN NOT pack all of the sprites in the atlas, try remove unused node"); for (int i = m_DynamicSpriteDatas.size - 1; i >= 0; --i) { if (m_DynamicSpriteDatas[i].RuntimeFlag && m_DynamicSpriteDatas[i].UsageReference <= 0) { m_DynamicSpriteDatas[i].UnloadTexture(); m_DynamicSpriteDatas.RemoveAt(i); } } EB.Debug.LogError("================== m_DynamicSpriteDatas : {0}", m_DynamicSpriteDatas.size); } else { //Debug.LogFormat("AddDynamicSpriteData: {0} reuse node {1}", spriteName, freeData.name); m_DynamicSpriteDatas.Remove(data); if (freeData.TextureReference != textureReference) { freeData.UnloadTexture(); } freeData.name = spriteName; freeData.SpriteResourceType = type; freeData.UsageReference = is_runtime ? 1 : 0; freeData.RuntimeFlag = is_runtime; freeData.TextureReference = textureReference; } m_Packed = false; } else { m_Packed = true; } }