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