diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/context/Context.java similarity index 68% rename from api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/context/Context.java index 76efe4ef..ba936a81 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/context/Context.java @@ -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 { diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Direction.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Direction.java similarity index 85% rename from api/src/main/java/com/bartlomiejpluta/base/api/entity/Direction.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Direction.java index fcf01475..df7c74b8 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Direction.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Direction.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.entity; +package com.bartlomiejpluta.base.api.game.entity; import org.joml.Vector2i; diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Entity.java similarity index 91% rename from api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Entity.java index 2f3563e9..f2e90d6c 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Entity.java @@ -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; diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Movement.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Movement.java similarity index 78% rename from api/src/main/java/com/bartlomiejpluta/base/api/entity/Movement.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Movement.java index bf918df9..ef4abf28 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Movement.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/entity/Movement.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.entity; +package com.bartlomiejpluta.base.api.game.entity; import org.joml.Vector2i; diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/input/Key.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/input/Key.java similarity index 97% rename from api/src/main/java/com/bartlomiejpluta/base/api/input/Key.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/input/Key.java index b6983ee1..01175f4e 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/input/Key.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/input/Key.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.input; +package com.bartlomiejpluta.base.api.game.input; public enum Key { KEY_SPACE, diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/input/Keyboard.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/input/Keyboard.java similarity index 57% rename from api/src/main/java/com/bartlomiejpluta/base/api/input/Keyboard.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/input/Keyboard.java index 0452b11b..6d1ae122 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/input/Keyboard.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/input/Keyboard.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.input; +package com.bartlomiejpluta.base.api.game.input; public interface Keyboard { boolean isKeyPressed(Key key); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/GameMap.java similarity index 80% rename from api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/map/GameMap.java index ebd47194..772fa3d6 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/GameMap.java @@ -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 { diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/map/MapHandler.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/MapHandler.java similarity index 58% rename from api/src/main/java/com/bartlomiejpluta/base/api/map/MapHandler.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/map/MapHandler.java index 5b523c07..b06c65c4 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/map/MapHandler.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/MapHandler.java @@ -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); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/PassageAbility.java similarity index 69% rename from api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java rename to api/src/main/java/com/bartlomiejpluta/base/api/game/map/PassageAbility.java index 846a5cda..f10e16d4 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/map/PassageAbility.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.map; +package com.bartlomiejpluta.base.api.game.map; public enum PassageAbility { BLOCK, diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/runner/GameRunner.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/runner/GameRunner.java new file mode 100644 index 00000000..3d2bd6c0 --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/runner/GameRunner.java @@ -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); +} diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/internal/camera/Camera.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/camera/Camera.java new file mode 100644 index 00000000..5233c343 --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/camera/Camera.java @@ -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); +} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Cleanable.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Cleanable.java similarity index 50% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Cleanable.java rename to api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Cleanable.java index 6658402f..19527dcc 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Cleanable.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Cleanable.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.engine.gc; +package com.bartlomiejpluta.base.api.internal.gc; public interface Cleanable { void cleanUp(); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Disposable.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Disposable.java similarity index 50% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Disposable.java rename to api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Disposable.java index c84cf33e..8a48aef5 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/gc/Disposable.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/gc/Disposable.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.engine.gc; +package com.bartlomiejpluta.base.api.internal.gc; public interface Disposable { void dispose(); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/logic/Updatable.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/logic/Updatable.java similarity index 52% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/logic/Updatable.java rename to api/src/main/java/com/bartlomiejpluta/base/api/internal/logic/Updatable.java index de95763a..068faa73 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/logic/Updatable.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/logic/Updatable.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.engine.logic; +package com.bartlomiejpluta.base.api.internal.logic; public interface Updatable { void update(float dt); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/internal/object/Placeable.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/object/Placeable.java new file mode 100644 index 00000000..ebd96a65 --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/object/Placeable.java @@ -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(); +} diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Renderable.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Renderable.java new file mode 100644 index 00000000..1ce84f9c --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Renderable.java @@ -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); +} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/ShaderManager.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderManager.java similarity index 87% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/ShaderManager.java rename to api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderManager.java index 58530af5..232da85f 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/ShaderManager.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderManager.java @@ -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 { diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderProgram.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderProgram.java new file mode 100644 index 00000000..2c34a340 --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/ShaderProgram.java @@ -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(); +} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/uniform/Uniform.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Uniform.java similarity index 54% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/uniform/Uniform.java rename to api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Uniform.java index 5a683f1e..ea6b1ea3 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/uniform/Uniform.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/render/Uniform.java @@ -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); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/internal/window/Window.java b/api/src/main/java/com/bartlomiejpluta/base/api/internal/window/Window.java new file mode 100644 index 00000000..f60fdb3a --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/internal/window/Window.java @@ -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); +} diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/runner/GameRunner.java b/api/src/main/java/com/bartlomiejpluta/base/api/runner/GameRunner.java deleted file mode 100644 index bf88b637..00000000 --- a/api/src/main/java/com/bartlomiejpluta/base/api/runner/GameRunner.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.bartlomiejpluta.base.api.runner; - -import com.bartlomiejpluta.base.api.context.Context; - -public interface GameRunner { - void init(Context context); -} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/engine/DefaultGameEngine.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/engine/DefaultGameEngine.java index 478f3b9d..00eeaebf 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/engine/DefaultGameEngine.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/engine/DefaultGameEngine.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/material/Material.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/material/Material.java index 9d0d9745..5e1b7902 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/material/Material.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/material/Material.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/mesh/Mesh.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/mesh/Mesh.java index 7d98eecb..5b7bf8d6 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/mesh/Mesh.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/mesh/Mesh.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/Texture.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/Texture.java index 46d01725..89c3f842 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/Texture.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/Texture.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/TextureManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/TextureManager.java index 1df619e1..8a848d29 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/TextureManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/object/texture/TextureManager.java @@ -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); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/DefaultRenderer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/DefaultRenderer.java index 499e9e45..688e0e11 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/DefaultRenderer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/DefaultRenderer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderable.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderable.java deleted file mode 100644 index bd933e48..00000000 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderable.java +++ /dev/null @@ -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); -} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderer.java index 917af826..b9eec4ef 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/render/Renderer.java @@ -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(); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/DefaultShaderManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/DefaultShaderManager.java index 4e4b0d93..476fad28 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/DefaultShaderManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/manager/DefaultShaderManager.java @@ -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); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/ShaderProgram.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/GLShaderProgram.java similarity index 79% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/ShaderProgram.java rename to engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/GLShaderProgram.java index 4b86f869..9d2b258c 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/ShaderProgram.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/core/gl/shader/program/GLShaderProgram.java @@ -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,16 +14,16 @@ 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 uniforms = new HashMap<>(); - private ShaderProgram(String vertexShaderCode, String fragmentShaderCode) { + private GLShaderProgram(String vertexShaderCode, String fragmentShaderCode) { this.programId = glCreateProgram(); - if(this.programId == 0) { + if (this.programId == 0) { throw new AppException("Could not create shader program"); } @@ -35,14 +35,14 @@ public class ShaderProgram implements Disposable { private int createShader(String shaderCode, int shaderType) { int shaderId = glCreateShader(shaderType); - if(shaderId == 0) { + if (shaderId == 0) { throw new AppException("Could not create shader of type: %s", shaderType); } glShaderSource(shaderId, shaderCode); glCompileShader(shaderId); - if(glGetShaderi(shaderId, GL_COMPILE_STATUS) == 0) { + if (glGetShaderi(shaderId, GL_COMPILE_STATUS) == 0) { throw new AppException("Could not compile shader code: %s", glGetShaderInfoLog(shaderId, 1024)); } @@ -53,109 +53,126 @@ public class ShaderProgram implements Disposable { private void linkProgram() { glLinkProgram(programId); - if(glGetProgrami(programId, GL_LINK_STATUS) == 0) { + if (glGetProgrami(programId, GL_LINK_STATUS) == 0) { throw new AppException("Could not link shader program: %s", glGetProgramInfoLog(programId, 1024)); } - if(vertexShaderId != 0) { + if (vertexShaderId != 0) { glDetachShader(programId, vertexShaderId); } - if(fragmentShaderId != 0) { + if (fragmentShaderId != 0) { glDetachShader(programId, fragmentShaderId); } glValidateProgram(programId); - if(glGetProgrami(programId, GL_VALIDATE_STATUS) == 0) { + if (glGetProgrami(programId, GL_VALIDATE_STATUS) == 0) { log.warn("Program validation failed: {}", glGetProgramInfoLog(programId, 1024)); } } + @Override public void createUniform(String uniformName) { int location = glGetUniformLocation(programId, uniformName); - if(location < 0) { + if (location < 0) { throw new AppException("Could not find uniform: %s", uniformName); } 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 { - 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); } } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/WindowManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/WindowManager.java index 3ff9bf78..c9860a24 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/WindowManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/WindowManager.java @@ -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); } } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/mesh/MeshManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/mesh/MeshManager.java index ec1eac6b..1d8e77bb 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/mesh/MeshManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/mesh/MeshManager.java @@ -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); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/fps/FPSMonitor.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/fps/FPSMonitor.java index 5e7131cc..e20449a6 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/fps/FPSMonitor.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/fps/FPSMonitor.java @@ -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 { } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/time/DefaultTimeProfilerService.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/time/DefaultTimeProfilerService.java index 19d13607..bbfeda61 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/time/DefaultTimeProfilerService.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/util/profiling/time/DefaultTimeProfilerService.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/AnimatedSprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/AnimatedSprite.java index f928bce1..03be07d8 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/AnimatedSprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/AnimatedSprite.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/Camera.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/DefaultCamera.java similarity index 75% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/Camera.java rename to engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/DefaultCamera.java index 5a65c393..69d3c1e6 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/Camera.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/camera/DefaultCamera.java @@ -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 diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/config/EntitySpriteConfiguration.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/config/EntitySpriteConfiguration.java index 678c89a7..e1c4e47d 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/config/EntitySpriteConfiguration.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/config/EntitySpriteConfiguration.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/manager/EntityManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/manager/EntityManager.java index fe40bac5..7656cbd9 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/manager/EntityManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/manager/EntityManager.java @@ -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 { diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java index 9551b0f0..4c083d8e 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/image/manager/ImageManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/image/manager/ImageManager.java index 28041047..66a0063e 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/image/manager/ImageManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/image/manager/ImageManager.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/Layer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/Layer.java index 9097d4c7..6f5c3c99 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/Layer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/base/Layer.java @@ -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 { diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/color/ColorLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/color/ColorLayer.java index f3fd23d5..e4c7cf27 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/color/ColorLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/color/ColorLayer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/image/ImageLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/image/ImageLayer.java index d0367a7b..e64bf335 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/image/ImageLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/image/ImageLayer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/ObjectLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/ObjectLayer.java index ced30d32..0c2c7419 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/ObjectLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/ObjectLayer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/TileLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/TileLayer.java index 8e75aad3..8dd6c6e9 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/TileLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/TileLayer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java index 3be55156..634ae638 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java index 84a07a50..b0c66d0e 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java index 728ec993..c7072486 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/DefaultMovement.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/DefaultMovement.java index 3db9aadc..3b6a38b9 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/DefaultMovement.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/DefaultMovement.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java index 388221c2..ecb3c48d 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java @@ -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; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Model.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Model.java index 9acb9f80..48479fb3 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Model.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Model.java @@ -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() diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java index 7d9dc001..9a3b9c13 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java @@ -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 diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/manager/TileSetManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/manager/TileSetManager.java index c6be7192..083743e1 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/manager/TileSetManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/manager/TileSetManager.java @@ -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;