From 82db1f9321252cccd9ecdc9103c04d498c45a68c Mon Sep 17 00:00:00 2001 From: Halbear Date: Sat, 10 Jan 2026 21:28:21 +0000 Subject: [PATCH] initial Commit --- .gradle/8.14/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.14/checksums/md5-checksums.bin | Bin 0 -> 21797 bytes .gradle/8.14/checksums/sha1-checksums.bin | Bin 0 -> 29189 bytes .../executionHistory/executionHistory.bin | Bin 0 -> 99644 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/8.14/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.14/fileHashes/fileHashes.bin | Bin 0 -> 22597 bytes .gradle/8.14/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.14/fileHashes/resourceHashesCache.bin | Bin 0 -> 21115 bytes .gradle/8.14/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19325 bytes .gradle/file-system.probe | Bin 0 -> 8 bytes .gradle/vcs-1/gc.properties | 0 .gradle/workspace-id.txt | Bin 0 -> 28 bytes .gradle/workspace-id.txt.lock | Bin 0 -> 17 bytes .idea/.gitignore | 8 + .idea/.name | 1 + .idea/Terrain4JEngine.iml | 9 + .idea/compiler.xml | 6 + .idea/misc.xml | 5 + .idea/vcs.xml | 6 + build.gradle | 82 +++ .../main/net/halbear/Executable/Init.class | Bin 0 -> 740 bytes .../Terrain4J/EngineCore/Display/Render.class | Bin 0 -> 618 bytes .../EngineCore/Display/VulkanInstance.class | Bin 0 -> 1426 bytes .../Terrain4J/EngineCore/Display/Window.class | Bin 0 -> 4674 bytes .../EngineCore/Input/KeyboardInput.class | Bin 0 -> 2666 bytes .../EngineCore/Input/MouseListener.class | Bin 0 -> 3332 bytes .../EngineCore/Logic/EngineInstance.class | Bin 0 -> 2042 bytes .../EngineCore/Logic/GameLogic.class | Bin 0 -> 339 bytes .../Terrain4J/EngineCore/Logic/Globals.class | Bin 0 -> 4266 bytes .../Terrain4J/EngineCore/Main/GameCore.class | Bin 0 -> 910 bytes .../EngineCore/Main/PrimaryRuntime.class | Bin 0 -> 3603 bytes .../Terrain4J/EngineCore/Main/Scene.class | Bin 0 -> 446 bytes build/reports/problems/problems-report.html | 663 ++++++++++++++++++ .../stash-dir/EngineInstance.class.uniqueId8 | Bin 0 -> 2030 bytes .../stash-dir/GameCore.class.uniqueId0 | Bin 0 -> 910 bytes .../stash-dir/GameLogic.class.uniqueId4 | Bin 0 -> 339 bytes .../stash-dir/Init.class.uniqueId7 | Bin 0 -> 740 bytes .../stash-dir/MouseListener.class.uniqueId5 | Bin 0 -> 3332 bytes .../stash-dir/PrimaryRuntime.class.uniqueId1 | Bin 0 -> 3619 bytes .../stash-dir/Render.class.uniqueId6 | Bin 0 -> 612 bytes .../stash-dir/Scene.class.uniqueId2 | Bin 0 -> 440 bytes .../stash-dir/Window.class.uniqueId3 | Bin 0 -> 4735 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 110935 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 251 +++++++ gradlew.bat | 94 +++ settings.gradle | 2 + .../java/net/halbear/Executable/Init.java | 11 + .../Terrain4J/EngineCore/Display/Render.java | 15 + .../EngineCore/Display/VulkanInstance.java | 18 + .../Terrain4J/EngineCore/Display/Window.java | 97 +++ .../EngineCore/Input/KeyboardInput.java | 58 ++ .../EngineCore/Input/MouseListener.java | 58 ++ .../EngineCore/Logic/EngineInstance.java | 10 + .../Terrain4J/EngineCore/Logic/GameLogic.java | 8 + .../Terrain4J/EngineCore/Logic/Globals.java | 90 +++ .../Terrain4J/EngineCore/Main/GameCore.java | 26 + .../EngineCore/Main/PrimaryRuntime.java | 74 ++ .../Terrain4J/EngineCore/Main/Scene.java | 8 + terrain4j.properties | 7 + 65 files changed, 1616 insertions(+) create mode 100644 .gradle/8.14/checksums/checksums.lock create mode 100644 .gradle/8.14/checksums/md5-checksums.bin create mode 100644 .gradle/8.14/checksums/sha1-checksums.bin create mode 100644 .gradle/8.14/executionHistory/executionHistory.bin create mode 100644 .gradle/8.14/executionHistory/executionHistory.lock create mode 100644 .gradle/8.14/fileChanges/last-build.bin create mode 100644 .gradle/8.14/fileHashes/fileHashes.bin create mode 100644 .gradle/8.14/fileHashes/fileHashes.lock create mode 100644 .gradle/8.14/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/8.14/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/file-system.probe create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .gradle/workspace-id.txt create mode 100644 .gradle/workspace-id.txt.lock create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/Terrain4JEngine.iml create mode 100644 .idea/compiler.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 build.gradle create mode 100644 build/classes/java/main/net/halbear/Executable/Init.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/Render.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/Window.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/MouseListener.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Logic/EngineInstance.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Logic/Globals.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/GameCore.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.class create mode 100644 build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/Scene.class create mode 100644 build/reports/problems/problems-report.html create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/EngineInstance.class.uniqueId8 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/GameCore.class.uniqueId0 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/GameLogic.class.uniqueId4 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/Init.class.uniqueId7 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/MouseListener.class.uniqueId5 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/PrimaryRuntime.class.uniqueId1 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/Render.class.uniqueId6 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/Scene.class.uniqueId2 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/Window.class.uniqueId3 create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/net/halbear/Executable/Init.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Display/Render.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Display/Window.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Input/MouseListener.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Logic/EngineInstance.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Logic/Globals.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Main/GameCore.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.java create mode 100644 src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene.java create mode 100644 terrain4j.properties diff --git a/.gradle/8.14/checksums/checksums.lock b/.gradle/8.14/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..a7ac98cad629ac41b16b909cb07a34b6dbad4976 GIT binary patch literal 17 VcmZRcHrMum5d-&p1~6b00{|#u11A6g literal 0 HcmV?d00001 diff --git a/.gradle/8.14/checksums/md5-checksums.bin b/.gradle/8.14/checksums/md5-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..4413880852b20ca19b69121a34700adcc2890bc1 GIT binary patch literal 21797 zcmeI3c~leE9>?PnM8vX))GFZqEOlW~u`OC4B1;Gf7-%h26l5(RRCY0fqJW02;y_t_ ziY-V51-0l@>w*dhD1sGHE4~U=5vqtngZg-Pa_^<*CG$uAd*{4!=Nu+EAMR&n|?p|5q=t{S@-`2l= z7vydiNBPP8n`2hmN+5SK!Ti?8hJr;Vo~`Kkt1!Q7W1p58VQ~#|=M>EEt@-PphJzmt zK`yStyt9WBZv2NHx-O?|%)2gSS#$>WqT@TC!Mrz;Yg^I$O8`8Mz!USn?JaX37gzlX zIse@#Z*kL+yfM83xl1YLFIMj=E4%duoQ)@Aq|*lm=ed|0(H_Q0`ks}LyA5DI=XAWda6?}i-@5=gKM!+J=c+dT<+5VL12Eq(Vw2=)q+bBJ&=7N23y3dFzFb|bES>)xe ze+$PuPQ*Mswc_RRhb2*v^BXbWvUs=uYS-!NkgshX<(qDoXbjhWkB(!Bd4&D?BbuV1 zFCceYk9lNK%bo)sea(=&=wKex_~P=XTjrwsu&5LB*qgy;7o_S{p}H84NS68S;N7}v z0J+E!|3c!B6lpU2`4M70g?bofFwW?APJBJNCG4Qk^o77BtQ}%36KOx0we*F07-x(KoTGckOW8qBmt5D zNq{6k5+DhX1V{oT0g?bofFwW?APJBJ{#OYs1%-{l&ur#LTRS&yO0+Mp)Fx@NrW%y56Xl8A+P6sxQrrY`iOdgbcKHT&rH$(CFLN{F3jl z8*Aph`r$co7&5wH4ZTifSa${HIeZK8dGzW4W4JZq(aPZQ%!+q~bnBd2{7x+R^3|amw+{?udGA36S`*IQrfgg)Z77;uIN?>| z-1nYR83y2~1SYFg8lDxGd8$F7hWF-T4Z)qbQ_+Lrx7XFw>mUQI3+FPAo+ubI9}ZZ? zZ8(-SV`FLT{PF~_qME6(XBDc!avk=jMKyDZT@Fglc6v9{pMka3aw8iV*OhBLe?2W> zApVrJ$>eA0b3J!3Qf`3En2l=+b_!=DOvvWfeiJxyLui^~-dZ4p#$Gh9xLL|Zh>rPI zLwj*taAx{a4h4Ijb~0+Y^*)`1u|l<6jvr(-~V4CcE?dNn|kh z5U_DKfStmXCp5TUv$2bD|KyNI(S%vuAR~DVJg=TA8&9Qz_Mp9whIx6%d-*d>z;hRj zk&f;@YKxVP(<`&~^JI;GJ~C@MV$1adPg2N@8ZZ)UYPw*ja8^7+lhesNkL?%sSvzbE z6!MXQKaWsl!>g#UQd&^C$f&!u{IEfMEi^LbF%>wR@q58ep~kx=zO*g3e~f-sR(I1^ z9^j6~oK?mGxxkqM(pEGwd%yaqC#OZX?&mX-#aDdV<%XvfzK&jHmM`~Z| z`v)+XSq?U~{=wGOfRQK{IBZ>wt>XY=A2irH4qLAU#&6JI>$Pk>il)9sPnW3Lqi8A^ z%|umu6fn}^S*hBiXewk4GF0qQz<7%cF?dz@ez5f@nhLE(hKfCkrZz7}hKfB37J3+j8bKTtw+&RgcdSX z>`}k~U7Fcc?NKxp*@z4kdlXGY?Lr1ix@nu_s2XQg6~ zqN&))&|vFPY#j#}EvQB)cvbk!*}57qno$jwuEy4JXetiXVCy(+T@4uM*+|&c{sZoJ BjKcr` literal 0 HcmV?d00001 diff --git a/.gradle/8.14/checksums/sha1-checksums.bin b/.gradle/8.14/checksums/sha1-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..9bbbbc25002f2fb4055f906c6b229422cdb13abf GIT binary patch literal 29189 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.14/executionHistory/executionHistory.bin b/.gradle/8.14/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..3ebe0dc10eae38d497fc7b4434e5b73f092275ba GIT binary patch literal 99644 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.14/fileChanges/last-build.bin b/.gradle/8.14/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/8.14/fileHashes/fileHashes.bin b/.gradle/8.14/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..292b8fc3a8e0af13f1b8201acaccbecf7f308331 GIT binary patch literal 22597 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.14/fileHashes/resourceHashesCache.bin b/.gradle/8.14/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..a154e73b6f0a13359e6a8a038ba0d1144929dfef GIT binary patch literal 21115 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 U+28Zu633omELV4I^O(>24f#-UZ~y=R literal 0 HcmV?d00001 diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..94b4ced9ff23f2eb4c9db4fbc1352ef581db9d6d GIT binary patch literal 8 PcmZQzV4SU}ar{332A%?} literal 0 HcmV?d00001 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/workspace-id.txt b/.gradle/workspace-id.txt new file mode 100644 index 0000000000000000000000000000000000000000..7554bc470a5c0ab2a8a9b2c668badcd6c977b02b GIT binary patch literal 28 jcmZRODl1JaHA^!tPsvLyDM(8$FfL0iPb;o0PfrB^jgbnF literal 0 HcmV?d00001 diff --git a/.gradle/workspace-id.txt.lock b/.gradle/workspace-id.txt.lock new file mode 100644 index 0000000000000000000000000000000000000000..5edb8deb735bd5d105b40d5dff87b8e23360caa9 GIT binary patch literal 17 UcmZRcQ}toBbNA&s1_)pT06fD4)c^nh literal 0 HcmV?d00001 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..55853e2 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Terrain4J \ No newline at end of file diff --git a/.idea/Terrain4JEngine.iml b/.idea/Terrain4JEngine.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/Terrain4JEngine.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..6e52cd1 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..19978af --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..7369a2a --- /dev/null +++ b/build.gradle @@ -0,0 +1,82 @@ +import org.gradle.internal.os.OperatingSystem +plugins { + id 'application' + id 'java' +} +project.ext.lwjglVersion = "3.3.6" +project.ext.jomlVersion = "1.10.8" +project.ext.jomlprimitivesVersion = "1.10.0" +project.ext.lwjgl3awtVersion = "0.1.8" +project.ext.steamworks4jVersion = "1.9.0" +project.ext.steamworks4jserverVersion = "1.9.0" + +switch (OperatingSystem.current()) { + case OperatingSystem.LINUX: + project.ext.lwjglNatives = "natives-linux" + def osArch = System.getProperty("os.arch") + if (osArch.startsWith("arm") || osArch.startsWith("aarch64")) { + project.ext.lwjglNatives += osArch.contains("64") || osArch.startsWith("armv8") ? "-arm64" : "-arm32" + } else if (osArch.startsWith("ppc")) { + project.ext.lwjglNatives += "-ppc64le" + } else if (osArch.startsWith("riscv")) { + project.ext.lwjglNatives += "-riscv64" + } + break + case OperatingSystem.MAC_OS: + project.ext.lwjglNatives = System.getProperty("os.arch").startsWith("aarch64") ? "natives-macos-arm64" : "natives-macos" + break + case OperatingSystem.WINDOWS: + def osArch = System.getProperty("os.arch") + project.ext.lwjglNatives = osArch.contains("64") + ? "natives-windows${osArch.startsWith("aarch64") ? "-arm64" : ""}" + : "natives-windows-x86" + break +} + +repositories { + mavenCentral() +} + +dependencies { + implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion") + + implementation "org.lwjgl:lwjgl" + implementation "org.lwjgl:lwjgl-assimp" + implementation "org.lwjgl:lwjgl-cuda" + implementation "org.lwjgl:lwjgl-fmod" + implementation "org.lwjgl:lwjgl-freetype" + implementation "org.lwjgl:lwjgl-glfw" + implementation "org.lwjgl:lwjgl-jawt" + implementation "org.lwjgl:lwjgl-jemalloc" + implementation "org.lwjgl:lwjgl-llvm" + implementation "org.lwjgl:lwjgl-lmdb" + implementation "org.lwjgl:lwjgl-meshoptimizer" + implementation "org.lwjgl:lwjgl-odbc" + implementation "org.lwjgl:lwjgl-openal" + implementation "org.lwjgl:lwjgl-rpmalloc" + implementation "org.lwjgl:lwjgl-shaderc" + implementation "org.lwjgl:lwjgl-stb" + implementation "org.lwjgl:lwjgl-tootle" + implementation "org.lwjgl:lwjgl-vma" + implementation "org.lwjgl:lwjgl-vulkan" + implementation "org.lwjgl:lwjgl::$lwjglNatives" + implementation "org.lwjgl:lwjgl-assimp::$lwjglNatives" + implementation "org.lwjgl:lwjgl-freetype::$lwjglNatives" + implementation "org.lwjgl:lwjgl-glfw::$lwjglNatives" + implementation "org.lwjgl:lwjgl-jemalloc::$lwjglNatives" + implementation "org.lwjgl:lwjgl-llvm::$lwjglNatives" + implementation "org.lwjgl:lwjgl-lmdb::$lwjglNatives" + implementation "org.lwjgl:lwjgl-meshoptimizer::$lwjglNatives" + implementation "org.lwjgl:lwjgl-openal::$lwjglNatives" + implementation "org.lwjgl:lwjgl-rpmalloc::$lwjglNatives" + implementation "org.lwjgl:lwjgl-shaderc::$lwjglNatives" + implementation "org.lwjgl:lwjgl-stb::$lwjglNatives" + implementation "org.lwjgl:lwjgl-tootle::$lwjglNatives" + implementation "org.lwjgl:lwjgl-vma::$lwjglNatives" + if (lwjglNatives == "natives-macos" || lwjglNatives == "natives-macos-arm64") implementation "org.lwjgl:lwjgl-vulkan::$lwjglNatives" + implementation "org.joml:joml:${jomlVersion}" + implementation "org.joml:joml-primitives:${jomlprimitivesVersion}" + implementation "org.lwjglx:lwjgl3-awt:${lwjgl3awtVersion}" + implementation "com.code-disaster.steamworks4j:steamworks4j:${steamworks4jVersion}" + implementation "com.code-disaster.steamworks4j:steamworks4j-server:${steamworks4jserverVersion}" +} \ No newline at end of file diff --git a/build/classes/java/main/net/halbear/Executable/Init.class b/build/classes/java/main/net/halbear/Executable/Init.class new file mode 100644 index 0000000000000000000000000000000000000000..066cb20e0437e1bc4f03ec917f1ccd0c39923363 GIT binary patch literal 740 zcma))QBM;=5Xb++6|Oxh&>}@e1ofrWgnc2tl<)#bG^ZFKO$blhb8{@|?Ir7-(U0Ye zO(gLH@SzAZEdfyyyocGHotfYLXLipoe*Ffpjh7K75QM1IF^MU{+^PPm)j+#c?e$Mh zQV^y#th2=?A!v7cA*zIRX9{(q2YsWxIyByE>(<|^9hX{XwsLRO2R>1syv?-#zF)e+ zW~PdWP`l0!Q75eZA81!+BW#3e1Q9~airP8CZacowdr)}m(r$b&GtN_+D1nZ4-A+%K z%{t~~0)a1Ghy}vZpP-#@CMgTu9~kwHr$MM}<(~~@qatxe;3Jzd<2fGkOObB^ByWXni#^3F@jCfx2>LM!FS3=e*hg&Z;{-g$6ZUFY z!c#tx;(Z1Qv~`B?s98J1^wAIxhM0+8|3u@4HiLk(s%UWa0-_PMHLk=mo^hh^YMM4j~+h8oigit(HS|#U%e6!Ve zQ6hL+Cf-OyffUB;Nn?c4hu7YP9x5$6v5{U^O(&6f^6sP_NJBVj`b%s4c&Ne*Ci literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.class new file mode 100644 index 0000000000000000000000000000000000000000..3f2629d733154d95f39f1354c7a55d3ca1883423 GIT binary patch literal 1426 zcmbVMOH&g;5dOvl7Q%*L5Cug9L`Wd8q9{TD<*9)XC=>U_I z_2!v{sVTQxn?)6?^H_c#6R=cmsA7LW6e}*9ti|ZjYpix0cMH5tpPTSql%){LsQ}fE6FZQ)nv2VNOtk3g% z42_m{$q&>f4XFSAZIpqWnOgzIv{8e5h(wWzp`C`0f~Zs{3=7E7POn=f)VE8dob zl^4nQ$%bXv+FaQebEWNV;U+`4fi?vo}&7=e}WEDQnxN zX!G1O?L5Om>~gs0qxqM+DuUZ8?x2$)?B&Xi=vxrmykt^d`!6KqQWsq+?xCBiq2VDz+n=Rb866{3`pV|)dTLW&e4S0LWj04QNy$>u?;{nDrQZ;D zjG9wPnI|fqN+Q?gP1_R+h&HWfq{$Us`;c#$glrs>Dw3EYWV}$wmK?_wo+kXVHsU&odAmTX zNLnVTw7(_XoJ2&yrfnjh&Rs*UYf6>sk}cYU$Th6~0wBC~JOBUy literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/Window.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Display/Window.class new file mode 100644 index 0000000000000000000000000000000000000000..0986f973872de4645eb4d0d63c039ba38ba08d08 GIT binary patch literal 4674 zcmcIo33n6M75>KC$YQ`o1c=Szp*5{+7O^EP3J@a8Sc(M3GNyJ&U?e@;gGV#UXk_Db zUy^i7my|Yv?knAB6N8NlZPPt%n(ljlOHbQ-X9i0K5kk-D;h;C~&E4;J?|tJ}{(bF- z0DACG8Fdm?SoT=Nm^w3NM8=HKsmS3}?};E9&?uuxfsBBJ)-&3q7BMt)EOIn^M&uj` zO%Ld%?i`R%AMP4zMi5J6C<>NhnS_WboXEIlWQAr&28C^Fy16SEiJN1(DPoo_B0YMk zXlT=s6S|qVrX&RO-a&7FMuIdF1nE?;93cq-HY!27Tva17?vc=5v1g!cI(k9G&*ntY z(JeE8RTA2cn_AWos$;2arLGzJ6GHVITY-Dot2PNM!>Nj#jAQHOShQ;>h&5O%W1WKa ztiG*AbcV{tgl1CY*fejGDHn^D?TCB;s)U0v%``1X9VPcvP0d+_qUPvqkw;Bdl^o45 zTqARaE=)(w+xn!i)o>!#)5ZS3LBSi*NmjCw!@}ve^@3(kr!8{GvfW@LneI&r-i$EC z%cmRC^TJA7c_E=Aoa{=~vR}_LK{SAF3G3pvZQ1IWa2yJNTJ+SY1y4^9o3Ta4Rs|7k zqrl%@nuNwFJ@1UWmL(VwJD6!FiS0NzX;Y6Zqi0BZI5tFc{VrXf)cD>YgZPrbHQ5ZUtRsIW6sXfZ-|R?AH!q8#ZF1&`pQ zg!P=VjBsv4Ea7B0SqrSUp-894=c zZem;S80VBVrspDu4J)e|C4%5kX81^qT^?011}X%%Br{W5F+qClNzLH=5=>>BdHqmH zTji2S>4afZ*g@zx$^a}VFkw;SEbwa=Mt6aYMKUQikHeNxQs8iS?yZy#rz~~Ml(_S(0+i3+)aA_}PUK$1k-K1jUV82bl+qplic2hh+ zr>FV{66r$&!-IVT@k2dK^G*ftVw(EF{tWNmqu{-~Z>{hQ#Ef)CjhYNfyp|dhA7BvN) z87VxY;3N1bwI(Xq40TdN^xL9DIyvPu(SrE6f@e7r0jh$b(zKalwsQ(T$%lHYwfX?fHFszck}?i;m$X)N4U%z*;8018Cy&JC4569jqJ(CeZGC>9 zcAwn=#5W5;_;5#7D?Kji$rAR2yYB2^jcy)gs0+s}F~2VFLe%2Qr1~yeh7q5n_Cz6H zRuayl{4FU}=Up+hLN>2;nqsPR8@2gxl4l}4O!>DgiEdgF^`&6OD%&~Ht8eO9H)w|ZITU5Hd?NcRH zRjF3JhXG;cg}rd@Hb{EY(u7|I@hiL{nI=;U z)w@@#uWvq+XSA2>QfJDtCd$R=tzfGCbH%$ofrHr0Je06eHnvt~D@io(3 z=|1YN^qE4dLM@WM1nBomfMg?pdOH0<_f^z)H_W1W9xWHJ^g31yhgM$2>X+uxeq-O^ z?KjM0V|w$;K2aARc5j};rde#~b=NF*&tq@sf%CtVRY;!*mf zun@*sY{JvnLKA8SO`Vk;%l^{(BUG!PT|~!XNdNj6!>q^ zX&ajULqBygf-=4hwEPSA$k@DhTRo9}hobJrAALkF5qZdSwdgJ7d7NdZ>RhKnZl?E8 z*7i~c_t6(()HQ@N$$9q-k?>t|#FHBFr8cs-OACUUT!#Hs%#91oFOdB=n5khB4>Rv3 z%Y7?6=7TkvU#!Wz{buF|YckK^at+PLUbso~Lp7PNV73OcaWiwgCiC1v8lI&>VxN1- z=jQWR!*QFzTW9c&8N8d|cMb1jM82QSkF^fX;lt-4chBKtyr07-XffvSsTn-iaQZTy ztKe}xB@LA14kQRwN%}NQ5sK2-PsoeoXq8pHekK?@4XEpAA$#cJcN$zKA7U6%F)Q(b-PEfKc6p0csK%g3Az9#0di9aFxFH#rl@ZB>(DyzTJdz*4NB| zAQcxXXbch_KwmcjoU9Vpya1$mLZkmX*|#zgJhX7XSbN literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.class new file mode 100644 index 0000000000000000000000000000000000000000..7d39f21786b4bdae260cb93b9a35b53b3ce1b8c0 GIT binary patch literal 2666 zcmbVOZBr9h6n<{r7Q!kL39a}}RRXAMm0E46twhmad}%{L?dvAFgoS07ZZ=Rl{nUS< z{nF`|mKncvrjBT5`U5)sN1f^Pxw|3Rw2aQkOm@#b_q;s!Ip^Hv&wpP00pJ?G)({ie z?|OB^-dL{NM%`ZAFm9A)7Sc!{sUf99Lyy3|Wpmv$Y}2V5cPq=X>Il|f#WCde|P<1JOVy(-H+*S4>(OUG}daT2FAjOxf? zj68M9T6BC_m!5#OZrV+GcTr#{R~!pj4hrA0$oF9ar!}0>aTW$Mbk{+kr|LRBOWF{~ z<|6)Ky|R% zFIlAf;_LM-DO+ewMAA}|$64#@%AVY8k$(zToRh`DDYDFss_9e%lqs|7TdqUYt8R@r z_LP0L`)zZr1uspf_TVO1m4_@eb>SKJQi{wf58aUd4wKUiMDlXGO~sB)I9m#xUhOL6 z$g8~s(q*^lRppEouzM?d=bTlo&8ueGb^V6#nQOPDzr+*n!=3&lDrw#+RUNmvNhhhAat~A&3 zk=7~u9-3ECeRljA z;^V)g_rWvtJ%!#8Gvh~}B0K&Ye=l$V*v8?7UxU~;_#8%x&p~1sKtD2EXL-L5;SAB- z|0O5_(z~&QmY=OKjtKCvrOQJV12AK_or2X+;vM??QhuP8*H> zTLh^e-o}aN7?0sGhO^1Uj~MJ|&&9CtGwyd3G<$@b+2mssI?4+%{D2ExYqfZecLjdJ zu#&qrpCiw>RAt(^AK|D9s%$fz4F(Qv)gj|h^c@L+A0kbMG0N2x$&)yS@A&!p1t)@o zUkNDQYE!t?qL2s1UEB-Gw}p==sYcks$CQ$RRHl@|9Ayph(Z4Y_LB>A8e8?N6Sio_> z(7_$v9wC`{5`RLc5Mo$|Q>^W1q@sguID=SV8WE(4Lu4r4Z>RXam10sc7D;hZu@YG) z<4-yoRi-WoL&13_*x08r!WKFQgP+d}5jc}=IFk`L3B*SFiRS?xwvIf_L#c*LGh23I z8y`ekIXvhk{>OGX5;@(DoW`g4jB(=loDpL90$=j2+OkI7S1|coQL(A9;b091{skvk BcEkVx literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/MouseListener.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Input/MouseListener.class new file mode 100644 index 0000000000000000000000000000000000000000..f269aaf5bae242e92d2bddae1db7f5436c394d9f GIT binary patch literal 3332 zcmb_eTUQ%Z6#fq60%Tg!a4BGEX-jRAR;H!2R*AI&rA-WNEeIAbb&?EWV3>)M2^X)` zU*L-m>Wgo__@HYQ>#A$%vo3#z|H8G@?@UHWAZ1}!A7;)zd-gtifBWpq{Qmc&UjR(t zvoM+jI&7z?nrll%Q!SbcYwGpvaE<8o_7U8DZ?_{ zD+0~&#B3OC0*B-|OZJMX&Qij5h8F_A-Ur&yiUabTg95?$jVX6_QF{wo8BwLb&|x|gi8|Z^G_M8m+aN_ ztH=6+f)_EmjkST`W3e`neGJwHlB2CGrbbfZqfJy5iNOu4`M2ZiI3Zepg`IGGqgy_O#2&n$k+XYaK>8ySq!U zATm6@nTu4eqQ$3%)C?%>#|s6>#7xCU54VBi3#s6)=RQ|iU}UI;gN0AcE!o-lZJOA zULyS0bcf^^;4~PsZMW!h3cu^}4 zW^H@9QW~uhn|2+;D%Ns*YgNUWjgtOkAFC$!)=ktn;+vJ_J#Dx;vrb7{9Bt#K#&J^) z<70tS`+^t7eSxEUi}KE^vA}U&LVyE_6IhN#QZYFPy_Ex*Ym=N{-pWzvtsHpX%HrlK zCrcQUd|&78M+DK#bw2qJ&B>q9dN&q{MIJ)gM7y_rh^|d^Zr=1m-tuL1cwc`W$| z&jLRoIVZ^>NuKw}i;}!N_k(Bq2H!)7@ZC=Tqx^X|#8DkXg47WGzJM-VMmNUMhnqxn z7XwIBx|?|D9Wr>8tE94+qVIxIw|oq$w+DjB2k8EuLQRn7LS%!}ULK=(bkIMBbF-mx z?@r}Y4V7O*i*NZi#!ebpr{&(rCQ|--m23M0q#|E@jj<|yRnnJ8pZpT46ywuPk?Pmf zg0EcV`ubPN^+;c~D%0-E@SBWnvj_GBeF8^W3nLmu5-QHHnV-d*jIP1m8qU>VS@#2R zhdM!szbGa!jTs+SZ9tEFN157y4%eKs9njYsDi7>bzSvNCc7Mv3cPmGmWIyuV{*$o? z(c4tA|0^8m3Ix7EIPfh3Uc&ZsSI-+r_6K+J#3-ii=R12&e*W720bmhJIizqzLs~}{x*7W3@(Z=Xm5vOHw%>60rtvC-m@0x^9eMOIborK$M0ce#%Q8h~ ztf=E=4g)x*;kb@Lm9lZb2pBZW5nMJK10>-|9j9=bArrVOfoIEghNp$j;k1**ELK|T zM`WgQaaP9=&XJ2c_v;I8jS{|dXcuM0IHF?|=cx?heUm#rL*=l1iHM(9-wG=*i?12@ zKIr}_YiG$46)dhXq$4Hr6}oB9nj2N&t@5fv+6+`&i#u!Fv(-K}rh~dodCqor)3!3y z7|SB4yR{eG;~OFn9+4d{v?*BFCS``fLVIbLt0HXGIaZBfn%E9_6HU6j`#~j?W5}(z zP0tdKY^Bw)s8e?u^QwxAuEkF4_szR*;0GRWMA`cp%rNLt^O|Av<*6O$*OTwY?HumF z)G(*xE@)niw6gS?GO#y<5oH^bF=VSd{0v)3!EE`#eJ70Q;A1Xpj_}7SuKTXpFcad% zO_H$0z}3x$SQNhH*^R*Ul8^<5`+m|8bG+G2lJx#pZ~m#7UY1gLA*Jv&JY*Pe<-A7@ z8WtFa_dZHxh!VyWO}rF!ZHnd=OCqqv02v?EYRt^Uu4s5nTHNA3~`O{0#7EU+_^( z#PB(C7Dif{*v9bx@F(JIc0|fx5?8{wkK$^~WQ2R5OKGuJ7F}@`jO0`xC1euZvmbC8 q*TPJvaGjpL6kl{BqWdr%+8AyjO*Obdb(+O}vgOF#1I*L+{`7Bi&FEJE literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.class new file mode 100644 index 0000000000000000000000000000000000000000..7a25cb9a1af14f48a6b4bdbb48198b75c63563c2 GIT binary patch literal 339 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 EAJIBI0ssI2 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/GameCore.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/GameCore.class new file mode 100644 index 0000000000000000000000000000000000000000..b37067c80b20a6a00945de875ae03f55a7a8a948 GIT binary patch literal 910 zcmbVK$xZ@65PiiqIkga75p#DgE;M;WUJ zG;RsT!&G;@n)hnydU<_%25^cs8!^N!B+^JCMVRi2d*OIOx1H-|SGpk~b)>Wkj|uU@ zX2Ze+VMoi*=?JeWMc~wB5D2CBD$bd1D=kZYAe~D_oC|Rmc@}KK?pRLMZ!0$9%k`wtgC4;ybEisp zs?S*t3*)7RH4hsv>wYM-D~p>ALRLn@c*h6_{}dx6%ept&mo)-a z*tzMoM94kbHGdGe@?4p*X5Jrc$1DLhVDWAcCV5ekeDZ#L?N3A=;D|VbS*Dw;`~1ZW`8zQe5%a^~h-h-oVV*5v o0r`={3DXn5Nz6wQ>xi4+4+(=UVkw%&@_4c3KZ~t!x)@g90AS{}UjP6A literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.class b/build/classes/java/main/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.class new file mode 100644 index 0000000000000000000000000000000000000000..afbd8a09731c04ab32641f50c51da47521a56872 GIT binary patch literal 3603 zcmbVO+gDsy8UJl&hQkbJfDpo^ngrThfTT{*;RH@NoHL#| z6U1w4TWeD_-g>cVy=&F3<Nji#!b&NEa&KOYS5Xn9JAl`%+x4PQe&PqZ+MH@lH*(R zCRq-7#=KcnP#IxZqoY>1CC07%T!@n6Z93|)T_HZh%OmcLl~*`2vZ=)2X6npsnzV); z3aL%W2CQPiHWpLoEoa(YNT2~t;*(~D9ql8lUdj2M<;D1Nb2ASqO*}4sWjB zdO6f?m%_14wF`|3{hD!#zTxCe4Xp|XHYE)rkjtBnnZRz`FGfAU$hF_IsvQ#v?8IJS zuus9bcLtkFT-CMg;dUJz=v1gNgOs{$y26RgnQi1V`upI$WJA_;rcEz_1LzXFQwlv> zuzN$vVagoVaReV?%6I|idrFy5nRGRd;kbqqIzB849ojSl{;MKbXc<<`0IH-kEca7LlJ zIO~?|>3-WSvgV0>EP)J$HGEXZ2u2mUwyL@9P8l}aMfHs7ucp9}_KvM4!I_XlS`>I# z$Cwx+%=+^Al4s->MeVGPoOmHoaBX|=lIi%x7<(j8d%9P=bY92DFsTsBIE51XV*3A0 zgyD{f%HAuz0q@Gbu4kVTNHlvw$CEHZ&7>7(4L@{TM&##pOpE-=M+?(LRQBDxX$obW zF`Ct3;Ub;vie@{)er37RcpaZD%QWWG^}K8An1`d#G;hqYKRbEDKX3W7grueTba7*Q zCev|uze}KiPipXV6s09@4;tcn0nDF*h_jtIZ7J!vBt5+;=;va|6Jy!TXkT`6{A_lx zZ$R#RO2?wy(X)f+1_rZ3*}l=ioFG1<t}&N_tvXnJt?I}yb_Zl;S{Bi2doPh zIGKle?6?b5t=ufaB2Scp>2kPaRd|LwCnms-!lrMra$XW7pw4HNsqByPpfKe6|qG^wUzjO z0zbeHHT+02{l^M>Ry}Dsm)tos6;ALl`G<_W?|O?0uddCT^2JcpS;LvO&ElRB*PSaB z(s!4}nv->e0+d0cO85}+1IHuQc8^xko)bOUl-n(qt zNL39#SJ?HxudjW#Ge!kMwXz-C)s&$33Z+Cp<(jC3L2NtLU`w7=R0V554(eP1#K(XvxNP` z9FUX!D|m1ThX~cl?mCWE;MalN=lI>nz6Wfh^cq67{ED{Q`NC;HH+JAG8u2Ka@Fm`A z4K>2^_%e6Y4KLs_^%dwv(p2!D1F&qtIj(|h7RlGqtw7+=GERyX%Xny2hk8l}S}6ZM z)X_Ul^pD8XL;A8jg|FbNW!|YW@0jrV6|Yu6j1kemt~JE5JH%hRtysk|LfZgU^)62J z?mk`99jocqYP#b!-PL5*vW$V(@Mq#qBpZ{v&CA`@&9Ua{e0Qu_lSONe%Mx#ny^FKU zICuG#t5^={9^n%BSm+usK7Sn(QFKl+meD5}!Dg)ikGTzaJfQr<^Dapb3OXrhN^3Ju z)ZXDy8*-S6qA^J&DYpS8DbiH+ZOrhV#$WOV=743mvcCrZZ7f{Frv-5hpIgnF$TckR zP_lr&e~LCYCVSt!Ro}UcFG?UHf&X5{Uczk*$Nlut0}RL>24OGLVjt6DKf}^aYzM!c zNO5Ew$3Z-V2QiE;Ji?O;IK=sOn7oeQ3X}aM9L3K#a^K?3U-Ff;!j!s!9^7P_{0=Aa zds6=qr|>6^-oKz1f93P&ee~mB7-S%aRD{nTjVUO}@Hn-3iAiz=U#C88_yfK{C@FC) z$2h8@_$JR-jH&|PA`~IbEqt4FG1~D@yi7FL&s`s1^4b+MT5{?)lI7l8FkSzt~1lnro@b-(-uF=mEgh;@T0_= zQ4rir0yp;@&VA-_`32nR7dG$Qy-1PB@03$Yel3p3*n*+S+eLwKQ#Dz6wC-Ci1D zi{Zq`lFxQJHD68T3*H ze^^W@x|LAQ`_)q>?L=gnm`+mULZ`wihkr@GoU0|nX?>}`)&?}&rYgvAULW|cM}~M@ ztZXiCl + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/EngineInstance.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/EngineInstance.class.uniqueId8 new file mode 100644 index 0000000000000000000000000000000000000000..15f175f8fddcc4940bfd9968ec7121aa0e64f306 GIT binary patch literal 2030 zcmbVNZBx@g5Pq%{(w0DZ^94mg1#JrwP!T2g#)~6b)DZ?}bjF!$dP5`SQj-+M|Ktaq z@nwb&{s4cJ<6aVI94iz)lnc$DuDP<=T(oPcv8Gr#4k$kh2@+1Hw^DufQuLO zXubmNuy*+khGa-Xwn!K3d40Pi+;v{65;1*6$Kuru?%L`c36p-srX**NcGI*h)DNq| zuQ=tG+~wQC7cPMf%_9^c5+E8$b$A!y|^VM$U)ipka~W z;^C@PhA?4F)1XUGzb0s0(WIrfJ~j1d*Fd8Wm+8wDI<2blO?$TR1FSIq4O(I18@j%b zD1lL0J4juvW3-NhsLO^K-zbmdr;m9+}UR zvmnyK_#Q6)&;E3j%|1yfOyGJDcPAzzBqKNj?TU-TvS^R8U__@fQbfj$yIL_$Vk*dV n8aHU~ruf1e5#EQJfsEk}l2n6RRHs=yAX$doJ;Vb2;|Ko$ruX9q literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameCore.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/GameCore.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..b37067c80b20a6a00945de875ae03f55a7a8a948 GIT binary patch literal 910 zcmbVK$xZ@65PiiqIkga75p#DgE;M;WUJ zG;RsT!&G;@n)hnydU<_%25^cs8!^N!B+^JCMVRi2d*OIOx1H-|SGpk~b)>Wkj|uU@ zX2Ze+VMoi*=?JeWMc~wB5D2CBD$bd1D=kZYAe~D_oC|Rmc@}KK?pRLMZ!0$9%k`wtgC4;ybEisp zs?S*t3*)7RH4hsv>wYM-D~p>ALRLn@c*h6_{}dx6%ept&mo)-a z*tzMoM94kbHGdGe@?4p*X5Jrc$1DLhVDWAcCV5ekeDZ#L?N3A=;D|VbS*Dw;`~1ZW`8zQe5%a^~h-h-oVV*5v o0r`={3DXn5Nz6wQ>xi4+4+(=UVkw%&@_4c3KZ~t!x)@g90AS{}UjP6A literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameLogic.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameLogic.class.uniqueId4 new file mode 100644 index 0000000000000000000000000000000000000000..7a25cb9a1af14f48a6b4bdbb48198b75c63563c2 GIT binary patch literal 339 zcmbVIyH3ME5S+`y216n~BQzWZ6)AbiQ6vfy`pso!E;`oM<;=%X@Bw@jV(m!O5zWr5 zw3^3$|9pM{xW_cdz~EXq**6Lsrf63jBYC-5*axY+@Le6*F6+uW`$X^Dvm7IXiyeKC z4J4I)-t5>VgWLrsX&Zy#?DEy1D8(mF!SC7NcD6jy=U`mQK9M+{cS_?@npPd={}owu zD%rZ(QqnBNOWj7tk3Q%!{p)qrRmu!BzrF_;Y0WV*CE5)qJ)WZI@vK9=Jl8qE}@e1ofrWgnc2tl<)#bG^ZFKO$blhb8{@|?Ir7-(U0Ye zO(gLH@SzAZEdfyyyocGHotfYLXLipoe*Ffpjh7K75QM1IF^MU{+^PPm)j+#c?e$Mh zQV^y#th2=?A!v7cA*zIRX9{(q2YsWxIyByE>(<|^9hX{XwsLRO2R>1syv?-#zF)e+ zW~PdWP`l0!Q75eZA81!+BW#3e1Q9~airP8CZacowdr)}m(r$b&GtN_+D1nZ4-A+%K z%{t~~0)a1Ghy}vZpP-#@CMgTu9~kwHr$MM}<(~~@qatxe;3Jzd<2fGkOObB^ByWXni#^3F@jCfx2>LM!FS3=e*hg&Z;{-g$6ZUFY z!c#tx;(Z1Qv~`B?s98J1^wAIxhM0+8|3u@4HiLk(s%UWa0-_PMHLk=mo^h+)y#FI-Fg&dJy&ZRn~j9%jxyd-gtifBWpq{QmdjUjU@= zSr9D(owidp>xq(X6%)5|i$>lR2qaC* zbgu}sMq@KUvutZaYRIZI!ETV$!ZwjI3F44a;x@LS@IeZ<2T0 zt`J0aoAps?*)NS9(9kO_wdbpjV^}UVB>SL-Lz2CxV3b_lWA%P5Y z2;7Tip9cA8OhMgpVdGV&Vmrhzu9r$VJ-?JDe1X#%&fu&-ue{kQ!`&t(a66jW<$=31 zJQ|_hgams|K!5fauUW3)G@=~V@H|EY4mO}{5EPi+31@?BdZ!RKND^xcE=sH~JY%dX z*=y<7i1o6D7cshtwTa*pu{M!?0@fyyqirmwmo!|#%dCV|J`M$%l0W!JZepm?NfHu$r}@< zx)GHK|25qqIR-cl#%$ZIxQKyUR%JQBvU4vPtr7e!O@siGQ zQwic@fs?y}7sLaBBRh-o&TFy2Fht((Dh)_6@#=5aL_B-9@8#~-5SdkVEcnhTH(oKVMTiuQZQaBenL z?%S$-s;Tm8*yCCLjj@wPR%y8}w2q{=Ugg^H5XsONUt_FBUzPMl(kH$|LW=R}p-Am( za^6#}aXtO38(D_6Z@-LPFg6A6z14OZE__ zcr(&UAl}bX+^n=(>K{`64k(WT8~z41{0-n;;%eoI?E2n`1xg2bVwX&^*ypv3>*@8A zQrT9^gnjDFUj9M!F+K;Cow)L(Yr{_0hMg|tAODAoKBScFTOZ*Qe2Tt*0ruPabpQYW literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/PrimaryRuntime.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/PrimaryRuntime.class.uniqueId1 new file mode 100644 index 0000000000000000000000000000000000000000..c059524871f98c98d6ec0052c015a3ec3e41042c GIT binary patch literal 3619 zcmbVOTU1ZMhyZKG|~s%_JHtCxDeBn6sw*|mIit-kr@lP@k`e9#9Uyw&eNXA;1$gvu<={`da( zf4}YD{`-x$01V>iaa19sA*>^Us6yQZl&7QVl*{m&snxP;J9XLoF}OX*IG2(Hs$?+~7_1LWto8#p%XU@ti93R_OqJJ|ra-AlvVUI$` zwq(Ad=PY~HS&E|pd&MD53VT||)?JeGT+5zI2X44U$9wQz8nfgRDRgeH+Xf-j>o$eE zw$&>zC-7*-E_sHXH#M{<9NCuCmzK+$wi(Ah+%6W~p>VAA-Rapj700bODAb1(KKw4J zcPPu(vf|iQ9c^e=s4@LCx^A>W*Y?b|@)kYavEvNLn)a;e#&HClVsT2LX9pH*uGeM}SA=e+YY2{cJ3a2HN$=+g0i(dOv3QU9;}XIW)fzm`$3N~SRD(UF!?*YX9^ zu**fUwMRnC&j-+}p-)FY1~&DA+;Yh?7Zs{)!*(Y98fG^bl|mWPF^my~L}}hB7iI?v zPKgyx>;rLRFsk7m9b*`$-88%IX;B?gjruc zUv`cBvZ$TakrOY(i%y|1bkVfEQiL55sO|3+FP+ozK};(|GIp`dE|~s*vtU%}rvVS@ zc*vLMnk6xdOryQe_WB~DeVva#CXgsRqa%;mKw;^JS;GtbnGvzEU@qW2ePiHP>S z{kAETF@|nIM*$2{$PtD21bxeLr2E<)TbF4prt5jv(NV-l74|L~3vAMM-tf*@-aH}c zE*?GK*qX_--Q4%$D8bWE)^Sl<<8Hq(ZWh3_DvG#*9iuHD)3Gd#eXrlt#gd07vYGL| z?DXWB>`>pJ-1)eUPsklTJ9Kt%C_9|(8z0IE;!`>v6-3=Sad1VDpVsjiL53zLa+1K0 zOO>VKoEkj}BU|+B9p}!CxzRSI5FT)5>HXR zB=tRLoj=d#&;w=CUQM3s-;E5 zmI&2G@!dGShwp3nfn@rt3J2CbY1tQ@1v3>)@*w$#jlAc$%L*@S%$v%^K-3w-o-LTA z17nV}P%fr#E{zQ*n+PYDi{=*BAKY+1cxRGT)$mh=+y3`ec9Xy^>}UN{u|q`p@Ztz2R4-33f8`M4S|x8Df93nnU-@$5 z8U|Y>KF{wH+`R@3A+A&HYf$Z>6=?EFws)+cuKi6kOdnZ8;|iJy-#Xp?8k*n4K7U=q z{xuv}!C_*K$jRX~+_{3Igz98>4JWGbD_`!D{2pT8W5=d+olp`rsH3*K_}HmOH=#3Z zy!T@dp5m>RKqFkj7r3Kt_#&RBz5+eNyH)&gE>l!mk6m`?&Z%7P-Gq5I9Q+8eBD14d>TjY;ZC@eP_C zCk1g8kFBRq=qeuJp(F!C@L8JPnCyM^okaU8J}2=A`EI<-tN=40%!o&s(J|akcizD) zIl!zqNCzL{>0z|;mtvNmWS-y62{MWf+=n}H9-UYuW(h}`A;<7_4wjdh`@g^mT;T*> zK^NZQTkJQ?u-~Bvzh~C`0jKaMa``h(=k#~5cX{Zi|L;M5&iC4n^KyUKzWDvqPc&Q5C#J9LsQ_L&;|2BTeU7XO5 K@DuzD&Hn*McA(h+ literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Render.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Render.class.uniqueId6 new file mode 100644 index 0000000000000000000000000000000000000000..341ead1ff02210f09ddc6bb72c9d635a58bea683 GIT binary patch literal 612 zcmah`%TB^T6g?LTML@vk-W{l+8;yym8`MNoHBrKTS|%{0OwCaIFIOfm`~W}7c!yRb z(S#aL`=w5`$DgUkNgFAw4ktnpdq=$vnxFYLd8Uipzj zg-^RIpa=&gRQa`=Henq#j<_9lGw3tD#tqTpuT(xw6 S25U>)wBY6)W!ziy!R>F-&49N6 literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Scene.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/Scene.class.uniqueId2 new file mode 100644 index 0000000000000000000000000000000000000000..273be0f9b81f3b05620ee7f11fe31ec0fb7c2bce GIT binary patch literal 440 zcma)2O;5r=5Pefxsucw>@$L;YvN7?7dO9FYuG~!KB{Tih7P8Ew(;jchuv+Rj!g<3v^1E=WkGcI^svul-6% z-EZU%hZDqnPydK5!Y=!S(KScUN2i~l4^9H?vG>OZLbeDU&W`^@*vA1QmZOVa-Rh80 Gfc_sjW^By> literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Window.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/Window.class.uniqueId3 new file mode 100644 index 0000000000000000000000000000000000000000..9ff3178e2a0d1980ff23e1631f41c3ba7af3db81 GIT binary patch literal 4735 zcmcIn`F|7F5&y2QmBoUMIBfz}Qj#9-q>n)FVaruW_cEB&;c*)8kti&n_+YMnyCRKe*s8(b|SeB|8J;_MFF`*eEW?CYW zrj^K1&B&WG68w3sRMgek_)tcIH0lR!s9-e$5`2s(K^r;yjLKLmp}hiTxNO*3LG+)_ ziK4BUh7ao{v>h?jF9&RBJYEl0&BD1S83EcPn@! zLKH7gF018*nKtu6LPsbWPSwJ%)@s+D(Uexz`SIXNVufl}tw(y)RIMkK79suq=Sf9ikP zA{wA-&nh^IHxp>hm^P;f^oh`|ja8Ltv?iJ2mRb;Fn zg5wglaK19azKO7eb(%&5f#?PE==IwzMnD&y4a z=SkWumqbb<0vp2eL&G6vUqOKZle%VsUppMS4Pq>_NwIkxmW+}Do5QoQQa7Bk$hCBm zi>rAdZi%H7m)PBD1v9MZyzLVu+cIa}O5(S(3ZCG)Udg(23=}kjDvg8vRt0b4=CHv@ z@i47EHZ+__9~eG1GBDhKppRwVq2Qe?Q$I44;rY82yocwl6`kS!!M^_C0B!X?1@Fg` zWU$~SH>Xkuu_r0b)M}}RkZ)AjiP3OXZF^0hk$zCYhwxzu0gtJ!4j->cr0|r2kK$w0m#A7Z)JAnNWQh{($tkDf%#Tkfc$y>OqbkUjW{n)Hol)>9UToC3 zD{y|#u%FK=ILm%2u6Oa_1L^(@gZzww&*F3B$uf|cNwciyW4c))sEwiIC}WcF1qENk zm%IbSb!V9*x0+Ex7<0~wmJ}V#gXO}QutxY;qDZ97oT_J4OXIn>*kDg;M#cr=LM1P*Ju;Wmg=&RY6d8}S{Tc#oraj{?51uXO7hW2gBkC#CDDaTq7LQHm}M&` z;u>drh0Bl~98QYrn@rQDT2_l`VNaU*QY)^uG~%bsw+B~g;`R|#8h5U-Un8Gomn!)uEYt=;tEPNHT5-Ex``;JX=(0(^sV zo^)E$vyN|@&XcaC&XYb>=(&=bC4CUk|Ca&Df)Dky`h%{^sPAf+NAn_D&SB+MtT`4~ zcNrUAT15M`d51f{a}it9+h6vC!o1kEeF59%v6G)Y^XOf~?!eyqMeGY4;Qy|!OZ4s% zdbc%`{l0k&&}5+b%sJZgDpJRIb{T{7ILxE2D>woy;@DB1E#kx+PM(FoVG-gyWU?nn zN%NGZ=Al1N4%Fi-^#3R}(EoZ0%~~|mxCI-@)pm5yXHFQK(M_K@Jv7@-0gU4=45AZ< zv6XI$cjE*?6u2->)AjvH?4Yx17o9&n_$Kbd1q$X1=*3sbde99RzJ{;Uj6#R=_y&cu z8&8q!wtvyStu5ze`bf;*S9mmq|G}IlO%i?;`qL!F!pJAE5Qat=R>9<63-}~G^aXr+ z4$m~4yohHieB44w0}{lzB(_nRMvx{Z4PqY-p&vt4sN!BGm^%%q>u4c7mzVHuqgBQy zRaoHy&QzI@mXb+#FE1)%^kl_$r-oK>@zh_$$@5sj<@P0u*Gt90`!#a}X^V3ez9SY)Nh0&y0HQ~9a~*a zi76fycJ&3y7CWL)eeZHK6ud~I1{%La>vi}cenigzjebFEKgLh!_gm8WIsQ!Rd?)=2 J{)T^`?Z4GkxD5aR literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..ce6149292829ac526b90d489b246fb8ee67ca5f5 GIT binary patch literal 110935 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b33c55baabb587c669f562ae36f953de2481846 GIT binary patch literal 43764 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH="\\\"\\\"" + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..db3a6ac --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH= + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..01547fa --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'Terrain4J' + diff --git a/src/main/java/net/halbear/Executable/Init.java b/src/main/java/net/halbear/Executable/Init.java new file mode 100644 index 0000000..dae817e --- /dev/null +++ b/src/main/java/net/halbear/Executable/Init.java @@ -0,0 +1,11 @@ +package net.halbear.Executable; + +import net.halbear.Terrain4J.EngineCore.Main.GameCore; +import net.halbear.Terrain4J.EngineCore.Main.PrimaryRuntime; + +public class Init { + public static void main(String[] args){ + var GameEngine = new PrimaryRuntime("Terrain4J", new GameCore()); + GameEngine.run(); + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Render.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Render.java new file mode 100644 index 0000000..5b57ba8 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Render.java @@ -0,0 +1,15 @@ +package net.halbear.Terrain4J.EngineCore.Display; + +import net.halbear.Terrain4J.EngineCore.Logic.EngineInstance; + +public class Render { + public Render(EngineInstance engineInstance) { + + } + public void cleanup() { + + } + public void render(EngineInstance engineInstance) { + + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.java new file mode 100644 index 0000000..ec167d6 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/VulkanInstance.java @@ -0,0 +1,18 @@ +package net.halbear.Terrain4J.EngineCore.Display; + +import org.lwjgl.system.MemoryStack; +import org.lwjgl.vulkan.VK; +import org.lwjgl.vulkan.VkApplicationInfo; + +import java.nio.ByteBuffer; + +import static org.lwjgl.vulkan.VK14.VK_API_VERSION_1_4; + +public class VulkanInstance { + public VulkanInstance(boolean validate){ + try (MemoryStack stack = MemoryStack.stackPush()) { + ByteBuffer appShortName = stack.UTF8("Terrain4J"); + var appInfo = VkApplicationInfo.calloc(stack).sType$Default().pApplicationName(appShortName).applicationVersion(1).pEngineName(appShortName).engineVersion(3).apiVersion(VK_API_VERSION_1_4); + } + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Window.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Window.java new file mode 100644 index 0000000..4cdd583 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Display/Window.java @@ -0,0 +1,97 @@ +package net.halbear.Terrain4J.EngineCore.Display; + +import net.halbear.Terrain4J.EngineCore.Input.KeyboardInput; +import net.halbear.Terrain4J.EngineCore.Input.MouseListener; +import net.halbear.Terrain4J.EngineCore.Logic.Globals; +import org.lwjgl.glfw.GLFWVidMode; +import org.lwjgl.system.MemoryUtil; + +import static org.lwjgl.glfw.Callbacks.glfwFreeCallbacks; +import static org.lwjgl.glfw.GLFW.*; +import static org.lwjgl.glfw.GLFWVulkan.glfwVulkanSupported; + +public class Window { + private final long handle; + private final KeyboardInput keyboardInput; + private final MouseListener mouseInput; + private int height; + private int width; + private boolean displayFPS = true; + + public Window(String title){ + if (!glfwInit()) { + throw new RuntimeException("Unable to initialize GLFW"); + } + if (!glfwVulkanSupported()) { + throw new RuntimeException("Cannot find a compatible Vulkan installable client driver (ICD)"); + } + GLFWVidMode vidMode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + if (vidMode == null) { + throw new RuntimeException("Error getting primary monitor"); + } + width = vidMode.width(); //Globals.getInstance().getWidth(); + height = vidMode.height();//Globals.getInstance().getHeight(); + + glfwDefaultWindowHints(); + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + glfwWindowHint(GLFW_MAXIMIZED, GLFW_FALSE); + + handle = glfwCreateWindow(width, height, title, MemoryUtil.NULL, MemoryUtil.NULL); + if (handle == MemoryUtil.NULL) { + //throw new RuntimeException("Failed to create the GLFW window"); + } + keyboardInput = new KeyboardInput(handle); + + glfwSetFramebufferSizeCallback(handle, (window, w, h) -> { + width = w; + height = h; + }); + + glfwMakeContextCurrent(handle); + if (Globals.VSYNC) glfwSwapInterval(1); + else glfwSwapInterval(0); + mouseInput = new MouseListener(handle); + } + public void cleanup() { + glfwFreeCallbacks(handle); + glfwDestroyWindow(handle); + glfwTerminate(); + } + public long getHandle(){ + return handle; + } + public int getHeight(){return height;} + public int getWidth(){return width;} + public KeyboardInput getKeyboardInput(){ + return keyboardInput; + } + public MouseListener getMouseInput(){ + return mouseInput; + } + public void pollEvents() { + if (displayFPS) glfwSetWindowTitle(handle, "Terrain 4J Engine - FPS: " + Globals.FrameRate_PRIMARYTHREAD + " TPS: " + Globals.TPS + " RenderFPS: " + Globals.FrameRate_RENDER + " VSYNC: " + Globals.VSYNC); + if (keyboardInput.keySinglePress(GLFW_KEY_V)) { + SetVsync(); + } + keyboardInput.input(); + mouseInput.input(); + Globals.RENDERFRAMES++; + } + public void SetVsync(){ + if (Globals.VSYNC) { + glfwSwapInterval(0); + Globals.VSYNC = false; + } + else { + glfwSwapInterval(1); + Globals.VSYNC = true; + } + } + public void setShouldClose() { + glfwSetWindowShouldClose(handle, true); + } + public boolean shouldClose() { + //return false; + return glfwWindowShouldClose(handle); + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.java new file mode 100644 index 0000000..7f4650e --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Input/KeyboardInput.java @@ -0,0 +1,58 @@ +package net.halbear.Terrain4J.EngineCore.Input; + +import org.lwjgl.glfw.GLFWCharCallbackI; +import org.lwjgl.glfw.GLFWKeyCallback; +import org.lwjgl.glfw.GLFWKeyCallbackI; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.lwjgl.glfw.GLFW.*; + +public class KeyboardInput { + + private long window; + public List keysPressed = new ArrayList<>(); + public List keysSinglePressed = new ArrayList<>(); + + public KeyboardInput(long Window){ + window = Window; + glfwSetKeyCallback(window, this::KeyCallback); + } + public void input() { + glfwPollEvents(); + } + public void KeyCallback(long Window, int key, int scancode, int action, int mods){ + if (!keysPressed.contains(key) && action == GLFW_PRESS){ + keysPressed.add(key); + } else if (keysPressed.contains(key) && action == GLFW_RELEASE){ + if (keysPressed.indexOf(key) >= 0 && keysPressed.indexOf(key) { + currentPos.x = (float) xpos; + currentPos.y = (float) ypos; + }); + glfwSetCursorEnterCallback(window, (handle, entered) -> FocusWindow = entered); + glfwSetMouseButtonCallback(window, (handle, button, action, mode) -> { + leftButtonPressed = button == GLFW_MOUSE_BUTTON_1 && action == GLFW_PRESS; + rightButtonPressed = button == GLFW_MOUSE_BUTTON_2 && action == GLFW_PRESS; + middleButtonPressed = button == GLFW_MOUSE_BUTTON_3 && action == GLFW_PRESS; + }); + } + public Vector2f getCurrentPos() { + return currentPos; + } + public Vector2f getDeltaPos() { + return deltaPos; + } + public void input() { + deltaPos.x = 0; + deltaPos.y = 0; + if (previousPos.x >= 0 && previousPos.y >= 0 && FocusWindow) { + deltaPos.x = currentPos.x - previousPos.x; + deltaPos.y = currentPos.y - previousPos.y; + } + previousPos.x = currentPos.x; + previousPos.y = currentPos.y; + } + public boolean isLeftButtonPressed() { + return leftButtonPressed; + } + public boolean isRightButtonPressed() { + return rightButtonPressed; + } + public boolean isMiddleButtonPressed() { + return rightButtonPressed; + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/EngineInstance.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/EngineInstance.java new file mode 100644 index 0000000..597e33d --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/EngineInstance.java @@ -0,0 +1,10 @@ +package net.halbear.Terrain4J.EngineCore.Logic; + +import net.halbear.Terrain4J.EngineCore.Main.Scene; +import net.halbear.Terrain4J.EngineCore.Display.Window; + +public record EngineInstance(Window window, Scene scene) { + public void cleanup(){ + window.cleanup(); + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.java new file mode 100644 index 0000000..a69ae27 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/GameLogic.java @@ -0,0 +1,8 @@ +package net.halbear.Terrain4J.EngineCore.Logic; + +public interface GameLogic { + void cleanup(); + void Initialise(EngineInstance engineInstance); + void Input(EngineInstance engineInstance, long diffMS); + void Update(EngineInstance engineInstance, long diffMS); +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/Globals.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/Globals.java new file mode 100644 index 0000000..d3697c8 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Logic/Globals.java @@ -0,0 +1,90 @@ +package net.halbear.Terrain4J.EngineCore.Logic; + +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; +import java.util.logging.Logger; + +public class Globals { + private static final long DEFAULT_ACCURACY = 0; + private static final int DEFAULT_TICKRATE = 60; + private static final int DEFAULT_WIDTH = 640; + private static final int DEFAULT_HEIGHT = 480; + private static final String FILENAME = "terrain4j.properties"; + private static Globals instance; + private long accuracy; + private int TickRate; + private int Width; + private int Height; + public static int FrameRate_PRIMARYTHREAD =0; + public static int TPS =0; + public static int FrameRate_MAINENGINETHREAD =0; + public static int FrameRate_RENDER =0; + public static int RENDERFRAMES =0; + public static boolean VSYNC = false; + + + private Globals() { + var EngineConfig = new Properties(); + Path path = Paths.get(""); + InputStream stream = Globals.class.getResourceAsStream(path.toAbsolutePath().toString() + "/" + FILENAME); + boolean SuccessfulLoad = false; + if (stream != null) { + try { + EngineConfig.load(stream); + SuccessfulLoad = true; + } catch (IOException excp) { + System.out.println(excp.getMessage()); + } + } + if (SuccessfulLoad){ + accuracy = Long.parseLong(EngineConfig.getOrDefault("frame_accuracy", DEFAULT_ACCURACY).toString()); + TickRate = Integer.parseInt(EngineConfig.getOrDefault("main_tick_rate", DEFAULT_TICKRATE).toString()); + Width = Integer.parseInt(EngineConfig.getOrDefault("display_width", DEFAULT_TICKRATE).toString()); + Height = Integer.parseInt(EngineConfig.getOrDefault("display_height", DEFAULT_TICKRATE).toString()); + VSYNC = Boolean.parseBoolean(EngineConfig.getOrDefault("vsync", false).toString()); + try { + assert stream != null; + stream.close(); + } catch(IOException excp) { + System.out.println(excp.getMessage()); + } + } else{ + try { + EngineConfig.setProperty("frame_accuracy", "0"); + EngineConfig.setProperty("main_tick_rate", "60"); + EngineConfig.setProperty("display_width", "640"); + EngineConfig.setProperty("display_height", "480"); + EngineConfig.setProperty("vsync", "false"); + EngineConfig.store(new FileWriter(path.toAbsolutePath().toString() + "/" + FILENAME), "created new properties file"); + } catch (IOException excp2) { + System.out.println(excp2.getMessage()); + } + accuracy = DEFAULT_ACCURACY; + TickRate = DEFAULT_TICKRATE; + } + + } + + public static synchronized Globals getInstance() { + if (instance == null) { + instance = new Globals(); + } + return instance; + } + public int getWidth(){ + return Width; + } + public int getHeight(){ + return Height; + } + public long getAccuracy() { + return accuracy; + } + public int getTickRate() { + return TickRate; + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Main/GameCore.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/GameCore.java new file mode 100644 index 0000000..f313967 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/GameCore.java @@ -0,0 +1,26 @@ +package net.halbear.Terrain4J.EngineCore.Main; + +import net.halbear.Terrain4J.EngineCore.Logic.EngineInstance; +import net.halbear.Terrain4J.EngineCore.Logic.GameLogic; + +public class GameCore implements GameLogic { + @Override + public void cleanup() { + + } + + @Override + public void Initialise(EngineInstance engineInstance) { + + } + + @Override + public void Input(EngineInstance engineInstance, long diffMS) { + + } + + @Override + public void Update(EngineInstance engineInstance, long diffMS) { + + } +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.java new file mode 100644 index 0000000..0196c11 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/PrimaryRuntime.java @@ -0,0 +1,74 @@ +package net.halbear.Terrain4J.EngineCore.Main; + +import net.halbear.Terrain4J.EngineCore.Display.Render; +import net.halbear.Terrain4J.EngineCore.Display.Window; +import net.halbear.Terrain4J.EngineCore.Logic.Globals; +import net.halbear.Terrain4J.EngineCore.Logic.EngineInstance; +import net.halbear.Terrain4J.EngineCore.Logic.GameLogic; + +public class PrimaryRuntime { + private final EngineInstance engineInstance; + private final GameLogic gameLogic; + private final Render render; + private Window window; + private int Frames = 0; + private int TickFrames = 0; + + public PrimaryRuntime(String windowTitle, GameLogic appLogic) { + this.gameLogic = appLogic; + window = new Window(windowTitle); + engineInstance = new EngineInstance(window, new Scene(window)); + render = new Render(engineInstance); + gameLogic.Initialise(engineInstance); + } + private void cleanup() { + gameLogic.cleanup(); + render.cleanup(); + engineInstance.cleanup(); + } + public EngineInstance getEngineInstance() { + return engineInstance; + } + public void run(){ + long InitialTime = System.nanoTime(); + long updateTime = InitialTime; + double FrameDiff =0; + double TickDiff =0; + double SecondCounter =0; + double tickDiff = 0; + while (!window.shouldClose()){ + long now = System.nanoTime(); + tickDiff = now - InitialTime; + FrameDiff += tickDiff; + TickDiff += tickDiff; + SecondCounter += tickDiff; + if (FrameDiff >= Globals.getInstance().getAccuracy()){ + window.pollEvents(); + gameLogic.Input(engineInstance, (now - InitialTime)/ 1000000); + Frames++; + if (TickDiff/1000 >= (double) 1000000 / (double)Globals.getInstance().getTickRate()) { + TickFrames++; + long nsTimeDiff = now - updateTime; + gameLogic.Update(engineInstance, nsTimeDiff / 1000000); + updateTime = now; + TickDiff = 0; + } + if (SecondCounter >= 1000000000){ + SecondCounter = 0; + System.out.println("FPS: " + Frames + " Ticks: " + TickFrames); + Globals.FrameRate_PRIMARYTHREAD = Frames; + Globals.FrameRate_RENDER = Globals.RENDERFRAMES; + Globals.TPS = TickFrames; + Frames = 0; + TickFrames = 0; + Globals.RENDERFRAMES = 0; + } + render.render(engineInstance); + FrameDiff = 0; + } + InitialTime = now; + } + cleanup(); + } + +} diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene.java new file mode 100644 index 0000000..39c5a13 --- /dev/null +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene.java @@ -0,0 +1,8 @@ +package net.halbear.Terrain4J.EngineCore.Main; + +import net.halbear.Terrain4J.EngineCore.Display.Window; + +public class Scene { + public Scene(Window window) { + } +} diff --git a/terrain4j.properties b/terrain4j.properties new file mode 100644 index 0000000..046ce4d --- /dev/null +++ b/terrain4j.properties @@ -0,0 +1,7 @@ +#created new properties file +#Mon Dec 15 10:15:30 GMT 2025 +display_height=480 +display_width=640 +frame_accuracy=0 +main_tick_rate=60 +vsync=false