Do some little improvements in the code
This commit is contained in:
@@ -17,6 +17,17 @@ public class Material {
|
||||
setColor(r, g, b, alpha);
|
||||
}
|
||||
|
||||
public void setAlpha(float alpha) {
|
||||
this.color.w = alpha;
|
||||
}
|
||||
|
||||
public void setColor(Vector4f color) {
|
||||
this.color.x = color.x;
|
||||
this.color.y = color.y;
|
||||
this.color.z = color.z;
|
||||
this.color.w = color.w;
|
||||
}
|
||||
|
||||
public void setColor(float r, float g, float b, float alpha) {
|
||||
color.x = r;
|
||||
color.y = g;
|
||||
|
||||
@@ -2,12 +2,14 @@ package com.bartlomiejpluta.base.core.gl.object.texture;
|
||||
|
||||
import com.bartlomiejpluta.base.core.util.res.ResourcesManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultTextureManager implements TextureManager {
|
||||
@@ -17,13 +19,14 @@ public class DefaultTextureManager implements TextureManager {
|
||||
@Override
|
||||
public Texture loadTexture(String textureFileName) {
|
||||
var texture = loadedTextures.get(textureFileName);
|
||||
if(texture != null) {
|
||||
return texture;
|
||||
|
||||
if (texture == null) {
|
||||
log.info("Loading [{}] texture to cache", textureFileName);
|
||||
var buffer = resourcesManager.loadResourceAsByteBuffer(textureFileName);
|
||||
texture = new Texture(textureFileName, buffer);
|
||||
loadedTextures.put(textureFileName, texture);
|
||||
}
|
||||
|
||||
var buffer = resourcesManager.loadResourceAsByteBuffer(textureFileName);
|
||||
texture = new Texture(textureFileName, buffer);
|
||||
loadedTextures.put(textureFileName, texture);
|
||||
return texture;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +142,7 @@ public class DefaultShaderManager implements ShaderManager {
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("Cleaning up shaders");
|
||||
shaders.forEach((name, program) -> program.cleanUp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,14 @@ package com.bartlomiejpluta.base.core.util.mesh;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.joml.Vector2f;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class DefaultMeshManager implements MeshManager {
|
||||
private final Map<QuadDimension, Mesh> quads = new HashMap<>();
|
||||
@@ -18,6 +20,7 @@ public class DefaultMeshManager implements MeshManager {
|
||||
var mesh = quads.get(dim);
|
||||
|
||||
if(mesh == null) {
|
||||
log.info("Creating [w:{}, h:{} | O:{},{}] and putting it into the cache", width, height, originX, originY);
|
||||
mesh = Mesh.quad(width, height, originX, originY);
|
||||
quads.put(dim, mesh);
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ public abstract class AnimationableObject extends RenderableObject {
|
||||
super(mesh);
|
||||
this.spriteSheetDimension = spriteSheetDimension;
|
||||
|
||||
setMaterial(material);
|
||||
material.setSpriteSize(1 / (float) spriteSheetDimension.y, 1 / (float) spriteSheetDimension.x);
|
||||
setMaterial(material);
|
||||
}
|
||||
|
||||
// Returns time in ms between frames
|
||||
@@ -25,8 +25,7 @@ public abstract class AnimationableObject extends RenderableObject {
|
||||
public abstract Vector2f[] getSpriteAnimationFramesPositions();
|
||||
|
||||
protected void setAnimationFrame(Vector2f framePosition) {
|
||||
var material = this.getMaterial();
|
||||
var spriteSize = material.getSpriteSize();
|
||||
material.setSpritePosition(spriteSize.x * framePosition.x, spriteSize.y * framePosition.y);
|
||||
var spriteSize = getMaterial().getSpriteSize();
|
||||
setSpritePosition(spriteSize.x * framePosition.x, spriteSize.y * framePosition.y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.bartlomiejpluta.base.core.ui.Window;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector4f;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class RenderableObject extends Object implements Renderable {
|
||||
@@ -27,4 +29,32 @@ public abstract class RenderableObject extends Object implements Renderable {
|
||||
public void cleanUp() {
|
||||
mesh.cleanUp();
|
||||
}
|
||||
|
||||
public void setAlpha(float alpha) {
|
||||
material.setAlpha(alpha);
|
||||
}
|
||||
|
||||
public void setColor(Vector4f color) {
|
||||
material.setColor(color);
|
||||
}
|
||||
|
||||
public void setColor(float r, float g, float b, float alpha) {
|
||||
material.setColor(r, g, b, alpha);
|
||||
}
|
||||
|
||||
public void setSpriteSize(Vector2f spriteSize) {
|
||||
material.setSpriteSize(spriteSize);
|
||||
}
|
||||
|
||||
public void setSpriteSize(float w, float h) {
|
||||
material.setSpriteSize(w, h);
|
||||
}
|
||||
|
||||
public void setSpritePosition(Vector2f spritePosition) {
|
||||
material.setSpritePosition(spritePosition);
|
||||
}
|
||||
|
||||
public void setSpritePosition(float x, float y) {
|
||||
material.setSpritePosition(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,22 +4,34 @@ import com.bartlomiejpluta.base.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.core.world.tileset.model.TileSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultTileSetManager implements TileSetManager {
|
||||
private final TextureManager textureManager;
|
||||
private final MeshManager meshManager;
|
||||
private final Map<String, TileSet> tileSets = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public TileSet createTileSet(String tileSetFileName, int rows, int columns) {
|
||||
var texture = textureManager.loadTexture(tileSetFileName);
|
||||
var tileWidth = texture.getWidth() / columns;
|
||||
var tileHeight = texture.getHeight() / rows;
|
||||
var mesh = meshManager.createQuad(tileWidth, tileHeight, 0, 0);
|
||||
return new TileSet(mesh, texture, rows, columns, tileWidth, tileHeight);
|
||||
var tileset = tileSets.get(tileSetFileName);
|
||||
|
||||
if(tileset == null) {
|
||||
log.info("Loading [{}] tileset to cache", tileSetFileName);
|
||||
var texture = textureManager.loadTexture(tileSetFileName);
|
||||
var tileWidth = texture.getWidth() / columns;
|
||||
var tileHeight = texture.getHeight() / rows;
|
||||
var mesh = meshManager.createQuad(tileWidth, tileHeight, 0, 0);
|
||||
tileset = new TileSet(mesh, texture, rows, columns, tileWidth, tileHeight);
|
||||
}
|
||||
|
||||
return tileset;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user