Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[unity] Implemented first experimental preview package version of del…
…ayed on-demand loading of Atlas assets. See #1890.
- Loading branch information
1 parent
ec0ff67
commit 76e8538
Showing
40 changed files
with
1,471 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 90 additions & 0 deletions
90
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/OnDemandTextureLoader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
/****************************************************************************** | ||
* Spine Runtimes License Agreement | ||
* Last updated July 28, 2023. Replaces all prior versions. | ||
* | ||
* Copyright (c) 2013-2023, Esoteric Software LLC | ||
* | ||
* Integration of the Spine Runtimes into software or otherwise creating | ||
* derivative works of the Spine Runtimes is permitted under the terms and | ||
* conditions of Section 2 of the Spine Editor License Agreement: | ||
* http://esotericsoftware.com/spine-editor-license | ||
* | ||
* Otherwise, it is permitted to integrate the Spine Runtimes into software or | ||
* otherwise create derivative works of the Spine Runtimes (collectively, | ||
* "Products"), provided that each user of the Products must obtain their own | ||
* Spine Editor license and redistribution of the Products in any form must | ||
* include this license and copyright notice. | ||
* | ||
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY | ||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, | ||
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE | ||
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*****************************************************************************/ | ||
|
||
#define SPINE_OPTIONAL_ON_DEMAND_LOADING | ||
|
||
using System.Collections.Generic; | ||
using UnityEngine; | ||
|
||
#if SPINE_OPTIONAL_ON_DEMAND_LOADING | ||
namespace Spine.Unity { | ||
public abstract class OnDemandTextureLoader : ScriptableObject { | ||
public AtlasAssetBase atlasAsset; | ||
|
||
/// <param name="originalTextureName">Original texture name without extension.</param> | ||
/// <returns>The placeholder texture's name for a given original target texture name.</returns> | ||
public abstract string GetPlaceholderTextureName (string originalTextureName); | ||
/// <summary> | ||
/// Assigns previously setup placeholder textures at each Material of the associated AtlasAssetBase.</summary> | ||
/// <returns>True on success, false if the placeholder texture could not be assigned at any of the | ||
/// AtlasAssetBase's materials.</returns> | ||
public abstract bool AssignPlaceholderTextures (out IEnumerable<Material> modifiedMaterials); | ||
/// <summary> | ||
/// Returns whether any placeholder textures are assigned at the Material of the associated AtlasAssetBase. | ||
/// </summary> | ||
/// <param name="placeholderMaterials">A newly created list of materials which has a placeholder texture assigned.</param> | ||
/// <returns>True, if any placeholder texture is assigned at a Material of the associated AtlasAssetBase.</returns> | ||
public abstract bool HasPlaceholderTexturesAssigned (out List<Material> placeholderMaterials); | ||
/// <summary> | ||
/// Assigns previously setup target textures at each Material where placeholder textures are setup.</summary> | ||
/// <returns>True on success, false if the target texture could not be assigned at any of the | ||
/// AtlasAssetBase's materials.</returns> | ||
public abstract bool AssignTargetTextures (out IEnumerable<Material> modifiedMaterials); | ||
public abstract void BeginCustomTextureLoading (); | ||
public abstract void EndCustomTextureLoading (); | ||
public abstract bool HasPlaceholderAssigned (Material material); | ||
public abstract void RequestLoadMaterialTextures (Material material, ref Material overrideMaterial); | ||
public abstract void Clear (bool clearAtlasAsset = false); | ||
|
||
#region Event delegates | ||
public delegate void TextureLoadDelegate (OnDemandTextureLoader loader, Material material, int textureIndex); | ||
protected event TextureLoadDelegate onTextureLoaded; | ||
protected event TextureLoadDelegate onTextureUnloaded; | ||
|
||
public event TextureLoadDelegate TextureLoaded { | ||
add { onTextureLoaded += value; } | ||
remove { onTextureLoaded -= value; } | ||
} | ||
public event TextureLoadDelegate TextureUnloaded { | ||
add { onTextureUnloaded += value; } | ||
remove { onTextureUnloaded -= value; } | ||
} | ||
|
||
protected void OnTextureLoaded (Material material, int textureIndex) { | ||
if (onTextureLoaded != null) | ||
onTextureLoaded(this, material, textureIndex); | ||
} | ||
protected void OnTextureUnloaded (Material material, int textureIndex) { | ||
if (onTextureUnloaded != null) | ||
onTextureUnloaded(this, material, textureIndex); | ||
} | ||
#endregion | ||
} | ||
} | ||
#endif |
11 changes: 11 additions & 0 deletions
11
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/OnDemandTextureLoader.cs.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 8 additions & 0 deletions
8
spine-unity/Modules/com.esotericsoftware.spine.addressables/Documentation.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
7 changes: 7 additions & 0 deletions
7
...e-unity/Modules/com.esotericsoftware.spine.addressables/Documentation/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
## Spine Addressables Extensions [Experimental] | ||
|
||
This experimental plugin provides integration of Addressables on-demand texture loading for the spine-unity runtime. Please be sure to test this package first and create backups of your project before using. | ||
|
||
### Usage | ||
|
||
First declare your target Material textures as addressable. Then select the SpineAtlasAsset, right-click the SpineAtlasAsset Inspector heading and select 'Add Addressables Loader'. This generates an 'AddressableTextureLoader' asset providing configuration parameters and sets up low-resolution placeholder textures which are automatically assigned in a pre-build step when building your game executable. |
7 changes: 7 additions & 0 deletions
7
spine-unity/Modules/com.esotericsoftware.spine.addressables/Documentation/README.md.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
8 changes: 8 additions & 0 deletions
8
spine-unity/Modules/com.esotericsoftware.spine.addressables/Editor.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.