Enable mesh manager support for new batched meshes
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.mesh;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class DefaultMeshManager implements MeshManager {
|
||||
private final List<Mesh> meshes = new LinkedList<>();
|
||||
|
||||
@Override
|
||||
public Mesh createMesh(int maxQuads) {
|
||||
log.debug("Creating [maxQuads: {}] mesh", maxQuads);
|
||||
var mesh = new Mesh(maxQuads);
|
||||
|
||||
meshes.add(mesh);
|
||||
return mesh;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QuadMesh createQuad(float width, float height, float originX, float originY) {
|
||||
log.debug("Creating [w:{}, h:{} | O:{}, {}] mesh", width, height, originX, originY);
|
||||
var quad = new QuadMesh(width, height, originX, originY);
|
||||
|
||||
meshes.add(quad);
|
||||
return quad;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("Disposing meshes");
|
||||
meshes.forEach(Mesh::dispose);
|
||||
log.info("Disposed {} meshes", meshes.size());
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class Mesh implements Renderable, Disposable {
|
||||
@Getter
|
||||
private int currentQuadCount = 0;
|
||||
|
||||
public Mesh(int maxQuads) {
|
||||
Mesh(int maxQuads) {
|
||||
this.maxQuads = maxQuads;
|
||||
this.maxVertices = maxQuads * VERTICES_PER_QUAD * 2;
|
||||
this.maxIndices = maxQuads * INDICES_PER_QUAD;
|
||||
@@ -302,8 +302,4 @@ public class Mesh implements Renderable, Disposable {
|
||||
public boolean isEmpty() {
|
||||
return currentQuadCount == 0;
|
||||
}
|
||||
|
||||
public static QuadMesh quad(float width, float height, float originX, float originY) {
|
||||
return new QuadMesh(width, height, originX, originY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.mesh;
|
||||
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface MeshManager extends Cleanable {
|
||||
Mesh createMesh(int maxQuads);
|
||||
|
||||
QuadMesh createQuad(float width, float height, float originX, float originY);
|
||||
}
|
||||
@@ -1,10 +1,23 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.mesh;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
public class QuadMesh extends Mesh {
|
||||
private final int quadId;
|
||||
|
||||
@Getter
|
||||
private final float width;
|
||||
|
||||
@Getter
|
||||
private final float height;
|
||||
|
||||
@Getter
|
||||
private final float originX;
|
||||
|
||||
@Getter
|
||||
private final float originY;
|
||||
|
||||
QuadMesh(float width, float height, float originX, float originY) {
|
||||
this(new QuadTemplate(width, height, originX, originY));
|
||||
}
|
||||
@@ -12,6 +25,11 @@ public class QuadMesh extends Mesh {
|
||||
QuadMesh(@NonNull QuadTemplate template) {
|
||||
super(1);
|
||||
|
||||
this.width = template.getWidth();
|
||||
this.height = template.getHeight();
|
||||
this.originX = template.getOriginX();
|
||||
this.originY = template.getOriginY();
|
||||
|
||||
this.quadId = addQuad(template, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.bartlomiejpluta.base.engine.util.mesh;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
// TODO
|
||||
@Slf4j
|
||||
@Component
|
||||
public class DefaultMeshManager implements MeshManager {
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("Nothing to do for now (todo...)");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.bartlomiejpluta.base.engine.util.mesh;
|
||||
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface MeshManager extends Cleanable {
|
||||
}
|
||||
@@ -5,5 +5,5 @@ import com.bartlomiejpluta.base.engine.common.init.Initializable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.world.animation.asset.AnimationAsset;
|
||||
|
||||
public interface AnimationManager extends Initializable, AssetManager<AnimationAsset, Animation> {
|
||||
public interface AnimationManager extends AssetManager<AnimationAsset, Animation> {
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.bartlomiejpluta.base.engine.world.animation.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.animation.Animation;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.project.config.ProjectConfiguration;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.animation.asset.AnimationAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.animation.model.DefaultAnimation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -22,17 +22,17 @@ import java.util.Map;
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultAnimationManager implements AnimationManager {
|
||||
private static final float QUAD_WIDTH = 1;
|
||||
private static final float QUAD_HEIGHT = 1;
|
||||
private static final float QUAD_ORIGIN_X = .5f;
|
||||
private static final float QUAD_ORIGIN_Y = .5f;
|
||||
|
||||
private final MeshManager meshManager;
|
||||
private final TextureManager textureManager;
|
||||
private final Map<String, AnimationAsset> assets = new HashMap<>();
|
||||
private final Map<String, Vector2fc[]> frames = new HashMap<>();
|
||||
private final ProjectConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO mesh = meshManager.createQuad(1, 1, 0.5f, 0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerAsset(AnimationAsset asset) {
|
||||
log.info("Registering [{}] animation asset under UID: [{}]", asset.getSource(), asset.getUid());
|
||||
@@ -59,7 +59,7 @@ public class DefaultAnimationManager implements AnimationManager {
|
||||
var source = configuration.projectFile("animations", asset.getSource());
|
||||
var texture = textureManager.loadTexture(source, asset.getRows(), asset.getColumns());
|
||||
|
||||
return new DefaultAnimation(texture, animationFrames);
|
||||
return new DefaultAnimation(meshManager.createQuad(QUAD_WIDTH, QUAD_HEIGHT, QUAD_ORIGIN_X, QUAD_ORIGIN_Y), texture, animationFrames);
|
||||
}
|
||||
|
||||
private Vector2fc[] createFrames(int rows, int columns) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.engine.world.animation.model;
|
||||
import com.bartlomiejpluta.base.api.animation.Animated;
|
||||
import com.bartlomiejpluta.base.engine.core.engine.DefaultGameEngine;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||
import com.bartlomiejpluta.base.util.math.MathUtil;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -15,8 +16,8 @@ public abstract class AnimatedSprite extends Sprite implements Animated {
|
||||
private int intervalInMilliseconds = 100;
|
||||
protected int currentAnimationFrame;
|
||||
|
||||
public AnimatedSprite(Material material) {
|
||||
super(material);
|
||||
public AnimatedSprite(QuadMesh mesh, Material material) {
|
||||
super(mesh, material);
|
||||
}
|
||||
|
||||
protected abstract boolean shouldAnimate();
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
|
||||
import com.bartlomiejpluta.base.api.move.AnimationMovement;
|
||||
import com.bartlomiejpluta.base.api.move.Direction;
|
||||
import com.bartlomiejpluta.base.api.move.Movement;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.world.movement.MovableSprite;
|
||||
import com.bartlomiejpluta.base.util.path.Path;
|
||||
@@ -50,8 +51,8 @@ public class DefaultAnimation extends MovableSprite implements Animation {
|
||||
@Getter
|
||||
private final CompletableFuture<Animation> future = new CompletableFuture<>();
|
||||
|
||||
public DefaultAnimation(Texture texture, @NonNull Vector2fc[] frames) {
|
||||
super(texture);
|
||||
public DefaultAnimation(QuadMesh mesh, Texture texture, @NonNull Vector2fc[] frames) {
|
||||
super(mesh, texture);
|
||||
this.frames = frames;
|
||||
this.lastFrameIndex = frames.length - 1;
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.world.autotile.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.common.init.Initializable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.asset.AutoTileSetAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.model.AutoTileSet;
|
||||
|
||||
public interface AutoTileManager extends Initializable, AssetManager<AutoTileSetAsset, AutoTileSet> {
|
||||
public interface AutoTileManager extends AssetManager<AutoTileSetAsset, AutoTileSet> {
|
||||
}
|
||||
|
||||
@@ -23,10 +23,6 @@ public class DefaultAutoTileSetManager implements AutoTileManager {
|
||||
private final Map<String, AutoTileSetAsset> assets = new HashMap<>();
|
||||
private final ProjectConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerAsset(AutoTileSetAsset asset) {
|
||||
log.info("Registering [{}] auto tile set asset under UID: [{}]", asset.getSource(), asset.getUid());
|
||||
|
||||
@@ -4,6 +4,6 @@ import com.bartlomiejpluta.base.api.character.Character;
|
||||
import com.bartlomiejpluta.base.engine.common.init.Initializable;
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface CharacterManager extends Initializable, Cleanable {
|
||||
public interface CharacterManager extends Cleanable {
|
||||
Character createCharacter(String characterSetUid);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.world.character.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.character.Character;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.character.config.CharacterSpriteConfiguration;
|
||||
import com.bartlomiejpluta.base.engine.world.character.model.DefaultCharacter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -13,18 +14,18 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor_ = @__(@Autowired))
|
||||
public class DefaultCharacterManager implements CharacterManager {
|
||||
private static final float QUAD_WIDTH = 1;
|
||||
private static final float QUAD_HEIGHT = 1;
|
||||
private static final float QUAD_ORIGIN_X = .5f;
|
||||
private static final float QUAD_ORIGIN_Y = 1;
|
||||
|
||||
private final MeshManager meshManager;
|
||||
private final CharacterSetManager characterSetManager;
|
||||
private final CharacterSpriteConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO mesh = meshManager.createQuad(1, 1, 0.5f, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Character createCharacter(String characterSetUid) {
|
||||
return new DefaultCharacter(characterSetManager, characterSetUid, configuration.getDefaultSpriteColumn());
|
||||
return new DefaultCharacter(characterSetManager, meshManager.createQuad(QUAD_WIDTH, QUAD_HEIGHT, QUAD_ORIGIN_X, QUAD_ORIGIN_Y), characterSetUid, configuration.getDefaultSpriteColumn());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
|
||||
import com.bartlomiejpluta.base.api.move.CharacterMovement;
|
||||
import com.bartlomiejpluta.base.api.move.Direction;
|
||||
import com.bartlomiejpluta.base.api.move.Movement;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.world.character.manager.CharacterSetManager;
|
||||
import com.bartlomiejpluta.base.engine.world.movement.MovableSprite;
|
||||
@@ -53,12 +54,12 @@ public class DefaultCharacter extends MovableSprite implements Character {
|
||||
|
||||
private boolean animationEnabled = true;
|
||||
|
||||
public DefaultCharacter(CharacterSetManager characterSetManager, @NonNull String characterSetUid, int defaultSpriteColumn) {
|
||||
this(characterSetManager.loadObject(characterSetUid), characterSetManager, defaultSpriteColumn);
|
||||
public DefaultCharacter(CharacterSetManager characterSetManager, QuadMesh mesh, @NonNull String characterSetUid, int defaultSpriteColumn) {
|
||||
this(mesh, characterSetManager.loadObject(characterSetUid), characterSetManager, defaultSpriteColumn);
|
||||
}
|
||||
|
||||
private DefaultCharacter(@NonNull CharacterSet characterSet, @NonNull CharacterSetManager characterSetManager, int defaultSpriteColumn) {
|
||||
super(characterSet.getTexture());
|
||||
private DefaultCharacter(QuadMesh mesh, @NonNull CharacterSet characterSet, @NonNull CharacterSetManager characterSetManager, int defaultSpriteColumn) {
|
||||
super(mesh, characterSet.getTexture());
|
||||
|
||||
this.defaultSpriteColumn = defaultSpriteColumn;
|
||||
this.characterSetManager = characterSetManager;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.world.icon.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.icon.Icon;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.icon.model.DefaultIcon;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -12,17 +13,17 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultIconManager implements IconManager {
|
||||
private static final float QUAD_WIDTH = 1;
|
||||
private static final float QUAD_HEIGHT = 1;
|
||||
private static final float QUAD_ORIGIN_X = .5f;
|
||||
private static final float QUAD_ORIGIN_Y = 1;
|
||||
|
||||
private final MeshManager meshManager;
|
||||
private final IconSetManager iconSetManager;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO: this.mesh = meshManager.createQuad(1, 1, 0.5f, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon createIcon(String iconSetUid, int row, int column) {
|
||||
return new DefaultIcon(iconSetManager, iconSetUid, row, column);
|
||||
return new DefaultIcon(iconSetManager, meshManager.createQuad(QUAD_WIDTH, QUAD_HEIGHT, QUAD_ORIGIN_X, QUAD_ORIGIN_Y), iconSetUid, row, column);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,6 @@ import com.bartlomiejpluta.base.api.icon.Icon;
|
||||
import com.bartlomiejpluta.base.engine.common.init.Initializable;
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface IconManager extends Initializable, Cleanable {
|
||||
public interface IconManager extends Cleanable {
|
||||
Icon createIcon(String iconSetUid, int row, int column);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.bartlomiejpluta.base.api.event.Event;
|
||||
import com.bartlomiejpluta.base.api.event.EventType;
|
||||
import com.bartlomiejpluta.base.api.icon.Icon;
|
||||
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.world.icon.manager.IconSetManager;
|
||||
@@ -43,12 +44,12 @@ public class DefaultIcon extends Sprite implements Icon {
|
||||
@Getter
|
||||
private int zIndex;
|
||||
|
||||
public DefaultIcon(IconSetManager iconSetManager, String iconSetUid, int row, int column) {
|
||||
this(iconSetManager, iconSetManager.loadObject(iconSetUid), iconSetUid, row, column);
|
||||
public DefaultIcon(IconSetManager iconSetManager, QuadMesh mesh, String iconSetUid, int row, int column) {
|
||||
this(iconSetManager, mesh, iconSetManager.loadObject(iconSetUid), iconSetUid, row, column);
|
||||
}
|
||||
|
||||
public DefaultIcon(@NonNull IconSetManager iconSetManager, @NonNull Texture texture, @NonNull String iconSetUid, int row, int column) {
|
||||
super(texture);
|
||||
private DefaultIcon(@NonNull IconSetManager iconSetManager, QuadMesh mesh, @NonNull Texture texture, @NonNull String iconSetUid, int row, int column) {
|
||||
super(mesh, texture);
|
||||
this.iconSetManager = iconSetManager;
|
||||
setFrame(row, column);
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.bartlomiejpluta.base.engine.world.image.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.image.Image;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.project.config.ProjectConfiguration;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.util.res.ResourcesManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.image.model.DefaultImage;
|
||||
@@ -23,6 +23,11 @@ import java.util.Map;
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultImageManager implements ImageManager {
|
||||
private static final float QUAD_WIDTH = 1;
|
||||
private static final float QUAD_HEIGHT = 1;
|
||||
private static final float QUAD_ORIGIN_X = 0;
|
||||
private static final float QUAD_ORIGIN_Y = 0;
|
||||
|
||||
private final MeshManager meshManager;
|
||||
private final TextureManager textureManager;
|
||||
private final ResourcesManager resourcesManager;
|
||||
@@ -30,11 +35,6 @@ public class DefaultImageManager implements ImageManager {
|
||||
private final Map<String, ByteBuffer> imageBuffers = new HashMap<>();
|
||||
private final ProjectConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO mesh = meshManager.createQuad(1, 1, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerAsset(ImageAsset asset) {
|
||||
log.info("Registering [{}] image asset under UID: [{}]", asset.getSource(), asset.getUid());
|
||||
@@ -63,7 +63,7 @@ public class DefaultImageManager implements ImageManager {
|
||||
var initialHeight = height / gcd;
|
||||
log.info("Creating new image on asset with UID: [{}]", uid);
|
||||
|
||||
return new DefaultImage(texture, initialWidth, initialHeight, gcd);
|
||||
return new DefaultImage(meshManager.createQuad(QUAD_WIDTH, QUAD_HEIGHT, QUAD_ORIGIN_X, QUAD_ORIGIN_Y), texture, initialWidth, initialHeight, gcd);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,5 +7,5 @@ import com.bartlomiejpluta.base.engine.common.manager.ByteBufferAssetManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface ImageManager extends Initializable, AssetManager<ImageAsset, Image>, ByteBufferAssetManager<ImageAsset>, Cleanable {
|
||||
public interface ImageManager extends AssetManager<ImageAsset, Image>, ByteBufferAssetManager<ImageAsset>, Cleanable {
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.engine.world.image.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.image.Image;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
@@ -16,8 +17,8 @@ public class DefaultImage extends Sprite implements Image {
|
||||
private final int width;
|
||||
private final int height;
|
||||
|
||||
public DefaultImage(@NonNull Material texture, int primaryWidth, int primaryHeight, int factor) {
|
||||
super(texture);
|
||||
public DefaultImage(QuadMesh mesh, @NonNull Material texture, int primaryWidth, int primaryHeight, int factor) {
|
||||
super(mesh, texture);
|
||||
this.primaryWidth = primaryWidth;
|
||||
this.primaryHeight = primaryHeight;
|
||||
this.factor = factor;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.autotile;
|
||||
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.model.AutoTileSet;
|
||||
import lombok.AccessLevel;
|
||||
@@ -54,8 +55,8 @@ public class AutoTileLayer2x2 extends BaseAutoTileLayer {
|
||||
private final int tileSetColumns;
|
||||
|
||||
|
||||
public AutoTileLayer2x2(@NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
super(map, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
public AutoTileLayer2x2(MeshManager meshManager, @NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
super(meshManager, map, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
|
||||
this.tileSetColumns = tileSet.getSetsColumns();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.engine.world.map.layer.autotile;
|
||||
|
||||
import com.bartlomiejpluta.base.api.map.layer.autotile.AutoTileLayer;
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.model.AutoTileSet;
|
||||
import lombok.AccessLevel;
|
||||
@@ -62,8 +63,8 @@ public class AutoTileLayer3x2 extends BaseAutoTileLayer implements AutoTileLayer
|
||||
|
||||
private final int tileSetColumns;
|
||||
|
||||
public AutoTileLayer3x2(@NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
super(map, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
public AutoTileLayer3x2(MeshManager meshManager, @NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
super(meshManager, map, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
|
||||
this.tileSetColumns = tileSet.getSetsColumns();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.engine.world.map.layer.autotile;
|
||||
import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.model.AutoTileSet;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.BaseLayer;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.util.ChunkManager;
|
||||
@@ -27,7 +28,7 @@ public abstract class BaseAutoTileLayer extends BaseLayer {
|
||||
private float accumulator = 0f;
|
||||
private boolean dirty = true;
|
||||
|
||||
public BaseAutoTileLayer(@NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
public BaseAutoTileLayer(MeshManager meshManager, @NonNull GameMap map, @NonNull AutoTileSet tileSet, int rows, int columns, boolean connect, boolean animated, double animationDuration) {
|
||||
super(map);
|
||||
this.layer = new int[rows][columns];
|
||||
this.connect = connect;
|
||||
@@ -36,6 +37,7 @@ public abstract class BaseAutoTileLayer extends BaseLayer {
|
||||
this.setsCount = tileSet.getSetsCount();
|
||||
|
||||
this.chunkManager = new ChunkManager(
|
||||
meshManager,
|
||||
tileSet.getTexture(),
|
||||
rows * 4,
|
||||
columns * 4,
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.color.Color;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.BaseLayer;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||
import com.bartlomiejpluta.base.internal.object.Placeable;
|
||||
@@ -16,6 +16,11 @@ import org.joml.Matrix4fc;
|
||||
import org.joml.Vector2fc;
|
||||
|
||||
public class DefaultColorLayer extends BaseLayer implements ColorLayer {
|
||||
private static final float QUAD_WIDTH = 1;
|
||||
private static final float QUAD_HEIGHT = 1;
|
||||
private static final float QUAD_ORIGIN_X = 0;
|
||||
private static final float QUAD_ORIGIN_Y = 0;
|
||||
|
||||
private final ColorPlane colorPlane;
|
||||
private final Material material;
|
||||
|
||||
@@ -145,8 +150,7 @@ public class DefaultColorLayer extends BaseLayer implements ColorLayer {
|
||||
|
||||
private static class ColorPlane extends Sprite {
|
||||
public ColorPlane(@NonNull MeshManager meshManager, float red, float green, float blue, float alpha) {
|
||||
// TODO (Custom Mesh): super(meshManager.createQuad(1, 1, 0, 0), Material.colored(red, green, blue, alpha));
|
||||
super(new Color(red, green, blue, alpha));
|
||||
super(meshManager.createQuad(QUAD_WIDTH, QUAD_HEIGHT, QUAD_ORIGIN_X, QUAD_ORIGIN_Y), new Color(red, green, blue, alpha));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.map.layer.tile.TileLayer;
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.BaseLayer;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.util.ChunkManager;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.model.TileSet;
|
||||
@@ -13,10 +14,10 @@ import lombok.NonNull;
|
||||
public class DefaultTileLayer extends BaseLayer implements TileLayer {
|
||||
private final ChunkManager chunkManager;
|
||||
|
||||
public DefaultTileLayer(@NonNull GameMap map, @NonNull TileSet tileSet, int rows, int columns) {
|
||||
public DefaultTileLayer(MeshManager meshManager, @NonNull GameMap map, @NonNull TileSet tileSet, int rows, int columns) {
|
||||
super(map);
|
||||
|
||||
this.chunkManager = new ChunkManager(tileSet.texture(), rows, columns);
|
||||
this.chunkManager = new ChunkManager(meshManager, tileSet.texture(), rows, columns);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.engine.world.map.layer.util;
|
||||
|
||||
import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.internal.gc.Disposable;
|
||||
import com.bartlomiejpluta.base.internal.render.Renderable;
|
||||
@@ -14,6 +15,7 @@ import java.util.Map;
|
||||
|
||||
public class ChunkManager implements Renderable, Disposable {
|
||||
private static final int DEFAULT_CHUNK_SIZE = 10;
|
||||
private final MeshManager meshManager;
|
||||
|
||||
private final Map<Long, TileChunk> chunks = new HashMap<>();
|
||||
private final Map<Long, Map<Integer, Integer>> chunkTileIds = new HashMap<>();
|
||||
@@ -23,19 +25,20 @@ public class ChunkManager implements Renderable, Disposable {
|
||||
private final float tileWidth, tileHeight;
|
||||
private final int mapRows, mapColumns;
|
||||
|
||||
public ChunkManager(Texture tileSet, int rows, int columns) {
|
||||
this(tileSet, rows, columns, DEFAULT_CHUNK_SIZE);
|
||||
public ChunkManager(MeshManager meshManager, Texture tileSet, int rows, int columns) {
|
||||
this(meshManager, tileSet, rows, columns, DEFAULT_CHUNK_SIZE);
|
||||
}
|
||||
|
||||
public ChunkManager(Texture tileSet, int rows, int columns, Vector2fc tileSize) {
|
||||
this(tileSet, rows, columns, tileSize, DEFAULT_CHUNK_SIZE);
|
||||
public ChunkManager(MeshManager meshManager, Texture tileSet, int rows, int columns, Vector2fc tileSize) {
|
||||
this(meshManager, tileSet, rows, columns, tileSize, DEFAULT_CHUNK_SIZE);
|
||||
}
|
||||
|
||||
public ChunkManager(Texture tileSet, int rows, int columns, int chunkSize) {
|
||||
this(tileSet, rows, columns, tileSet.getSpriteSize(), chunkSize);
|
||||
public ChunkManager(MeshManager meshManager, Texture tileSet, int rows, int columns, int chunkSize) {
|
||||
this(meshManager, tileSet, rows, columns, tileSet.getSpriteSize(), chunkSize);
|
||||
}
|
||||
|
||||
public ChunkManager(@NonNull Texture tileSet, int rows, int columns, @NonNull Vector2fc tileSize, int chunkSize) {
|
||||
public ChunkManager(MeshManager meshManager, @NonNull Texture tileSet, int rows, int columns, @NonNull Vector2fc tileSize, int chunkSize) {
|
||||
this.meshManager = meshManager;
|
||||
this.tileSet = tileSet;
|
||||
this.mapRows = rows;
|
||||
this.mapColumns = columns;
|
||||
@@ -64,7 +67,7 @@ public class ChunkManager implements Renderable, Disposable {
|
||||
int chunkX = (column / chunkSize) * (int) tileWidth * chunkSize;
|
||||
int chunkY = (row / chunkSize) * (int) tileHeight * chunkSize;
|
||||
|
||||
chunk = new TileChunk(tileSet, chunkSize);
|
||||
chunk = new TileChunk(meshManager, tileSet, chunkSize);
|
||||
chunk.setPosition(chunkX, chunkY);
|
||||
chunks.put(chunkKey, chunk);
|
||||
chunkTileIds.put(chunkKey, new HashMap<>());
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadTemplate;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.Shader;
|
||||
@@ -14,6 +15,7 @@ import com.bartlomiejpluta.base.internal.object.Placeable;
|
||||
import com.bartlomiejpluta.base.internal.render.BoundingBox;
|
||||
import com.bartlomiejpluta.base.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.internal.render.ShaderManager;
|
||||
import lombok.NonNull;
|
||||
|
||||
public class TileChunk extends Model implements Placeable, Renderable, Disposable, BoundingBox {
|
||||
private final Texture tileSet;
|
||||
@@ -23,14 +25,14 @@ public class TileChunk extends Model implements Placeable, Renderable, Disposabl
|
||||
private final float originX;
|
||||
private final float originY;
|
||||
|
||||
public TileChunk(Texture tileSet, int chunkSize) {
|
||||
this(tileSet, chunkSize, 0, 0);
|
||||
public TileChunk(MeshManager meshManager, Texture tileSet, int chunkSize) {
|
||||
this(meshManager, tileSet, chunkSize, 0, 0);
|
||||
}
|
||||
|
||||
public TileChunk(Texture tileSet, int chunkSize, float originX, float originY) {
|
||||
public TileChunk(@NonNull MeshManager meshManager, @NonNull Texture tileSet, int chunkSize, float originX, float originY) {
|
||||
this.tileSet = tileSet;
|
||||
this.chunkSize = chunkSize;
|
||||
this.mesh = new Mesh(chunkSize * chunkSize);
|
||||
this.mesh = meshManager.createMesh(chunkSize * chunkSize);
|
||||
this.template = new QuadTemplate(tileSet.getSpriteSize().x(), tileSet.getSpriteSize().y(), originX, originY);
|
||||
this.originX = originX;
|
||||
this.originY = originY;
|
||||
|
||||
@@ -12,9 +12,8 @@ import com.bartlomiejpluta.base.api.map.layer.object.PassageAbility;
|
||||
import com.bartlomiejpluta.base.api.map.layer.tile.TileLayer;
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.model.AutoTileSet;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.autotile.AutoTileLayer2x2;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.autotile.AutoTileLayer3x2;
|
||||
@@ -37,6 +36,7 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class DefaultGameMap implements Renderable, Updatable, GameMap {
|
||||
private final MeshManager meshManager;
|
||||
|
||||
@Getter
|
||||
private final List<Layer> layers = new ArrayList<>();
|
||||
@@ -65,7 +65,8 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap {
|
||||
@Getter
|
||||
private final Vector3f ambientColor = new Vector3f(1, 1, 1);
|
||||
|
||||
public DefaultGameMap(int tileWidth, int tileHeight, int rows, int columns, String handler) {
|
||||
public DefaultGameMap(MeshManager meshManager, int tileWidth, int tileHeight, int rows, int columns, String handler) {
|
||||
this.meshManager = meshManager;
|
||||
this.rows = rows;
|
||||
this.columns = columns;
|
||||
this.stepSize = new Vector2f(tileWidth, tileHeight);
|
||||
@@ -135,21 +136,21 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap {
|
||||
}
|
||||
|
||||
public TileLayer createTileLayer(@NonNull TileSet tileSet) {
|
||||
var layer = new DefaultTileLayer(this, tileSet, rows, columns);
|
||||
var layer = new DefaultTileLayer(meshManager, this, tileSet, rows, columns);
|
||||
layers.add(layer);
|
||||
|
||||
return layer;
|
||||
}
|
||||
|
||||
public AutoTileLayer3x2 createAutoTileLayer3x2(@NonNull AutoTileSet tileSet, boolean animated, double animationDuration, boolean connect) {
|
||||
var layer = new AutoTileLayer3x2(this, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
var layer = new AutoTileLayer3x2(meshManager, this, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
layers.add(layer);
|
||||
|
||||
return layer;
|
||||
}
|
||||
|
||||
public AutoTileLayer2x2 createAutoTileLayer2x2(@NonNull AutoTileSet tileSet, boolean animated, double animationDuration, boolean connect) {
|
||||
var layer = new AutoTileLayer2x2(this, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
var layer = new AutoTileLayer2x2(meshManager, this, tileSet, rows, columns, connect, animated, animationDuration);
|
||||
layers.add(layer);
|
||||
|
||||
return layer;
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.bartlomiejpluta.base.engine.world.map.serial;
|
||||
import com.bartlomiejpluta.base.api.map.layer.image.ImageLayerMode;
|
||||
import com.bartlomiejpluta.base.api.map.layer.object.PassageAbility;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.autotile.manager.AutoTileManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.manager.ImageManager;
|
||||
import com.bartlomiejpluta.base.engine.world.map.model.DefaultGameMap;
|
||||
@@ -28,7 +28,7 @@ public class ProtobufMapDeserializer extends MapDeserializer {
|
||||
@Override
|
||||
protected DefaultGameMap parse(InputStream input) throws Exception {
|
||||
var proto = GameMapProto.GameMap.parseFrom(input);
|
||||
var map = new DefaultGameMap(proto.getTileWidth(), proto.getTileHeight(), proto.getRows(), proto.getColumns(), proto.getHandler());
|
||||
var map = new DefaultGameMap(meshManager, proto.getTileWidth(), proto.getTileHeight(), proto.getRows(), proto.getColumns(), proto.getHandler());
|
||||
|
||||
proto.getLayersList().forEach(layer -> deserializeLayer(map, layer));
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.bartlomiejpluta.base.api.move.Movable;
|
||||
import com.bartlomiejpluta.base.api.move.Movement;
|
||||
import com.bartlomiejpluta.base.engine.core.engine.DefaultGameEngine;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.world.animation.model.AnimatedSprite;
|
||||
import com.bartlomiejpluta.base.internal.program.Updatable;
|
||||
import com.bartlomiejpluta.base.util.math.MathUtil;
|
||||
@@ -20,8 +21,8 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U
|
||||
@Getter
|
||||
private Movement movement;
|
||||
|
||||
public MovableSprite(Material material) {
|
||||
super(material);
|
||||
public MovableSprite(QuadMesh mesh, Material material) {
|
||||
super(mesh, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,9 +3,7 @@ package com.bartlomiejpluta.base.engine.world.object;
|
||||
import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.QuadMesh;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.Shader;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.world.location.LocationableModel;
|
||||
import com.bartlomiejpluta.base.internal.render.BoundingBox;
|
||||
@@ -21,18 +19,23 @@ public abstract class Sprite extends LocationableModel implements Renderable, Bo
|
||||
@Getter
|
||||
private Material material;
|
||||
|
||||
private final QuadMesh quad;
|
||||
private final float width = 1f;
|
||||
private final float height = 1f;
|
||||
private final float originX = .5f;
|
||||
private final float originY = 1f;
|
||||
private final QuadMesh mesh;
|
||||
private final float width;
|
||||
private final float height;
|
||||
private final float originX;
|
||||
private final float originY;
|
||||
|
||||
@Getter
|
||||
private float[][] textureCoordinates;
|
||||
|
||||
public Sprite(Material material) {
|
||||
public Sprite(@NonNull QuadMesh mesh, @NonNull Material material) {
|
||||
this.material = material;
|
||||
this.quad = Mesh.quad(width, height, originX, originY);
|
||||
this.mesh = mesh;
|
||||
|
||||
this.width = mesh.getWidth();
|
||||
this.height = mesh.getHeight();
|
||||
this.originX = mesh.getOriginX();
|
||||
this.originY = mesh.getOriginY();
|
||||
|
||||
updateTextureCoordinates();
|
||||
}
|
||||
@@ -51,7 +54,7 @@ public abstract class Sprite extends LocationableModel implements Renderable, Bo
|
||||
}
|
||||
|
||||
public void setFrame(int id) {
|
||||
quad.setTextureCoordinates(textureCoordinates[id]);
|
||||
mesh.setTextureCoordinates(textureCoordinates[id]);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,6 +95,6 @@ public abstract class Sprite extends LocationableModel implements Renderable, Bo
|
||||
shaderManager.setUniform(UniformName.UNI_PROJECTION_MATRIX, camera.getProjectionMatrix());
|
||||
shaderManager.setUniform(UniformName.UNI_VIEW_MODEL_MATRIX, camera.computeViewModelMatrix(getModelMatrix()));
|
||||
|
||||
quad.render(screen, camera, shaderManager);
|
||||
mesh.render(screen, camera, shaderManager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.bartlomiejpluta.base.engine.world.tileset.manager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.project.config.ProjectConfiguration;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.asset.TileSetAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.model.TileSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -19,16 +18,10 @@ import java.util.Map;
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultTileSetManager implements TileSetManager {
|
||||
private final TextureManager textureManager;
|
||||
private final MeshManager meshManager;
|
||||
private final Map<String, TileSet> tileSets = new HashMap<>();
|
||||
private final Map<String, TileSetAsset> assets = new HashMap<>();
|
||||
private final ProjectConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO this.mesh = meshManager.createQuad(1, 1, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerAsset(TileSetAsset asset) {
|
||||
log.info("Registering [{}] tile set asset under UID: [{}]", asset.getSource(), asset.getUid());
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package com.bartlomiejpluta.base.engine.world.tileset.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.common.init.Initializable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.asset.TileSetAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.model.TileSet;
|
||||
import com.bartlomiejpluta.base.internal.gc.Cleanable;
|
||||
|
||||
public interface TileSetManager extends Initializable, AssetManager<TileSetAsset, TileSet>, Cleanable {
|
||||
public interface TileSetManager extends AssetManager<TileSetAsset, TileSet>, Cleanable {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user