Interface AssetCache

All Known Implementing Classes:
SimpleAssetCache, WeakRefAssetCache, WeakRefCloneAssetCache

public interface AssetCache
AssetCache is an interface for asset caches. Allowing storage of loaded resources in order to improve their access time if they are requested again in a short period of time. Depending on the asset type and how it is used, a specialized caching method can be selected that is most appropriate for that asset type. The asset cache must be thread safe.

Some caches are used to manage cloneable assets, which track reachability based on a shared key in all instances exposed in user code. E.g. WeakRefCloneAssetCache uses this approach. For those particular caches, either registerAssetClone(com.jme3.asset.AssetKey, java.lang.Object) or notifyNoAssetClone() MUST be called to avoid memory leaking following a successful addToCache(com.jme3.asset.AssetKey, java.lang.Object) or getFromCache(com.jme3.asset.AssetKey) call!

  • Method Details

    • addToCache

      <T> void addToCache(AssetKey<T> key, T obj)
      Adds an asset to the cache. Once added, it should be possible to retrieve the asset by using the getFromCache(com.jme3.asset.AssetKey) method. However, the caching criteria may at some point decide that the asset should be removed from the cache to save memory. In that case, getFromCache(com.jme3.asset.AssetKey) will return null.

      Thread-Safe

      Type Parameters:
      T - The type of the asset to cache.
      Parameters:
      key - The asset key that can be used to look up the asset.
      obj - The asset data to cache.
    • registerAssetClone

      <T> void registerAssetClone(AssetKey<T> key, T clone)
      This should be called by the asset manager when it has successfully acquired a cached asset (with getFromCache(com.jme3.asset.AssetKey)) and cloned it for use.

      Thread-Safe

      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

      void notifyNoAssetClone()
      Notifies the cache that even though the methods addToCache(com.jme3.asset.AssetKey, java.lang.Object) or getFromCache(com.jme3.asset.AssetKey) were used, there won't be a call to 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.
    • getFromCache

      <T> T getFromCache(AssetKey<T> key)
      Retrieves an asset from the cache. It is possible to add an asset to the cache using 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

      Type Parameters:
      T - The type of the asset to retrieve
      Parameters:
      key - The key used to look up the asset.
      Returns:
      The asset that was previously cached, or null if not found.
    • deleteFromCache

      boolean deleteFromCache(AssetKey key)
      Deletes an asset from the cache.

      Thread-Safe

      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

      void clearCache()
      Deletes all assets from the cache.

      Thread-Safe