Do some little improvements in the code

This commit is contained in:
2021-02-01 08:53:47 +01:00
parent 93c61e371f
commit a141354439
7 changed files with 74 additions and 15 deletions

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -142,6 +142,7 @@ public class DefaultShaderManager implements ShaderManager {
@Override
public void cleanUp() {
log.info("Cleaning up shaders");
shaders.forEach((name, program) -> program.cleanUp());
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}