Subversion Repositories AndroidProjects

Rev

Rev 1738 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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==================================================================================

}