All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ca.blarg.gdx.tilemap3d.assets.tilemesh.TileMeshLoader Maven / Gradle / Ivy

Go to download

Library to handle management and rendering of a game world composed of 3D "tiles" arranged in a uniform 3D grid, via libGDX.

The newest version!
package ca.blarg.gdx.tilemap3d.assets.tilemesh;

import ca.blarg.gdx.graphics.atlas.TextureAtlas;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh;
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.g3d.Model;
import com.badlogic.gdx.utils.Array;

@SuppressWarnings("unchecked")
public class TileMeshLoader extends AsynchronousAssetLoader {
	public static class TileMeshParameters extends AssetLoaderParameters {
		public String defaultTextureAtlas;
	}

	public TileMeshLoader(FileHandleResolver resolver) {
		super(resolver);
	}

	JsonTileMesh definition;
	TileMesh mesh;

	@Override
	public Array getDependencies(String fileName, FileHandle file, TileMeshParameters parameter) {
		definition = TileMeshJsonLoader.load(file);
		Array deps = new Array();

		if (definition.textureAtlas != null)
			deps.add(new AssetDescriptor(definition.textureAtlas, TextureAtlas.class));
		else if (parameter != null && parameter.defaultTextureAtlas != null) {
			definition.textureAtlas = parameter.defaultTextureAtlas;
			deps.add(new AssetDescriptor(definition.textureAtlas, TextureAtlas.class));
		}

		if (!definition.cube) {
			if (definition.model != null)
				deps.add(new AssetDescriptor(definition.model, Model.class));
			else if (definition.models != null && definition.models.size() > 0) {
				for (int i = 0; i < definition.models.size(); ++i)
					deps.add(new AssetDescriptor(definition.models.get(i).submodel, Model.class));
			}

			if (definition.collisionModel != null)
				deps.add(new AssetDescriptor(definition.collisionModel, Model.class));
		}

		return deps;
	}

	@Override
	public void loadAsync(AssetManager manager, String fileName, FileHandle file, TileMeshParameters parameter) {
		mesh = TileMeshJsonLoader.create(file, definition, manager);
	}

	@Override
	public TileMesh loadSync(AssetManager manager, String fileName, FileHandle file, TileMeshParameters parameter) {
		return mesh;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy