From 060f5e534ccd9cbc8a9068f1809df93db540cc38 Mon Sep 17 00:00:00 2001 From: Speiger Date: Tue, 4 Aug 2026 02:30:55 +0200 Subject: [PATCH] Progress on the engine --- build.gradle | 117 ++--- .../src/coreengine/core/events/api/Event.java | 5 + .../core/events/api/EventPriority.java | 24 + .../core/events/api/ICancelableEvent.java | 6 + .../core/events/api/SubscribeEvent.java | 18 + .../core/events/bus/BusBuilder.java | 36 ++ .../coreengine/core/events/bus/EventBus.java | 189 +++++++ .../core/events/bus/Subscriptions.java | 53 ++ .../core/events/utility/IEventDispatcher.java | 84 ++++ .../utility/IEventExceptionHandler.java | 9 + .../core/events/utility/Listeners.java | 88 ++++ .../core/events/utility/Subscription.java | 8 + .../api/buffer/states/IndeciesType.java | 7 - .../graphics/api/core/CommandBuffer.java | 5 - .../graphics/api/core/GraphicsDevice.java | 30 -- .../graphics/api/core/GraphicsFence.java | 7 - .../api/shader/states/PolygonMode.java | 7 - .../api/shader/states/PrimitiveType.java | 10 - .../api/texture/states/StencilType.java | 6 - .../api/texture/states/SwizzleMask.java | 10 - .../graphics/api/utils/AccessType.java | 7 - .../graphics/api/utils/BufferOwner.java | 6 - .../graphics/api/utils/ExecutionType.java | 6 - .../graphics/api/buffer/VertexBuffer.java | 10 +- .../api/buffer/states/BufferState.java | 2 +- .../api/buffer/states/BufferType.java | 2 +- .../api/buffer/states/IndeciesType.java | 7 + .../graphics/api/compute/BarrierType.java | 2 +- .../graphics/api/compute/ComputePipeline.java | 12 +- .../graphics/api/core/CommandBuffer.java | 5 + .../api/core/ComputeCommandBuffer.java | 16 +- .../graphics/api/core/Graphics.java | 4 +- .../api/core/GraphicsCommandBuffer.java | 16 +- .../api/core/GraphicsCommandQueue.java | 12 +- .../graphics/api/core/GraphicsDevice.java | 31 ++ .../graphics/api/core/GraphicsFence.java | 7 + .../graphics/api/core/GraphicsSurface.java | 2 +- .../graphics/api/core/TimeQueryPool.java | 4 +- .../graphics/api/mesh/Mesh.java | 12 +- .../graphics/api/sampler/Sampler.java | 4 +- .../graphics/api/sampler/SamplerSettings.java | 6 +- .../api/sampler/states/BorderMode.java | 2 +- .../api/sampler/states/SampleMode.java | 2 +- .../graphics/api/shader/BufferAttribute.java | 4 +- .../graphics/api/shader/ColorTarget.java | 4 +- .../graphics/api/shader/DepthTarget.java | 4 +- .../graphics/api/shader/RasterizerState.java | 6 +- .../graphics/api/shader/ShaderPipeline.java | 20 +- .../graphics/api/shader/VertexBinding.java | 6 +- .../graphics/api/shader/states/Bindings.java | 4 +- .../api/shader/states/BlendFactor.java | 2 +- .../api/shader/states/BlendFunction.java | 2 +- .../graphics/api/shader/states/DrawMode.java | 2 +- .../api/shader/states/GraphicsDataType.java | 2 +- .../api/shader/states/PolygonMode.java | 7 + .../api/shader/states/PrimitiveType.java | 10 + .../api/shader/states/ShaderType.java | 2 +- .../graphics/api/target/RenderTarget.java | 2 +- .../graphics/api/target/ScreenTarget.java | 2 +- .../graphics/api/target/TextureTarget.java | 6 +- .../graphics/api/texture/Texture.java | 4 +- .../graphics/api/texture/TextureSettings.java | 10 +- .../api/texture/drawable/Drawable.java | 10 +- .../api/texture/drawable/IDrawable.java | 2 +- .../api/texture/states/StencilType.java | 6 + .../api/texture/states/SwizzleMask.java | 10 + .../api/texture/states/TextureFormat.java | 2 +- .../api/texture/states/TextureType.java | 2 +- .../graphics/api/utils/AccessType.java | 7 + .../graphics/api/utils/AlphaFunction.java | 2 +- .../graphics/api/utils/BufferOwner.java | 6 + .../graphics/api/utils/ExecutionType.java | 6 + .../graphics/api/utils/GraphicsResource.java | 2 +- .../graphics/api/utils/PushableResource.java | 2 +- .../graphics/api/utils/ScissorsManager.java | 2 +- .../graphics/api/vertex/VertexLayout.java | 6 +- .../api/vertex/builder/IVertexBuffer.java | 53 ++ .../api/vertex/builder/IVertexBuilder.java | 16 + .../api/vertex/builder/VertexBuilder.java | 177 +++++++ .../opengl/buffer/GLVertexBuffer.java | 17 +- .../graphics/opengl/core/GLCommandQueue.java | 34 +- .../graphics/opengl/core/GLFence.java | 6 +- .../graphics/opengl/core/GLGraphics.java | 6 +- .../opengl/core/GLGraphicsDevice.java | 72 +-- .../opengl/core/GLImmidateCommandBuffer.java | 42 +- .../core/GLImmidateComputeCommandBuffer.java | 30 +- .../opengl/core/GLRecordingCommandBuffer.java | 46 +- .../core/GLRecordingComputeCommandBuffer.java | 30 +- .../graphics/opengl/core/GLSurface.java | 6 +- .../graphics/opengl/core/GLTimeQueryPool.java | 4 +- .../graphics/opengl/mesh/GLMesh.java | 16 +- .../graphics/opengl/sampler/GLSampler.java | 8 +- .../graphics/opengl/shader/ShaderCache.java | 2 +- .../opengl/shader/ShaderInstance.java | 2 +- .../graphics/opengl/shader/ShaderTracker.java | 2 +- .../opengl/texture/FrameBufferCache.java | 2 +- .../graphics/opengl/texture/GLTexture.java | 8 +- .../graphics/opengl/utils/GLFunctions.java | 4 +- .../opengl/utils/GLScissorsHandler.java | 4 +- .../graphics/opengl/utils/GLStates.java | 26 +- .../graphics/opengl/utils/GLUtils.java | 36 +- .../graphics/opengl/utils/ViewPortStack.java | 2 +- .../opengl/utils/states/BlendState.java | 6 +- .../opengl/utils/states/CullState.java | 2 +- .../opengl/utils/states/FloatState.java | 2 +- .../opengl/utils/states/GLPolygon.java | 6 +- .../graphics/opengl/utils/states/GLState.java | 2 +- .../opengl/utils/states/IGLState.java | 2 +- .../opengl/utils/states/PixelState.java | 2 +- .../opengl/utils/states/SamplerState.java | 2 +- .../opengl/utils/states/ScissorState.java | 2 +- .../opengl/utils/states/TextureState.java | 2 +- .../input/device/AbstractDevice.java | 6 +- .../{ => platform}/input/device/FileDrop.java | 8 +- .../input/device/InputDevice.java | 4 +- .../{ => platform}/input/device/Joystick.java | 10 +- .../{ => platform}/input/device/Keyboard.java | 12 +- .../{ => platform}/input/device/Mouse.java | 10 +- .../input/events/FileEvents.java | 2 +- .../input/events/JoystickEvent.java | 2 +- .../{ => platform}/input/events/KeyEvent.java | 2 +- .../input/events/MouseEvent.java | 2 +- .../{ => platform}/input/window/GLFWUtil.java | 2 +- .../input/window/IWindowListener.java | 2 +- .../{ => platform}/input/window/Monitor.java | 2 +- .../input/window/VideoMode.java | 2 +- .../{ => platform}/input/window/Window.java | 23 +- .../input/window/WindowBuilder.java | 4 +- .../input/window/WindowCallback.java | 2 +- .../input/window/WindowManager.java | 8 +- .../src/coreengine/NewRenderEngineTest.java | 106 ++-- .../coreengine/application/BaseUIManager.java | 188 +++---- .../src/coreengine/math/ShapeUtil.java | 1 + .../math/collision2d/I2DCollision.java | 24 +- .../src/coreengine/math/misc/ColorSpaces.java | 147 ------ .../src/coreengine/math/misc/ColorUtils.java | 125 ----- .../gui/animation/actions/EasedAction.java | 2 +- .../gui/components/base/GuiComponent.java | 2 +- .../rendering/gui/font/TextStyle.java | 2 +- .../rendering/guiOld/GuiComponent.java | 2 +- .../rendering/guiOld/base/GuiScreenBase.java | 2 +- .../components/IconButtonComponent.java | 2 +- .../guiOld/components/ListComponent.java | 2 +- .../guiOld/components/PieComponent.java | 2 +- .../components/ScrollPanelComponent.java | 2 +- .../components/ScrollWindowComponent.java | 2 +- .../components/SingleTabPanelComponent.java | 2 +- .../components/TabbedPanelComponent.java | 2 +- .../guiOld/components/TextComponent.java | 2 +- .../guiOld/components/TooltipPanel.java | 2 +- .../guiOld/components/TreeComponent.java | 2 +- .../guiOld/components/WindowComponent.java | 2 +- .../guiOld/components/icon/TexturedIcon.java | 2 +- .../guiOld/components/list/ExampleEntry.java | 2 +- .../components/special/ConsoleComponent.java | 2 +- .../components/tree/ProfilerTreeEntry.java | 2 +- .../color/ColorPickerWindowComponent.java | 4 +- .../window/debug/PieProfilerWindow.java | 2 +- .../window/debug/TreeProfilerWindow.java | 2 +- .../window/misc/ChoiceComponent.java | 2 +- .../window/misc/MessageComponent.java | 2 +- .../window/misc/TextInputComponent.java | 2 +- .../guiOld/renderer/lexer/TextContext.java | 2 +- .../rendering/input/window/Window.java | 10 +- .../rendering/input/window/WindowManager.java | 4 +- .../rendering/inputOld/window/Window.java | 2 +- .../rendering/models/loader/ModelLoader.java | 2 +- .../shaderOld/uniforms/UniformVec3f.java | 2 +- .../shaderOld/uniforms/UniformVec4f.java | 2 +- .../tesselation/buffer/IVertexBuffer.java | 2 +- .../tesselationOld/IVertexBuilder.java | 2 +- .../textures/base/TextureMetadata.java | 280 +++++------ .../rendering/textures/custom/Drawable.java | 2 +- .../textures/custom/DynamicTexture.java | 4 +- .../rendering/textures/custom/IDrawable.java | 2 +- .../texturesOld/normal/DynamicTexture.java | 462 +++++++++--------- .../coreengine/utils/eventbus/EventBus.java | 1 - .../coreengine/utils/helpers/TextUtil.java | 2 +- .../src/coreengine/math/bits}/BitUtil.java | 2 +- .../src/coreengine/math/bits}/FlagHolder.java | 58 +-- .../src/coreengine/math/bits}/FlagObject.java | 106 ++-- .../math/easing}/EasingFunctions.java | 2 +- .../src/coreengine/math/easing}/IEasing.java | 2 +- 183 files changed, 1970 insertions(+), 1468 deletions(-) create mode 100644 src/events/java/speiger/src/coreengine/core/events/api/Event.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/api/EventPriority.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/api/ICancelableEvent.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/api/SubscribeEvent.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/bus/BusBuilder.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/bus/EventBus.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/bus/Subscriptions.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/utility/IEventDispatcher.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/utility/IEventExceptionHandler.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/utility/Listeners.java create mode 100644 src/events/java/speiger/src/coreengine/core/events/utility/Subscription.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/IndeciesType.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/core/CommandBuffer.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsDevice.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsFence.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PolygonMode.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PrimitiveType.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/StencilType.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/SwizzleMask.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/utils/AccessType.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/utils/BufferOwner.java delete mode 100644 src/graphics/java/speiger/src/coreengine/graphics/api/utils/ExecutionType.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/buffer/VertexBuffer.java (83%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/buffer/states/BufferState.java (66%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/buffer/states/BufferType.java (78%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/IndeciesType.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/compute/BarrierType.java (66%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/compute/ComputePipeline.java (76%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/CommandBuffer.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/ComputeCommandBuffer.java (57%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/Graphics.java (53%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/GraphicsCommandBuffer.java (63%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/GraphicsCommandQueue.java (75%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsDevice.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsFence.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/GraphicsSurface.java (66%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/core/TimeQueryPool.java (55%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/mesh/Mesh.java (85%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/sampler/Sampler.java (60%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/sampler/SamplerSettings.java (88%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/sampler/states/BorderMode.java (59%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/sampler/states/SampleMode.java (64%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/BufferAttribute.java (64%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/ColorTarget.java (79%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/DepthTarget.java (64%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/RasterizerState.java (58%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/ShaderPipeline.java (82%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/VertexBinding.java (51%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/Bindings.java (80%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/BlendFactor.java (76%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/BlendFunction.java (82%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/DrawMode.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/GraphicsDataType.java (94%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PolygonMode.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PrimitiveType.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/shader/states/ShaderType.java (59%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/target/RenderTarget.java (54%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/target/ScreenTarget.java (69%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/target/TextureTarget.java (78%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/Texture.java (71%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/TextureSettings.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/drawable/Drawable.java (92%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/drawable/IDrawable.java (94%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/StencilType.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/SwizzleMask.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/states/TextureFormat.java (91%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/texture/states/TextureType.java (74%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AccessType.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/utils/AlphaFunction.java (63%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/BufferOwner.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ExecutionType.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/utils/GraphicsResource.java (69%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/utils/PushableResource.java (58%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/utils/ScissorsManager.java (94%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/api/vertex/VertexLayout.java (91%) create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuffer.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuilder.java create mode 100644 src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/VertexBuilder.java rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/buffer/GLVertexBuffer.java (84%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLCommandQueue.java (83%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLFence.java (61%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLGraphics.java (79%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLGraphicsDevice.java (80%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLImmidateCommandBuffer.java (82%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLImmidateComputeCommandBuffer.java (81%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLRecordingCommandBuffer.java (81%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLRecordingComputeCommandBuffer.java (84%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLSurface.java (77%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/core/GLTimeQueryPool.java (83%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/mesh/GLMesh.java (78%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/sampler/GLSampler.java (76%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/shader/ShaderCache.java (94%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/shader/ShaderInstance.java (90%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/shader/ShaderTracker.java (75%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/texture/FrameBufferCache.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/texture/GLTexture.java (55%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/GLFunctions.java (63%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/GLScissorsHandler.java (70%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/GLStates.java (64%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/GLUtils.java (84%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/ViewPortStack.java (91%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/BlendState.java (78%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/CullState.java (78%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/FloatState.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/GLPolygon.java (68%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/GLState.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/IGLState.java (51%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/PixelState.java (85%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/SamplerState.java (88%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/ScissorState.java (89%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/graphics/opengl/utils/states/TextureState.java (88%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/AbstractDevice.java (88%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/FileDrop.java (80%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/InputDevice.java (54%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/Joystick.java (90%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/Keyboard.java (82%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/device/Mouse.java (91%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/events/FileEvents.java (92%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/events/JoystickEvent.java (93%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/events/KeyEvent.java (90%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/events/MouseEvent.java (93%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/GLFWUtil.java (94%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/IWindowListener.java (69%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/Monitor.java (95%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/VideoMode.java (87%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/Window.java (91%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/WindowBuilder.java (92%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/WindowCallback.java (91%) rename src/graphics/java/speiger/src/coreengine/{ => platform}/input/window/WindowManager.java (93%) delete mode 100644 src/main/java/speiger/src/coreengine/math/misc/ColorSpaces.java delete mode 100644 src/main/java/speiger/src/coreengine/math/misc/ColorUtils.java rename src/{main/java/speiger/src/coreengine/math => math/java/speiger/src/coreengine/math/bits}/BitUtil.java (97%) rename src/{main/java/speiger/src/coreengine/utils/collections => math/java/speiger/src/coreengine/math/bits}/FlagHolder.java (91%) rename src/{main/java/speiger/src/coreengine/utils/collections => math/java/speiger/src/coreengine/math/bits}/FlagObject.java (90%) rename src/{main/java/speiger/src/coreengine/math/misc => math/java/speiger/src/coreengine/math/easing}/EasingFunctions.java (97%) rename src/{main/java/speiger/src/coreengine/math/misc => math/java/speiger/src/coreengine/math/easing}/IEasing.java (96%) diff --git a/build.gradle b/build.gradle index e8b72fe..cdb1f82 100644 --- a/build.gradle +++ b/build.gradle @@ -16,39 +16,33 @@ eclipse { } sourceSets { - math { - java {} - } - assets { - java {} - } - graphics { - compileClasspath += sourceSets.math.output - runtimeClasspath += sourceSets.math.output - java {} - } - gui { - compileClasspath += sourceSets.math.output + sourceSets.graphics.output - runtimeClasspath += sourceSets.math.output + sourceSets.graphics.output - java {} - } - main { - compileClasspath += sourceSets.math.output - runtimeClasspath += sourceSets.math.output - } - + math + events + assets + graphics + gui + main } + configurations { - graphics.extendsFrom implementation - graphics.extendsFrom runtime - graphics.extendsFrom mathRuntime - - gui.extendsFrom mathRuntime - gui.extendsFrom graphicsRuntime - implementation.extendsFrom mathRuntime + commonImplementation + assetsImplementation.extendsFrom(eventsImplementation) + graphicsImplementation.extendsFrom(mathImplementation, assetsImplementation) + guiImplementation.extendsFrom(graphicsImplementation) + implementation.extendsFrom(guiImplementation) } + +sourceSets.all { sourceSet -> + String implementationConfigName = sourceSet.implementationConfigurationName + + configurations.named(implementationConfigName).configure { + extendsFrom(configurations.named("commonImplementation").get()) + } +} + + repositories { mavenCentral() maven { @@ -60,43 +54,51 @@ repositories { dependencies { - //LWJGL 3 - implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion") + assetsImplementation sourceSets.events.output + graphicsImplementation sourceSets.math.output + graphicsImplementation sourceSets.assets.output + guiImplementation sourceSets.graphics.output + implementation sourceSets.gui.output - implementation "org.lwjgl:lwjgl" - implementation "org.lwjgl:lwjgl-glfw" - implementation "org.lwjgl:lwjgl-jemalloc" - implementation "org.lwjgl:lwjgl-openal" - implementation "org.lwjgl:lwjgl-opengl" - implementation "org.lwjgl:lwjgl-stb" - implementation "org.lwjgl:lwjgl-nfd" - implementation "org.lwjgl:lwjgl-freetype" - implementation "org.lwjgl:lwjgl-harfbuzz" - implementation "org.lwjgl:lwjgl-nanovg" - implementation "org.lwjgl:lwjgl::$lwjglNatives" - implementation "org.lwjgl:lwjgl-glfw::$lwjglNatives" - implementation "org.lwjgl:lwjgl-jemalloc::$lwjglNatives" - implementation "org.lwjgl:lwjgl-openal::$lwjglNatives" - implementation "org.lwjgl:lwjgl-opengl::$lwjglNatives" - implementation "org.lwjgl:lwjgl-stb::$lwjglNatives" - implementation "org.lwjgl:lwjgl-nfd::$lwjglNatives" - implementation "org.lwjgl:lwjgl-freetype::$lwjglNatives" - implementation "org.lwjgl:lwjgl-harfbuzz::$lwjglNatives" - implementation "org.lwjgl:lwjgl-nanovg::$lwjglNatives" - implementation "org.jspecify:jspecify:1.0.0" + //LWJGL 3 + commonImplementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion") + + commonImplementation "org.lwjgl:lwjgl" + commonImplementation "org.lwjgl:lwjgl-glfw" + commonImplementation "org.lwjgl:lwjgl-jemalloc" + commonImplementation "org.lwjgl:lwjgl-openal" + commonImplementation "org.lwjgl:lwjgl-opengl" + commonImplementation "org.lwjgl:lwjgl-stb" + commonImplementation "org.lwjgl:lwjgl-nfd" + commonImplementation "org.lwjgl:lwjgl-freetype" + commonImplementation "org.lwjgl:lwjgl-harfbuzz" + commonImplementation "org.lwjgl:lwjgl-nanovg" + commonImplementation "org.lwjgl:lwjgl::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-glfw::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-jemalloc::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-openal::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-opengl::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-stb::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-nfd::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-freetype::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-harfbuzz::$lwjglNatives" + commonImplementation "org.lwjgl:lwjgl-nanovg::$lwjglNatives" + commonImplementation "org.jspecify:jspecify:1.0.0" //Gson - implementation 'com.google.code.gson:gson:2.8.6' + commonImplementation 'com.google.code.gson:gson:2.8.6' //Primitive Collections - implementation 'de.speiger:Primitive-Collections:1.0.0' - mathImplementation 'de.speiger:Primitive-Collections:1.0.0' + commonImplementation 'de.speiger:Primitive-Collections:1.0.0' } jar { manifest { - attributes "Main-Class": 'speiger.src.coreengine.NewInputTest' + attributes "Main-Class": 'speiger.src.coreengine.NewRenderEngineTest' } + sourceSets.each { ss -> + from ss.output + } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) @@ -106,8 +108,11 @@ jar { } task srcJar(type: Jar) { - from sourceSets.main.allSource archiveClassifier = 'sources' + + sourceSets.each { ss -> + from ss.allSource + } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) diff --git a/src/events/java/speiger/src/coreengine/core/events/api/Event.java b/src/events/java/speiger/src/coreengine/core/events/api/Event.java new file mode 100644 index 0000000..51123b9 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/api/Event.java @@ -0,0 +1,5 @@ +package speiger.src.coreengine.core.events.api; + +public class Event { + +} diff --git a/src/events/java/speiger/src/coreengine/core/events/api/EventPriority.java b/src/events/java/speiger/src/coreengine/core/events/api/EventPriority.java new file mode 100644 index 0000000..205187f --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/api/EventPriority.java @@ -0,0 +1,24 @@ +package speiger.src.coreengine.core.events.api; + +public enum EventPriority +{ + HIGH(0), + MEDIUM(1), + LOW(2); + + int priority; + + static final EventPriority[] PRIORITIES = new EventPriority[] {HIGH, MEDIUM, LOW}; + + private EventPriority(int id) { + priority = id; + } + + public int getPriority() { + return priority; + } + + public static EventPriority[] getPriorities() { + return PRIORITIES; + } +} diff --git a/src/events/java/speiger/src/coreengine/core/events/api/ICancelableEvent.java b/src/events/java/speiger/src/coreengine/core/events/api/ICancelableEvent.java new file mode 100644 index 0000000..674ec7a --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/api/ICancelableEvent.java @@ -0,0 +1,6 @@ +package speiger.src.coreengine.core.events.api; + +public interface ICancelableEvent { + void setCanceled(boolean value); + boolean isCanceled(); +} diff --git a/src/events/java/speiger/src/coreengine/core/events/api/SubscribeEvent.java b/src/events/java/speiger/src/coreengine/core/events/api/SubscribeEvent.java new file mode 100644 index 0000000..1320cda --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/api/SubscribeEvent.java @@ -0,0 +1,18 @@ +package speiger.src.coreengine.core.events.api; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target({TYPE, FIELD, METHOD}) +public @interface SubscribeEvent +{ + public EventPriority priority() default EventPriority.MEDIUM; + + public Class value() default Event.class; +} diff --git a/src/events/java/speiger/src/coreengine/core/events/bus/BusBuilder.java b/src/events/java/speiger/src/coreengine/core/events/bus/BusBuilder.java new file mode 100644 index 0000000..0e60485 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/bus/BusBuilder.java @@ -0,0 +1,36 @@ +package speiger.src.coreengine.core.events.bus; + +import java.util.Objects; +import java.util.Optional; +import java.util.function.Predicate; + +import speiger.src.coreengine.core.events.api.Event; +import speiger.src.coreengine.core.events.utility.IEventDispatcher; +import speiger.src.coreengine.core.events.utility.IEventExceptionHandler; + +public class BusBuilder { + IEventDispatcher dispatcher = IEventDispatcher.DIRECT; + Optional exceptions = Optional.empty(); + Predicate> filter = _ -> true; + boolean checkType = false; + + public BusBuilder dispatcher(IEventDispatcher dispatcher) { + this.dispatcher = Objects.requireNonNull(dispatcher, "A Dispatcher is required"); + return this; + } + + public BusBuilder exceptions(IEventExceptionHandler exceptions) { + this.exceptions = Optional.ofNullable(exceptions); + return this; + } + + public BusBuilder filter(Predicate> filter) { + this.filter = Objects.requireNonNull(filter, "A Filter is required"); + checkType = true; + return this; + } + + public EventBus build() { + return new EventBus(this); + } +} diff --git a/src/events/java/speiger/src/coreengine/core/events/bus/EventBus.java b/src/events/java/speiger/src/coreengine/core/events/bus/EventBus.java new file mode 100644 index 0000000..2dad2a3 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/bus/EventBus.java @@ -0,0 +1,189 @@ +package speiger.src.coreengine.core.events.bus; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandleInfo; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodHandles.Lookup; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.maps.impl.concurrent.Object2ObjectConcurrentOpenHashMap; +import speiger.src.coreengine.core.events.api.Event; +import speiger.src.coreengine.core.events.api.EventPriority; +import speiger.src.coreengine.core.events.api.SubscribeEvent; +import speiger.src.coreengine.core.events.utility.IEventDispatcher; +import speiger.src.coreengine.core.events.utility.IEventExceptionHandler; +import speiger.src.coreengine.core.events.utility.Listeners; +import speiger.src.coreengine.core.events.utility.Subscription; + +public class EventBus implements IEventExceptionHandler { + private static final Lookup LOOKUP = MethodHandles.lookup(); + IEventDispatcher dispatcher; + IEventExceptionHandler exceptions; + Predicate> filter; + boolean checkType; + boolean shutdown = false; + + Map, Listeners> listeners = new Object2ObjectConcurrentOpenHashMap<>(); + + EventBus(BusBuilder builder) { + dispatcher = builder.dispatcher; + exceptions = builder.exceptions.orElse(this); + checkType = builder.checkType; + filter = builder.filter; + } + + public static BusBuilder builder() { + return new BusBuilder(); + } + + public Subscriptions create() { + return new Subscriptions(this); + } + + public T post(T event) { + if(shutdown) throw new IllegalStateException("Bus is shutdown"); + validateType(event.getClass()); + Listeners listener = listeners.get(event.getClass()); + if(listener == null) return event; + dispatcher.post(listener.getListeners(), event, exceptions); + return event; + } + + public CompletableFuture postAsync(T event) { + if(shutdown) throw new IllegalStateException("Bus is shutdown"); + return CompletableFuture.supplyAsync(() -> post(event)); + } + + public CompletableFuture postAsync(T event, Executor executor) { + if(shutdown) throw new IllegalStateException("Bus is shutdown"); + return CompletableFuture.supplyAsync(() -> post(event), executor); + } + + @Override + public void handleException(Event event, Consumer[] listeners, int index, Throwable crash) { + StringBuilder builder = new StringBuilder(); + builder.append("Event ["+event.getClass()+"] caused an Exception: ").append(crash.getMessage()).append('\n'); + builder.append('\t').append("At Index=").append(index).append('\n'); + builder.append("Listeners: "); + for (int x = 0; x < listeners.length; x++) { + builder.append("\t\t").append(x).append(": ").append(listeners[x]).append('\n'); + } + StringWriter exception = new StringWriter(); + crash.printStackTrace(new PrintWriter(exception)); + builder.append(exception.getBuffer()); + //TODO implement logging + System.err.println(builder.toString()); + } + + Subscription register(Class clz, EventPriority prio, Consumer listener) { + validateType(clz); + registerListener(clz).addListener(prio, cast(listener)); + return new EventListener(castClass(clz), cast(listener)); + } + + List register(Object obj, boolean superClasses) { + final List list = new ObjectArrayList<>(); + try { + register(obj.getClass().getDeclaredAnnotation(SubscribeEvent.class), obj, list); + find(obj.getClass(), superClasses, Class::getDeclaredMethods, t -> { + try { + t.setAccessible(true); + SubscribeEvent data = t.getAnnotation(SubscribeEvent.class); + if(data == null) return; + Consumer listener = new MethodListener(LOOKUP.unreflect(t).bindTo(obj)); + Class clz = castClass(t.getParameterTypes()[0]); + validateType(clz); + registerListener(clz).addListener(data.priority(), listener); + list.add(new EventListener(clz, listener)); + } + catch(Exception e) { e.printStackTrace(); } + }); + find(obj.getClass(), superClasses, Class::getDeclaredFields, t -> { + try { + t.setAccessible(true); + register(t.getAnnotation(SubscribeEvent.class), t.get(obj), list); + } + catch(Exception e) { e.printStackTrace(); } + }); + } + catch(Exception e) { e.printStackTrace(); } + return list; + } + + private synchronized Listeners registerListener(Class event) { + Listeners result = listeners.get(event); + if(result == null) { + result = event == Event.class ? new Listeners() : new Listeners(registerListener(castClass(event.getSuperclass()))); + listeners.put(event, result); + } + return result; + } + + public class EventListener implements Subscription { + Class event; + Consumer listener; + + public EventListener(Class event, Consumer listener) { + this.event = event; + this.listener = listener; + } + + @Override + public void unsubscribe() { registerListener(event).removeListeners(listener); } + @Override + public Class type() { return event; } + } + + public static record MethodListener(MethodHandle handle) implements Consumer { + @Override + public void accept(Event t) { + try { handle.invoke(t); } + catch(Throwable e) { e.printStackTrace(); } + } + + @Override + public final String toString() { + MethodHandleInfo type = LOOKUP.revealDirect(handle); + return String.format("%s(%s)", type.getDeclaringClass().getCanonicalName(), String.join(", ", type.getMethodType().parameterList().stream().map(Class::getSimpleName).toList())); + } + } + + private void register(SubscribeEvent data, Object obj, List listeners) { + if(data == null || !(obj instanceof Consumer)) return; + validateType(data.value()); + registerListener(data.value()).addListener(data.priority(), cast(obj)); + listeners.add(new EventListener(castClass(data.value()), cast(obj))); + } + + private void find(Class clz, boolean superClasses, Function, T[]> mapper, Consumer result) { + do { + for(T value : mapper.apply(clz)) result.accept(value); + clz = clz.getSuperclass(); + } + while(clz != Object.class && superClasses); + } + + private void validateType(Class type) { + if(checkType && !filter.test(type)) throw new IllegalStateException("Event ["+type.getSimpleName()+"] is not allowed with this EventBus"); + } + + @SuppressWarnings("unchecked") + private Consumer cast(Object obj) { + return (Consumer) obj; + } + + @SuppressWarnings("unchecked") + private Class castClass(Class clz) { + return (Class) clz; + } + +} diff --git a/src/events/java/speiger/src/coreengine/core/events/bus/Subscriptions.java b/src/events/java/speiger/src/coreengine/core/events/bus/Subscriptions.java new file mode 100644 index 0000000..1ee0c42 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/bus/Subscriptions.java @@ -0,0 +1,53 @@ +package speiger.src.coreengine.core.events.bus; + +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.coreengine.core.events.api.Event; +import speiger.src.coreengine.core.events.api.EventPriority; +import speiger.src.coreengine.core.events.utility.Subscription; + +public class Subscriptions { + List subscriptions = new ObjectArrayList<>(); + EventBus owner; + + Subscriptions(EventBus owner) { + this.owner = owner; + } + + public Subscriptions on(Class clz, Consumer event) { + return on(clz, EventPriority.MEDIUM, event); + } + + public Subscriptions on(Class clz, EventPriority priority, Consumer event) { + subscriptions.add(owner.register(clz, priority, event)); + return this; + } + + public Subscriptions register(Object obj) { + subscriptions.addAll(owner.register(obj, false)); + return this; + } + + public Subscriptions registerRecursive(Object obj) { + subscriptions.addAll(owner.register(obj, true)); + return this; + } + + public void unsubscripe(Class subType) { + for(Iterator iter = subscriptions.iterator();iter.hasNext();) { + Subscription sub = iter.next(); + if(!Objects.equals(sub.type(), subType)) continue; + sub.unsubscribe(); + iter.remove(); + } + } + + public void unsubscibe() { + subscriptions.forEach(Subscription::unsubscribe); + subscriptions.clear(); + } +} diff --git a/src/events/java/speiger/src/coreengine/core/events/utility/IEventDispatcher.java b/src/events/java/speiger/src/coreengine/core/events/utility/IEventDispatcher.java new file mode 100644 index 0000000..bf54ef2 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/utility/IEventDispatcher.java @@ -0,0 +1,84 @@ +package speiger.src.coreengine.core.events.utility; + +import java.util.function.Consumer; + +import speiger.src.collections.objects.maps.impl.hash.Object2LongLinkedOpenHashMap; +import speiger.src.collections.objects.maps.interfaces.Object2LongMap; +import speiger.src.coreengine.core.events.api.Event; +import speiger.src.coreengine.core.events.api.ICancelableEvent; + +public interface IEventDispatcher { + public static final IEventDispatcher DIRECT = new Direct(); + + void post(Consumer[] listeners, Event toPost, IEventExceptionHandler exceptions); + + + public static class Direct implements IEventDispatcher { + @Override + public void post(Consumer[] listeners, Event toPost, IEventExceptionHandler exceptions) { + int index = 0; + try { + if(toPost instanceof ICancelableEvent cancelable) { + for(;index output; + + public Profiled(Consumer output) { + this.output = output; + } + + @Override + @SuppressWarnings("unchecked") + public void post(Consumer[] listeners, Event toPost, IEventExceptionHandler exceptions) { + long start = 0L; + long[] results = new long[listeners.length]; + int index = 0; + try { + if(toPost instanceof ICancelableEvent cancelable) { + for(;index)toPost.getClass(), new Object2LongLinkedOpenHashMap<>(listeners, results))); + } + } + + private long handle(Consumer listener, Event event) { + long time = System.nanoTime(); + listener.accept(event); + return System.nanoTime() - time; + } + + } + + public record ProfileOutput(long total, Class clz, Object2LongMap> perEvent) {} +} diff --git a/src/events/java/speiger/src/coreengine/core/events/utility/IEventExceptionHandler.java b/src/events/java/speiger/src/coreengine/core/events/utility/IEventExceptionHandler.java new file mode 100644 index 0000000..5f81237 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/utility/IEventExceptionHandler.java @@ -0,0 +1,9 @@ +package speiger.src.coreengine.core.events.utility; + +import java.util.function.Consumer; + +import speiger.src.coreengine.core.events.api.Event; + +public interface IEventExceptionHandler { + void handleException(Event event, Consumer[] listeners, int index, Throwable crash); +} diff --git a/src/events/java/speiger/src/coreengine/core/events/utility/Listeners.java b/src/events/java/speiger/src/coreengine/core/events/utility/Listeners.java new file mode 100644 index 0000000..62d941a --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/utility/Listeners.java @@ -0,0 +1,88 @@ +package speiger.src.coreengine.core.events.utility; + +import java.util.List; +import java.util.Set; +import java.util.function.Consumer; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; +import speiger.src.coreengine.core.events.api.Event; +import speiger.src.coreengine.core.events.api.EventPriority; + +public class Listeners +{ + @SuppressWarnings("unchecked") + Set>[] unsortedListeners = new Set[EventPriority.getPriorities().length]; + @SuppressWarnings("unchecked") + Consumer[] listeners = new Consumer[0]; + boolean rebuild = true; + Listeners parent; + List childs = null; + + public Listeners() { + for(int i = 0;i>(); + } + } + + public Listeners(Listeners parent) { + this(); + this.parent = parent; + this.parent.addChild(this); + } + + public void addChild(Listeners listener) { + if(childs == null) childs = new ObjectArrayList<>(); + childs.add(listener); + } + + public void addListener(EventPriority priority, Consumer listener) { + synchronized(unsortedListeners) { + if(unsortedListeners[priority.getPriority()].add(listener)) markDirty(); + } + } + + public void removeListeners(Consumer listener) { + synchronized(unsortedListeners) { + for(int i = 0,m=unsortedListeners.length;i> events) { + synchronized(unsortedListeners) { + events.addAll(unsortedListeners[entry.getPriority()]); + } + if(parent != null) parent.getListeners(entry, events); + } + + public Consumer[] getListeners() { + if(rebuild) { + synchronized(this) { + if(rebuild) rebuildListeners(); + } + } + return listeners; + } + + private void markDirty() { + if(rebuild) return; + rebuild = true; + if(childs != null) { + for(int i = 0,m=childs.size();i> result = new ObjectArrayList<>(); + for(EventPriority entry : EventPriority.getPriorities()) { + getListeners(entry, result); + } + listeners = result.toArray(new Consumer[result.size()]); + } +} diff --git a/src/events/java/speiger/src/coreengine/core/events/utility/Subscription.java b/src/events/java/speiger/src/coreengine/core/events/utility/Subscription.java new file mode 100644 index 0000000..3aa5db0 --- /dev/null +++ b/src/events/java/speiger/src/coreengine/core/events/utility/Subscription.java @@ -0,0 +1,8 @@ +package speiger.src.coreengine.core.events.utility; + +import speiger.src.coreengine.core.events.api.Event; + +public interface Subscription { + void unsubscribe(); + Class type(); +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/IndeciesType.java b/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/IndeciesType.java deleted file mode 100644 index f65af13..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/IndeciesType.java +++ /dev/null @@ -1,7 +0,0 @@ -package speiger.src.coreengine.graphics.api.buffer.states; - -public enum IndeciesType { - BYTE, - SHORT, - INT; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/CommandBuffer.java b/src/graphics/java/speiger/src/coreengine/graphics/api/core/CommandBuffer.java deleted file mode 100644 index 9d1f419..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/CommandBuffer.java +++ /dev/null @@ -1,5 +0,0 @@ -package speiger.src.coreengine.graphics.api.core; - -public interface CommandBuffer { - int commandCount(); -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsDevice.java b/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsDevice.java deleted file mode 100644 index 23187b2..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsDevice.java +++ /dev/null @@ -1,30 +0,0 @@ -package speiger.src.coreengine.graphics.api.core; - -import java.util.List; - -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.compute.ComputePipeline; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.sampler.SamplerSettings; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.TextureSettings; -import speiger.src.coreengine.graphics.api.utils.ExecutionType; -import speiger.src.coreengine.input.window.Window; - -public interface GraphicsDevice { - Window window(); - GraphicsSurface createSurface(); - GraphicsCommandBuffer createCommandBuffer(ExecutionType type); - GraphicsCommandQueue queue(); - VertexBuffer createBuffer(BufferType type, BufferState state); - VertexBuffer createBuffer(BufferType type, BufferState state, int allocatedBytes); - Texture createTexture(TextureSettings data, int width, int height); - Sampler createSampler(SamplerSettings settings); - Mesh createMesh(Mesh.Builder builder); - TimeQueryPool createQueryPool(int size); - void preloadPipelines(List graphics, List compute); -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsFence.java b/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsFence.java deleted file mode 100644 index b34b64a..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsFence.java +++ /dev/null @@ -1,7 +0,0 @@ -package speiger.src.coreengine.graphics.api.core; - -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; - -public interface GraphicsFence extends GraphicsResource { - boolean awaitCompletion(long timeout); -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PolygonMode.java b/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PolygonMode.java deleted file mode 100644 index 569c7ef..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PolygonMode.java +++ /dev/null @@ -1,7 +0,0 @@ -package speiger.src.coreengine.graphics.api.shader.states; - -public enum PolygonMode { - POINT, - LINE, - FILL; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PrimitiveType.java b/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PrimitiveType.java deleted file mode 100644 index 4b8bc0f..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/PrimitiveType.java +++ /dev/null @@ -1,10 +0,0 @@ -package speiger.src.coreengine.graphics.api.shader.states; - -public enum PrimitiveType { - BYTE, - SHORT, - INT, - LONG, - FLOAT, - DOUBLE; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/StencilType.java b/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/StencilType.java deleted file mode 100644 index 36c6ea8..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/StencilType.java +++ /dev/null @@ -1,6 +0,0 @@ -package speiger.src.coreengine.graphics.api.texture.states; - -public enum StencilType { - GL_COMPARE_REF_TO_TEXTURE, - GL_NONE -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/SwizzleMask.java b/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/SwizzleMask.java deleted file mode 100644 index 999af38..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/SwizzleMask.java +++ /dev/null @@ -1,10 +0,0 @@ -package speiger.src.coreengine.graphics.api.texture.states; - -public enum SwizzleMask { - ZERO, - ONE, - RED, - GREEN, - BLUE, - ALPHA; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/AccessType.java b/src/graphics/java/speiger/src/coreengine/graphics/api/utils/AccessType.java deleted file mode 100644 index 7c57413..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/AccessType.java +++ /dev/null @@ -1,7 +0,0 @@ -package speiger.src.coreengine.graphics.api.utils; - -public enum AccessType { - READ, - WRITE, - BOTH; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/BufferOwner.java b/src/graphics/java/speiger/src/coreengine/graphics/api/utils/BufferOwner.java deleted file mode 100644 index 0f28774..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/BufferOwner.java +++ /dev/null @@ -1,6 +0,0 @@ -package speiger.src.coreengine.graphics.api.utils; - -public enum BufferOwner { - KEPT, - GIVEN; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/ExecutionType.java b/src/graphics/java/speiger/src/coreengine/graphics/api/utils/ExecutionType.java deleted file mode 100644 index de3eb38..0000000 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/ExecutionType.java +++ /dev/null @@ -1,6 +0,0 @@ -package speiger.src.coreengine.graphics.api.utils; - -public enum ExecutionType { - IMMEDIATE, - RECORDED; -} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/VertexBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/VertexBuffer.java similarity index 83% rename from src/graphics/java/speiger/src/coreengine/graphics/api/buffer/VertexBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/VertexBuffer.java index da73d85..97679b4 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/VertexBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/VertexBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.buffer; +package speiger.src.coreengine.platform.graphics.api.buffer; import java.nio.Buffer; import java.nio.ByteBuffer; @@ -8,10 +8,10 @@ import org.jspecify.annotations.NonNull; import org.lwjgl.system.MemoryUtil; import speiger.src.collections.ints.misc.pairs.IntObjectPair; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.utils.BufferOwner; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.utils.BufferOwner; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public abstract class VertexBuffer implements GraphicsResource { protected final BufferType type; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferState.java similarity index 66% rename from src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferState.java index 3a69591..13ba81a 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.buffer.states; +package speiger.src.coreengine.platform.graphics.api.buffer.states; public enum BufferState { STATIC_DRAW, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferType.java similarity index 78% rename from src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferType.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferType.java index 9da4a92..b246155 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/buffer/states/BufferType.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/BufferType.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.buffer.states; +package speiger.src.coreengine.platform.graphics.api.buffer.states; public enum BufferType { ARRAY_BUFFER, diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/IndeciesType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/IndeciesType.java new file mode 100644 index 0000000..3d97204 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/buffer/states/IndeciesType.java @@ -0,0 +1,7 @@ +package speiger.src.coreengine.platform.graphics.api.buffer.states; + +public enum IndeciesType { + BYTE, + SHORT, + INT; +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/compute/BarrierType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/BarrierType.java similarity index 66% rename from src/graphics/java/speiger/src/coreengine/graphics/api/compute/BarrierType.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/BarrierType.java index fe15833..972fb50 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/compute/BarrierType.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/BarrierType.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.compute; +package speiger.src.coreengine.platform.graphics.api.compute; public enum BarrierType { MESH_BUFFER, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/compute/ComputePipeline.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/ComputePipeline.java similarity index 76% rename from src/graphics/java/speiger/src/coreengine/graphics/api/compute/ComputePipeline.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/ComputePipeline.java index e511027..4350a67 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/compute/ComputePipeline.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/compute/ComputePipeline.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.compute; +package speiger.src.coreengine.platform.graphics.api.compute; import java.util.List; import java.util.Objects; @@ -6,11 +6,11 @@ import java.util.Objects; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; import speiger.src.coreengine.assets.api.ID; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferMode; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureMode; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureMode; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; public record ComputePipeline(ID id, ID shader, List uniforms, List textures) { diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/CommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/CommandBuffer.java new file mode 100644 index 0000000..3dd6760 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/CommandBuffer.java @@ -0,0 +1,5 @@ +package speiger.src.coreengine.platform.graphics.api.core; + +public interface CommandBuffer { + int commandCount(); +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/ComputeCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/ComputeCommandBuffer.java similarity index 57% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/ComputeCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/ComputeCommandBuffer.java index ac4b25f..eae43cc 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/ComputeCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/ComputeCommandBuffer.java @@ -1,12 +1,12 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.compute.BarrierType; -import speiger.src.coreengine.graphics.api.compute.ComputePipeline; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.compute.BarrierType; +import speiger.src.coreengine.platform.graphics.api.compute.ComputePipeline; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public interface ComputeCommandBuffer extends GraphicsResource, CommandBuffer { ComputeCommandBuffer begin(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/Graphics.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/Graphics.java similarity index 53% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/Graphics.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/Graphics.java index 745219f..5c29dd4 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/Graphics.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/Graphics.java @@ -1,6 +1,6 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.input.window.Window; public interface Graphics { public String getName(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandBuffer.java similarity index 63% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandBuffer.java index 8a3f537..5cee375 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandBuffer.java @@ -1,12 +1,12 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public interface GraphicsCommandBuffer extends GraphicsResource, CommandBuffer { GraphicsCommandBuffer begin(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandQueue.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandQueue.java similarity index 75% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandQueue.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandQueue.java index ebbe2d4..87a6382 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsCommandQueue.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsCommandQueue.java @@ -1,11 +1,11 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.target.RenderTarget; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; -import speiger.src.coreengine.graphics.api.utils.PushableResource; import speiger.src.coreengine.math.vector.floats.Vec4f; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.target.RenderTarget; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; +import speiger.src.coreengine.platform.graphics.api.utils.PushableResource; public interface GraphicsCommandQueue { public static final int CLEAR_COLOR = 1; diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsDevice.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsDevice.java new file mode 100644 index 0000000..c726f3b --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsDevice.java @@ -0,0 +1,31 @@ +package speiger.src.coreengine.platform.graphics.api.core; + +import java.util.List; + +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.compute.ComputePipeline; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.sampler.SamplerSettings; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.TextureSettings; +import speiger.src.coreengine.platform.graphics.api.utils.ExecutionType; +import speiger.src.coreengine.platform.input.window.Window; + +public interface GraphicsDevice { + public static final ScopedValue SCOPE = ScopedValue.newInstance(); + Window window(); + GraphicsSurface createSurface(); + GraphicsCommandBuffer createCommandBuffer(ExecutionType type); + GraphicsCommandQueue queue(); + VertexBuffer createBuffer(BufferType type, BufferState state); + VertexBuffer createBuffer(BufferType type, BufferState state, int allocatedBytes); + Texture createTexture(TextureSettings data, int width, int height); + Sampler createSampler(SamplerSettings settings); + Mesh createMesh(Mesh.Builder builder); + TimeQueryPool createQueryPool(int size); + void preloadPipelines(List graphics, List compute); +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsFence.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsFence.java new file mode 100644 index 0000000..8d8afba --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsFence.java @@ -0,0 +1,7 @@ +package speiger.src.coreengine.platform.graphics.api.core; + +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; + +public interface GraphicsFence extends GraphicsResource { + boolean awaitCompletion(long timeout); +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsSurface.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsSurface.java similarity index 66% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsSurface.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsSurface.java index fe3ef72..ab926d9 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/GraphicsSurface.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/GraphicsSurface.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; public interface GraphicsSurface { public void setVsync(boolean value); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/core/TimeQueryPool.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/TimeQueryPool.java similarity index 55% rename from src/graphics/java/speiger/src/coreengine/graphics/api/core/TimeQueryPool.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/TimeQueryPool.java index 6cb15d8..56ed17f 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/core/TimeQueryPool.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/core/TimeQueryPool.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.core; +package speiger.src.coreengine.platform.graphics.api.core; import java.util.OptionalLong; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public interface TimeQueryPool extends GraphicsResource { public int size(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/mesh/Mesh.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/mesh/Mesh.java similarity index 85% rename from src/graphics/java/speiger/src/coreengine/graphics/api/mesh/Mesh.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/mesh/Mesh.java index aac8930..b4761d0 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/mesh/Mesh.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/mesh/Mesh.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.mesh; +package speiger.src.coreengine.platform.graphics.api.mesh; import java.util.Objects; import java.util.OptionalInt; @@ -7,11 +7,11 @@ import org.jspecify.annotations.Nullable; import speiger.src.collections.ints.maps.impl.hash.Int2ObjectOpenHashMap; import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.IndeciesType; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.IndeciesType; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; public abstract class Mesh implements GraphicsResource { protected final Int2ObjectMap layouts; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/Sampler.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/Sampler.java similarity index 60% rename from src/graphics/java/speiger/src/coreengine/graphics/api/sampler/Sampler.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/Sampler.java index 78ab295..26cedd7 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/Sampler.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/Sampler.java @@ -1,6 +1,6 @@ -package speiger.src.coreengine.graphics.api.sampler; +package speiger.src.coreengine.platform.graphics.api.sampler; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public abstract class Sampler implements GraphicsResource { protected SamplerSettings settings; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/SamplerSettings.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/SamplerSettings.java similarity index 88% rename from src/graphics/java/speiger/src/coreengine/graphics/api/sampler/SamplerSettings.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/SamplerSettings.java index 61b8038..412dd8e 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/SamplerSettings.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/SamplerSettings.java @@ -1,10 +1,10 @@ -package speiger.src.coreengine.graphics.api.sampler; +package speiger.src.coreengine.platform.graphics.api.sampler; import java.util.Objects; import java.util.Optional; -import speiger.src.coreengine.graphics.api.sampler.states.BorderMode; -import speiger.src.coreengine.graphics.api.sampler.states.SampleMode; +import speiger.src.coreengine.platform.graphics.api.sampler.states.BorderMode; +import speiger.src.coreengine.platform.graphics.api.sampler.states.SampleMode; public record SamplerSettings(BorderMode wrapS, BorderMode wrapT, Optional wrapR, SampleMode minSample, SampleMode magSample) { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/BorderMode.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/BorderMode.java similarity index 59% rename from src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/BorderMode.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/BorderMode.java index 77c3465..5bfc9d6 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/BorderMode.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/BorderMode.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.sampler.states; +package speiger.src.coreengine.platform.graphics.api.sampler.states; public enum BorderMode { CLAMP_TO_EDGE, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/SampleMode.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/SampleMode.java similarity index 64% rename from src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/SampleMode.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/SampleMode.java index f85e07a..94e49af 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/sampler/states/SampleMode.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/sampler/states/SampleMode.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.sampler.states; +package speiger.src.coreengine.platform.graphics.api.sampler.states; public enum SampleMode { NEAREST, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/BufferAttribute.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/BufferAttribute.java similarity index 64% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/BufferAttribute.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/BufferAttribute.java index 24125a2..2901532 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/BufferAttribute.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/BufferAttribute.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import java.util.Objects; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; public record BufferAttribute(String name, int index, int size, GraphicsDataType type, boolean normal) { public BufferAttribute { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/ColorTarget.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ColorTarget.java similarity index 79% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/ColorTarget.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ColorTarget.java index 529b15c..ee888b0 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/ColorTarget.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ColorTarget.java @@ -1,9 +1,9 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import java.util.Objects; import java.util.Optional; -import speiger.src.coreengine.graphics.api.shader.states.BlendFunction; +import speiger.src.coreengine.platform.graphics.api.shader.states.BlendFunction; public record ColorTarget(Optional blend, int writeMask) { public static final int RED = 1; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/DepthTarget.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/DepthTarget.java similarity index 64% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/DepthTarget.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/DepthTarget.java index 1add95e..6089889 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/DepthTarget.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/DepthTarget.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import java.util.Objects; -import speiger.src.coreengine.graphics.api.utils.AlphaFunction; +import speiger.src.coreengine.platform.graphics.api.utils.AlphaFunction; public record DepthTarget(boolean enabled, AlphaFunction function, boolean write) { public static final DepthTarget DEFAULT = new DepthTarget(true, AlphaFunction.GEQUAL, true); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/RasterizerState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/RasterizerState.java similarity index 58% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/RasterizerState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/RasterizerState.java index 9adca98..40676a7 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/RasterizerState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/RasterizerState.java @@ -1,9 +1,9 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import java.util.Objects; -import speiger.src.coreengine.graphics.api.shader.states.DrawMode; -import speiger.src.coreengine.graphics.api.shader.states.PolygonMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.PolygonMode; public record RasterizerState(DrawMode mode, PolygonMode fillMode, boolean cullBack) { public static final RasterizerState DEFAULT = new RasterizerState(DrawMode.TRIANGLES, PolygonMode.FILL, true); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/ShaderPipeline.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ShaderPipeline.java similarity index 82% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/ShaderPipeline.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ShaderPipeline.java index 39486f3..eefac2e 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/ShaderPipeline.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/ShaderPipeline.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import java.util.Collections; import java.util.EnumMap; @@ -9,15 +9,15 @@ import java.util.Objects; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; import speiger.src.coreengine.assets.api.ID; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferMode; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureMode; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferBinding; -import speiger.src.coreengine.graphics.api.shader.states.DrawMode; -import speiger.src.coreengine.graphics.api.shader.states.PolygonMode; -import speiger.src.coreengine.graphics.api.shader.states.ShaderType; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.PolygonMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.ShaderType; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureMode; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; public record ShaderPipeline(ID id, Map shaders, List attributes, List uniforms, List textures, RasterizerState rasterizer, ColorTarget colorTarget, DepthTarget depthTarget) { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/VertexBinding.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/VertexBinding.java similarity index 51% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/VertexBinding.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/VertexBinding.java index bf47f62..9603f79 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/VertexBinding.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/VertexBinding.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.shader; +package speiger.src.coreengine.platform.graphics.api.shader; import speiger.src.collections.objects.collections.ObjectIterable; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout.Element; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; public record VertexBinding(int bindingIndex, VertexLayout layout, int instanceOffset) { public ObjectIterable elements() { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/Bindings.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/Bindings.java similarity index 80% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/Bindings.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/Bindings.java index a593613..54b78b2 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/Bindings.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/Bindings.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; import java.util.Objects; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; public class Bindings { public record BufferBinding(String name, int binding, int slot, int bytes, BufferMode mode) { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFactor.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFactor.java similarity index 76% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFactor.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFactor.java index 60956f3..9ce6f2a 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFactor.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFactor.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; public enum BlendFactor { ZERO, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFunction.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFunction.java similarity index 82% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFunction.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFunction.java index 0ae7cd0..746723f 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/BlendFunction.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/BlendFunction.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; public record BlendFunction(BlendFactor colorSource, BlendFactor alphaSource, BlendFactor colorTarget, BlendFactor alphaTarget) { public static final BlendFunction DEFAULT = new BlendFunction(BlendFactor.ONE, BlendFactor.ZERO); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/DrawMode.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/DrawMode.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/DrawMode.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/DrawMode.java index 24ee582..4a58300 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/DrawMode.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/DrawMode.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; public enum DrawMode { POINT(1), diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/GraphicsDataType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/GraphicsDataType.java similarity index 94% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/GraphicsDataType.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/GraphicsDataType.java index b7ccae1..6a44065 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/GraphicsDataType.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/GraphicsDataType.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; public enum GraphicsDataType { BYTE("byte", 1, PrimitiveType.BYTE), diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PolygonMode.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PolygonMode.java new file mode 100644 index 0000000..43fbed6 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PolygonMode.java @@ -0,0 +1,7 @@ +package speiger.src.coreengine.platform.graphics.api.shader.states; + +public enum PolygonMode { + POINT, + LINE, + FILL; +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PrimitiveType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PrimitiveType.java new file mode 100644 index 0000000..965a00c --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/PrimitiveType.java @@ -0,0 +1,10 @@ +package speiger.src.coreengine.platform.graphics.api.shader.states; + +public enum PrimitiveType { + BYTE, + SHORT, + INT, + LONG, + FLOAT, + DOUBLE; +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/ShaderType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/ShaderType.java similarity index 59% rename from src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/ShaderType.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/ShaderType.java index 41f3de8..625096f 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/shader/states/ShaderType.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/shader/states/ShaderType.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.shader.states; +package speiger.src.coreengine.platform.graphics.api.shader.states; public enum ShaderType { VERTEX, diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/target/RenderTarget.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/RenderTarget.java similarity index 54% rename from src/graphics/java/speiger/src/coreengine/graphics/api/target/RenderTarget.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/RenderTarget.java index 8423348..c9212b1 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/target/RenderTarget.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/RenderTarget.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.target; +package speiger.src.coreengine.platform.graphics.api.target; public sealed interface RenderTarget permits ScreenTarget, TextureTarget { } diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/target/ScreenTarget.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/ScreenTarget.java similarity index 69% rename from src/graphics/java/speiger/src/coreengine/graphics/api/target/ScreenTarget.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/ScreenTarget.java index 79d2deb..8dd26c0 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/target/ScreenTarget.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/ScreenTarget.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.target; +package speiger.src.coreengine.platform.graphics.api.target; public final class ScreenTarget implements RenderTarget { public static final ScreenTarget INSTANCE = new ScreenTarget(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/target/TextureTarget.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/TextureTarget.java similarity index 78% rename from src/graphics/java/speiger/src/coreengine/graphics/api/target/TextureTarget.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/TextureTarget.java index 6629b6e..0c07c37 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/target/TextureTarget.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/target/TextureTarget.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.api.target; +package speiger.src.coreengine.platform.graphics.api.target; import speiger.src.coreengine.assets.api.ID; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; public record TextureTarget(ID id, Texture color, Texture depth) implements RenderTarget { public TextureTarget { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/Texture.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/Texture.java similarity index 71% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/Texture.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/Texture.java index 863cf6a..093767e 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/Texture.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/Texture.java @@ -1,6 +1,6 @@ -package speiger.src.coreengine.graphics.api.texture; +package speiger.src.coreengine.platform.graphics.api.texture; -import speiger.src.coreengine.graphics.api.utils.GraphicsResource; +import speiger.src.coreengine.platform.graphics.api.utils.GraphicsResource; public abstract class Texture implements GraphicsResource { final TextureSettings settings; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/TextureSettings.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/TextureSettings.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/TextureSettings.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/TextureSettings.java index dc04098..4ac6960 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/TextureSettings.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/TextureSettings.java @@ -1,14 +1,14 @@ -package speiger.src.coreengine.graphics.api.texture; +package speiger.src.coreengine.platform.graphics.api.texture; import java.util.Objects; import java.util.Optional; import java.util.OptionalInt; import speiger.src.collections.objects.lists.ImmutableObjectList; -import speiger.src.coreengine.graphics.api.texture.states.StencilType; -import speiger.src.coreengine.graphics.api.texture.states.SwizzleMask; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.texture.states.StencilType; +import speiger.src.coreengine.platform.graphics.api.texture.states.SwizzleMask; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; public record TextureSettings(TextureType type, TextureFormat internal, boolean generateMipmapping, OptionalInt baseLevel, OptionalInt maxLevel, ImmutableObjectList> swizzle, Optional stencilType) { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/Drawable.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/Drawable.java similarity index 92% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/Drawable.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/Drawable.java index 2016de9..60b770b 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/Drawable.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/Drawable.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.texture.drawable; +package speiger.src.coreengine.platform.graphics.api.texture.drawable; import java.nio.ByteBuffer; import java.util.Objects; @@ -12,11 +12,11 @@ import org.lwjgl.util.freetype.FT_Face; import org.lwjgl.util.freetype.FT_GlyphSlot; import org.lwjgl.util.freetype.FreeType; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandQueue; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; import speiger.src.coreengine.math.color.ColorSpaces; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandQueue; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; public class Drawable implements IDrawable, AutoCloseable { TextureFormat format; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/IDrawable.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/IDrawable.java similarity index 94% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/IDrawable.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/IDrawable.java index 6028aa8..0e22615 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/drawable/IDrawable.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/drawable/IDrawable.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.texture.drawable; +package speiger.src.coreengine.platform.graphics.api.texture.drawable; import speiger.src.coreengine.math.color.ColorSpaces; diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/StencilType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/StencilType.java new file mode 100644 index 0000000..9d47df1 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/StencilType.java @@ -0,0 +1,6 @@ +package speiger.src.coreengine.platform.graphics.api.texture.states; + +public enum StencilType { + GL_COMPARE_REF_TO_TEXTURE, + GL_NONE +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/SwizzleMask.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/SwizzleMask.java new file mode 100644 index 0000000..21473f7 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/SwizzleMask.java @@ -0,0 +1,10 @@ +package speiger.src.coreengine.platform.graphics.api.texture.states; + +public enum SwizzleMask { + ZERO, + ONE, + RED, + GREEN, + BLUE, + ALPHA; +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureFormat.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureFormat.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureFormat.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureFormat.java index c0aea59..5e184a5 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureFormat.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureFormat.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.texture.states; +package speiger.src.coreengine.platform.graphics.api.texture.states; public enum TextureFormat { R(1, 0, -1, -1, -1), diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureType.java similarity index 74% rename from src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureType.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureType.java index bef2444..173ed4a 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/texture/states/TextureType.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/texture/states/TextureType.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.texture.states; +package speiger.src.coreengine.platform.graphics.api.texture.states; public enum TextureType { TEXTURE_1D, diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AccessType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AccessType.java new file mode 100644 index 0000000..b31eb4a --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AccessType.java @@ -0,0 +1,7 @@ +package speiger.src.coreengine.platform.graphics.api.utils; + +public enum AccessType { + READ, + WRITE, + BOTH; +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/AlphaFunction.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AlphaFunction.java similarity index 63% rename from src/graphics/java/speiger/src/coreengine/graphics/api/utils/AlphaFunction.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AlphaFunction.java index d6bcf99..8e6095d 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/AlphaFunction.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/AlphaFunction.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.utils; +package speiger.src.coreengine.platform.graphics.api.utils; public enum AlphaFunction { NEVER, diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/BufferOwner.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/BufferOwner.java new file mode 100644 index 0000000..3fa3a8e --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/BufferOwner.java @@ -0,0 +1,6 @@ +package speiger.src.coreengine.platform.graphics.api.utils; + +public enum BufferOwner { + KEPT, + GIVEN; +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ExecutionType.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ExecutionType.java new file mode 100644 index 0000000..2441971 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ExecutionType.java @@ -0,0 +1,6 @@ +package speiger.src.coreengine.platform.graphics.api.utils; + +public enum ExecutionType { + IMMEDIATE, + RECORDED; +} diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/GraphicsResource.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/GraphicsResource.java similarity index 69% rename from src/graphics/java/speiger/src/coreengine/graphics/api/utils/GraphicsResource.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/GraphicsResource.java index f9b4e2c..334832b 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/GraphicsResource.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/GraphicsResource.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.utils; +package speiger.src.coreengine.platform.graphics.api.utils; public interface GraphicsResource extends AutoCloseable { public boolean isRemoved(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/PushableResource.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/PushableResource.java similarity index 58% rename from src/graphics/java/speiger/src/coreengine/graphics/api/utils/PushableResource.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/PushableResource.java index 95e98ad..db27955 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/PushableResource.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/PushableResource.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.utils; +package speiger.src.coreengine.platform.graphics.api.utils; public interface PushableResource extends AutoCloseable { @Override diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/ScissorsManager.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ScissorsManager.java similarity index 94% rename from src/graphics/java/speiger/src/coreengine/graphics/api/utils/ScissorsManager.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ScissorsManager.java index 1859d43..ce8469d 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/utils/ScissorsManager.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/utils/ScissorsManager.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.utils; +package speiger.src.coreengine.platform.graphics.api.utils; import java.util.Objects; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/api/vertex/VertexLayout.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/VertexLayout.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/graphics/api/vertex/VertexLayout.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/VertexLayout.java index 1660a12..4c44887 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/api/vertex/VertexLayout.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/VertexLayout.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.api.vertex; +package speiger.src.coreengine.platform.graphics.api.vertex; import java.util.Objects; @@ -10,8 +10,8 @@ import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; import speiger.src.collections.objects.utils.ObjectIterators; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout.Element; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; public class VertexLayout implements ObjectIterable { Object2ObjectMap mapped = Object2ObjectMap.builder().linkedMap(); diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuffer.java new file mode 100644 index 0000000..1b98beb --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuffer.java @@ -0,0 +1,53 @@ +package speiger.src.coreengine.platform.graphics.api.vertex.builder; + +import java.util.List; + +import speiger.src.coreengine.math.vector.matrix.Matrix4f; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Usage; + +public interface IVertexBuffer extends IVertexBuilder { + Element current(); + IVertexBuffer next(); + IVertexBuffer finish(); + List results(); + default IVertexBuffer validate(Usage usage, GraphicsDataType type, int size) { return validate(this, usage, type, size); } + + + IVertexBuffer put(int byteOffset, byte value); + IVertexBuffer putShort(int byteOffset, short value); + IVertexBuffer putInt(int byteOffset, int value); + IVertexBuffer putFloat(int byteOffset, float value); + + int vertecies(); + + @Override + default IVertexBuffer pos(float x, float y) { return validate(Usage.POS, GraphicsDataType.FLOAT, 2).putFloat(0, x).putFloat(4, y).next(); } + @Override + default IVertexBuffer pos(float x, float y, float z) { return validate(Usage.POS, GraphicsDataType.FLOAT, 3).putFloat(0, x).putFloat(4, y).putFloat(8, z).next(); } + @Override + default IVertexBuffer rgb(int r, int g, int b) { return validate(Usage.COLOR, GraphicsDataType.UNSIGNED_BYTE, 3).put(0, (byte)r).put(1, (byte)g).put(2, (byte)b).next(); } + @Override + default IVertexBuffer rgba(int r, int g, int b, int a) { return validate(Usage.COLOR, GraphicsDataType.UNSIGNED_BYTE, 4).put(0, (byte)r).put(1, (byte)g).put(2, (byte)b).put(3, (byte)a).next(); } + @Override + default IVertexBuffer tex(float u, float v) { return validate(Usage.UV, GraphicsDataType.FLOAT, 2).putFloat(0, u).putFloat(4, v).next(); } + @Override + default IVertexBuffer normal(float x, float y, float z) { return validate(Usage.NORMAL, GraphicsDataType.FLOAT, 3).putFloat(0, x).putFloat(4, y).putFloat(8, z).next(); } + default IVertexBuffer matrix(Matrix4f mat) { + validate(Usage.MATRIX, GraphicsDataType.FLOAT, 16); + for(int i = 0;i<16;i++) { + putFloat(i*4, mat.get(i)); + } + return next(); + } + + static IVertexBuffer validate(IVertexBuffer builder, Usage usage, GraphicsDataType type, int size) { + Element current = builder.current(); + if(current.size() == size && current.usage() == usage && current.type() == type) return builder; + throw new IllegalStateException("Expected State [Usage="+current.usage()+", Size="+current.size()+", Type="+current.type()+"], wasn't present. Actual State [Usage="+usage+", Size="+size+", Type="+type+"]"); + } + + public record BufferResult(DrawMode mode, int startVertex, int endVertex) {} +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuilder.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuilder.java new file mode 100644 index 0000000..5fb5214 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/IVertexBuilder.java @@ -0,0 +1,16 @@ +package speiger.src.coreengine.platform.graphics.api.vertex.builder; + +import speiger.src.coreengine.math.color.ColorUtils; + +public interface IVertexBuilder { + IVertexBuffer pos(float x, float y); + IVertexBuffer pos(float x, float y, float z); + + default IVertexBuffer rgb(int color) { return rgb(ColorUtils.getR(color), ColorUtils.getG(color), ColorUtils.getB(color)); } + IVertexBuffer rgb(int r, int g, int b); + default IVertexBuffer rgba(int color) { return rgba(ColorUtils.getR(color), ColorUtils.getG(color), ColorUtils.getB(color), ColorUtils.getA(color)); } + IVertexBuffer rgba(int r, int g, int b, int a); + + IVertexBuffer tex(float u, float v); + IVertexBuffer normal(float x, float y, float z); +} diff --git a/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/VertexBuilder.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/VertexBuilder.java new file mode 100644 index 0000000..1235042 --- /dev/null +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/api/vertex/builder/VertexBuilder.java @@ -0,0 +1,177 @@ +package speiger.src.coreengine.platform.graphics.api.vertex.builder; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.lwjgl.system.MemoryUtil; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.lists.ObjectList; +import speiger.src.collections.objects.utils.ObjectLists; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; + +public class VertexBuilder implements IVertexBuffer, AutoCloseable { + boolean noFree = false; + DrawMode mode; + ByteBuffer buffer; + VertexLayout layout; + int vertecies; + int index; + + int totalStoredBytes; + int vertexBytes; + int elementBytes; + int lastVertecies = 0; + ObjectList results; + + public VertexBuilder(int size) { + this(MemoryUtil.memAlloc(size)); + } + + public VertexBuilder(ByteBuffer buffer) { + this.buffer = buffer; + } + + public VertexBuilder withoutFree() { + noFree = true; + return this; + } + + public VertexBuilder start(DrawMode mode, VertexLayout layout) { + this.mode = mode; + this.layout = layout; + return this; + } + + public VertexBuilder reset() { + index = 0; + vertecies = 0; + elementBytes = 0; + totalStoredBytes = 0; + vertexBytes = 0; + lastVertecies = 0; + results = null; + return this; + } + + public boolean is(DrawMode mode, VertexLayout layout) { return this.mode == mode && this.layout == layout; } + public DrawMode mode() { return mode; } + public VertexLayout getFormat() { return layout; } + + @Override + public void close() { + if(buffer == null || !buffer.isDirect()) return; + if(!noFree) MemoryUtil.memFree(buffer); + buffer = null; + } + + @Override + public Element current() { + return layout.get(index); + } + + @Override + public IVertexBuffer finish() { + if(results == null) results = new ObjectArrayList<>(); + results.add(new BufferResult(mode, lastVertecies, vertecies)); + lastVertecies = vertecies; + return this; + } + + @Override + public List results() { + return results == null ? ObjectLists.empty() : results.unmodifiable(); + } + + @Override + public VertexBuilder next() { + index = (index + 1) % layout.size(); + totalStoredBytes += elementBytes; + vertexBytes += elementBytes; + elementBytes = 0; + if(index == 0) { + vertecies++; + if(mode == DrawMode.LINES || mode == DrawMode.LINE_STRIP) { + buffer.put(totalStoredBytes, buffer, totalStoredBytes - vertexBytes, vertexBytes); + vertecies++; + } + vertexBytes = 0; + ensureCapacity(totalStoredBytes + layout.bytes()); + } + return this; + } + + @Override + public VertexBuilder put(int byteOffset, byte value) { + buffer.put(totalStoredBytes + byteOffset, value); + elementBytes+=1; + return this; + } + + @Override + public VertexBuilder putShort(int byteOffset, short value) { + buffer.putShort(totalStoredBytes + byteOffset, value); + elementBytes+=2; + return this; + } + + @Override + public VertexBuilder putInt(int byteOffset, int value) { + buffer.putInt(totalStoredBytes + byteOffset, value); + elementBytes+=4; + return this; + } + + @Override + public VertexBuilder putFloat(int byteOffset, float value) { + buffer.putFloat(totalStoredBytes + byteOffset, value); + elementBytes+=4; + return this; + } + + @Override + public int vertecies() { + return vertecies; + } + + + + public VertexBuilder putBulk(byte[] source) { + if(index != 0) throw new IllegalStateException("Can't do bulk iterations when mid Building"); + ensureCapacity(source.length + layout.bytes()); + buffer.position(totalStoredBytes).put(source).position(0); + vertecies += source.length / layout.bytes(); + totalStoredBytes += source.length; + return this; + } + + public VertexBuilder putBulk(ByteBuffer source) { + if(index != 0) throw new IllegalStateException("Can't do bulk iterations when mid Building"); + ensureCapacity(source.limit() + layout.bytes()); + buffer.position(totalStoredBytes).put(source).position(0); + vertecies += source.limit() / layout.bytes(); + totalStoredBytes += source.limit(); + return this; + } + + public VertexBuilder copy(ByteBuffer buffer) { + buffer.put(buffer.position(), this.buffer, 0, totalStoredBytes); + return this; + } + + public byte[] bytes() { + byte[] data = new byte[totalStoredBytes]; + buffer.get(0, data); + return data; + } + + private void ensureCapacity(int newValue) { + if(totalStoredBytes + newValue >= buffer.capacity()) { + int oldSize = buffer.capacity(); + int newSize = Math.max(oldSize + (oldSize >> 1), oldSize + newValue); + buffer = buffer.isDirect() ? MemoryUtil.memRealloc(buffer, newSize) : ByteBuffer.allocate(newSize).put(buffer).position(0); + } + } +} \ No newline at end of file diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/buffer/GLVertexBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/buffer/GLVertexBuffer.java similarity index 84% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/buffer/GLVertexBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/buffer/GLVertexBuffer.java index 05fcb70..d7ec563 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/buffer/GLVertexBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/buffer/GLVertexBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.buffer; +package speiger.src.coreengine.platform.graphics.opengl.buffer; import java.nio.ByteBuffer; import java.util.List; @@ -10,13 +10,11 @@ import org.lwjgl.opengl.GL45; import org.lwjgl.system.MemoryUtil; import speiger.src.collections.ints.misc.pairs.IntObjectPair; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.utils.BufferOwner; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; -import speiger.src.coreengine.rendering.utils.AllocationTracker; -import speiger.src.coreengine.utils.io.GameLog; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.utils.BufferOwner; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLVertexBuffer extends VertexBuffer { int id; @@ -98,7 +96,7 @@ public class GLVertexBuffer extends VertexBuffer { buffer.put(entry.getValue()); } buffer.flip(); - if(!GL45.glUnmapNamedBuffer(id)) GameLog.info("Memory Corruption?"); + if(!GL45.glUnmapNamedBuffer(id)) System.out.println("Memory Corruption?"); } return this; } @@ -132,7 +130,6 @@ public class GLVertexBuffer extends VertexBuffer { if(source < 0 || source + length >= size) throw new ArrayIndexOutOfBoundsException(); if(dest < 0 || dest + length >= size) throw new ArrayIndexOutOfBoundsException(); GL45.glCopyNamedBufferSubData(id, id, source, dest, length); - AllocationTracker.INSTANCE.addGPUBytes(length*2); return this; } diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLCommandQueue.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLCommandQueue.java similarity index 83% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLCommandQueue.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLCommandQueue.java index 04cfb0a..0968f93 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLCommandQueue.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLCommandQueue.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.ArrayDeque; import java.util.Deque; @@ -11,24 +11,24 @@ import org.lwjgl.opengl.GL32; import org.lwjgl.opengl.GL45; import speiger.src.coreengine.assets.api.ID; -import speiger.src.coreengine.graphics.api.core.CommandBuffer; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandQueue; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.target.RenderTarget; -import speiger.src.coreengine.graphics.api.target.ScreenTarget; -import speiger.src.coreengine.graphics.api.target.TextureTarget; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; -import speiger.src.coreengine.graphics.api.utils.PushableResource; -import speiger.src.coreengine.graphics.opengl.texture.FrameBufferCache; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; -import speiger.src.coreengine.graphics.opengl.utils.ViewPortStack; -import speiger.src.coreengine.graphics.opengl.utils.states.ScissorState; -import speiger.src.coreengine.input.window.Window; import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.ints.Vec4i; +import speiger.src.coreengine.platform.graphics.api.core.CommandBuffer; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandQueue; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.target.RenderTarget; +import speiger.src.coreengine.platform.graphics.api.target.ScreenTarget; +import speiger.src.coreengine.platform.graphics.api.target.TextureTarget; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; +import speiger.src.coreengine.platform.graphics.api.utils.PushableResource; +import speiger.src.coreengine.platform.graphics.opengl.texture.FrameBufferCache; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.opengl.utils.ViewPortStack; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.ScissorState; +import speiger.src.coreengine.platform.input.window.Window; public class GLCommandQueue implements GraphicsCommandQueue { GLGraphicsDevice device; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLFence.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLFence.java similarity index 61% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLFence.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLFence.java index 73e1874..147be11 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLFence.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLFence.java @@ -1,7 +1,7 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; -import speiger.src.coreengine.graphics.api.core.GraphicsFence; -import speiger.src.coreengine.graphics.opengl.core.GLCommandQueue.Frame; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsFence; +import speiger.src.coreengine.platform.graphics.opengl.core.GLCommandQueue.Frame; public class GLFence implements GraphicsFence { boolean removed = false; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphics.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphics.java similarity index 79% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphics.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphics.java index 8e7050e..44102c3 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphics.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphics.java @@ -1,11 +1,11 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL; import speiger.src.coreengine.assets.manager.AssetManager; -import speiger.src.coreengine.graphics.api.core.Graphics; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.graphics.api.core.Graphics; +import speiger.src.coreengine.platform.input.window.Window; public class GLGraphics implements Graphics { AssetManager manager; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphicsDevice.java similarity index 80% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphicsDevice.java index 5d8ad6f..5aeecbc 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLGraphicsDevice.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.nio.ByteBuffer; import java.util.List; @@ -37,41 +37,41 @@ import speiger.src.coreengine.assets.api.IAssetProvider; import speiger.src.coreengine.assets.api.ID; import speiger.src.coreengine.assets.api.MultiAsset; import speiger.src.coreengine.assets.manager.AssetManager; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.compute.ComputePipeline; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandBuffer; -import speiger.src.coreengine.graphics.api.core.GraphicsDevice; -import speiger.src.coreengine.graphics.api.core.TimeQueryPool; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.mesh.Mesh.LayoutInfo; -import speiger.src.coreengine.graphics.api.sampler.SamplerSettings; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.shader.VertexBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.BufferMode; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureBinding; -import speiger.src.coreengine.graphics.api.shader.states.Bindings.TextureMode; -import speiger.src.coreengine.graphics.api.shader.states.ShaderType; -import speiger.src.coreengine.graphics.api.texture.TextureSettings; -import speiger.src.coreengine.graphics.api.texture.states.SwizzleMask; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; -import speiger.src.coreengine.graphics.api.utils.ExecutionType; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout.Element; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.mesh.GLMesh; -import speiger.src.coreengine.graphics.opengl.sampler.GLSampler; -import speiger.src.coreengine.graphics.opengl.shader.ShaderCache; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance.BufferObject; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance.ShaderStorage; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance.TextureObject; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLFunctions; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.compute.ComputePipeline; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsDevice; +import speiger.src.coreengine.platform.graphics.api.core.TimeQueryPool; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh.LayoutInfo; +import speiger.src.coreengine.platform.graphics.api.sampler.SamplerSettings; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.shader.VertexBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.ShaderType; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.BufferMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureBinding; +import speiger.src.coreengine.platform.graphics.api.shader.states.Bindings.TextureMode; +import speiger.src.coreengine.platform.graphics.api.texture.TextureSettings; +import speiger.src.coreengine.platform.graphics.api.texture.states.SwizzleMask; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.utils.ExecutionType; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.mesh.GLMesh; +import speiger.src.coreengine.platform.graphics.opengl.sampler.GLSampler; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderCache; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance.BufferObject; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance.ShaderStorage; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance.TextureObject; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLFunctions; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.input.window.Window; public class GLGraphicsDevice implements GraphicsDevice { static final Map IMPORTS = Object2ObjectMap.builder().map().synchronize(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateCommandBuffer.java similarity index 82% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateCommandBuffer.java index ea68e2c..0b341e1 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateCommandBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.Objects; @@ -8,26 +8,26 @@ import org.lwjgl.opengl.GL31; import org.lwjgl.opengl.GL43; import org.lwjgl.opengl.GL45; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandBuffer; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.shader.ColorTarget; -import speiger.src.coreengine.graphics.api.shader.DepthTarget; -import speiger.src.coreengine.graphics.api.shader.RasterizerState; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.api.utils.ScissorsManager; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.mesh.GLMesh; -import speiger.src.coreengine.graphics.opengl.sampler.GLSampler; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLScissorsHandler; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.shader.ColorTarget; +import speiger.src.coreengine.platform.graphics.api.shader.DepthTarget; +import speiger.src.coreengine.platform.graphics.api.shader.RasterizerState; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.api.utils.ScissorsManager; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.mesh.GLMesh; +import speiger.src.coreengine.platform.graphics.opengl.sampler.GLSampler; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLScissorsHandler; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLImmidateCommandBuffer implements GraphicsCommandBuffer { GLGraphicsDevice device; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateComputeCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateComputeCommandBuffer.java similarity index 81% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateComputeCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateComputeCommandBuffer.java index 83bcb64..9864207 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLImmidateComputeCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLImmidateComputeCommandBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.Objects; @@ -8,20 +8,20 @@ import org.lwjgl.opengl.GL42; import org.lwjgl.opengl.GL43; import org.lwjgl.opengl.GL45; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.compute.BarrierType; -import speiger.src.coreengine.graphics.api.compute.ComputePipeline; -import speiger.src.coreengine.graphics.api.core.ComputeCommandBuffer; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.sampler.GLSampler; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.compute.BarrierType; +import speiger.src.coreengine.platform.graphics.api.compute.ComputePipeline; +import speiger.src.coreengine.platform.graphics.api.core.ComputeCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.sampler.GLSampler; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLImmidateComputeCommandBuffer implements ComputeCommandBuffer { GLGraphicsDevice device; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingCommandBuffer.java similarity index 81% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingCommandBuffer.java index 42c8b2a..7d0686d 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingCommandBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.List; import java.util.Objects; @@ -10,29 +10,29 @@ import org.lwjgl.opengl.GL43; import org.lwjgl.opengl.GL45; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.buffer.states.IndeciesType; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandBuffer; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.shader.ColorTarget; -import speiger.src.coreengine.graphics.api.shader.DepthTarget; -import speiger.src.coreengine.graphics.api.shader.RasterizerState; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.shader.states.DrawMode; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.api.utils.ScissorsManager; -import speiger.src.coreengine.graphics.api.utils.ScissorsManager.NoOp; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.mesh.GLMesh; -import speiger.src.coreengine.graphics.opengl.sampler.GLSampler; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; import speiger.src.coreengine.math.vector.ints.Vec4i; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.buffer.states.IndeciesType; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.shader.ColorTarget; +import speiger.src.coreengine.platform.graphics.api.shader.DepthTarget; +import speiger.src.coreengine.platform.graphics.api.shader.RasterizerState; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.api.utils.ScissorsManager; +import speiger.src.coreengine.platform.graphics.api.utils.ScissorsManager.NoOp; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.mesh.GLMesh; +import speiger.src.coreengine.platform.graphics.opengl.sampler.GLSampler; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLRecordingCommandBuffer implements GraphicsCommandBuffer { List tasks = new ObjectArrayList<>(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingComputeCommandBuffer.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingComputeCommandBuffer.java similarity index 84% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingComputeCommandBuffer.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingComputeCommandBuffer.java index 7923315..1b75c75 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLRecordingComputeCommandBuffer.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLRecordingComputeCommandBuffer.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.List; import java.util.Objects; @@ -10,20 +10,20 @@ import org.lwjgl.opengl.GL43; import org.lwjgl.opengl.GL45; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.compute.BarrierType; -import speiger.src.coreengine.graphics.api.compute.ComputePipeline; -import speiger.src.coreengine.graphics.api.core.ComputeCommandBuffer; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.sampler.GLSampler; -import speiger.src.coreengine.graphics.opengl.shader.ShaderInstance; -import speiger.src.coreengine.graphics.opengl.texture.GLTexture; -import speiger.src.coreengine.graphics.opengl.utils.GLStates; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.compute.BarrierType; +import speiger.src.coreengine.platform.graphics.api.compute.ComputePipeline; +import speiger.src.coreengine.platform.graphics.api.core.ComputeCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.sampler.GLSampler; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderInstance; +import speiger.src.coreengine.platform.graphics.opengl.texture.GLTexture; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLStates; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLRecordingComputeCommandBuffer implements ComputeCommandBuffer { List tasks = new ObjectArrayList<>(); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLSurface.java similarity index 77% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLSurface.java index ace3c00..0fc4219 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLSurface.java @@ -1,11 +1,11 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL11; -import speiger.src.coreengine.graphics.api.core.GraphicsSurface; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsSurface; +import speiger.src.coreengine.platform.input.window.Window; public class GLSurface implements GraphicsSurface { GLGraphicsDevice device; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLTimeQueryPool.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLTimeQueryPool.java similarity index 83% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLTimeQueryPool.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLTimeQueryPool.java index fdeccd3..3e8e7f4 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLTimeQueryPool.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/core/GLTimeQueryPool.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.core; +package speiger.src.coreengine.platform.graphics.opengl.core; import java.util.OptionalLong; @@ -6,7 +6,7 @@ import org.lwjgl.opengl.GL15; import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL45; -import speiger.src.coreengine.graphics.api.core.TimeQueryPool; +import speiger.src.coreengine.platform.graphics.api.core.TimeQueryPool; public class GLTimeQueryPool implements TimeQueryPool { boolean removed = false; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/mesh/GLMesh.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/mesh/GLMesh.java similarity index 78% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/mesh/GLMesh.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/mesh/GLMesh.java index b8a4ec1..0f8d7a9 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/mesh/GLMesh.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/mesh/GLMesh.java @@ -1,17 +1,17 @@ -package speiger.src.coreengine.graphics.opengl.mesh; +package speiger.src.coreengine.platform.graphics.opengl.mesh; import org.jspecify.annotations.Nullable; import org.lwjgl.opengl.GL45; import speiger.src.collections.ints.collections.IntIterator; import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.IndeciesType; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout.Element; -import speiger.src.coreengine.graphics.opengl.buffer.GLVertexBuffer; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.IndeciesType; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Element; +import speiger.src.coreengine.platform.graphics.opengl.buffer.GLVertexBuffer; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLMesh extends Mesh { int vao; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/sampler/GLSampler.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/sampler/GLSampler.java similarity index 76% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/sampler/GLSampler.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/sampler/GLSampler.java index fecbe09..436d080 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/sampler/GLSampler.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/sampler/GLSampler.java @@ -1,13 +1,13 @@ -package speiger.src.coreengine.graphics.opengl.sampler; +package speiger.src.coreengine.platform.graphics.opengl.sampler; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL45; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.sampler.SamplerSettings; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.sampler.SamplerSettings; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLSampler extends Sampler { int id; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderCache.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderCache.java similarity index 94% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderCache.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderCache.java index 179bbed..154185e 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderCache.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderCache.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.shader; +package speiger.src.coreengine.platform.graphics.opengl.shader; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderInstance.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderInstance.java similarity index 90% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderInstance.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderInstance.java index 58819bd..820eff7 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderInstance.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderInstance.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.shader; +package speiger.src.coreengine.platform.graphics.opengl.shader; import java.util.Map; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderTracker.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderTracker.java similarity index 75% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderTracker.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderTracker.java index 0c745f9..69ec9e9 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/shader/ShaderTracker.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/shader/ShaderTracker.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.shader; +package speiger.src.coreengine.platform.graphics.opengl.shader; import org.lwjgl.opengl.GL20; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/FrameBufferCache.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/FrameBufferCache.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/FrameBufferCache.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/FrameBufferCache.java index e128bae..6cc323f 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/FrameBufferCache.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/FrameBufferCache.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.texture; +package speiger.src.coreengine.platform.graphics.opengl.texture; import org.lwjgl.opengl.GL45; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/GLTexture.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/GLTexture.java similarity index 55% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/GLTexture.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/GLTexture.java index f7da30c..5243ed7 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/texture/GLTexture.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/texture/GLTexture.java @@ -1,8 +1,8 @@ -package speiger.src.coreengine.graphics.opengl.texture; +package speiger.src.coreengine.platform.graphics.opengl.texture; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.TextureSettings; -import speiger.src.coreengine.graphics.opengl.utils.GLFunctions; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.TextureSettings; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLFunctions; public class GLTexture extends Texture { int id; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLFunctions.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLFunctions.java similarity index 63% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLFunctions.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLFunctions.java index e406c76..0a7a931 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLFunctions.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLFunctions.java @@ -1,9 +1,9 @@ -package speiger.src.coreengine.graphics.opengl.utils; +package speiger.src.coreengine.platform.graphics.opengl.utils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL45; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; public class GLFunctions { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLScissorsHandler.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLScissorsHandler.java similarity index 70% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLScissorsHandler.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLScissorsHandler.java index 5be7292..f54bd99 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLScissorsHandler.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLScissorsHandler.java @@ -1,7 +1,7 @@ -package speiger.src.coreengine.graphics.opengl.utils; +package speiger.src.coreengine.platform.graphics.opengl.utils; -import speiger.src.coreengine.graphics.api.utils.ScissorsManager.IScissorsHandler; import speiger.src.coreengine.math.vector.ints.Vec4i; +import speiger.src.coreengine.platform.graphics.api.utils.ScissorsManager.IScissorsHandler; public record GLScissorsHandler(GLStates states) implements IScissorsHandler { @Override diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLStates.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLStates.java similarity index 64% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLStates.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLStates.java index 341ac08..618a444 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLStates.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLStates.java @@ -1,20 +1,20 @@ -package speiger.src.coreengine.graphics.opengl.utils; +package speiger.src.coreengine.platform.graphics.opengl.utils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; -import speiger.src.coreengine.graphics.api.shader.ColorTarget; -import speiger.src.coreengine.graphics.api.utils.AlphaFunction; -import speiger.src.coreengine.graphics.opengl.shader.ShaderTracker; -import speiger.src.coreengine.graphics.opengl.utils.states.BlendState; -import speiger.src.coreengine.graphics.opengl.utils.states.CullState; -import speiger.src.coreengine.graphics.opengl.utils.states.FloatState; -import speiger.src.coreengine.graphics.opengl.utils.states.GLPolygon; -import speiger.src.coreengine.graphics.opengl.utils.states.GLState; -import speiger.src.coreengine.graphics.opengl.utils.states.PixelState; -import speiger.src.coreengine.graphics.opengl.utils.states.SamplerState; -import speiger.src.coreengine.graphics.opengl.utils.states.ScissorState; -import speiger.src.coreengine.graphics.opengl.utils.states.TextureState; +import speiger.src.coreengine.platform.graphics.api.shader.ColorTarget; +import speiger.src.coreengine.platform.graphics.api.utils.AlphaFunction; +import speiger.src.coreengine.platform.graphics.opengl.shader.ShaderTracker; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.BlendState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.CullState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.FloatState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.GLPolygon; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.GLState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.PixelState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.SamplerState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.ScissorState; +import speiger.src.coreengine.platform.graphics.opengl.utils.states.TextureState; public final class GLStates { public final GLState multiSampling = new GLState(GL13.GL_MULTISAMPLE); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLUtils.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLUtils.java similarity index 84% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLUtils.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLUtils.java index 221ebf6..708e9a2 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/GLUtils.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/GLUtils.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils; +package speiger.src.coreengine.platform.graphics.opengl.utils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -15,23 +15,23 @@ import org.lwjgl.opengl.GL42; import org.lwjgl.opengl.GL43; import org.lwjgl.opengl.GL44; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.buffer.states.IndeciesType; -import speiger.src.coreengine.graphics.api.compute.BarrierType; -import speiger.src.coreengine.graphics.api.sampler.states.BorderMode; -import speiger.src.coreengine.graphics.api.sampler.states.SampleMode; -import speiger.src.coreengine.graphics.api.shader.states.BlendFactor; -import speiger.src.coreengine.graphics.api.shader.states.DrawMode; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.shader.states.PolygonMode; -import speiger.src.coreengine.graphics.api.shader.states.ShaderType; -import speiger.src.coreengine.graphics.api.texture.states.StencilType; -import speiger.src.coreengine.graphics.api.texture.states.SwizzleMask; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; -import speiger.src.coreengine.graphics.api.utils.AccessType; -import speiger.src.coreengine.graphics.api.utils.AlphaFunction; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.buffer.states.IndeciesType; +import speiger.src.coreengine.platform.graphics.api.compute.BarrierType; +import speiger.src.coreengine.platform.graphics.api.sampler.states.BorderMode; +import speiger.src.coreengine.platform.graphics.api.sampler.states.SampleMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.BlendFactor; +import speiger.src.coreengine.platform.graphics.api.shader.states.DrawMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.shader.states.PolygonMode; +import speiger.src.coreengine.platform.graphics.api.shader.states.ShaderType; +import speiger.src.coreengine.platform.graphics.api.texture.states.StencilType; +import speiger.src.coreengine.platform.graphics.api.texture.states.SwizzleMask; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.utils.AccessType; +import speiger.src.coreengine.platform.graphics.api.utils.AlphaFunction; public class GLUtils { public static int toGL(BufferType type) { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/ViewPortStack.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/ViewPortStack.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/ViewPortStack.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/ViewPortStack.java index 3236797..2367d36 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/ViewPortStack.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/ViewPortStack.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils; +package speiger.src.coreengine.platform.graphics.opengl.utils; import org.lwjgl.opengl.GL11; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/BlendState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/BlendState.java similarity index 78% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/BlendState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/BlendState.java index f30e339..6387612 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/BlendState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/BlendState.java @@ -1,10 +1,10 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL15; -import speiger.src.coreengine.graphics.api.shader.states.BlendFunction; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.shader.states.BlendFunction; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class BlendState extends GLState { BlendFunction function = BlendFunction.DEFAULT; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/CullState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/CullState.java similarity index 78% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/CullState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/CullState.java index 95d97c5..1c8b00b 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/CullState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/CullState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/FloatState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/FloatState.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/FloatState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/FloatState.java index d7b34c2..9f2d543 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/FloatState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/FloatState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import speiger.src.collections.floats.functions.FloatConsumer; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLPolygon.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLPolygon.java similarity index 68% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLPolygon.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLPolygon.java index 18290cc..3b14b95 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLPolygon.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLPolygon.java @@ -1,9 +1,9 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; -import speiger.src.coreengine.graphics.api.shader.states.PolygonMode; -import speiger.src.coreengine.graphics.opengl.utils.GLUtils; +import speiger.src.coreengine.platform.graphics.api.shader.states.PolygonMode; +import speiger.src.coreengine.platform.graphics.opengl.utils.GLUtils; public class GLPolygon implements IGLState diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLState.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLState.java index 51ca008..b636ed6 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/GLState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/GLState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/IGLState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/IGLState.java similarity index 51% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/IGLState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/IGLState.java index 45845fd..907fa3e 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/IGLState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/IGLState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; public interface IGLState { diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/PixelState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/PixelState.java similarity index 85% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/PixelState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/PixelState.java index 53ac6a2..f80f41b 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/PixelState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/PixelState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/SamplerState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/SamplerState.java similarity index 88% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/SamplerState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/SamplerState.java index a44e4a5..f824618 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/SamplerState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/SamplerState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import java.util.Arrays; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/ScissorState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/ScissorState.java similarity index 89% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/ScissorState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/ScissorState.java index 53567ab..96eae38 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/ScissorState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/ScissorState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import org.lwjgl.opengl.GL11; diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/TextureState.java b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/TextureState.java similarity index 88% rename from src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/TextureState.java rename to src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/TextureState.java index 81dee46..cd2f347 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/utils/states/TextureState.java +++ b/src/graphics/java/speiger/src/coreengine/platform/graphics/opengl/utils/states/TextureState.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.graphics.opengl.utils.states; +package speiger.src.coreengine.platform.graphics.opengl.utils.states; import java.util.Arrays; diff --git a/src/graphics/java/speiger/src/coreengine/input/device/AbstractDevice.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/AbstractDevice.java similarity index 88% rename from src/graphics/java/speiger/src/coreengine/input/device/AbstractDevice.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/AbstractDevice.java index 4947d68..f07c7ff 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/AbstractDevice.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/AbstractDevice.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; import java.util.Deque; import java.util.Objects; @@ -7,8 +7,8 @@ import java.util.concurrent.ConcurrentLinkedDeque; import speiger.src.collections.longs.collections.LongIterable; import speiger.src.collections.longs.maps.impl.concurrent.Long2ObjectConcurrentOpenHashMap; import speiger.src.collections.longs.maps.interfaces.Long2ObjectMap; -import speiger.src.coreengine.input.window.IWindowListener.Reason; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.input.window.Window; +import speiger.src.coreengine.platform.input.window.IWindowListener.Reason; import speiger.src.coreengine.utils.eventbus.Event; import speiger.src.coreengine.utils.eventbus.EventBus; diff --git a/src/graphics/java/speiger/src/coreengine/input/device/FileDrop.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/FileDrop.java similarity index 80% rename from src/graphics/java/speiger/src/coreengine/input/device/FileDrop.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/FileDrop.java index f94634f..2c084e4 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/FileDrop.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/FileDrop.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; import java.nio.file.Files; import java.nio.file.Path; @@ -8,9 +8,9 @@ import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWDropCallback; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.input.device.FileDrop.DropTask; -import speiger.src.coreengine.input.events.FileEvents; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.input.device.FileDrop.DropTask; +import speiger.src.coreengine.platform.input.events.FileEvents; +import speiger.src.coreengine.platform.input.window.Window; public class FileDrop extends AbstractDevice { public static final FileDrop INSTANCE = new FileDrop(); diff --git a/src/graphics/java/speiger/src/coreengine/input/device/InputDevice.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/InputDevice.java similarity index 54% rename from src/graphics/java/speiger/src/coreengine/input/device/InputDevice.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/InputDevice.java index 5259dae..ee240ec 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/InputDevice.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/InputDevice.java @@ -1,6 +1,6 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.input.window.Window; public interface InputDevice { public void register(Window window); diff --git a/src/graphics/java/speiger/src/coreengine/input/device/Joystick.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/Joystick.java similarity index 90% rename from src/graphics/java/speiger/src/coreengine/input/device/Joystick.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/Joystick.java index 78aa5c7..bafa2cd 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/Joystick.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/Joystick.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; import java.nio.ByteBuffer; import java.nio.FloatBuffer; @@ -16,10 +16,10 @@ import speiger.src.collections.ints.sets.IntSet; import speiger.src.collections.longs.collections.LongIterator; import speiger.src.collections.longs.sets.LongOpenHashSet; import speiger.src.collections.longs.sets.LongSet; -import speiger.src.coreengine.input.device.Joystick.JoyStickData; -import speiger.src.coreengine.input.device.Joystick.JoyStickTask; -import speiger.src.coreengine.input.events.JoystickEvent; -import speiger.src.coreengine.input.window.WindowManager; +import speiger.src.coreengine.platform.input.device.Joystick.JoyStickData; +import speiger.src.coreengine.platform.input.device.Joystick.JoyStickTask; +import speiger.src.coreengine.platform.input.events.JoystickEvent; +import speiger.src.coreengine.platform.input.window.WindowManager; import speiger.src.coreengine.utils.eventbus.EventBus; public class Joystick extends AbstractDevice { diff --git a/src/graphics/java/speiger/src/coreengine/input/device/Keyboard.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/Keyboard.java similarity index 82% rename from src/graphics/java/speiger/src/coreengine/input/device/Keyboard.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/Keyboard.java index 5409924..b4e3a7b 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/Keyboard.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/Keyboard.java @@ -1,14 +1,14 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; import java.util.function.BiPredicate; import org.lwjgl.glfw.GLFW; -import speiger.src.coreengine.input.device.Keyboard.KeyData; -import speiger.src.coreengine.input.device.Keyboard.KeyTask; -import speiger.src.coreengine.input.events.KeyEvent; -import speiger.src.coreengine.input.events.KeyEvent.Key; -import speiger.src.coreengine.input.window.Window; +import speiger.src.coreengine.platform.input.device.Keyboard.KeyData; +import speiger.src.coreengine.platform.input.device.Keyboard.KeyTask; +import speiger.src.coreengine.platform.input.events.KeyEvent; +import speiger.src.coreengine.platform.input.events.KeyEvent.Key; +import speiger.src.coreengine.platform.input.window.Window; public class Keyboard extends AbstractDevice { public static final Keyboard INSTANCE = new Keyboard(); diff --git a/src/graphics/java/speiger/src/coreengine/input/device/Mouse.java b/src/graphics/java/speiger/src/coreengine/platform/input/device/Mouse.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/input/device/Mouse.java rename to src/graphics/java/speiger/src/coreengine/platform/input/device/Mouse.java index 3d44d49..2d62192 100644 --- a/src/graphics/java/speiger/src/coreengine/input/device/Mouse.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/device/Mouse.java @@ -1,14 +1,14 @@ -package speiger.src.coreengine.input.device; +package speiger.src.coreengine.platform.input.device; import org.lwjgl.glfw.GLFW; import speiger.src.collections.ints.sets.IntOpenHashSet; import speiger.src.collections.ints.sets.IntSet; -import speiger.src.coreengine.input.device.Mouse.MouseData; -import speiger.src.coreengine.input.device.Mouse.MouseTask; -import speiger.src.coreengine.input.events.MouseEvent; -import speiger.src.coreengine.input.window.Window; import speiger.src.coreengine.math.vector.ints.Vec2i; +import speiger.src.coreengine.platform.input.device.Mouse.MouseData; +import speiger.src.coreengine.platform.input.device.Mouse.MouseTask; +import speiger.src.coreengine.platform.input.events.MouseEvent; +import speiger.src.coreengine.platform.input.window.Window; public class Mouse extends AbstractDevice { public static final Mouse INSTANCE = new Mouse(); diff --git a/src/graphics/java/speiger/src/coreengine/input/events/FileEvents.java b/src/graphics/java/speiger/src/coreengine/platform/input/events/FileEvents.java similarity index 92% rename from src/graphics/java/speiger/src/coreengine/input/events/FileEvents.java rename to src/graphics/java/speiger/src/coreengine/platform/input/events/FileEvents.java index 12f47b0..eeb9ed6 100644 --- a/src/graphics/java/speiger/src/coreengine/input/events/FileEvents.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/events/FileEvents.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.events; +package speiger.src.coreengine.platform.input.events; import java.nio.file.Files; import java.nio.file.Path; diff --git a/src/graphics/java/speiger/src/coreengine/input/events/JoystickEvent.java b/src/graphics/java/speiger/src/coreengine/platform/input/events/JoystickEvent.java similarity index 93% rename from src/graphics/java/speiger/src/coreengine/input/events/JoystickEvent.java rename to src/graphics/java/speiger/src/coreengine/platform/input/events/JoystickEvent.java index be4d471..086549b 100644 --- a/src/graphics/java/speiger/src/coreengine/input/events/JoystickEvent.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/events/JoystickEvent.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.events; +package speiger.src.coreengine.platform.input.events; import speiger.src.coreengine.utils.eventbus.Event; diff --git a/src/graphics/java/speiger/src/coreengine/input/events/KeyEvent.java b/src/graphics/java/speiger/src/coreengine/platform/input/events/KeyEvent.java similarity index 90% rename from src/graphics/java/speiger/src/coreengine/input/events/KeyEvent.java rename to src/graphics/java/speiger/src/coreengine/platform/input/events/KeyEvent.java index fdfbabe..65be2f7 100644 --- a/src/graphics/java/speiger/src/coreengine/input/events/KeyEvent.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/events/KeyEvent.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.events; +package speiger.src.coreengine.platform.input.events; import speiger.src.coreengine.utils.eventbus.Event; diff --git a/src/graphics/java/speiger/src/coreengine/input/events/MouseEvent.java b/src/graphics/java/speiger/src/coreengine/platform/input/events/MouseEvent.java similarity index 93% rename from src/graphics/java/speiger/src/coreengine/input/events/MouseEvent.java rename to src/graphics/java/speiger/src/coreengine/platform/input/events/MouseEvent.java index 3dbc84e..5845a70 100644 --- a/src/graphics/java/speiger/src/coreengine/input/events/MouseEvent.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/events/MouseEvent.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.events; +package speiger.src.coreengine.platform.input.events; import speiger.src.coreengine.utils.eventbus.Event; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/GLFWUtil.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/GLFWUtil.java similarity index 94% rename from src/graphics/java/speiger/src/coreengine/input/window/GLFWUtil.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/GLFWUtil.java index e39824e..9bc97e3 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/GLFWUtil.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/GLFWUtil.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import org.jspecify.annotations.NonNull; import org.lwjgl.PointerBuffer; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/IWindowListener.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/IWindowListener.java similarity index 69% rename from src/graphics/java/speiger/src/coreengine/input/window/IWindowListener.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/IWindowListener.java index b6f1d9a..9a75e59 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/IWindowListener.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/IWindowListener.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; public interface IWindowListener { diff --git a/src/graphics/java/speiger/src/coreengine/input/window/Monitor.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/Monitor.java similarity index 95% rename from src/graphics/java/speiger/src/coreengine/input/window/Monitor.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/Monitor.java index 3f7841d..fe97e48 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/Monitor.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/Monitor.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import java.util.List; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/VideoMode.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/VideoMode.java similarity index 87% rename from src/graphics/java/speiger/src/coreengine/input/window/VideoMode.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/VideoMode.java index 723c27c..f6a1dfe 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/VideoMode.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/VideoMode.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import org.lwjgl.glfw.GLFWVidMode; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/Window.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/Window.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/input/window/Window.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/Window.java index 93ece06..fa2f24b 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/Window.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/Window.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import java.util.List; @@ -6,17 +6,18 @@ import org.lwjgl.glfw.GLFW; import org.lwjgl.system.CallbackI; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.core.Graphics; -import speiger.src.coreengine.graphics.api.core.GraphicsDevice; -import speiger.src.coreengine.graphics.api.core.GraphicsSurface; -import speiger.src.coreengine.input.window.IWindowListener.Reason; -import speiger.src.coreengine.input.window.WindowCallback.ReloadFunction; -import speiger.src.coreengine.math.BitUtil; +import speiger.src.coreengine.math.bits.BitUtil; +import speiger.src.coreengine.math.bits.FlagHolder; import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.ints.Vec4i; -import speiger.src.coreengine.utils.collections.FlagHolder; +import speiger.src.coreengine.platform.graphics.api.core.Graphics; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsDevice; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsSurface; +import speiger.src.coreengine.platform.input.window.IWindowListener.Reason; +import speiger.src.coreengine.platform.input.window.WindowCallback.ReloadFunction; public class Window { + public static final ScopedValue SCOPE = ScopedValue.newInstance(); static final int VISIBLE = 1; static final int VSYNC = 2; static final int FOCUS = 4; @@ -142,12 +143,12 @@ public class Window { } } - public void setupContext() { - GLFW.glfwMakeContextCurrent(id); + public void setupContext(Runnable run) { + ScopedValue.where(GraphicsDevice.SCOPE, device).where(SCOPE, this).run(run); } public void beginFrame() { - setupContext(); + GLFW.glfwMakeContextCurrent(id); if(flags.isFlagSet(WINDOW_CHANGE)) updateViewport(); } diff --git a/src/graphics/java/speiger/src/coreengine/input/window/WindowBuilder.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowBuilder.java similarity index 92% rename from src/graphics/java/speiger/src/coreengine/input/window/WindowBuilder.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/WindowBuilder.java index c5a9335..c01e14b 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/WindowBuilder.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowBuilder.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import java.util.Objects; @@ -6,7 +6,7 @@ import org.lwjgl.glfw.GLFW; import speiger.src.collections.longs.lists.LongArrayList; import speiger.src.collections.longs.lists.LongList; -import speiger.src.coreengine.math.BitUtil; +import speiger.src.coreengine.math.bits.BitUtil; public class WindowBuilder { WindowManager manager; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/WindowCallback.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowCallback.java similarity index 91% rename from src/graphics/java/speiger/src/coreengine/input/window/WindowCallback.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/WindowCallback.java index f34c6fb..ef46f45 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/WindowCallback.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowCallback.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import org.lwjgl.system.Callback; import org.lwjgl.system.CallbackI; diff --git a/src/graphics/java/speiger/src/coreengine/input/window/WindowManager.java b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowManager.java similarity index 93% rename from src/graphics/java/speiger/src/coreengine/input/window/WindowManager.java rename to src/graphics/java/speiger/src/coreengine/platform/input/window/WindowManager.java index 824a060..65fd99b 100644 --- a/src/graphics/java/speiger/src/coreengine/input/window/WindowManager.java +++ b/src/graphics/java/speiger/src/coreengine/platform/input/window/WindowManager.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.input.window; +package speiger.src.coreengine.platform.input.window; import java.util.Iterator; import java.util.List; @@ -16,9 +16,9 @@ import org.lwjgl.system.Platform; import speiger.src.collections.longs.maps.impl.concurrent.Long2ObjectConcurrentOpenHashMap; import speiger.src.collections.longs.maps.interfaces.Long2ObjectMap; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.core.Graphics; -import speiger.src.coreengine.input.device.InputDevice; -import speiger.src.coreengine.input.window.WindowCallback.SimpleReloadFunction; +import speiger.src.coreengine.platform.graphics.api.core.Graphics; +import speiger.src.coreengine.platform.input.device.InputDevice; +import speiger.src.coreengine.platform.input.window.WindowCallback.SimpleReloadFunction; public class WindowManager { public static final ScopedValue MANAGER = ScopedValue.newInstance(); diff --git a/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java b/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java index 370cff3..ee23722 100644 --- a/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java +++ b/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java @@ -10,39 +10,37 @@ import org.lwjgl.util.freetype.FreeType; import speiger.src.coreengine.assets.api.IAssetPackage; import speiger.src.coreengine.assets.api.ID; import speiger.src.coreengine.assets.manager.AssetManager; -import speiger.src.coreengine.graphics.api.buffer.VertexBuffer; -import speiger.src.coreengine.graphics.api.buffer.states.BufferState; -import speiger.src.coreengine.graphics.api.buffer.states.BufferType; -import speiger.src.coreengine.graphics.api.core.GraphicsCommandBuffer; -import speiger.src.coreengine.graphics.api.core.GraphicsDevice; -import speiger.src.coreengine.graphics.api.core.GraphicsSurface; -import speiger.src.coreengine.graphics.api.mesh.Mesh; -import speiger.src.coreengine.graphics.api.sampler.Sampler; -import speiger.src.coreengine.graphics.api.sampler.SamplerSettings; -import speiger.src.coreengine.graphics.api.sampler.states.BorderMode; -import speiger.src.coreengine.graphics.api.sampler.states.SampleMode; -import speiger.src.coreengine.graphics.api.shader.ShaderPipeline; -import speiger.src.coreengine.graphics.api.shader.states.GraphicsDataType; -import speiger.src.coreengine.graphics.api.shader.states.ShaderType; -import speiger.src.coreengine.graphics.api.texture.Texture; -import speiger.src.coreengine.graphics.api.texture.TextureSettings; -import speiger.src.coreengine.graphics.api.texture.states.TextureFormat; -import speiger.src.coreengine.graphics.api.texture.states.TextureType; -import speiger.src.coreengine.graphics.api.utils.ExecutionType; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout; -import speiger.src.coreengine.graphics.api.vertex.VertexLayout.Usage; -import speiger.src.coreengine.graphics.opengl.core.GLGraphics; -import speiger.src.coreengine.input.device.FileDrop; -import speiger.src.coreengine.input.device.Joystick; -import speiger.src.coreengine.input.device.Keyboard; -import speiger.src.coreengine.input.device.Mouse; -import speiger.src.coreengine.input.window.Window; -import speiger.src.coreengine.input.window.WindowManager; import speiger.src.coreengine.math.vector.matrix.Matrix4f; -import speiger.src.coreengine.rendering.tesselation.buffer.VertexBuilder; -import speiger.src.coreengine.rendering.tesselation.format.VertexTypes; -import speiger.src.coreengine.rendering.textures.custom.Drawable; -import speiger.src.coreengine.rendering.utils.values.textures.GLTextureFormat; +import speiger.src.coreengine.platform.graphics.api.buffer.VertexBuffer; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferState; +import speiger.src.coreengine.platform.graphics.api.buffer.states.BufferType; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsCommandBuffer; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsDevice; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsSurface; +import speiger.src.coreengine.platform.graphics.api.mesh.Mesh; +import speiger.src.coreengine.platform.graphics.api.sampler.Sampler; +import speiger.src.coreengine.platform.graphics.api.sampler.SamplerSettings; +import speiger.src.coreengine.platform.graphics.api.sampler.states.BorderMode; +import speiger.src.coreengine.platform.graphics.api.sampler.states.SampleMode; +import speiger.src.coreengine.platform.graphics.api.shader.ShaderPipeline; +import speiger.src.coreengine.platform.graphics.api.shader.states.GraphicsDataType; +import speiger.src.coreengine.platform.graphics.api.shader.states.ShaderType; +import speiger.src.coreengine.platform.graphics.api.texture.Texture; +import speiger.src.coreengine.platform.graphics.api.texture.TextureSettings; +import speiger.src.coreengine.platform.graphics.api.texture.drawable.Drawable; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureFormat; +import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType; +import speiger.src.coreengine.platform.graphics.api.utils.ExecutionType; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout; +import speiger.src.coreengine.platform.graphics.api.vertex.VertexLayout.Usage; +import speiger.src.coreengine.platform.graphics.api.vertex.builder.VertexBuilder; +import speiger.src.coreengine.platform.graphics.opengl.core.GLGraphics; +import speiger.src.coreengine.platform.input.device.FileDrop; +import speiger.src.coreengine.platform.input.device.Joystick; +import speiger.src.coreengine.platform.input.device.Keyboard; +import speiger.src.coreengine.platform.input.device.Mouse; +import speiger.src.coreengine.platform.input.window.Window; +import speiger.src.coreengine.platform.input.window.WindowManager; import speiger.src.coreengine.utils.eventbus.EventBus; import speiger.src.coreengine.utils.helpers.IOUtils; @@ -54,48 +52,54 @@ public class NewRenderEngineTest { public static void main(String... args) { Configuration.HARFBUZZ_LIBRARY_NAME.set(FreeType.getLibrary()); NewRenderEngineTest test = new NewRenderEngineTest(); - test.manager.setup(test::run, new GLGraphics(test.assets)); + test.manager.setup(test::setup, new GLGraphics(test.assets)); } - public void run() { + public void setup() { Mouse.INSTANCE.init(bus); Keyboard.INSTANCE.init(bus); Joystick.INSTANCE.init(manager, bus); FileDrop.INSTANCE.init(bus); manager.addDevices(Mouse.INSTANCE, Keyboard.INSTANCE, Joystick.INSTANCE, FileDrop.INSTANCE); - Window window = manager.builder().title("Testing Engine").width(800).height(600).antialis(0).build(); + manager.builder().title("Testing Engine").width(800).height(600).antialis(0).build().setupContext(this::run); + } + + public void run() { Thread.currentThread().setName("Main Thread"); - GraphicsDevice device = window.device(); + Window window = Window.SCOPE.get(); + GraphicsDevice device = GraphicsDevice.SCOPE.get(); int size = 512; int half = size >> 1; - Drawable drawer = new Drawable(GLTextureFormat.RGBA, size, size); + Drawable drawer = new Drawable(TextureFormat.RGBA, size, size); drawer.fill(0, 0, size, size, -1); drawer.fill(0, 0, half, half, 255, 0, 0, 255); drawer.fill(half, 0, half, half, 0, 255, 0, 255); drawer.fill(half, half, half, half, 255, 0, 0, 255); drawer.fill(0, half, half, half, 0, 0, 255, 255); - VertexBuilder builder = new VertexBuilder(255); - builder.start(null, VertexTypes.TESTING); - builder.pos(-0.5F, -0.5F, 0).tex(0F, 1F).rgba(-1).endVertex(); - builder.pos(0.5F, -0.5F, 0).tex(1F, 1F).rgba(-1).endVertex(); - builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).rgba(-1).endVertex(); - builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).rgba(-1).endVertex(); - builder.pos(-0.5F, 0.5F, 0).tex(0F, 0F).rgba(-1).endVertex(); - builder.pos(-0.5F, -0.5F, 0).tex(0F, 1F).rgba(-1).endVertex(); - - Texture texture = device.createTexture(TextureSettings.builder().build(), size, size); - device.queue().writeToTexture(texture, TextureFormat.RGBA, GraphicsDataType.UNSIGNED_BYTE, drawer.pixels()); - drawer.close(); - VertexLayout layout = VertexLayout.builder() .element("pos", 0, 3, Usage.POS) .element("tex", 1, 2, Usage.UV) .element("color", 2, 4, Usage.COLOR, GraphicsDataType.UNSIGNED_BYTE, true) .build(); + VertexBuilder builder = new VertexBuilder(255); + builder.start(null, layout); + builder.pos(-0.5F, -0.5F, 0).tex(0F, 1F).rgba(-1); + builder.pos(0.5F, -0.5F, 0).tex(1F, 1F).rgba(-1); + builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).rgba(-1); + builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).rgba(-1); + builder.pos(-0.5F, 0.5F, 0).tex(0F, 0F).rgba(-1); + builder.pos(-0.5F, -0.5F, 0).tex(0F, 1F).rgba(-1); + + Texture texture = device.createTexture(TextureSettings.builder().build(), size, size); + device.queue().writeToTexture(texture, TextureFormat.RGBA, GraphicsDataType.UNSIGNED_BYTE, drawer.pixels()); + drawer.close(); + + + Mesh mesh = device.createMesh(Mesh.builder().layout(layout)); - mesh.buffer(0, device.createBuffer(BufferType.ARRAY_BUFFER, BufferState.STATIC_DRAW).bind().set(builder.getBytes()).unbind()); + mesh.buffer(0, device.createBuffer(BufferType.ARRAY_BUFFER, BufferState.STATIC_DRAW).bind().set(builder.bytes()).unbind()); builder.close(); Sampler sampler = device.createSampler(SamplerSettings.builder().sampler(SampleMode.NEAREST).wrap(BorderMode.CLAMP_TO_EDGE).build()); diff --git a/src/main/java/speiger/src/coreengine/application/BaseUIManager.java b/src/main/java/speiger/src/coreengine/application/BaseUIManager.java index 992ae89..1c772fe 100644 --- a/src/main/java/speiger/src/coreengine/application/BaseUIManager.java +++ b/src/main/java/speiger/src/coreengine/application/BaseUIManager.java @@ -1,94 +1,94 @@ -package speiger.src.coreengine.application; - -import speiger.src.coreengine.rendering.guiOld.GuiManager; -import speiger.src.coreengine.rendering.guiOld.base.DebugOverlay; -import speiger.src.coreengine.rendering.guiOld.components.TextComponent; -import speiger.src.coreengine.rendering.models.buffers.UniformBuffer; -import speiger.src.coreengine.utils.collections.FlagHolder; -import speiger.src.coreengine.utils.profiler.EmptyProfiler; -import speiger.src.coreengine.utils.profiler.IProfiler; - -public class BaseUIManager extends GuiManager -{ - Application application; - - public BaseUIManager(Application application) - { - super(application.mainWindow, application.eventBus, application.fonts); - this.application = application; - } - - public static BaseUIManager create(Application app) - { - return new BaseUIManager(app) { - @Override - public DebugOverlay createOverlay() - { - DebugOverlay overlay = app.createCustomDebug(); - return overlay != null ? overlay : new InternalDebugOverlay(); - } - }; - } - - @Override - public IProfiler getGPUProfiler() - { - return application.gpuProfiler; - } - - @Override - public IProfiler getCPUProfiler() - { - return application.clientProfiler; - } - - @Override - public IProfiler getServerProfiler() - { - return EmptyProfiler.INSTANCE; - } - - @Override - public UniformBuffer getOrthoMatrixBuffer() - { - return application.projectionBuffer.getOrthoViewMatrixBuffer(); - } - - @Override - public DebugOverlay createOverlay() - { - DebugOverlay overlay = application.createCustomDebug(); - return overlay != null ? overlay : new InternalDebugOverlay(); - } - - public static class InternalDebugOverlay extends DebugOverlay - { - TextComponent text = new TextComponent(0, 0, 200, 100, "Testing string"); - public static final int UPDATING = 1; - public static final int RENDERING = 2; - FlagHolder flags = new FlagHolder(RENDERING); - @Override - public void toggleUI() { flags.flipFlag(RENDERING); } - @Override - public void toggleUpdate() { flags.flipFlag(UPDATING); } - @Override - public void toggleDebug() {} - @Override - public boolean toggleFPS() { return false; } - @Override - public boolean isUpdating() { return flags.isFlagSet(UPDATING); } - @Override - public boolean isRendering() { return flags.isFlagSet(RENDERING); } - - @Override - public void onInit() { - super.onInit(); - addComponent(text); - } - - @Override - protected void render(int mouseX, int mouseY, float particalTicks) { - super.render(mouseX, mouseY, particalTicks); - } - } -} +package speiger.src.coreengine.application; + +import speiger.src.coreengine.math.bits.FlagHolder; +import speiger.src.coreengine.rendering.guiOld.GuiManager; +import speiger.src.coreengine.rendering.guiOld.base.DebugOverlay; +import speiger.src.coreengine.rendering.guiOld.components.TextComponent; +import speiger.src.coreengine.rendering.models.buffers.UniformBuffer; +import speiger.src.coreengine.utils.profiler.EmptyProfiler; +import speiger.src.coreengine.utils.profiler.IProfiler; + +public class BaseUIManager extends GuiManager +{ + Application application; + + public BaseUIManager(Application application) + { + super(application.mainWindow, application.eventBus, application.fonts); + this.application = application; + } + + public static BaseUIManager create(Application app) + { + return new BaseUIManager(app) { + @Override + public DebugOverlay createOverlay() + { + DebugOverlay overlay = app.createCustomDebug(); + return overlay != null ? overlay : new InternalDebugOverlay(); + } + }; + } + + @Override + public IProfiler getGPUProfiler() + { + return application.gpuProfiler; + } + + @Override + public IProfiler getCPUProfiler() + { + return application.clientProfiler; + } + + @Override + public IProfiler getServerProfiler() + { + return EmptyProfiler.INSTANCE; + } + + @Override + public UniformBuffer getOrthoMatrixBuffer() + { + return application.projectionBuffer.getOrthoViewMatrixBuffer(); + } + + @Override + public DebugOverlay createOverlay() + { + DebugOverlay overlay = application.createCustomDebug(); + return overlay != null ? overlay : new InternalDebugOverlay(); + } + + public static class InternalDebugOverlay extends DebugOverlay + { + TextComponent text = new TextComponent(0, 0, 200, 100, "Testing string"); + public static final int UPDATING = 1; + public static final int RENDERING = 2; + FlagHolder flags = new FlagHolder(RENDERING); + @Override + public void toggleUI() { flags.flipFlag(RENDERING); } + @Override + public void toggleUpdate() { flags.flipFlag(UPDATING); } + @Override + public void toggleDebug() {} + @Override + public boolean toggleFPS() { return false; } + @Override + public boolean isUpdating() { return flags.isFlagSet(UPDATING); } + @Override + public boolean isRendering() { return flags.isFlagSet(RENDERING); } + + @Override + public void onInit() { + super.onInit(); + addComponent(text); + } + + @Override + protected void render(int mouseX, int mouseY, float particalTicks) { + super.render(mouseX, mouseY, particalTicks); + } + } +} diff --git a/src/main/java/speiger/src/coreengine/math/ShapeUtil.java b/src/main/java/speiger/src/coreengine/math/ShapeUtil.java index 4beffe4..3ea980e 100644 --- a/src/main/java/speiger/src/coreengine/math/ShapeUtil.java +++ b/src/main/java/speiger/src/coreengine/math/ShapeUtil.java @@ -1,5 +1,6 @@ package speiger.src.coreengine.math; +import speiger.src.coreengine.math.bits.BitUtil; import speiger.src.coreengine.math.vector.ints.Vec2i; public class ShapeUtil { diff --git a/src/main/java/speiger/src/coreengine/math/collision2d/I2DCollision.java b/src/main/java/speiger/src/coreengine/math/collision2d/I2DCollision.java index 4a4bb7c..f1e2d74 100644 --- a/src/main/java/speiger/src/coreengine/math/collision2d/I2DCollision.java +++ b/src/main/java/speiger/src/coreengine/math/collision2d/I2DCollision.java @@ -1,12 +1,12 @@ -package speiger.src.coreengine.math.collision2d; - -import speiger.src.coreengine.math.BitUtil; -import speiger.src.coreengine.math.vector.ints.Vec2i; - -public interface I2DCollision extends Iterable -{ - public default boolean isMixedCollision() {return false;} - public default boolean isColliding(int position){return isColliding(BitUtil.shortKey(position), BitUtil.shortValue(position));} - public default boolean isColliding(Vec2i pos){return isColliding(pos.x(), pos.y());} - public boolean isColliding(int x, int y); -} +package speiger.src.coreengine.math.collision2d; + +import speiger.src.coreengine.math.bits.BitUtil; +import speiger.src.coreengine.math.vector.ints.Vec2i; + +public interface I2DCollision extends Iterable +{ + public default boolean isMixedCollision() {return false;} + public default boolean isColliding(int position){return isColliding(BitUtil.shortKey(position), BitUtil.shortValue(position));} + public default boolean isColliding(Vec2i pos){return isColliding(pos.x(), pos.y());} + public boolean isColliding(int x, int y); +} diff --git a/src/main/java/speiger/src/coreengine/math/misc/ColorSpaces.java b/src/main/java/speiger/src/coreengine/math/misc/ColorSpaces.java deleted file mode 100644 index 0a96621..0000000 --- a/src/main/java/speiger/src/coreengine/math/misc/ColorSpaces.java +++ /dev/null @@ -1,147 +0,0 @@ -package speiger.src.coreengine.math.misc; - -import speiger.src.coreengine.math.MathUtils; - -public enum ColorSpaces { - ARGB { - @Override - public int color(int r, int g, int b, int a) { return (a & 0xFF) << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF); } - @Override - public int r(int color) { return color >> 16 & 0xFF; } - @Override - public int g(int color) { return color >> 8 & 0xFF; } - @Override - public int b(int color) { return color & 0xFF; } - @Override - public int a(int color) { return color >> 24; } - @Override - public int setR(int color, int r) { return color & ~ColorUtils.R | ((r & 0xFF) << 16); } - @Override - public int setG(int color, int g) { return color & ~ColorUtils.G | ((g & 0xFF) << 8); } - @Override - public int setB(int color, int b) { return color & ~ColorUtils.B | (b & 0xFF); } - @Override - public int setA(int color, int a) { return color & ~ColorUtils.A | ((a & 0xFF) << 24); } - @Override - public int fromARGB(int color) { return color; } - @Override - public int toARGB(int color) { return color; } - }, - ABGR { - @Override - public int color(int r, int g, int b, int a) { return (a & 0xFF) << 24 | (b & 0xFF) << 16 | (g & 0xFF) << 8 | (r & 0xFF); } - @Override - public int r(int color) { return color & 0xFF; } - @Override - public int g(int color) { return color >> 8 & 0xFF; } - @Override - public int b(int color) { return color >> 16 & 0xFF; } - @Override - public int a(int color) { return color >> 24 & 0xFF; } - @Override - public int setR(int color, int r) { return color & ~ColorUtils.B | (r & 0xFF); } - @Override - public int setG(int color, int g) { return color & ~ColorUtils.G | ((g & 0xFF) << 8); } - @Override - public int setB(int color, int b) { return color & ~ColorUtils.R | ((b & 0xFF) << 16); } - @Override - public int setA(int color, int a) { return color & ~ColorUtils.A | ((a & 0xFF) << 24); } - @Override - public int fromARGB(int color) { return color & 0xFF00FF00 | (color & 0xFF0000) >> 16 | (color & 0xFF) << 16; } - @Override - public int toARGB(int color) { return color & 0xFF00FF00 | (color & 0xFF0000) >> 16 | (color & 0xFF) << 16; } - }; - - public int color(float r, float g, float b) { return color((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F)); } - public int color(float r, float g, float b, float a) { return color((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F), (int)(a * 255F + 0.5F));} - public int color(int r, int g, int b) { return color(r, g, b, 255); } - public abstract int color(int r, int g, int b, int a); - public abstract int r(int color); - public abstract int g(int color); - public abstract int b(int color); - public abstract int a(int color); - public float rf(int color) { return r(color) / 255F; } - public float gf(int color) { return g(color) / 255F; } - public float bf(int color) { return b(color) / 255F; } - public float af(int color) { return a(color) / 255F; } - public abstract int setR(int color, int r); - public abstract int setG(int color, int g); - public abstract int setB(int color, int b); - public abstract int setA(int color, int a); - public int setRF(int color, float r) { return setR(color, (int)(r * 255F + 0.5F)); } - public int setGF(int color, float g) { return setG(color, (int)(g * 255F + 0.5F)); } - public int setBF(int color, float b) { return setB(color, (int)(b * 255F + 0.5F)); } - public int setAF(int color, float a) { return setA(color, (int)(a * 255F + 0.5F)); } - public abstract int toARGB(int color); - public abstract int fromARGB(int color); - - public int darker(int color) { return darker(color, 0.7F); } - public int darker(int color, float factor) { - int r = Math.max(0, (int)(r(color) * factor)); - int g = Math.max(0, (int)(g(color) * factor)); - int b = Math.max(0, (int)(b(color) * factor)); - return (a(color) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF); - } - - public int brighter(int color) { return brighter(color, 0.7F); } - public int brighter(int color, float factor) { - int r = r(color); - int g = g(color); - int b = b(color); - int i = (int)(1.0 / (1.0 - factor)); - if(r == 0 && g == 0 && b == 0) { return color(i & 0xFF, i & 0xFF, i & 0xFF, a(color)); } - if(r > 0 && r < i) r = i; - if(g > 0 && g < i) g = i; - if(b > 0 && b < i) b = i; - return color(Math.min(255, (int)(r / factor)), Math.min(255, (int)(g / factor)), Math.min(255, (int)(b / factor)), a(color) << 24); - } - - public int fromHue(float hue, float saturation, float brightness) { - if(saturation == 0) { - int result = (int)(brightness * 255F + 0.5F); - return color(result, result, result); - } - float h = (hue - MathUtils.floor(hue)) * 6F; - float f = h - MathUtils.floor(h); - float p = brightness * (1F - saturation); - float q = brightness * (1F - saturation * f); - float t = brightness * (1F - (saturation * (1F - f))); - switch((int)h) { - case 0: return color(brightness, t, p); - case 1: return color(q, brightness, p); - case 2: return color(p, brightness, t); - case 3: return color(p, q, brightness); - case 4: return color(t, p, brightness); - case 5: return color(brightness, p, q); - default: return color(0, 0, 0); - } - } - - public float[] toHue(int color) { - int r = r(color); - int g = g(color); - int b = b(color); - int cmax = (r > g) ? r : g; - if(b > cmax) cmax = b; - int cmin = (r < g) ? r : g; - if(b < cmin) cmin = b; - float length = cmax - cmin; - - float[] result = new float[3]; - result[1] = cmax == 0 ? 0F : length / cmax; - result[2] = cmax * ColorUtils.DEVIDER; - float hue = 0F; - if(result[1] != 0F) { - float redc = (cmax - r) / length; - float greenc = (cmax - g) / length; - float bluec = (cmax - b) / length; - if(r == cmax) hue = bluec - greenc; - else if(g == cmax) hue = 2F + redc - bluec; - else hue = 4F + greenc - redc; - hue /= 6F; - if(hue < 0) hue += 1F; - } - result[0] = hue; - return result; - } -} diff --git a/src/main/java/speiger/src/coreengine/math/misc/ColorUtils.java b/src/main/java/speiger/src/coreengine/math/misc/ColorUtils.java deleted file mode 100644 index 1cbaa84..0000000 --- a/src/main/java/speiger/src/coreengine/math/misc/ColorUtils.java +++ /dev/null @@ -1,125 +0,0 @@ -package speiger.src.coreengine.math.misc; - -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; - -import speiger.src.collections.floats.lists.FloatList; - -public class ColorUtils { - static final float DEVIDER = 1F / 255F; - public static final int R = 0xFF << 16; - public static final int G = 0xFF << 8; - public static final int B = 0xFF; - public static final int A = 0xFF << 24; - public static final long SIGN = 0x00000000FFFFFFFFL; - static final int ALL = 0xFFFFFFFF; - public static final int WHITE = rgb(255, 255, 255); - public static final int LIGHT_GRAY = rgb(192, 192, 192); - public static final int GRAY = rgb(128, 128, 128); - public static final int DARK_GRAY = rgb(64, 64, 64); - public static final int BLACK = rgb(0, 0, 0); - public static final int RED = rgb(255, 0, 0); - public static final int PINK = rgb(255, 175, 175); - public static final int PURPLE = rgb(106, 13, 173); - public static final int ORANGE = rgb(255, 200, 0); - public static final int YELLOW = rgb(255, 255, 0); - public static final int GREEN = rgb(0, 255, 0); - public static final int DARK_GREEN = rgb(7, 161, 0); - public static final int MAGENTA = rgb(255, 0, 255); - public static final int CYAN = rgb(0, 255, 255); - public static final int BLUE = rgb(0, 0, 255); - public static final int LIGHT_BLUE = rgb(0, 150, 255); - - // Specialized Components that get reused - public static final int INVISIBLE = rgb(0, 0, 0, 0); - public static final int TEXT_DEFAULT_BACKGROUND = rgb(80, 80, 80, 144); - public static final int WINDOW_DEFAULT_BACKGROUND = rgb(64, 64, 64, 128); - public static final int POPUP_DEFAULT_BACKGROUND = rgb(85, 85, 85); - public static final int DESTRUCTION = rgb(255, 0, 0, 128); - - public static byte[] toByteArray(int color, boolean alpha) { - byte[] data = new byte[alpha ? 4 : 3]; - data[0] = (byte)((color >> 16) & 0xFF); - data[1] = (byte)((color >> 8) & 0xFF); - data[2] = (byte)(color & 0xFF); - if(alpha) data[3] = (byte)((color >> 24) & 0xFF); - return data; - } - - public static void write(int color, boolean alpha, ByteBuffer buffer) { - buffer.put((byte)((color >> 16) & 0xFF)).put((byte)((color >> 8) & 0xFF)).put((byte)(color & 0xFF)); - if(alpha) buffer.put((byte)((color >> 24) & 0xFF)); - } - - public static void write(int index, int color, boolean alpha, ByteBuffer buffer) { - buffer.put(index, (byte)((color >> 16) & 0xFF)).put(index + 1, (byte)((color >> 8) & 0xFF)).put(index + 2, (byte)(color & 0xFF)); - if(alpha) buffer.put(index + 3, (byte)((color >> 24) & 0xFF)); - } - - public static void write(int color, boolean alpha, FloatBuffer buffer) { - buffer.put(((color >> 16) & 0xFF) * DEVIDER).put(((color >> 8) & 0xFF) * DEVIDER).put((color & 0xFF) * DEVIDER); - if(alpha) buffer.put(((color >> 24) & 0xFF) * DEVIDER); - } - - public static void write(int index, int color, boolean alpha, FloatBuffer buffer) { - buffer.put(index, ((color >> 16) & 0xFF) * DEVIDER).put(index + 1, ((color >> 8) & 0xFF) * DEVIDER).put(index + 2, (color & 0xFF) * DEVIDER); - if(alpha) buffer.put(index + 3, ((color >> 24) & 0xFF) * DEVIDER); - } - - public static void write(int color, boolean alpha, FloatList list) { - list.add(((color >> 16) & 0xFF) * DEVIDER); - list.add(((color >> 8) & 0xFF) * DEVIDER); - list.add((color & 0xFF) * DEVIDER); - if(alpha) list.add(((color >> 24) & 0xFF) * DEVIDER); - } - - public static int read(ByteBuffer buffer, boolean alpha) { return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } - public static int read(ByteBuffer buffer, int index, boolean alpha) { return alpha ? rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2)) : rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2), buffer.get(index + 3)); } - public static int read(FloatBuffer buffer, boolean alpha) { return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } - public static int read(FloatBuffer buffer, int index, boolean alpha) { return alpha ? rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2)) : rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2), buffer.get(index + 3)); } - public static boolean needsDarkColor(int rgba) { return getBrightness(rgba) >= 130; } - public static int getBrightness(int rgba) { return getBrightness((rgba >> 16) & 0xFF, (rgba >> 8) & 0xFF, rgba & 0xFF); } - public static int getBrightness(int r, int g, int b) { return (int)Math.sqrt((r * r * 0.241F) + (g * g * 0.691F) + (b * b * 0.068F)); } - - public static int mix(int from, int to, float factor) { - float weight0 = (1F - factor); - float weight1 = factor; - int r = (int)((((from >> 16) & 0xFF) * weight0) + (((to >> 16) & 0xFF) * weight1)); - int g = (int)((((from >> 8) & 0xFF) * weight0) + (((to >> 8) & 0xFF) * weight1)); - int b = (int)(((from & 0xFF) * weight0) + ((to & 0xFF) * weight1)); - int a = (int)((((from >> 24) & 0xFF) * weight0) + (((to >> 24) & 0xFF) * weight1)); - return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | b & 0xFF; - } - - public static int rgb(int rgb) { return rgb | (255 << 24); } - public static int rgb(int r, int g, int b) { return A | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF); } - public static int rgb(float r, float g, float b) { return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F)); } - public static int rgb(int r, int g, int b, int a) { return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF); } - public static int rgb(float r, float g, float b, float a) { return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F), (int)(b * 255F + 0.5F)); } - public static int setR(int rgba, int r) { return rgba & ~R | ((r & 0xFF) << 16); } - public static int setR(int rgba, float r) { return rgba & ~R | (((int)(r * 255F + 0.5F)) << 16); } - public static int setG(int rgba, int g) { return rgba & ~G | ((g & 0xFF) << 8); } - public static int setG(int rgba, float g) { return rgba & ~G | (((int)(g * 255F + 0.5F)) << 8); } - public static int setB(int rgba, int b) { return rgba & ~B | (b & 0xFF); } - public static int setB(int rgba, float b) { return rgba & ~B | ((int)(b * 255F + 0.5F)); } - public static int setA(int rgba, int a) { return rgba & ~A | ((a & 0xFF) << 24); } - public static int setA(int rgba, float a) { return rgba & ~A | (((int)(a * 255F + 0.5F)) << 24); } - public static int getR(int rgba) { return (rgba >> 16) & 0xFF; } - public static float getRF(int rgba) { return ((rgba >> 16) & 0xFF) * DEVIDER; } - public static int getG(int rgba) { return (rgba >> 8) & 0xFF; } - public static float getGF(int rgba) { return ((rgba >> 8) & 0xFF) * DEVIDER; } - public static int getB(int rgba) { return rgba & 0xFF; } - public static float getBF(int rgba) { return (rgba & 0xFF) * DEVIDER; } - public static int getA(int rgba) { return (rgba >> 24) & 0xFF; } - public static float getAF(int rgba) { return ((rgba >> 24) & 0xFF) * DEVIDER; } - public static int parse(String input) { - try { return Long.decode(input).intValue(); } - catch (Exception e) { return -1; } - } - public static int parse(String input, int defaultValue) { - try { return Long.decode(input).intValue(); } - catch (Exception e) { return defaultValue; } - } - public static String toHex(int rgba, boolean alpha) { return "0x"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1); } - public static String toHTML(int rgba, boolean alpha) { return "#"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1); } -} diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/animation/actions/EasedAction.java b/src/main/java/speiger/src/coreengine/rendering/gui/animation/actions/EasedAction.java index 428e445..06ee4e3 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/animation/actions/EasedAction.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/animation/actions/EasedAction.java @@ -3,7 +3,7 @@ package speiger.src.coreengine.rendering.gui.animation.actions; import speiger.src.collections.objects.functions.consumer.ObjectFloatConsumer; import speiger.src.collections.objects.functions.function.ToFloatFunction; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.IEasing; +import speiger.src.coreengine.math.easing.IEasing; import speiger.src.coreengine.rendering.gui.animation.GuiAnimation.Target; import speiger.src.coreengine.rendering.gui.animation.IAction; diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/components/base/GuiComponent.java b/src/main/java/speiger/src/coreengine/rendering/gui/components/base/GuiComponent.java index a0ae748..f2d79bf 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/components/base/GuiComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/components/base/GuiComponent.java @@ -4,13 +4,13 @@ import java.util.List; import java.util.function.Consumer; import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.coreengine.math.bits.FlagObject; import speiger.src.coreengine.rendering.gui.animation.GuiAnimator; import speiger.src.coreengine.rendering.gui.layout.constraints.ConstrainedContext; import speiger.src.coreengine.rendering.gui.layout.constraints.ConstraintContainer; import speiger.src.coreengine.rendering.gui.renderer.IUIRenderer; import speiger.src.coreengine.rendering.guiOld.helper.box.IGuiBox; import speiger.src.coreengine.utils.collections.CollectionUtils; -import speiger.src.coreengine.utils.collections.FlagObject; import speiger.src.coreengine.utils.misc.ICastable; public abstract non-sealed class GuiComponent extends FlagObject implements ICastable, ILayoutComponent, IListableComponent { diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/font/TextStyle.java b/src/main/java/speiger/src/coreengine/rendering/gui/font/TextStyle.java index a9595b1..fefa4a4 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/font/TextStyle.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/font/TextStyle.java @@ -1,7 +1,7 @@ package speiger.src.coreengine.rendering.gui.font; import speiger.src.coreengine.assets.AssetLocation; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.utils.helpers.TextUtil; public record TextStyle(FontStyle font, int styleFlags, int color) { diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/GuiComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/GuiComponent.java index f399ed8..77856f6 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/GuiComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/GuiComponent.java @@ -11,6 +11,7 @@ import org.lwjgl.glfw.GLFW; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.math.bits.FlagHolder; import speiger.src.coreengine.math.collision2d.Plane; import speiger.src.coreengine.math.vector.doubles.Vec2d; import speiger.src.coreengine.rendering.guiOld.base.GuiScreenBase; @@ -33,7 +34,6 @@ import speiger.src.coreengine.rendering.inputOld.window.Window; import speiger.src.coreengine.rendering.utils.Cursor; import speiger.src.coreengine.rendering.utils.GLStateTracker; import speiger.src.coreengine.utils.collections.CollectionUtils; -import speiger.src.coreengine.utils.collections.FlagHolder; public abstract class GuiComponent extends FlagHolder { diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/base/GuiScreenBase.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/base/GuiScreenBase.java index 0377595..8a12850 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/base/GuiScreenBase.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/base/GuiScreenBase.java @@ -22,7 +22,7 @@ import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; import speiger.src.collections.objects.sets.ObjectOrderedSet; import speiger.src.collections.objects.utils.maps.Object2ObjectMaps; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiBase; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.components.TooltipPanel; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/IconButtonComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/IconButtonComponent.java index 7f205ab..2f97ac6 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/IconButtonComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/IconButtonComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IButtonComponent; import speiger.src.coreengine.rendering.guiOld.components.icon.IIcon; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ListComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ListComponent.java index c773a9f..f53aacd 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ListComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ListComponent.java @@ -16,7 +16,7 @@ import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; import speiger.src.collections.objects.utils.ObjectIterators; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IButtonComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/PieComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/PieComponent.java index df10023..4de23ee 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/PieComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/PieComponent.java @@ -6,7 +6,7 @@ import java.util.function.Supplier; import org.lwjgl.opengl.GL11; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorSpaces; +import speiger.src.coreengine.math.color.ColorSpaces; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.renderer.buffer.RenderBuffer; import speiger.src.coreengine.rendering.tesselationOld.Tesselator; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollPanelComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollPanelComponent.java index 4bd018b..bb5de99 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollPanelComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollPanelComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.helper.box.IGuiBox; import speiger.src.coreengine.rendering.guiOld.helper.constrains.ConditionalConstraint; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollWindowComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollWindowComponent.java index ccffc63..2d64186 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollWindowComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/ScrollWindowComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.helper.box.IGuiBox; import speiger.src.coreengine.rendering.guiOld.helper.constrains.ConditionalConstraint; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/SingleTabPanelComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/SingleTabPanelComponent.java index 54a5fd7..d2da4ca 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/SingleTabPanelComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/SingleTabPanelComponent.java @@ -4,7 +4,7 @@ import speiger.src.collections.floats.functions.FloatSupplier; import speiger.src.collections.objects.functions.function.ToFloatFunction; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IButtonComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TabbedPanelComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TabbedPanelComponent.java index c280c3d..d8b4013 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TabbedPanelComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TabbedPanelComponent.java @@ -4,7 +4,7 @@ import speiger.src.collections.floats.functions.FloatSupplier; import speiger.src.collections.objects.functions.function.ToFloatFunction; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IButtonComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TextComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TextComponent.java index e8b24d9..bf6185e 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TextComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TextComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.helper.Align; import speiger.src.coreengine.rendering.guiOld.helper.box.IGuiBox; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TooltipPanel.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TooltipPanel.java index e30c57c..d040c9d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TooltipPanel.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TooltipPanel.java @@ -8,7 +8,7 @@ import speiger.src.collections.objects.lists.ObjectList; import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap; import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; import speiger.src.collections.objects.utils.maps.Object2ObjectMaps; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.helper.box.IGuiBox; import speiger.src.coreengine.rendering.guiOld.helper.box.ParentBox; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TreeComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TreeComponent.java index 7fce0f5..5ef0156 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TreeComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/TreeComponent.java @@ -10,7 +10,7 @@ import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.sets.ObjectOpenHashSet; import speiger.src.collections.objects.sets.ObjectSet; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.rendering.guiOld.GuiComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/WindowComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/WindowComponent.java index fe45491..c9ee969 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/WindowComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/WindowComponent.java @@ -3,7 +3,7 @@ package speiger.src.coreengine.rendering.guiOld.components; import java.util.function.Consumer; import java.util.function.ObjIntConsumer; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.math.misc.FacingList; import speiger.src.coreengine.math.value.IValue; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/icon/TexturedIcon.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/icon/TexturedIcon.java index 01f6e91..9a4e7eb 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/icon/TexturedIcon.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/icon/TexturedIcon.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components.icon; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.renderer.UIRenderer; import speiger.src.coreengine.rendering.texturesOld.base.ITexture; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/list/ExampleEntry.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/list/ExampleEntry.java index cd50576..5904bf6 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/list/ExampleEntry.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/list/ExampleEntry.java @@ -3,7 +3,7 @@ package speiger.src.coreengine.rendering.guiOld.components.list; import java.util.Map; import java.util.UUID; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiBase; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IButtonComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/special/ConsoleComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/special/ConsoleComponent.java index a786d7a..bf30e9a 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/special/ConsoleComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/special/ConsoleComponent.java @@ -6,7 +6,7 @@ import java.util.function.Consumer; import org.lwjgl.glfw.GLFW; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.base.IKeyComponent; import speiger.src.coreengine.rendering.guiOld.components.ListComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/tree/ProfilerTreeEntry.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/tree/ProfilerTreeEntry.java index f231ad0..38c9069 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/tree/ProfilerTreeEntry.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/tree/ProfilerTreeEntry.java @@ -3,7 +3,7 @@ package speiger.src.coreengine.rendering.guiOld.components.tree; import java.util.Map; import java.util.UUID; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.GuiBase; import speiger.src.coreengine.rendering.guiOld.GuiComponent; import speiger.src.coreengine.rendering.guiOld.components.TextComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/color/ColorPickerWindowComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/color/ColorPickerWindowComponent.java index 37ba4fc..9931cfa 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/color/ColorPickerWindowComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/color/ColorPickerWindowComponent.java @@ -4,8 +4,8 @@ import java.awt.Color; import java.util.function.IntConsumer; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorSpaces; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorSpaces; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.rendering.guiOld.UITextures; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/PieProfilerWindow.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/PieProfilerWindow.java index 341626d..095aab3 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/PieProfilerWindow.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/PieProfilerWindow.java @@ -10,7 +10,7 @@ import org.lwjgl.glfw.GLFW; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.utils.ObjectLists; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.rendering.guiOld.base.IKeyComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/TreeProfilerWindow.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/TreeProfilerWindow.java index fb66d6f..1fdf4e8 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/TreeProfilerWindow.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/debug/TreeProfilerWindow.java @@ -7,7 +7,7 @@ import java.util.function.ObjIntConsumer; import speiger.src.collections.ints.queues.IntArrayFIFOQueue; import speiger.src.collections.ints.queues.IntPriorityQueue; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.misc.Facing; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.rendering.guiOld.components.SingleTabPanelComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/ChoiceComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/ChoiceComponent.java index 980df02..936372d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/ChoiceComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/ChoiceComponent.java @@ -1,7 +1,7 @@ package speiger.src.coreengine.rendering.guiOld.components.window.misc; import speiger.src.collections.booleans.functions.BooleanConsumer; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.components.ButtonComponent; import speiger.src.coreengine.rendering.guiOld.components.TextComponent; import speiger.src.coreengine.rendering.guiOld.components.WindowComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/MessageComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/MessageComponent.java index e174de4..3f29b08 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/MessageComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/MessageComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components.window.misc; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.components.ButtonComponent; import speiger.src.coreengine.rendering.guiOld.components.TextComponent; import speiger.src.coreengine.rendering.guiOld.components.WindowComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/TextInputComponent.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/TextInputComponent.java index 04fa523..8d55bbb 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/TextInputComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/components/window/misc/TextInputComponent.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.guiOld.components.window.misc; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.components.ButtonComponent; import speiger.src.coreengine.rendering.guiOld.components.TextComponent; import speiger.src.coreengine.rendering.guiOld.components.TextFieldComponent; diff --git a/src/main/java/speiger/src/coreengine/rendering/guiOld/renderer/lexer/TextContext.java b/src/main/java/speiger/src/coreengine/rendering/guiOld/renderer/lexer/TextContext.java index fc56ac7..cfba6c5 100644 --- a/src/main/java/speiger/src/coreengine/rendering/guiOld/renderer/lexer/TextContext.java +++ b/src/main/java/speiger/src/coreengine/rendering/guiOld/renderer/lexer/TextContext.java @@ -5,7 +5,7 @@ import java.util.StringJoiner; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.lists.ObjectList; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.rendering.guiOld.components.TextComponent; import speiger.src.coreengine.utils.helpers.TextUtil; diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java b/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java index ffba862..f43212c 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java @@ -8,15 +8,15 @@ import org.lwjgl.opengl.GLCapabilities; import org.lwjgl.system.CallbackI; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.core.Graphics; -import speiger.src.coreengine.graphics.api.core.GraphicsDevice; -import speiger.src.coreengine.graphics.api.core.GraphicsSurface; -import speiger.src.coreengine.math.BitUtil; +import speiger.src.coreengine.math.bits.BitUtil; +import speiger.src.coreengine.math.bits.FlagHolder; import speiger.src.coreengine.math.vector.ints.Vec4i; +import speiger.src.coreengine.platform.graphics.api.core.Graphics; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsDevice; +import speiger.src.coreengine.platform.graphics.api.core.GraphicsSurface; import speiger.src.coreengine.rendering.input.window.IWindowListener.Reason; import speiger.src.coreengine.rendering.input.window.WindowCallback.ReloadFunction; import speiger.src.coreengine.rendering.input.window.WindowManager.WindowBuilder; -import speiger.src.coreengine.utils.collections.FlagHolder; public class Window { static final int VISIBLE = 1; diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowManager.java b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowManager.java index 3ef48ed..ae4ae3a 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowManager.java @@ -13,8 +13,8 @@ import speiger.src.collections.longs.lists.LongList; import speiger.src.collections.longs.maps.impl.concurrent.Long2ObjectConcurrentOpenHashMap; import speiger.src.collections.longs.maps.interfaces.Long2ObjectMap; import speiger.src.collections.objects.lists.ObjectArrayList; -import speiger.src.coreengine.graphics.api.core.Graphics; -import speiger.src.coreengine.math.BitUtil; +import speiger.src.coreengine.math.bits.BitUtil; +import speiger.src.coreengine.platform.graphics.api.core.Graphics; import speiger.src.coreengine.rendering.input.devices.InputDevice; import speiger.src.coreengine.rendering.input.window.WindowCallback.SimpleReloadFunction; diff --git a/src/main/java/speiger/src/coreengine/rendering/inputOld/window/Window.java b/src/main/java/speiger/src/coreengine/rendering/inputOld/window/Window.java index 05bfea4..c627924 100644 --- a/src/main/java/speiger/src/coreengine/rendering/inputOld/window/Window.java +++ b/src/main/java/speiger/src/coreengine/rendering/inputOld/window/Window.java @@ -11,10 +11,10 @@ import org.lwjgl.system.MemoryUtil; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.math.MathUtils; +import speiger.src.coreengine.math.bits.FlagHolder; import speiger.src.coreengine.math.vector.matrix.Matrix4f; import speiger.src.coreengine.rendering.inputOld.window.WindowProvider.WindowStats; import speiger.src.coreengine.rendering.utils.GLStateTracker; -import speiger.src.coreengine.utils.collections.FlagHolder; public class Window { diff --git a/src/main/java/speiger/src/coreengine/rendering/models/loader/ModelLoader.java b/src/main/java/speiger/src/coreengine/rendering/models/loader/ModelLoader.java index 55ff828..42ead30 100644 --- a/src/main/java/speiger/src/coreengine/rendering/models/loader/ModelLoader.java +++ b/src/main/java/speiger/src/coreengine/rendering/models/loader/ModelLoader.java @@ -12,7 +12,7 @@ import speiger.src.collections.objects.utils.ObjectLists; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.AssetManager; import speiger.src.coreengine.assets.base.IAsset; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.utils.collections.iterators.IterableWrapper; import speiger.src.coreengine.utils.helpers.JsonUtil; diff --git a/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec3f.java b/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec3f.java index a62754f..7561d8d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec3f.java +++ b/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec3f.java @@ -2,7 +2,7 @@ package speiger.src.coreengine.rendering.shaderOld.uniforms; import org.lwjgl.opengl.GL20; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.rendering.utils.AllocationTracker; diff --git a/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec4f.java b/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec4f.java index e661726..7424e18 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec4f.java +++ b/src/main/java/speiger/src/coreengine/rendering/shaderOld/uniforms/UniformVec4f.java @@ -2,7 +2,7 @@ package speiger.src.coreengine.rendering.shaderOld.uniforms; import org.lwjgl.opengl.GL20; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.rendering.utils.AllocationTracker; diff --git a/src/main/java/speiger/src/coreengine/rendering/tesselation/buffer/IVertexBuffer.java b/src/main/java/speiger/src/coreengine/rendering/tesselation/buffer/IVertexBuffer.java index d24ba39..5529062 100644 --- a/src/main/java/speiger/src/coreengine/rendering/tesselation/buffer/IVertexBuffer.java +++ b/src/main/java/speiger/src/coreengine/rendering/tesselation/buffer/IVertexBuffer.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.tesselation.buffer; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; public interface IVertexBuffer { public IVertexBuffer pos(float x, float y); diff --git a/src/main/java/speiger/src/coreengine/rendering/tesselationOld/IVertexBuilder.java b/src/main/java/speiger/src/coreengine/rendering/tesselationOld/IVertexBuilder.java index bf6587e..85d5558 100644 --- a/src/main/java/speiger/src/coreengine/rendering/tesselationOld/IVertexBuilder.java +++ b/src/main/java/speiger/src/coreengine/rendering/tesselationOld/IVertexBuilder.java @@ -1,6 +1,6 @@ package speiger.src.coreengine.rendering.tesselationOld; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.math.vector.floats.Vec4f; diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java index c922e81..e1baa7c 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java @@ -1,140 +1,140 @@ -package speiger.src.coreengine.rendering.textures.base; - -import java.util.function.IntConsumer; - -import speiger.src.collections.longs.lists.LongArrayList; -import speiger.src.collections.longs.lists.LongList; -import speiger.src.coreengine.math.BitUtil; -import speiger.src.coreengine.rendering.utils.GLFunctions; -import speiger.src.coreengine.rendering.utils.values.IGLValue; -import speiger.src.coreengine.rendering.utils.values.IGLValue.IGLDataType; -import speiger.src.coreengine.rendering.utils.values.IGLValue.ITextureFormatType; -import speiger.src.coreengine.rendering.utils.values.IGLValue.ITextureParameter; - -public class TextureMetadata { - int internalFormat; - int externalFormat; - int dataFormat; - boolean isSTBData = false; - boolean mipmapping = false; - LongList arguments = new LongArrayList(); - IntConsumer specialarguments; - - private TextureMetadata() {} - - public void applyArguments(int texture) { - for(int i = 0,m=arguments.size();i dirtyChunks = new Int2ObjectLinkedOpenHashMap(); - Lock lock = new ReentrantLock(); - int[] data; - int width; - int height; - - public DynamicTexture(int width, int height) - { - this.width = width; - this.height = height; - setTextureID(GL11.glGenTextures()); - data = new int[width * height]; - } - - public DynamicTexture(int width, int height, int defaultValue) - { - this(width, height); - Arrays.fill(data, defaultValue); - processChanges(true); - } - - public int[] getTextureData() - { - return data; - } - - @Override - public void markDirty(int x, int z) - { - lock.lock(); - dirtyChunks.supplyIfAbsent(BitUtil.toInt(x >> 4, z >> 4), IntLinkedOpenHashSet::new).add((x & 15) << 4 | (z & 15)); - lock.unlock(); - } - - @Override - public void setData(int index, int value) - { - data[index] = value; - markDirty(index); - } - - @Override - public void setRed(int index, int red) - { - if(getRed(index) == red) return; - data[index] = (data[index] & ~R) | (red & 0xFF) << 16; - markDirty(index); - } - - @Override - public void setGreen(int index, int green) - { - if(getGreen(index) == green) return; - data[index] = (data[index] & ~G) | (green & 0xFF) << 8; - markDirty(index); - } - - @Override - public void setBlue(int index, int blue) - { - if(getBlue(index) == blue) return; - data[index] = (data[index] & ~B) | (blue & 0xFF); - markDirty(index); - } - - @Override - public void setAlpha(int index, int alpha) - { - if(getAlpha(index) == alpha) return; - data[index] = (data[index] & ~A) | (alpha & 0xFF) << 24; - markDirty(index); - } - - @Override - public int getRGB(int index) - { - return data[index]; - } - - @Override - public int getRed(int index) - { - return (data[index] >> 16) & 0xFF; - } - - @Override - public int getGreen(int index) - { - return (data[index] >> 8) & 0xFF; - } - - @Override - public int getBlue(int index) - { - return data[index] & 0xFF; - } - - @Override - public int getAlpha(int index) - { - return (data[index] >> 24) & 0xFF; - } - - @Override - public boolean isDirty() - { - return dirtyChunks.size() > 0; - } - - @Override - public void processChanges(boolean full) - { - lock.lock(); - if(full) - { - ByteBuffer buffer = MemoryUtil.memAlloc(data.length * 4); - for(int i = 0;i> 16) & 0xFF)); - buffer.put((byte)((pixel >> 8) & 0xFF)); - buffer.put((byte)(pixel & 0xFF)); - buffer.put((byte)((pixel >> 24) & 0xFF)); - } - buffer.flip(); - bindTexture(); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - AllocationTracker.INSTANCE.addGPUBytes(buffer.remaining()); - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer); - MemoryUtil.memFree(buffer); - dirtyChunks.clear(); - } - else - { - bindTexture(); - Thread thread = Thread.currentThread(); - for(Iterator> iter = Int2ObjectMaps.fastIterator(dirtyChunks);iter.hasNext() && !thread.isInterrupted();iter.remove()) - { - Entry values = iter.next(); - int key = values.getIntKey(); - int chunkX = BitUtil.shortKey(key) * 16; - int chunkZ = BitUtil.shortValue(key) * 16; - int width = 0; - int height = 0; - for(IntIterator subIt = values.getValue().iterator();subIt.hasNext();) - { - int index = subIt.nextInt(); - width = Math.max(width, ((index >> 4) & 0xF) + 1); - height = Math.max(height, (index & 0xF) + 1); - } - try(MemoryStack stack = MemoryStack.stackPush()) - { - ByteBuffer buffer = stack.malloc(width * height * 4); - for(int y = 0;y> 16) & 0xFF)); - buffer.put((byte)((pixel >> 8) & 0xFF)); - buffer.put((byte)(pixel & 0xFF)); - buffer.put((byte)((pixel >> 24) & 0xFF)); - } - } - buffer.flip(); - AllocationTracker.INSTANCE.addGPUBytes(buffer.remaining()); - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, chunkX, chunkZ, width, height, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer); - } - } - } - if(dirtyChunks.isEmpty()) - { - ((ITrimmable)dirtyChunks).trim(); - } - lock.unlock(); - } - - @Override - public void reload() - { - int old = getTextureId(); - setTextureID(GL11.glGenTextures()); - TextureManager.INSTANCE.removeTexture(old); - processChanges(true); - } - - @Override - public int getWidth() - { - return width; - } - - @Override - public int getHeight() - { - return height; - } -} +package speiger.src.coreengine.rendering.texturesOld.normal; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.Iterator; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; + +import speiger.src.collections.ints.collections.IntIterator; +import speiger.src.collections.ints.maps.impl.hash.Int2ObjectLinkedOpenHashMap; +import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; +import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.sets.IntLinkedOpenHashSet; +import speiger.src.collections.ints.sets.IntSet; +import speiger.src.collections.ints.utils.maps.Int2ObjectMaps; +import speiger.src.collections.utils.ITrimmable; +import speiger.src.coreengine.math.bits.BitUtil; +import speiger.src.coreengine.rendering.texturesOld.base.AbstractTexture; +import speiger.src.coreengine.rendering.texturesOld.base.TextureManager; +import speiger.src.coreengine.rendering.texturesOld.custom.IDynamicTexture; +import speiger.src.coreengine.rendering.utils.AllocationTracker; + +public class DynamicTexture extends AbstractTexture implements IDynamicTexture +{ + public static final int R = 0xFF << 16; + public static final int G = 0xFF << 8; + public static final int B = 0xFF; + public static final int A = 0xFF << 24; + Int2ObjectMap dirtyChunks = new Int2ObjectLinkedOpenHashMap(); + Lock lock = new ReentrantLock(); + int[] data; + int width; + int height; + + public DynamicTexture(int width, int height) + { + this.width = width; + this.height = height; + setTextureID(GL11.glGenTextures()); + data = new int[width * height]; + } + + public DynamicTexture(int width, int height, int defaultValue) + { + this(width, height); + Arrays.fill(data, defaultValue); + processChanges(true); + } + + public int[] getTextureData() + { + return data; + } + + @Override + public void markDirty(int x, int z) + { + lock.lock(); + dirtyChunks.supplyIfAbsent(BitUtil.toInt(x >> 4, z >> 4), IntLinkedOpenHashSet::new).add((x & 15) << 4 | (z & 15)); + lock.unlock(); + } + + @Override + public void setData(int index, int value) + { + data[index] = value; + markDirty(index); + } + + @Override + public void setRed(int index, int red) + { + if(getRed(index) == red) return; + data[index] = (data[index] & ~R) | (red & 0xFF) << 16; + markDirty(index); + } + + @Override + public void setGreen(int index, int green) + { + if(getGreen(index) == green) return; + data[index] = (data[index] & ~G) | (green & 0xFF) << 8; + markDirty(index); + } + + @Override + public void setBlue(int index, int blue) + { + if(getBlue(index) == blue) return; + data[index] = (data[index] & ~B) | (blue & 0xFF); + markDirty(index); + } + + @Override + public void setAlpha(int index, int alpha) + { + if(getAlpha(index) == alpha) return; + data[index] = (data[index] & ~A) | (alpha & 0xFF) << 24; + markDirty(index); + } + + @Override + public int getRGB(int index) + { + return data[index]; + } + + @Override + public int getRed(int index) + { + return (data[index] >> 16) & 0xFF; + } + + @Override + public int getGreen(int index) + { + return (data[index] >> 8) & 0xFF; + } + + @Override + public int getBlue(int index) + { + return data[index] & 0xFF; + } + + @Override + public int getAlpha(int index) + { + return (data[index] >> 24) & 0xFF; + } + + @Override + public boolean isDirty() + { + return dirtyChunks.size() > 0; + } + + @Override + public void processChanges(boolean full) + { + lock.lock(); + if(full) + { + ByteBuffer buffer = MemoryUtil.memAlloc(data.length * 4); + for(int i = 0;i> 16) & 0xFF)); + buffer.put((byte)((pixel >> 8) & 0xFF)); + buffer.put((byte)(pixel & 0xFF)); + buffer.put((byte)((pixel >> 24) & 0xFF)); + } + buffer.flip(); + bindTexture(); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + AllocationTracker.INSTANCE.addGPUBytes(buffer.remaining()); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer); + MemoryUtil.memFree(buffer); + dirtyChunks.clear(); + } + else + { + bindTexture(); + Thread thread = Thread.currentThread(); + for(Iterator> iter = Int2ObjectMaps.fastIterator(dirtyChunks);iter.hasNext() && !thread.isInterrupted();iter.remove()) + { + Entry values = iter.next(); + int key = values.getIntKey(); + int chunkX = BitUtil.shortKey(key) * 16; + int chunkZ = BitUtil.shortValue(key) * 16; + int width = 0; + int height = 0; + for(IntIterator subIt = values.getValue().iterator();subIt.hasNext();) + { + int index = subIt.nextInt(); + width = Math.max(width, ((index >> 4) & 0xF) + 1); + height = Math.max(height, (index & 0xF) + 1); + } + try(MemoryStack stack = MemoryStack.stackPush()) + { + ByteBuffer buffer = stack.malloc(width * height * 4); + for(int y = 0;y> 16) & 0xFF)); + buffer.put((byte)((pixel >> 8) & 0xFF)); + buffer.put((byte)(pixel & 0xFF)); + buffer.put((byte)((pixel >> 24) & 0xFF)); + } + } + buffer.flip(); + AllocationTracker.INSTANCE.addGPUBytes(buffer.remaining()); + GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, chunkX, chunkZ, width, height, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer); + } + } + } + if(dirtyChunks.isEmpty()) + { + ((ITrimmable)dirtyChunks).trim(); + } + lock.unlock(); + } + + @Override + public void reload() + { + int old = getTextureId(); + setTextureID(GL11.glGenTextures()); + TextureManager.INSTANCE.removeTexture(old); + processChanges(true); + } + + @Override + public int getWidth() + { + return width; + } + + @Override + public int getHeight() + { + return height; + } +} diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java b/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java index 90ba3d3..8f551ee 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java @@ -76,7 +76,6 @@ public class EventBus clz = clz.getSuperclass(); } while(clz != Object.class && superClasses); - } public void unregister(Object obj) { diff --git a/src/main/java/speiger/src/coreengine/utils/helpers/TextUtil.java b/src/main/java/speiger/src/coreengine/utils/helpers/TextUtil.java index afea55e..68aa225 100644 --- a/src/main/java/speiger/src/coreengine/utils/helpers/TextUtil.java +++ b/src/main/java/speiger/src/coreengine/utils/helpers/TextUtil.java @@ -3,7 +3,7 @@ package speiger.src.coreengine.utils.helpers; import java.text.DecimalFormat; import java.util.Locale; -import speiger.src.coreengine.math.misc.ColorUtils; +import speiger.src.coreengine.math.color.ColorUtils; import speiger.src.coreengine.utils.io.GameLog; import speiger.src.coreengine.utils.io.GameLog.LogLevel; import speiger.src.coreengine.utils.misc.CodepointSequence; diff --git a/src/main/java/speiger/src/coreengine/math/BitUtil.java b/src/math/java/speiger/src/coreengine/math/bits/BitUtil.java similarity index 97% rename from src/main/java/speiger/src/coreengine/math/BitUtil.java rename to src/math/java/speiger/src/coreengine/math/bits/BitUtil.java index c58386d..0cb65f8 100644 --- a/src/main/java/speiger/src/coreengine/math/BitUtil.java +++ b/src/math/java/speiger/src/coreengine/math/bits/BitUtil.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.math; +package speiger.src.coreengine.math.bits; public class BitUtil { public static long toLong(long key, long value) { diff --git a/src/main/java/speiger/src/coreengine/utils/collections/FlagHolder.java b/src/math/java/speiger/src/coreengine/math/bits/FlagHolder.java similarity index 91% rename from src/main/java/speiger/src/coreengine/utils/collections/FlagHolder.java rename to src/math/java/speiger/src/coreengine/math/bits/FlagHolder.java index a01ceb6..a4194c7 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/FlagHolder.java +++ b/src/math/java/speiger/src/coreengine/math/bits/FlagHolder.java @@ -1,29 +1,29 @@ -package speiger.src.coreengine.utils.collections; - -public class FlagHolder { - int flags; - - public FlagHolder() {} - - public FlagHolder(int initFlags) { - flags = initFlags; - } - - public void setFlag(int flag) { flags |= flag; } - - public boolean setFlag(int flag, boolean value) { - if(isFlagSet(flag) == value) return false; - flags = (value ? flags | flag : flags & ~flag); - return true; - } - - public void setFlags(int flags) { this.flags = flags; } - public void flipFlag(int flag) { flags ^= flag; } - public void clearFlag(int flag) { flags &= ~flag; } - public void clearFlags() { flags = 0; } - public int getFlags() { return flags; } - - public boolean isFlagSet(int flag) { return (flags & flag) == flag; } - public boolean isAnyFlagSet(int flag) { return (flags & flag) != 0; } - public boolean isFlagNotSet(int flag) { return (flags & flag) == 0; } -} +package speiger.src.coreengine.math.bits; + +public class FlagHolder { + int flags; + + public FlagHolder() {} + + public FlagHolder(int initFlags) { + flags = initFlags; + } + + public void setFlag(int flag) { flags |= flag; } + + public boolean setFlag(int flag, boolean value) { + if(isFlagSet(flag) == value) return false; + flags = (value ? flags | flag : flags & ~flag); + return true; + } + + public void setFlags(int flags) { this.flags = flags; } + public void flipFlag(int flag) { flags ^= flag; } + public void clearFlag(int flag) { flags &= ~flag; } + public void clearFlags() { flags = 0; } + public int getFlags() { return flags; } + + public boolean isFlagSet(int flag) { return (flags & flag) == flag; } + public boolean isAnyFlagSet(int flag) { return (flags & flag) != 0; } + public boolean isFlagNotSet(int flag) { return (flags & flag) == 0; } +} diff --git a/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java b/src/math/java/speiger/src/coreengine/math/bits/FlagObject.java similarity index 90% rename from src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java rename to src/math/java/speiger/src/coreengine/math/bits/FlagObject.java index 432f47c..f95b559 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java +++ b/src/math/java/speiger/src/coreengine/math/bits/FlagObject.java @@ -1,54 +1,54 @@ -package speiger.src.coreengine.utils.collections; - -public class FlagObject -{ - int flags; - - protected FlagObject() {} - - protected void setFlag(int flag) { - flags |= flag; - } - - protected void setFlag(int flag, boolean value) { - flags = (value ? flags | flag : flags & ~(flag)); - } - - protected boolean setFlagTested(int flag, boolean value) { - if(isFlagSet(flag) == value) return false; - flags = (value ? flags | flag : flags & ~(flag)); - return true; - } - - protected void setFlags(int flags) { - this.flags = flags; - } - - protected int getFlags() { - return flags; - } - - protected void flipFlag(int flag) { - flags ^= flag; - } - - protected void clearFlag(int flag) { - flags &= ~flag; - } - - protected void clearFlags() { - flags = 0; - } - - protected boolean isFlagSet(int flag) { - return (flags & flag) == flag; - } - - protected boolean isAnyFlagSet(int flag) { - return (flags & flag) != 0; - } - - protected boolean isFlagNotSet(int flag) { - return (flags & flag) == 0; - } +package speiger.src.coreengine.math.bits; + +public class FlagObject +{ + int flags; + + protected FlagObject() {} + + protected void setFlag(int flag) { + flags |= flag; + } + + protected void setFlag(int flag, boolean value) { + flags = (value ? flags | flag : flags & ~(flag)); + } + + protected boolean setFlagTested(int flag, boolean value) { + if(isFlagSet(flag) == value) return false; + flags = (value ? flags | flag : flags & ~(flag)); + return true; + } + + protected void setFlags(int flags) { + this.flags = flags; + } + + protected int getFlags() { + return flags; + } + + protected void flipFlag(int flag) { + flags ^= flag; + } + + protected void clearFlag(int flag) { + flags &= ~flag; + } + + protected void clearFlags() { + flags = 0; + } + + protected boolean isFlagSet(int flag) { + return (flags & flag) == flag; + } + + protected boolean isAnyFlagSet(int flag) { + return (flags & flag) != 0; + } + + protected boolean isFlagNotSet(int flag) { + return (flags & flag) == 0; + } } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/math/misc/EasingFunctions.java b/src/math/java/speiger/src/coreengine/math/easing/EasingFunctions.java similarity index 97% rename from src/main/java/speiger/src/coreengine/math/misc/EasingFunctions.java rename to src/math/java/speiger/src/coreengine/math/easing/EasingFunctions.java index 67f2e17..b5748fc 100644 --- a/src/main/java/speiger/src/coreengine/math/misc/EasingFunctions.java +++ b/src/math/java/speiger/src/coreengine/math/easing/EasingFunctions.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.math.misc; +package speiger.src.coreengine.math.easing; import speiger.src.coreengine.math.MathUtils; diff --git a/src/main/java/speiger/src/coreengine/math/misc/IEasing.java b/src/math/java/speiger/src/coreengine/math/easing/IEasing.java similarity index 96% rename from src/main/java/speiger/src/coreengine/math/misc/IEasing.java rename to src/math/java/speiger/src/coreengine/math/easing/IEasing.java index d265a6b..418ea3c 100644 --- a/src/main/java/speiger/src/coreengine/math/misc/IEasing.java +++ b/src/math/java/speiger/src/coreengine/math/easing/IEasing.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.math.misc; +package speiger.src.coreengine.math.easing; import speiger.src.coreengine.math.MathUtils;