package com.gebauz.bauzoid2.graphics.model;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.assets.AssetLoaderParameters;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader;
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.utils.Array;
import com.gebauz.bauzoid2.game.Engine;
/** Asynchronous Loader for Gdx models. */
public class GdxModelAsyncLoader
extends AsynchronousAssetLoader
<Model, GdxModelAsyncLoader.
Parameter>
{
// Constants========================================================================================
// Embedded Types===================================================================================
static public class Parameter extends AssetLoaderParameters
<Model
>
{
}
// Fields===========================================================================================
private GdxModelUtil.
GdxModelDescriptor mModelDescriptor =
null;
// Methods==========================================================================================
public GdxModelAsyncLoader
(FileHandleResolver resolver
)
{
super(resolver
);
}
@
Override
public void loadAsync
(AssetManager manager,
String fileName, FileHandle file,
Parameter parameter
)
{
}
@
Override
public Model loadSync
(AssetManager manager,
String fileName, FileHandle file,
Parameter parameter
)
{
Model model = GdxModelUtil.
buildModel(mModelDescriptor
);
return model
;
}
@
SuppressWarnings("rawtypes")
@
Override
public Array<AssetDescriptor
> getDependencies
(String fileName, FileHandle file,
Parameter parameter
)
{
mModelDescriptor = GdxModelUtil.
readModel(fileName
);
Array<AssetDescriptor
> deps =
new Array();
for (int i =
0; i
< mModelDescriptor.
materials.
size(); i++
)
{
GdxModelUtil.
MaterialData matData = mModelDescriptor.
materials.
get(i
);
for (int j =
0; j
< matData.
textures.
size(); j++
)
{
GdxModelUtil.
TextureData texData = matData.
textures.
get(j
);
FileHandle resolved = resolve
(texData.
filename);
deps.
add(new AssetDescriptor
(resolved, Texture.
class));
texData.
isAsync =
true;
}
}
return deps
;
}
// Getters/Setters==================================================================================
}