Extract some interfaces from :engine to :api
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.api.context;
|
||||
package com.bartlomiejpluta.base.api.game.context;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Entity;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
public interface Context {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
package com.bartlomiejpluta.base.api.game.entity;
|
||||
|
||||
import org.joml.Vector2i;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
package com.bartlomiejpluta.base.api.game.entity;
|
||||
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector2i;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
package com.bartlomiejpluta.base.api.game.entity;
|
||||
|
||||
|
||||
import org.joml.Vector2i;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.input;
|
||||
package com.bartlomiejpluta.base.api.game.input;
|
||||
|
||||
public enum Key {
|
||||
KEY_SPACE,
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.input;
|
||||
package com.bartlomiejpluta.base.api.game.input;
|
||||
|
||||
public interface Keyboard {
|
||||
boolean isKeyPressed(Key key);
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.api.map;
|
||||
package com.bartlomiejpluta.base.api.game.map;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Movement;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
public interface GameMap {
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.api.map;
|
||||
package com.bartlomiejpluta.base.api.game.map;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||
import com.bartlomiejpluta.base.api.game.context.Context;
|
||||
import com.bartlomiejpluta.base.api.game.input.Keyboard;
|
||||
|
||||
public interface MapHandler {
|
||||
void init(Context context, GameMap map);
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.api.map;
|
||||
package com.bartlomiejpluta.base.api.game.map;
|
||||
|
||||
public enum PassageAbility {
|
||||
BLOCK,
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.bartlomiejpluta.base.api.game.runner;
|
||||
|
||||
import com.bartlomiejpluta.base.api.game.context.Context;
|
||||
|
||||
public interface GameRunner {
|
||||
void init(Context context);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.bartlomiejpluta.base.api.internal.camera;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.object.Placeable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
public interface Camera extends Placeable {
|
||||
Matrix4f computeViewModelMatrix(Matrix4f modelMatrix);
|
||||
|
||||
void render(Window window, ShaderManager shaderManager);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.engine.gc;
|
||||
package com.bartlomiejpluta.base.api.internal.gc;
|
||||
|
||||
public interface Cleanable {
|
||||
void cleanUp();
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.engine.gc;
|
||||
package com.bartlomiejpluta.base.api.internal.gc;
|
||||
|
||||
public interface Disposable {
|
||||
void dispose();
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.bartlomiejpluta.base.engine.logic;
|
||||
package com.bartlomiejpluta.base.api.internal.logic;
|
||||
|
||||
public interface Updatable {
|
||||
void update(float dt);
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.bartlomiejpluta.base.api.internal.object;
|
||||
|
||||
import org.joml.Matrix4f;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
public interface Placeable {
|
||||
Vector2f getPosition();
|
||||
void setPosition(float x, float y);
|
||||
void setPosition(Vector2f position);
|
||||
void movePosition(float x, float y);
|
||||
void movePosition(Vector2f position);
|
||||
|
||||
float getRotation();
|
||||
void setRotation(float rotation);
|
||||
void moveRotation(float rotation);
|
||||
|
||||
float getScaleX();
|
||||
void setScaleX(float scale);
|
||||
|
||||
float getScaleY();
|
||||
void setScaleY(float scale);
|
||||
|
||||
void setScale(float scale);
|
||||
void setScale(float scaleX, float scaleY);
|
||||
|
||||
Matrix4f getModelMatrix();
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.bartlomiejpluta.base.api.internal.render;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
|
||||
public interface Renderable {
|
||||
void render(Window window, Camera camera, ShaderManager shaderManager);
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.shader.manager;
|
||||
package com.bartlomiejpluta.base.api.internal.render;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.uniform.Uniform;
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import org.joml.*;
|
||||
|
||||
public interface ShaderManager extends Cleanable {
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.bartlomiejpluta.base.api.internal.render;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Disposable;
|
||||
import org.joml.*;
|
||||
|
||||
public interface ShaderProgram extends Disposable {
|
||||
void createUniform(String uniformName);
|
||||
|
||||
void createUniform(String uniformName, Uniform uniform);
|
||||
|
||||
void createUniforms(String uniformName, int size);
|
||||
|
||||
void createUniforms(String uniformName, int size, Uniform uniform);
|
||||
|
||||
void setUniform(String uniformName, int value);
|
||||
|
||||
void setUniform(String uniformName, boolean value);
|
||||
|
||||
void setUniform(String uniformName, float value);
|
||||
|
||||
void setUniform(String uniformName, Vector2f value);
|
||||
|
||||
void setUniform(String uniformName, Vector3f value);
|
||||
|
||||
void setUniform(String uniformName, Vector4f value);
|
||||
|
||||
void setUniform(String uniformName, Matrix3f value);
|
||||
|
||||
void setUniform(String uniformName, Matrix4f value);
|
||||
|
||||
void setUniform(String uniformName, Uniform uniform);
|
||||
|
||||
void setUniform(String uniformName, int index, Uniform uniform);
|
||||
|
||||
void setUniforms(String uniformName, Uniform[] uniforms);
|
||||
|
||||
void use();
|
||||
|
||||
void detach();
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.shader.uniform;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.program.ShaderProgram;
|
||||
package com.bartlomiejpluta.base.api.internal.render;
|
||||
|
||||
public interface Uniform {
|
||||
void createUniform(ShaderProgram shaderProgram, String uniformName);
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.bartlomiejpluta.base.api.internal.window;
|
||||
|
||||
import org.joml.Vector2f;
|
||||
|
||||
public interface Window {
|
||||
void init();
|
||||
|
||||
int getWidth();
|
||||
|
||||
int getHeight();
|
||||
|
||||
Vector2f getSize();
|
||||
|
||||
boolean isResized();
|
||||
|
||||
void setResized(boolean resized);
|
||||
|
||||
boolean shouldClose();
|
||||
|
||||
boolean isKeyPressed(int keyCode);
|
||||
|
||||
void update();
|
||||
|
||||
void clear(float r, float g, float b, float alpha);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.bartlomiejpluta.base.api.runner;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
|
||||
public interface GameRunner {
|
||||
void init(Context context);
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.core.engine;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.gc.OffHeapGarbageCollector;
|
||||
import com.bartlomiejpluta.base.engine.logic.GameLogic;
|
||||
import com.bartlomiejpluta.base.engine.thread.ThreadManager;
|
||||
import com.bartlomiejpluta.base.engine.time.ChronoMeter;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.ui.WindowManager;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.material;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.Texture;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import lombok.Getter;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector4f;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.mesh;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.gc.Disposable;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Disposable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import org.lwjgl.opengl.GL15;
|
||||
import org.lwjgl.system.MemoryStack;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.texture;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Disposable;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.gc.Disposable;
|
||||
import lombok.Getter;
|
||||
import org.joml.Vector2f;
|
||||
import org.lwjgl.system.MemoryStack;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.object.texture;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
|
||||
public interface TextureManager extends Cleanable {
|
||||
Texture loadTexture(String textureFileName);
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.render;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.render;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
|
||||
public interface Renderable {
|
||||
void render(Window window, Camera camera, ShaderManager shaderManager);
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.render;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
|
||||
public interface Renderer extends Cleanable {
|
||||
void init();
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.shader.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.program.ShaderProgram;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.uniform.Uniform;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderProgram;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Uniform;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.program.GLShaderProgram;
|
||||
import com.bartlomiejpluta.base.engine.util.res.ResourcesManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,7 +27,7 @@ public class DefaultShaderManager implements ShaderManager {
|
||||
log.info("Creating {} shader", programName);
|
||||
var vertexShaderCode = resourcesManager.loadResourceAsString(vertexShaderFilename);
|
||||
var fragmentShaderCode = resourcesManager.loadResourceAsString(fragmentShaderFilename);
|
||||
var program = ShaderProgram.compile(vertexShaderCode, fragmentShaderCode);
|
||||
var program = GLShaderProgram.compile(vertexShaderCode, fragmentShaderCode);
|
||||
|
||||
shaders.put(programName, program);
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.core.gl.shader.program;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.uniform.Uniform;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderProgram;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Uniform;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.gc.Disposable;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.joml.*;
|
||||
import org.lwjgl.system.MemoryStack;
|
||||
@@ -14,13 +14,13 @@ import static java.lang.String.format;
|
||||
import static org.lwjgl.opengl.GL20.*;
|
||||
|
||||
@Slf4j
|
||||
public class ShaderProgram implements Disposable {
|
||||
public class GLShaderProgram implements ShaderProgram {
|
||||
private final int programId;
|
||||
private final int vertexShaderId;
|
||||
private final int fragmentShaderId;
|
||||
private final Map<String, Integer> uniforms = new HashMap<>();
|
||||
|
||||
private ShaderProgram(String vertexShaderCode, String fragmentShaderCode) {
|
||||
private GLShaderProgram(String vertexShaderCode, String fragmentShaderCode) {
|
||||
this.programId = glCreateProgram();
|
||||
|
||||
if (this.programId == 0) {
|
||||
@@ -71,6 +71,7 @@ public class ShaderProgram implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createUniform(String uniformName) {
|
||||
int location = glGetUniformLocation(programId, uniformName);
|
||||
|
||||
@@ -81,46 +82,56 @@ public class ShaderProgram implements Disposable {
|
||||
uniforms.put(uniformName, location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createUniform(String uniformName, Uniform uniform) {
|
||||
uniform.createUniform(this, uniformName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createUniforms(String uniformName, int size) {
|
||||
for (int i = 0; i < size; ++i) {
|
||||
createUniform(format("%s[%d]", uniformName, i));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createUniforms(String uniformName, int size, Uniform uniform) {
|
||||
for (int i = 0; i < size; ++i) {
|
||||
createUniform(format("%s[%d]", uniformName, i), uniform);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, int value) {
|
||||
glUniform1i(uniforms.get(uniformName), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, boolean value) {
|
||||
glUniform1i(uniforms.get(uniformName), value ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, float value) {
|
||||
glUniform1f(uniforms.get(uniformName), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Vector2f value) {
|
||||
glUniform2f(uniforms.get(uniformName), value.x, value.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Vector3f value) {
|
||||
glUniform3f(uniforms.get(uniformName), value.x, value.y, value.z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Vector4f value) {
|
||||
glUniform4f(uniforms.get(uniformName), value.x, value.y, value.z, value.w);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Matrix3f value) {
|
||||
try (var stack = MemoryStack.stackPush()) {
|
||||
var buffer = stack.mallocFloat(3 * 3);
|
||||
@@ -129,6 +140,7 @@ public class ShaderProgram implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Matrix4f value) {
|
||||
try (var stack = MemoryStack.stackPush()) {
|
||||
var buffer = stack.mallocFloat(4 * 4);
|
||||
@@ -137,14 +149,17 @@ public class ShaderProgram implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, Uniform uniform) {
|
||||
uniform.setUniform(this, uniformName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniform(String uniformName, int index, Uniform uniform) {
|
||||
setUniform(format("%s[%d]", uniformName, index), uniform);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUniforms(String uniformName, Uniform[] uniforms) {
|
||||
var size = uniforms != null ? uniforms.length : 0;
|
||||
for (int i = 0; i < size; ++i) {
|
||||
@@ -152,10 +167,12 @@ public class ShaderProgram implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void use() {
|
||||
glUseProgram(programId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach() {
|
||||
glUseProgram(0);
|
||||
}
|
||||
@@ -170,6 +187,6 @@ public class ShaderProgram implements Disposable {
|
||||
}
|
||||
|
||||
public static ShaderProgram compile(String vertexShaderCode, String fragmentShaderCode) {
|
||||
return new ShaderProgram(vertexShaderCode, fragmentShaderCode);
|
||||
return new GLShaderProgram(vertexShaderCode, fragmentShaderCode);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.gc;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.input;
|
||||
|
||||
import com.bartlomiejpluta.base.api.input.Key;
|
||||
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.api.game.input.Key;
|
||||
import com.bartlomiejpluta.base.api.game.input.Keyboard;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import static org.lwjgl.glfw.GLFW.*;
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
package com.bartlomiejpluta.base.engine.logic;
|
||||
|
||||
import com.bartlomiejpluta.base.api.runner.GameRunner;
|
||||
import com.bartlomiejpluta.base.api.game.runner.GameRunner;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderer;
|
||||
import com.bartlomiejpluta.base.engine.project.loader.ClassLoader;
|
||||
import com.bartlomiejpluta.base.engine.project.loader.ProjectLoader;
|
||||
import com.bartlomiejpluta.base.engine.project.model.Project;
|
||||
import com.bartlomiejpluta.base.engine.project.model.RenderableContext;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.util.profiling.fps.FPSMonitor;
|
||||
import com.bartlomiejpluta.base.engine.util.profiling.time.TimeProfilerService;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.DefaultCamera;
|
||||
import com.bartlomiejpluta.base.engine.world.entity.manager.EntityManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.manager.ImageManager;
|
||||
import com.bartlomiejpluta.base.engine.world.map.manager.MapManager;
|
||||
@@ -40,7 +41,7 @@ public class DefaultGameLogic implements GameLogic {
|
||||
|
||||
private final RenderableContext context;
|
||||
|
||||
private final Camera camera = new Camera();
|
||||
private final Camera camera = new DefaultCamera();
|
||||
|
||||
private Project project;
|
||||
private GameRunner runner;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.logic;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
|
||||
public interface GameLogic extends Cleanable {
|
||||
void init(Window window);
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package com.bartlomiejpluta.base.engine.project.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||
import com.bartlomiejpluta.base.api.map.MapHandler;
|
||||
import com.bartlomiejpluta.base.api.game.context.Context;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.game.input.Keyboard;
|
||||
import com.bartlomiejpluta.base.api.game.map.MapHandler;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.input.GLFWKeyboard;
|
||||
import com.bartlomiejpluta.base.engine.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.engine.project.loader.ClassLoader;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.engine.world.entity.manager.EntityManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.manager.ImageManager;
|
||||
import com.bartlomiejpluta.base.engine.world.map.manager.MapManager;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.bartlomiejpluta.base.engine.ui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import org.joml.Vector2f;
|
||||
import org.lwjgl.glfw.GLFWErrorCallback;
|
||||
@@ -14,10 +14,9 @@ import static org.lwjgl.glfw.GLFW.*;
|
||||
import static org.lwjgl.opengl.GL11.*;
|
||||
import static org.lwjgl.system.MemoryUtil.NULL;
|
||||
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class Window {
|
||||
public class GLFWWindow implements Window {
|
||||
private final String title;
|
||||
private long windowHandle;
|
||||
private long windowHandle = -1;
|
||||
|
||||
@Getter
|
||||
private int width;
|
||||
@@ -27,9 +26,24 @@ public class Window {
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean resized;
|
||||
private boolean resized = false;
|
||||
|
||||
private boolean initialized = false;
|
||||
|
||||
public GLFWWindow(@NonNull String title, int width, int height) {
|
||||
this.title = title;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
if(initialized) {
|
||||
throw new IllegalStateException("The window is already initialized");
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
|
||||
// Setup an error callback. The default implementation
|
||||
// will print the error message in System.err.
|
||||
GLFWErrorCallback.createPrint(System.err).set();
|
||||
@@ -55,9 +69,9 @@ public class Window {
|
||||
|
||||
// Setup resize callback
|
||||
glfwSetFramebufferSizeCallback(windowHandle, (window, width, height) -> {
|
||||
Window.this.width = width;
|
||||
Window.this.height = height;
|
||||
Window.this.resized = true;
|
||||
GLFWWindow.this.width = width;
|
||||
GLFWWindow.this.height = height;
|
||||
GLFWWindow.this.resized = true;
|
||||
});
|
||||
|
||||
// Setup a key callback. It will be called every time a key is pressed, repeated or released.
|
||||
@@ -92,28 +106,33 @@ public class Window {
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
glfwSwapBuffers(windowHandle);
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isKeyPressed(int keyCode) {
|
||||
return glfwGetKey(windowHandle, keyCode) == GLFW_PRESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear(float r, float g, float b, float alpha) {
|
||||
glClearColor(r, g, b, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldClose() {
|
||||
return glfwWindowShouldClose(windowHandle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector2f getSize() {
|
||||
return new Vector2f(width, height);
|
||||
}
|
||||
|
||||
public static Window create(String title, int width, int height) {
|
||||
return new Window(title, -1, width, height, false);
|
||||
return new GLFWWindow(title, width, height);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.bartlomiejpluta.base.engine.ui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class WindowManager {
|
||||
public Window createWindow(String title, int width, int height) {
|
||||
return Window.create(title, width, height);
|
||||
return GLFWWindow.create(title, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.util.mesh;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
|
||||
public interface MeshManager extends Cleanable {
|
||||
Mesh createQuad(float width, float height, float originX, float originY);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.util.profiling.fps;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||
|
||||
public interface FPSMonitor extends Updatable, Cleanable {
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.util.profiling.time;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.world.animation;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
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.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
package com.bartlomiejpluta.base.engine.world.camera;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Model;
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
public class Camera extends Model {
|
||||
public class DefaultCamera extends Model implements Camera {
|
||||
private final Matrix4f projectionMatrix = new Matrix4f();
|
||||
private final Matrix4f viewMatrix = new Matrix4f();
|
||||
|
||||
@Override
|
||||
public Matrix4f computeViewModelMatrix(Matrix4f modelMatrix) {
|
||||
return new Matrix4f(viewMatrix).mul(modelMatrix);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Window window, ShaderManager shaderManager) {
|
||||
// Update matrices
|
||||
projectionMatrix
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.world.entity.config;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Direction;
|
||||
import lombok.Data;
|
||||
import org.joml.Vector2i;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.world.entity.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.world.entity.model.DefaultEntity;
|
||||
|
||||
public interface EntityManager extends Cleanable {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.entity.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Entity;
|
||||
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.util.math.MathUtil;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.image.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.image.model.Image;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.base;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
|
||||
public interface Layer extends Renderable, Updatable {
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.color;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.engine.world.map.model.DefaultGameMap;
|
||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.image;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.image.model.Image;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.engine.world.map.model.DefaultGameMap;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.object;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.game.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.engine.world.movement.MovableSprite;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.layer.tile;
|
||||
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.model.Tile;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.world.map.asset.GameMapAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.map.model.DefaultGameMap;
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.map.GameMap;
|
||||
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.game.map.GameMap;
|
||||
import com.bartlomiejpluta.base.api.game.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.engine.world.entity.model.DefaultEntity;
|
||||
import com.bartlomiejpluta.base.engine.world.image.model.Image;
|
||||
import com.bartlomiejpluta.base.engine.world.map.layer.base.Layer;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.world.map.serial;
|
||||
|
||||
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.api.game.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.engine.world.image.manager.ImageManager;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.movement;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Movement;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.engine.world.movement;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.game.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||
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.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.engine.world.animation.AnimatedSprite;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.bartlomiejpluta.base.engine.world.object;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.object.Placeable;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -9,7 +10,7 @@ import org.joml.Vector2f;
|
||||
import static java.lang.Math.toRadians;
|
||||
|
||||
@EqualsAndHashCode
|
||||
public abstract class Model {
|
||||
public abstract class Model implements Placeable {
|
||||
private final Matrix4f modelMatrix = new Matrix4f();
|
||||
|
||||
@Getter
|
||||
@@ -27,40 +28,48 @@ public abstract class Model {
|
||||
@Setter
|
||||
protected float scaleY = 1.0f;
|
||||
|
||||
@Override
|
||||
public void setPosition(float x, float y) {
|
||||
position.x = x;
|
||||
position.y = y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPosition(Vector2f position) {
|
||||
this.position.x = position.x;
|
||||
this.position.y = position.y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void movePosition(float x, float y) {
|
||||
position.x += x;
|
||||
position.y += y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void movePosition(Vector2f position) {
|
||||
this.position.x += position.x;
|
||||
this.position.y += position.y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveRotation(float rotation) {
|
||||
this.rotation += rotation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScale(float scale) {
|
||||
this.scaleX = scale;
|
||||
this.scaleY = scale;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScale(float scaleX, float scaleY) {
|
||||
this.scaleX = scaleX;
|
||||
this.scaleY = scaleY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Matrix4f getModelMatrix() {
|
||||
return modelMatrix
|
||||
.identity()
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.bartlomiejpluta.base.engine.world.object;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.internal.render.Renderable;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.api.internal.window.Window;
|
||||
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.render.Renderable;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName;
|
||||
import com.bartlomiejpluta.base.engine.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.ui.Window;
|
||||
import com.bartlomiejpluta.base.engine.world.camera.Camera;
|
||||
import lombok.*;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.bartlomiejpluta.base.engine.world.tileset.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.api.internal.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
|
||||
import com.bartlomiejpluta.base.engine.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.asset.TileSetAsset;
|
||||
import com.bartlomiejpluta.base.engine.world.tileset.model.TileSet;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user