diff --git a/.classpath b/.classpath
deleted file mode 100644
index ef3cd6c..0000000
--- a/.classpath
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d5dd3a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,31 @@
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# Eclipse files #
+.classpath
+.project
+.settings/
+bin/
+
+# specials project files #
+!libs/**
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
diff --git a/.project b/.project
deleted file mode 100644
index 49b5337..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- openglUtils
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ef8a789..0000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..60b54d0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Slaynash
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/bin/.gitignore b/bin/.gitignore
deleted file mode 100644
index 05a0df4..0000000
--- a/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/slaynash/
diff --git a/bin/slaynash/sgengine/Configuration$1.class b/bin/slaynash/sgengine/Configuration$1.class
deleted file mode 100644
index efc3062..0000000
Binary files a/bin/slaynash/sgengine/Configuration$1.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/Configuration.class b/bin/slaynash/sgengine/Configuration.class
deleted file mode 100644
index 954960b..0000000
Binary files a/bin/slaynash/sgengine/Configuration.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/audio/AudioManager.class b/bin/slaynash/sgengine/audio/AudioManager.class
deleted file mode 100644
index f69b400..0000000
Binary files a/bin/slaynash/sgengine/audio/AudioManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/audio/AudioSource.class b/bin/slaynash/sgengine/audio/AudioSource.class
deleted file mode 100644
index 5b33823..0000000
Binary files a/bin/slaynash/sgengine/audio/AudioSource.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIElement.class b/bin/slaynash/sgengine/gui/GUIElement.class
deleted file mode 100644
index 0798306..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIElement.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIFrame.class b/bin/slaynash/sgengine/gui/GUIFrame.class
deleted file mode 100644
index 7c72ea3..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIFrame.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIImage.class b/bin/slaynash/sgengine/gui/GUIImage.class
deleted file mode 100644
index 03bf094..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIImage.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIManager$1.class b/bin/slaynash/sgengine/gui/GUIManager$1.class
deleted file mode 100644
index 018b57e..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIManager$1.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIManager.class b/bin/slaynash/sgengine/gui/GUIManager.class
deleted file mode 100644
index e996fa6..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIMiniPopup.class b/bin/slaynash/sgengine/gui/GUIMiniPopup.class
deleted file mode 100644
index f6d4d0c..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIMiniPopup.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIPopup.class b/bin/slaynash/sgengine/gui/GUIPopup.class
deleted file mode 100644
index dfa6d4a..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIPopup.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/GUIText.class b/bin/slaynash/sgengine/gui/GUIText.class
deleted file mode 100644
index c8e2ffa..0000000
Binary files a/bin/slaynash/sgengine/gui/GUIText.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/button/GUIButton.class b/bin/slaynash/sgengine/gui/button/GUIButton.class
deleted file mode 100644
index 867f131..0000000
Binary files a/bin/slaynash/sgengine/gui/button/GUIButton.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/button/GUIButtonAdapter.class b/bin/slaynash/sgengine/gui/button/GUIButtonAdapter.class
deleted file mode 100644
index a62934d..0000000
Binary files a/bin/slaynash/sgengine/gui/button/GUIButtonAdapter.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/button/GUIButtonEvent.class b/bin/slaynash/sgengine/gui/button/GUIButtonEvent.class
deleted file mode 100644
index 01bdfce..0000000
Binary files a/bin/slaynash/sgengine/gui/button/GUIButtonEvent.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/button/GUIButtonListener.class b/bin/slaynash/sgengine/gui/button/GUIButtonListener.class
deleted file mode 100644
index f5a140e..0000000
Binary files a/bin/slaynash/sgengine/gui/button/GUIButtonListener.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/checkBox/GUICheckBox.class b/bin/slaynash/sgengine/gui/checkBox/GUICheckBox.class
deleted file mode 100644
index 520a6b6..0000000
Binary files a/bin/slaynash/sgengine/gui/checkBox/GUICheckBox.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxAdapter.class b/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxAdapter.class
deleted file mode 100644
index 4d166bc..0000000
Binary files a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxAdapter.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxEvent.class b/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxEvent.class
deleted file mode 100644
index c3c456d..0000000
Binary files a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxEvent.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxListener.class b/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxListener.class
deleted file mode 100644
index bac3418..0000000
Binary files a/bin/slaynash/sgengine/gui/checkBox/GUICheckBoxListener.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/comboBox/GUIComboBox.class b/bin/slaynash/sgengine/gui/comboBox/GUIComboBox.class
deleted file mode 100644
index c75d809..0000000
Binary files a/bin/slaynash/sgengine/gui/comboBox/GUIComboBox.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/slider/GUISlider.class b/bin/slaynash/sgengine/gui/slider/GUISlider.class
deleted file mode 100644
index 4bf09f6..0000000
Binary files a/bin/slaynash/sgengine/gui/slider/GUISlider.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/slider/GUISliderAdapter.class b/bin/slaynash/sgengine/gui/slider/GUISliderAdapter.class
deleted file mode 100644
index e99b3a2..0000000
Binary files a/bin/slaynash/sgengine/gui/slider/GUISliderAdapter.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/slider/GUISliderEvent.class b/bin/slaynash/sgengine/gui/slider/GUISliderEvent.class
deleted file mode 100644
index 8c36293..0000000
Binary files a/bin/slaynash/sgengine/gui/slider/GUISliderEvent.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/slider/GUISliderListener.class b/bin/slaynash/sgengine/gui/slider/GUISliderListener.class
deleted file mode 100644
index 42ecc87..0000000
Binary files a/bin/slaynash/sgengine/gui/slider/GUISliderListener.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/FontManager.class b/bin/slaynash/sgengine/gui/text2d/FontManager.class
deleted file mode 100644
index 6894da7..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/FontManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/Text2d.class b/bin/slaynash/sgengine/gui/text2d/Text2d.class
deleted file mode 100644
index 260b59d..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/Text2d.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Character.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Character.class
deleted file mode 100644
index 1fa3261..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Character.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/FontType.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/FontType.class
deleted file mode 100644
index fd54faf..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/FontType.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Line.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Line.class
deleted file mode 100644
index 1af659f..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Line.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/MetaFile.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/MetaFile.class
deleted file mode 100644
index b5ce190..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/MetaFile.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshCreator.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshCreator.class
deleted file mode 100644
index 3bbd864..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshCreator.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshData.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshData.class
deleted file mode 100644
index a8220df..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/TextMeshData.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Word.class b/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Word.class
deleted file mode 100644
index 5b09119..0000000
Binary files a/bin/slaynash/sgengine/gui/text2d/fontMeshCreator/Word.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/textField/GUITextField.class b/bin/slaynash/sgengine/gui/textField/GUITextField.class
deleted file mode 100644
index a74f6c1..0000000
Binary files a/bin/slaynash/sgengine/gui/textField/GUITextField.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/textField/GUITextFieldAdapter.class b/bin/slaynash/sgengine/gui/textField/GUITextFieldAdapter.class
deleted file mode 100644
index 8c84d0e..0000000
Binary files a/bin/slaynash/sgengine/gui/textField/GUITextFieldAdapter.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/textField/GUITextFieldEvent.class b/bin/slaynash/sgengine/gui/textField/GUITextFieldEvent.class
deleted file mode 100644
index ffb3285..0000000
Binary files a/bin/slaynash/sgengine/gui/textField/GUITextFieldEvent.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/gui/textField/GUITextFieldListener.class b/bin/slaynash/sgengine/gui/textField/GUITextFieldListener.class
deleted file mode 100644
index f6ffc56..0000000
Binary files a/bin/slaynash/sgengine/gui/textField/GUITextFieldListener.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/inputs/Controller.class b/bin/slaynash/sgengine/inputs/Controller.class
deleted file mode 100644
index ba93f45..0000000
Binary files a/bin/slaynash/sgengine/inputs/Controller.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/inputs/ControllerControl.class b/bin/slaynash/sgengine/inputs/ControllerControl.class
deleted file mode 100644
index f075eb2..0000000
Binary files a/bin/slaynash/sgengine/inputs/ControllerControl.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/inputs/ControllersControlManager.class b/bin/slaynash/sgengine/inputs/ControllersControlManager.class
deleted file mode 100644
index 8eede4e..0000000
Binary files a/bin/slaynash/sgengine/inputs/ControllersControlManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/inputs/KeyboardControl.class b/bin/slaynash/sgengine/inputs/KeyboardControl.class
deleted file mode 100644
index 33fb26d..0000000
Binary files a/bin/slaynash/sgengine/inputs/KeyboardControl.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/inputs/KeyboardControlManager.class b/bin/slaynash/sgengine/inputs/KeyboardControlManager.class
deleted file mode 100644
index 0107b95..0000000
Binary files a/bin/slaynash/sgengine/inputs/KeyboardControlManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/models/Renderable2dModel.class b/bin/slaynash/sgengine/models/Renderable2dModel.class
deleted file mode 100644
index d683470..0000000
Binary files a/bin/slaynash/sgengine/models/Renderable2dModel.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/models/Renderable3dModel.class b/bin/slaynash/sgengine/models/Renderable3dModel.class
deleted file mode 100644
index a38b288..0000000
Binary files a/bin/slaynash/sgengine/models/Renderable3dModel.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/models/RenderableModel.class b/bin/slaynash/sgengine/models/RenderableModel.class
deleted file mode 100644
index 898fb4e..0000000
Binary files a/bin/slaynash/sgengine/models/RenderableModel.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/objloader/ObjLoader.class b/bin/slaynash/sgengine/objloader/ObjLoader.class
deleted file mode 100644
index e165204..0000000
Binary files a/bin/slaynash/sgengine/objloader/ObjLoader.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/objloader/VertexNM.class b/bin/slaynash/sgengine/objloader/VertexNM.class
deleted file mode 100644
index 7327926..0000000
Binary files a/bin/slaynash/sgengine/objloader/VertexNM.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/shaders/ShaderManager.class b/bin/slaynash/sgengine/shaders/ShaderManager.class
deleted file mode 100644
index d001da0..0000000
Binary files a/bin/slaynash/sgengine/shaders/ShaderManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/shaders/ShaderProgram.class b/bin/slaynash/sgengine/shaders/ShaderProgram.class
deleted file mode 100644
index 0485427..0000000
Binary files a/bin/slaynash/sgengine/shaders/ShaderProgram.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/textureUtils/TextureDef.class b/bin/slaynash/sgengine/textureUtils/TextureDef.class
deleted file mode 100644
index f7107b5..0000000
Binary files a/bin/slaynash/sgengine/textureUtils/TextureDef.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/textureUtils/TextureManager.class b/bin/slaynash/sgengine/textureUtils/TextureManager.class
deleted file mode 100644
index 92d92f4..0000000
Binary files a/bin/slaynash/sgengine/textureUtils/TextureManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/textureUtils/TextureManagerLogSystem.class b/bin/slaynash/sgengine/textureUtils/TextureManagerLogSystem.class
deleted file mode 100644
index 4c0b830..0000000
Binary files a/bin/slaynash/sgengine/textureUtils/TextureManagerLogSystem.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/DisplayManager.class b/bin/slaynash/sgengine/utils/DisplayManager.class
deleted file mode 100644
index badd7b8..0000000
Binary files a/bin/slaynash/sgengine/utils/DisplayManager.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/LibraryLoader.class b/bin/slaynash/sgengine/utils/LibraryLoader.class
deleted file mode 100644
index e066ed9..0000000
Binary files a/bin/slaynash/sgengine/utils/LibraryLoader.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/MatrixUtils.class b/bin/slaynash/sgengine/utils/MatrixUtils.class
deleted file mode 100644
index 5013866..0000000
Binary files a/bin/slaynash/sgengine/utils/MatrixUtils.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/RaycastUtil.class b/bin/slaynash/sgengine/utils/RaycastUtil.class
deleted file mode 100644
index 9101e8c..0000000
Binary files a/bin/slaynash/sgengine/utils/RaycastUtil.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/ShapeHelper.class b/bin/slaynash/sgengine/utils/ShapeHelper.class
deleted file mode 100644
index d511e01..0000000
Binary files a/bin/slaynash/sgengine/utils/ShapeHelper.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/UserInputUtil.class b/bin/slaynash/sgengine/utils/UserInputUtil.class
deleted file mode 100644
index c3a5496..0000000
Binary files a/bin/slaynash/sgengine/utils/UserInputUtil.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/VRUtils.class b/bin/slaynash/sgengine/utils/VRUtils.class
deleted file mode 100644
index d9351d0..0000000
Binary files a/bin/slaynash/sgengine/utils/VRUtils.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/vr/VRController.class b/bin/slaynash/sgengine/utils/vr/VRController.class
deleted file mode 100644
index 334d7eb..0000000
Binary files a/bin/slaynash/sgengine/utils/vr/VRController.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/utils/vr/VRControllerEventListener.class b/bin/slaynash/sgengine/utils/vr/VRControllerEventListener.class
deleted file mode 100644
index 3f0886e..0000000
Binary files a/bin/slaynash/sgengine/utils/vr/VRControllerEventListener.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/CharacterController$KinematicClosestNotMeConvexResultCallback.class b/bin/slaynash/sgengine/world3d/CharacterController$KinematicClosestNotMeConvexResultCallback.class
deleted file mode 100644
index 305a65a..0000000
Binary files a/bin/slaynash/sgengine/world3d/CharacterController$KinematicClosestNotMeConvexResultCallback.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/CharacterController.class b/bin/slaynash/sgengine/world3d/CharacterController.class
deleted file mode 100644
index 55fb311..0000000
Binary files a/bin/slaynash/sgengine/world3d/CharacterController.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/CollisionManager3d$1.class b/bin/slaynash/sgengine/world3d/CollisionManager3d$1.class
deleted file mode 100644
index 49d931a..0000000
Binary files a/bin/slaynash/sgengine/world3d/CollisionManager3d$1.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/CollisionManager3d.class b/bin/slaynash/sgengine/world3d/CollisionManager3d.class
deleted file mode 100644
index b0e92ed..0000000
Binary files a/bin/slaynash/sgengine/world3d/CollisionManager3d.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/entities/dev/EntityTurretTest.class b/bin/slaynash/sgengine/world3d/entities/dev/EntityTurretTest.class
deleted file mode 100644
index bbe469c..0000000
Binary files a/bin/slaynash/sgengine/world3d/entities/dev/EntityTurretTest.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/loader/TriangleFace.class b/bin/slaynash/sgengine/world3d/loader/TriangleFace.class
deleted file mode 100644
index bfb86db..0000000
Binary files a/bin/slaynash/sgengine/world3d/loader/TriangleFace.class and /dev/null differ
diff --git a/bin/slaynash/sgengine/world3d/loader/WorldLoader.class b/bin/slaynash/sgengine/world3d/loader/WorldLoader.class
deleted file mode 100644
index 00019f2..0000000
Binary files a/bin/slaynash/sgengine/world3d/loader/WorldLoader.class and /dev/null differ
diff --git a/src/slaynash/sgengine/Configuration.java b/src/slaynash/sgengine/Configuration.java
index 2ffe84f..c28e148 100644
--- a/src/slaynash/sgengine/Configuration.java
+++ b/src/slaynash/sgengine/Configuration.java
@@ -33,12 +33,12 @@ public class Configuration {
private static boolean vsync = true;
private static boolean collisionManager3dEnabled = false;
private static boolean collisionManager2dEnabled = false;
- private static boolean deferredRender = false;
- private static boolean deferredRenderShadows = false;
+ private static boolean deferredRender = true;
+ private static boolean deferredRenderShadows = true;
private static boolean cleanBetweenDeferredRendersEnabled = true;
private static boolean selfUpdateEntities = true;
private static boolean handRendered = false;
- private static boolean deferredRenderBloom = true;
+ private static boolean deferredRenderPostProcessing = true;
private static boolean usingTimingDebug = false;
private static boolean guiEnabled = true;
@@ -57,7 +57,7 @@ public static void loadDefault3DFPSConfigurations() {
enableVSync(true);
useDeferredRender(true);
useDeferredRenderShadows(true);
- useDeferredRenderBloom(true);
+ usePostProcessing(true);
//useDeferredReflections(true);
setCleanBetweenDeferredRendersEnabled(true);
setSelfEntitiesUpdateEnabled(true);
@@ -80,7 +80,7 @@ public static void loadDefaultVRConfigurations() {
useDeferredRender(true);
useDeferredRenderShadows(true);
//useDeferredReflections(true);
- useDeferredRenderBloom(true);
+ usePostProcessing(true);
setCleanBetweenDeferredRendersEnabled(true);
setSelfEntitiesUpdateEnabled(true);
setHandRendered(false);
@@ -101,7 +101,7 @@ public static void loadDefault3DRPGConfigurations() {
enableVSync(true);
useDeferredRender(true);
useDeferredRenderShadows(true);
- useDeferredRenderBloom(false);
+ usePostProcessing(false);
//useDeferredReflections(true);
setCleanBetweenDeferredRendersEnabled(true);
setSelfEntitiesUpdateEnabled(true);
@@ -333,11 +333,11 @@ public static void setHandRendered(boolean handrendered) {
}
public static boolean isPostProcessingEnabled() {
- return deferredRenderBloom;
+ return deferredRenderPostProcessing;
}
- public static void useDeferredRenderBloom(boolean deferredRenderBloom) {
- Configuration.deferredRenderBloom = deferredRenderBloom;
+ public static void usePostProcessing(boolean deferredRenderBloom) {
+ Configuration.deferredRenderPostProcessing = deferredRenderBloom;
}
public static boolean isUsingTimingDebug() {
diff --git a/src/slaynash/sgengine/DebugTimer.java b/src/slaynash/sgengine/DebugTimer.java
index 29c7549..93915df 100644
--- a/src/slaynash/sgengine/DebugTimer.java
+++ b/src/slaynash/sgengine/DebugTimer.java
@@ -1,16 +1,118 @@
package slaynash.sgengine;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+import org.lwjgl.opengl.GL11;
+
public class DebugTimer {
private static long startTime = 0;
+ private static long baseTime = 0;
+
+ private static List times = new ArrayList();
+ private static List savedTimes = new ArrayList();
+ private static TimingDebugFrame frame;
+ private static float totalTime = 0;
+
+ public static void outputAndUpdateTime(String string) {
+ if(Configuration.isUsingTimingDebug()) {
+ GL11.glFinish();
+ //LogSystem.out_println("[TIMING] VR Render time [Left][Defe]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
+ times.add(new DebugTime(((System.nanoTime()-startTime)/1e6f), string));
+ startTime = System.nanoTime();
+ }
+ }
- public static void start() {
- startTime = System.nanoTime();
+ public static void restart() {
+ times.clear();
+ baseTime = startTime = System.nanoTime();
}
- public static void outputAndUpdateTime(String string) {
- if(Configuration.isUsingTimingDebug()) LogSystem.out_printf(string, ((System.nanoTime()-startTime)/1e6f));
- startTime = System.nanoTime();
+ private static class DebugTime{
+ float duration;
+ String name;
+
+ public DebugTime(float duration, String name) {
+ this.duration = duration;
+ this.name = name;
+ }
+ }
+
+ public static void finishUpdate() {
+ synchronized (savedTimes) {
+ savedTimes.clear();
+ savedTimes.addAll(times);
+
+ totalTime = ((System.nanoTime()-baseTime)/1e6f);
+ if(Configuration.isUsingTimingDebug()) {
+ LogSystem.out_println("");
+ LogSystem.out_println("[DebugTimer] Total time: "+totalTime+"ms");
+ for(int i=0;i "+text+": "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
- }
protected static void renderColor(int eye){
+ if(Configuration.isUsingTimingDebug()) LogSystem.out_println("[DR] rendering "+shaderLists.size()+" shader loops:");
+ int l1=0;
for(ShaderRenderlist map:shaderLists){//for each shader phase
+ if(Configuration.isUsingTimingDebug()) LogSystem.out_println("[DR] \tShader "+l1+": rendering "+map.getObjectList().size()+" models");
ShaderProgram shader = map.getShader();
shader.useDirect();
if(shader.getShaderType() == ShaderProgram.SHADER_3D_MODERN || shader.getShaderType() == ShaderProgram.SHADER_VR_MODERN) ShaderManager.shader_loadLights(LightsManager.getPointlights());
+ int l2=0;
for(Entry> entry:map.getObjectList().entrySet()){//for each models of this type
+ if(Configuration.isUsingTimingDebug()) LogSystem.out_println("[DR] \t\tModel "+l2+": rendering "+entry.getValue().size()+" instances");
shader.bindModel(entry.getKey());
for(DeferredModelRenderer dmr:entry.getValue()){//for each render of this model
shader.bindDatasDirect(dmr.getShaderDatas());
@@ -116,8 +112,10 @@ protected static void renderColor(int eye){
}
if(eye == VRUtils.EYE_CENTER) dmr.render(); else dmr.renderVR(eye);
}
+ l2++;
}
shader.stop();
+ l1++;
}
}
diff --git a/src/slaynash/sgengine/utils/SceneManager.java b/src/slaynash/sgengine/utils/SceneManager.java
index aeaa444..930294b 100644
--- a/src/slaynash/sgengine/utils/SceneManager.java
+++ b/src/slaynash/sgengine/utils/SceneManager.java
@@ -7,6 +7,7 @@
import org.lwjgl.util.vector.Vector3f;
import slaynash.sgengine.Configuration;
+import slaynash.sgengine.DebugTimer;
import slaynash.sgengine.LogSystem;
import slaynash.sgengine.SGETitleScene;
import slaynash.sgengine.audio.AudioManager;
@@ -84,7 +85,6 @@ public void run() {
LogSystem.out_println("[SceneManager] Starting render");
while(true){
while(render){
- long pinnedTime = System.nanoTime();
if(Display.isCloseRequested() || (Configuration.isVR() && VRUtils.isCloseRequested())){
render = false;
close = true;
@@ -94,8 +94,7 @@ else if(currentScene != label && nextScene != null) {
break;
}
else{
- long startTime = 0;
- if(Configuration.isUsingTimingDebug()) startTime = System.nanoTime();
+ DebugTimer.restart();
UserInputUtil.update();
KeyboardControlManager.update();
if(Configuration.isControllersEnabled()) ControllersControlManager.update();
@@ -105,27 +104,16 @@ else if(currentScene != label && nextScene != null) {
currentScene.update();
if(Configuration.isHandRendered()) PlayerWeaponsManager.update();
if(Configuration.getGUIEnabled()) GUIManager.update();
- if(Configuration.isUsingTimingDebug()) {
- LogSystem.out_println("[TIMING] Update time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("Update time");
if(Configuration.isVR()) VRUtils.setCurrentRenderEye(VRUtils.EYE_CENTER);
currentScene.render();
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] Render time [main]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("Render time [main]");
deferredRenderCheck(VRUtils.EYE_CENTER);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] Render time [defe]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("Render time [defe]");
boolean iudr = Configuration.isUsingDeferredRender();
Configuration.useDeferredRender(false);
@@ -137,20 +125,12 @@ else if(currentScene != label && nextScene != null) {
if(Configuration.getGUIEnabled()) GUIManager.render();
int err = 0; if((err = GL11.glGetError()) != 0) LogSystem.out_println("[SceneManager] GUI Render error: OpenGL Error "+err);
Configuration.useDeferredRender(iudr);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] GUI Render time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("GUI Render time");
if(Configuration.isVR()){
VRUtils.setCurrentRenderEye(VRUtils.EYE_LEFT);
currentScene.renderVR(VRUtils.EYE_LEFT);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] VR Render time [Left][Main]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("VR Render time [Left][Main]");
deferredRenderCheck(VRUtils.EYE_LEFT);
Configuration.useDeferredRender(false);
if(Configuration.isHandRendered()) {
@@ -159,18 +139,10 @@ else if(currentScene != label && nextScene != null) {
PlayerWeaponsManager.renderWeaponVR(VRUtils.EYE_LEFT);
}
Configuration.useDeferredRender(iudr);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] VR Render time [Left][Defe]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("VR Render time[Left][Defe]");
VRUtils.setCurrentRenderEye(VRUtils.EYE_RIGHT);
currentScene.renderVR(VRUtils.EYE_RIGHT);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] VR Render time [Right][Main]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("VR Render time [Right][Main]");
deferredRenderCheck(VRUtils.EYE_RIGHT);
Configuration.useDeferredRender(false);
if(Configuration.isHandRendered()) {
@@ -179,46 +151,30 @@ else if(currentScene != label && nextScene != null) {
PlayerWeaponsManager.renderWeaponVR(VRUtils.EYE_LEFT);
}
Configuration.useDeferredRender(iudr);
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] VR Render time [Right][Defe]: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("VR Render time [Right][Defe]");
Vector3f cpcPos = Configuration.getPlayerCharacter().getPosition();
Vector3f cpcDir = Configuration.getPlayerCharacter().getViewDirection();
Vector3f cpcUp = VRUtils.getUpVector();
AudioManager.update(cpcPos.x, cpcPos.y, cpcPos.z, cpcDir.x, cpcDir.y, cpcDir.z, cpcUp.x, cpcUp.y, cpcUp.z);
- if(Configuration.isUsingTimingDebug()) {
- LogSystem.out_println("[TIMING] Audio update time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("Audio update time");
}
else{
Vector3f cpcPos = Configuration.getPlayerCharacter().getPosition();
Vector3f cpcDir = Configuration.getPlayerCharacter().getViewDirection();
AudioManager.update(cpcPos.x, cpcPos.y, cpcPos.z, cpcDir.x, cpcDir.y, cpcDir.z, 0, 1, 0);
- if(Configuration.isUsingTimingDebug()) {
- LogSystem.out_println("[TIMING] Audio update time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("Audio update time");
}
DeferredRenderer.cleanup();
- if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] DeferredRenderer cleanup time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
- }
+ DebugTimer.outputAndUpdateTime("DeferredRenderer cleanup time");
//GL11.glFinish();
DisplayManager.updateDisplay();
if(Configuration.isUsingTimingDebug()) {
- GL11.glFinish();
- LogSystem.out_println("[TIMING] Update display time: "+((System.nanoTime()-startTime)/1e6f)+"ms");
- startTime = System.nanoTime();
+ DebugTimer.outputAndUpdateTime("Update display time");
- LogSystem.out_println("[TIMING] TOTAL time: "+((System.nanoTime()-pinnedTime)/1e6f)+"ms");
+ DebugTimer.finishUpdate();
}
firstRenderNotLabel = false;
if(Configuration.isVR()) {