Replaced comment note with impl classes

Replaced comment note with impl classes
Removed assets hash map
Created AssetManager#update()
This commit is contained in:
Collin Smith
2020-11-01 12:10:56 -08:00
parent 1d5cfc3cea
commit d2ff1ec515

View File

@ -5,6 +5,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
@ -12,6 +13,7 @@ import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.ObjectMap;
import com.riiablo.asset.adapter.GdxFileHandleAdapter;
import com.riiablo.logger.LogManager;
@ -23,10 +25,11 @@ public final class AssetManager implements Disposable {
final ExecutorService io;
final ExecutorService async;
// TODO: queued assets
// TODO: loaded assets (updated after async callback)
/** Updated after each sync {@link #update} or sync {@link #load(AssetDesc)} */
final ObjectMap<String, AssetContainer> loadedAssets = new ObjectMap<>();
/** Queue of assets which need to be loaded */
final PriorityBlockingQueue<AssetDesc> queuedAssets = new PriorityBlockingQueue<>();
final Map<String, AssetContainer> assets = new ConcurrentHashMap<>();
final Map<Class, AssetLoader> loaders = new ConcurrentHashMap<>();
final Map<Class, FileHandleAdapter> adapters = new ConcurrentHashMap<>();
@ -101,7 +104,7 @@ public final class AssetManager implements Disposable {
}
public <T> T get(AssetDesc<T> asset) {
final AssetContainer container = assets.get(asset.path());
final AssetContainer container = loadedAssets.get(asset.path());
if (container == null) return null;
return container.get(asset.type);
}
@ -109,7 +112,7 @@ public final class AssetManager implements Disposable {
public <T> T load(AssetDesc<T> asset) {
log.traceEntry("load(asset: {})", asset);
final AssetContainer container = assets.get(asset.path());
final AssetContainer container = loadedAssets.get(asset.path());
if (container != null) {
log.debug("Asset already loaded: {}", container);
return container.get(asset.type);
@ -140,6 +143,10 @@ public final class AssetManager implements Disposable {
shutdown(async, "async");
}
public void update() {
}
private static void shutdown(ExecutorService executor, String name) {
log.trace("Shutting down {} executor...", name);
try {