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

View File

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

View File

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

View File

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

View File

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

View File

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

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