com.jme3.asset.cache
Class WeakRefCloneAssetCache
java.lang.Object
com.jme3.asset.cache.WeakRefCloneAssetCache
- All Implemented Interfaces:
- AssetCache
public class WeakRefCloneAssetCache
- extends java.lang.Object
- implements AssetCache
caches cloneable assets in a weak-key
cache, allowing them to be collected when memory is low.
The cache stores weak references to the asset keys, so that
when all clones of the original asset are collected, will cause the
asset to be automatically removed from the cache.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
WeakRefCloneAssetCache
public WeakRefCloneAssetCache()
addToCache
public <T> void addToCache(AssetKey<T> originalKey,
T obj)
- Description copied from interface:
AssetCache
- Adds an asset to the cache.
Once added, it should be possible to retrieve the asset
by using the
AssetCache.getFromCache(com.jme3.asset.AssetKey)
method.
However the caching criteria may at some point choose that the asset
should be removed from the cache to save memory, in that case,
AssetCache.getFromCache(com.jme3.asset.AssetKey)
will return null.
Thread-Safe
- Specified by:
addToCache
in interface AssetCache
- Type Parameters:
T
- The type of the asset to cache.- Parameters:
originalKey
- The asset key that can be used to look up the asset.obj
- The asset data to cache.
registerAssetClone
public <T> void registerAssetClone(AssetKey<T> key,
T clone)
- Description copied from interface:
AssetCache
- This should be called by the asset manager when it has successfully
acquired a cached asset (with
AssetCache.getFromCache(com.jme3.asset.AssetKey)
)
and cloned it for use.
Thread-Safe
- Specified by:
registerAssetClone
in interface AssetCache
- Type Parameters:
T
- The type of the asset to register.- Parameters:
key
- The asset key of the loaded asset (used to retrieve from cache)clone
- The clone of the asset retrieved from
the cache.
notifyNoAssetClone
public void notifyNoAssetClone()
- Description copied from interface:
AssetCache
- Notifies the cache that even though the methods
AssetCache.addToCache(com.jme3.asset.AssetKey, java.lang.Object)
or AssetCache.getFromCache(com.jme3.asset.AssetKey)
were used, there won't
be a call to AssetCache.registerAssetClone(com.jme3.asset.AssetKey, java.lang.Object)
for some reason. For example, if an error occurred during loading
or if the addToCache/getFromCache were used from user code.
- Specified by:
notifyNoAssetClone
in interface AssetCache
getFromCache
public <T> T getFromCache(AssetKey<T> key)
- Description copied from interface:
AssetCache
- Retrieves an asset from the cache.
It is possible to add an asset to the cache using
AssetCache.addToCache(com.jme3.asset.AssetKey, java.lang.Object)
.
The asset may be removed from the cache automatically even if
it was added previously, in that case, this method will return null.
Thread-Safe
- Specified by:
getFromCache
in interface AssetCache
- Type Parameters:
T
- The type of the asset to retrieve- Parameters:
key
- The key used to lookup the asset.
- Returns:
- The asset that was previously cached, or null if not found.
deleteFromCache
public boolean deleteFromCache(AssetKey key)
- Description copied from interface:
AssetCache
- Deletes an asset from the cache.
Thread-Safe
- Specified by:
deleteFromCache
in interface AssetCache
- Parameters:
key
- The asset key to find the asset to delete.
- Returns:
- True if the asset was successfully found in the cache
and removed.
clearCache
public void clearCache()
- Description copied from interface:
AssetCache
- Deletes all assets from the cache.
Thread-Safe
- Specified by:
clearCache
in interface AssetCache