# SimpleJavaEngine

This Engine was created for my Game Project and got adjusted to also handle my Modeling tool.
The idea is to advance it further to have a engine that can handle all kinds of needs.

It is not a traditional "Editor" engine but instead a set of tools that allow you to make your own project instead.
Stuff like ECS will never be present here since it is not designed to use it in all purpose projects.

### The Idea

The idea behind this engine: Reinvent the wheel, not because it is a good idea but it is good for learning.
If it can be done within Java Itself, write it yourself otherwise use the libraries that already exist.
Also this engine is written as i needed it so it may be lacking in a lot of departments because I needed something not as much as other things.


Libraries used: 
- Gson: (I am not recreating that one because i already have in a Binary format)
- Primitive Collections: A Recreation of FastUtil that dumped a lot of collections that have not a lot of use-cases for me and loads of fixes that FastUtil is missing.
- LWJGL 3: Bindings to use OpenGL/OpenAL etc. Not recreated ofcourse


### Features of the Engine.
- Custom Vector Library with vec2-vec4 for byte to double. (byte,short,int,long,float,double)
- Custom UI Library for drawing UI?
- Event Bus for inputs and other things.
- A Custom Implementation of Named Binary Tag that is not compatible with it.
- Asset Management with Priority Layers (good for texture/resource packs)
- Very Basic 2D Collision.
- Implementation of OpenGL Features. (Basically VAO/VBO/FBO/Shader/etc) That allows for simple build models fairly simple.
- A Lot of small Helper for OpenGL.
- Object Pooling/Allocation Trackers/Simple Registries that allow to build future proof code.
- Single Thread Task Manager that only runs for a Desired amount of Time and then interrupts the task.