Updating data

This commit is contained in:
2023-12-16 16:27:27 +01:00
parent ba143d7d83
commit 6091d8319a
327 changed files with 23809 additions and 8343 deletions
+22 -21
View File
@@ -2,7 +2,7 @@ apply plugin: 'java'
apply plugin: 'eclipse'
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.encoding = 'UTF-8'
}
eclipse {
@@ -11,35 +11,36 @@ eclipse {
downloadSources = true
}
}
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(19)
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven {
url = "https://maven.speiger.com/repository/main"
}
mavenCentral()
maven {
url = "https://maven.speiger.com/repository/main"
}
}
task srcJar(type: Jar) {
from sourceSets.main.allSource
archiveClassifier = 'sources'
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from sourceSets.main.allSource
archiveClassifier = 'sources'
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
artifacts {
archives srcJar
archives srcJar
}
jar{
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
jar {
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
dependencies {
@@ -65,5 +66,5 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
//Primitive Collections
implementation 'de.speiger:Primitive-Collections:0.7.0'
implementation 'de.speiger:Primitive-Collections:0.9.0'
}
+926
View File
@@ -0,0 +1,926 @@
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff8b13cc79d, pid=10428, tid=8228
#
# JRE version: Java(TM) SE Runtime Environment (19.0.2+7) (build 19.0.2+7-44)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0.2+7-44, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [lwjgl_opengl.dll+0xc79d]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- S U M M A R Y ------------
Command Line: -XX:+ShowCodeDetailsInExceptionMessages -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:63099 -javaagent:C:\Users\Speiger\eclipse\java-2022-12\eclipse\configuration\org.eclipse.osgi\636\0\.cp\lib\javaagent-shaded.jar -Dfile.encoding=UTF-8 speiger.src.coreengine.Testing
Host: AMD Ryzen 9 7900 12-Core Processor , 24 cores, 31G, Windows 10 , 64 bit Build 19041 (10.0.19041.3031)
Time: Mon Jun 19 04:06:52 2023 Mitteleuropäische Sommerzeit elapsed time: 0.310107 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x0000023453c10460): JavaThread "main" [_thread_in_native, id=8228, stack(0x0000008f88700000,0x0000008f88800000)]
Stack: [0x0000008f88700000,0x0000008f88800000], sp=0x0000008f887ff4e8, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [lwjgl_opengl.dll+0xc79d]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.lwjgl.opengl.GL11C.nglGetBooleanv(IJ)V+0
j org.lwjgl.opengl.GL11C.glGetBoolean(I)Z+20
j org.lwjgl.opengl.GL11.glGetBoolean(I)Z+1
j speiger.src.coreengine.Testing.main([Ljava/lang/String;)V+14
v ~StubRoutines::call_stub 0x0000023462fd10e8
siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 0x00000000000002f0
Registers:
RAX=0x00000234062e9c50, RBX=0x00000234025b1728, RCX=0x000000000000809d, RDX=0x0000023406349008
RSP=0x0000008f887ff4e8, RBP=0x0000008f887ff578, RSI=0x00000234022fff90, RDI=0x0000000000000001
R8 =0x000000000000809d, R9 =0x0000023406349008, R10=0x0000000000000000, R11=0x000000062bb40c80
R12=0x0000000000000000, R13=0x00000234025b1728, R14=0x0000008f887ff5a8, R15=0x0000023453c10460
RIP=0x00007ff8b13cc79d, EFLAGS=0x0000000000010206
Register to memory mapping:
RIP=0x00007ff8b13cc79d lwjgl_opengl.dll
RAX=0x00000234062e9c50 points into unknown readable memory: 0x0000000000000000 | 00 00 00 00 00 00 00 00
RBX={method} {0x00000234025b1730} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
RCX=0x000000000000809d is an unknown value
RDX=0x0000023406349008 points into unknown readable memory: 0x006200657a690000 | 00 00 69 7a 65 00 62 00
RSP=0x0000008f887ff4e8 is pointing into the stack for thread: 0x0000023453c10460
RBP=0x0000008f887ff578 is pointing into the stack for thread: 0x0000023453c10460
RSI=0x00000234022fff90 is pointing into metadata
RDI=0x0000000000000001 is an unknown value
R8 =0x000000000000809d is an unknown value
R9 =0x0000023406349008 points into unknown readable memory: 0x006200657a690000 | 00 00 69 7a 65 00 62 00
R10=0x0 is NULL
R11=0x000000062bb40c80 is an oop: java.lang.Class
{0x000000062bb40c80} - klass: 'java/lang/Class'
- ---- fields (total size 116 words):
- private volatile transient 'classRedefinedCount' 'I' @12 0
- abstract internal 'klass' 'J' @16 34376635896 (101d5f8 8)
- abstract internal 'array_klass' 'J' @24 0 (0 0)
- abstract internal 'oop_size' 'I' @32 116 (74)
- abstract internal 'static_oop_field_count' 'I' @36 0
- private volatile transient 'cachedConstructor' 'Ljava/lang/reflect/Constructor;' @40 NULL (0)
- private transient 'name' 'Ljava/lang/String;' @44 "org.lwjgl.opengl.GL11C"{0x000000062bb41030} (c5768206)
- private transient 'module' 'Ljava/lang/Module;' @48 a 'java/lang/Module'{0x000000062c86c9c8} (c590d939)
- private final 'classLoader' 'Ljava/lang/ClassLoader;' @52 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x000000062c86c808} (c590d901)
- private transient 'classData' 'Ljava/lang/Object;' @56 NULL (0)
- private transient 'packageName' 'Ljava/lang/String;' @60 "org.lwjgl.opengl"{0x000000062c198a70} (c583314e)
- private final 'componentType' 'Ljava/lang/Class;' @64 NULL (0)
- private volatile transient 'reflectionData' 'Ljava/lang/ref/SoftReference;' @68 NULL (0)
- private volatile transient 'genericInfo' 'Lsun/reflect/generics/repository/ClassRepository;' @72 NULL (0)
- private volatile transient 'enumConstants' '[Ljava/lang/Object;' @76 NULL (0)
- private volatile transient 'enumConstantDirectory' 'Ljava/util/Map;' @80 NULL (0)
- private volatile transient 'annotationData' 'Ljava/lang/Class$AnnotationData;' @84 NULL (0)
- private volatile transient 'annotationType' 'Lsun/reflect/annotation/AnnotationType;' @88 NULL (0)
- transient 'classValueMap' 'Ljava/lang/ClassValue$ClassValueMap;' @92 NULL (0)
- abstract internal 'protection_domain' 'Ljava/lang/Object;' @96 a 'java/security/ProtectionDomain'{0x000000062c1a5658} (c5834acb)
- abstract internal 'signers_name' 'Ljava/lang/Object;' @100 NULL (0)
- abstract internal 'source_file' 'Ljava/lang/Object;' @104 NULL (0)
- signature: Lorg/lwjgl/opengl/GL11C;
- ---- static fields (0):
- public static final 'GL_NEVER' 'I' @112 512 (200)
- public static final 'GL_LESS' 'I' @116 513 (201)
- public static final 'GL_EQUAL' 'I' @120 514 (202)
- public static final 'GL_LEQUAL' 'I' @124 515 (203)
- public static final 'GL_GREATER' 'I' @128 516 (204)
- public static final 'GL_NOTEQUAL' 'I' @132 517 (205)
- public static final 'GL_GEQUAL' 'I' @136 518 (206)
- public static final 'GL_ALWAYS' 'I' @140 519 (207)
- public static final 'GL_DEPTH_BUFFER_BIT' 'I' @144 256 (100)
- public static final 'GL_STENCIL_BUFFER_BIT' 'I' @148 1024 (400)
- public static final 'GL_COLOR_BUFFER_BIT' 'I' @152 16384 (4000)
- public static final 'GL_POINTS' 'I' @156 0
- public static final 'GL_LINES' 'I' @160 1
- public static final 'GL_LINE_LOOP' 'I' @164 2
- public static final 'GL_LINE_STRIP' 'I' @168 3
- public static final 'GL_TRIANGLES' 'I' @172 4
- public static final 'GL_TRIANGLE_STRIP' 'I' @176 5
- public static final 'GL_TRIANGLE_FAN' 'I' @180 6
- public static final 'GL_QUADS' 'I' @184 7
- public static final 'GL_ZERO' 'I' @188 0
- public static final 'GL_ONE' 'I' @192 1
- public static final 'GL_SRC_COLOR' 'I' @196 768 (300)
- public static final 'GL_ONE_MINUS_SRC_COLOR' 'I' @200 769 (301)
- public static final 'GL_SRC_ALPHA' 'I' @204 770 (302)
- public static final 'GL_ONE_MINUS_SRC_ALPHA' 'I' @208 771 (303)
- public static final 'GL_DST_ALPHA' 'I' @212 772 (304)
- public static final 'GL_ONE_MINUS_DST_ALPHA' 'I' @216 773 (305)
- public static final 'GL_DST_COLOR' 'I' @220 774 (306)
- public static final 'GL_ONE_MINUS_DST_COLOR' 'I' @224 775 (307)
- public static final 'GL_SRC_ALPHA_SATURATE' 'I' @228 776 (308)
- public static final 'GL_TRUE' 'I' @232 1
- public static final 'GL_FALSE' 'I' @236 0
- public static final 'GL_BYTE' 'I' @240 5120 (1400)
- public static final 'GL_UNSIGNED_BYTE' 'I' @244 5121 (1401)
- public static final 'GL_SHORT' 'I' @248 5122 (1402)
- public static final 'GL_UNSIGNED_SHORT' 'I' @252 5123 (1403)
- public static final 'GL_INT' 'I' @256 5124 (1404)
- public static final 'GL_UNSIGNED_INT' 'I' @260 5125 (1405)
- public static final 'GL_FLOAT' 'I' @264 5126 (1406)
- public static final 'GL_DOUBLE' 'I' @268 5130 (140a)
- public static final 'GL_NONE' 'I' @272 0
- public static final 'GL_FRONT_LEFT' 'I' @276 1024 (400)
- public static final 'GL_FRONT_RIGHT' 'I' @280 1025 (401)
- public static final 'GL_BACK_LEFT' 'I' @284 1026 (402)
- public static final 'GL_BACK_RIGHT' 'I' @288 1027 (403)
- public static final 'GL_FRONT' 'I' @292 1028 (404)
- public static final 'GL_BACK' 'I' @296 1029 (405)
- public static final 'GL_LEFT' 'I' @300 1030 (406)
- public static final 'GL_RIGHT' 'I' @304 1031 (407)
- public static final 'GL_FRONT_AND_BACK' 'I' @308 1032 (408)
- public static final 'GL_NO_ERROR' 'I' @312 0
- public static final 'GL_INVALID_ENUM' 'I' @316 1280 (500)
- public static final 'GL_INVALID_VALUE' 'I' @320 1281 (501)
- public static final 'GL_INVALID_OPERATION' 'I' @324 1282 (502)
- public static final 'GL_STACK_OVERFLOW' 'I' @328 1283 (503)
- public static final 'GL_STACK_UNDERFLOW' 'I' @332 1284 (504)
- public static final 'GL_OUT_OF_MEMORY' 'I' @336 1285 (505)
- public static final 'GL_CW' 'I' @340 2304 (900)
- public static final 'GL_CCW' 'I' @344 2305 (901)
- public static final 'GL_POINT_SIZE' 'I' @348 2833 (b11)
- public static final 'GL_POINT_SIZE_RANGE' 'I' @352 2834 (b12)
- public static final 'GL_POINT_SIZE_GRANULARITY' 'I' @356 2835 (b13)
- public static final 'GL_LINE_SMOOTH' 'I' @360 2848 (b20)
- public static final 'GL_LINE_WIDTH' 'I' @364 2849 (b21)
- public static final 'GL_LINE_WIDTH_RANGE' 'I' @368 2850 (b22)
- public static final 'GL_LINE_WIDTH_GRANULARITY' 'I' @372 2851 (b23)
- public static final 'GL_POLYGON_MODE' 'I' @376 2880 (b40)
- public static final 'GL_POLYGON_SMOOTH' 'I' @380 2881 (b41)
- public static final 'GL_CULL_FACE' 'I' @384 2884 (b44)
- public static final 'GL_CULL_FACE_MODE' 'I' @388 2885 (b45)
- public static final 'GL_FRONT_FACE' 'I' @392 2886 (b46)
- public static final 'GL_DEPTH_RANGE' 'I' @396 2928 (b70)
- public static final 'GL_DEPTH_TEST' 'I' @400 2929 (b71)
- public static final 'GL_DEPTH_WRITEMASK' 'I' @404 2930 (b72)
- public static final 'GL_DEPTH_CLEAR_VALUE' 'I' @408 2931 (b73)
- public static final 'GL_DEPTH_FUNC' 'I' @412 2932 (b74)
- public static final 'GL_STENCIL_TEST' 'I' @416 2960 (b90)
- public static final 'GL_STENCIL_CLEAR_VALUE' 'I' @420 2961 (b91)
- public static final 'GL_STENCIL_FUNC' 'I' @424 2962 (b92)
- public static final 'GL_STENCIL_VALUE_MASK' 'I' @428 2963 (b93)
- public static final 'GL_STENCIL_FAIL' 'I' @432 2964 (b94)
- public static final 'GL_STENCIL_PASS_DEPTH_FAIL' 'I' @436 2965 (b95)
- public static final 'GL_STENCIL_PASS_DEPTH_PASS' 'I' @440 2966 (b96)
- public static final 'GL_STENCIL_REF' 'I' @444 2967 (b97)
- public static final 'GL_STENCIL_WRITEMASK' 'I' @448 2968 (b98)
- public static final 'GL_VIEWPORT' 'I' @452 2978 (ba2)
- public static final 'GL_DITHER' 'I' @456 3024 (bd0)
- public static final 'GL_BLEND_DST' 'I' @460 3040 (be0)
- public static final 'GL_BLEND_SRC' 'I' @464 3041 (be1)
- public static final 'GL_BLEND' 'I' @468 3042 (be2)
- public static final 'GL_LOGIC_OP_MODE' 'I' @472 3056 (bf0)
- public static final 'GL_COLOR_LOGIC_OP' 'I' @476 3058 (bf2)
- public static final 'GL_DRAW_BUFFER' 'I' @480 3073 (c01)
- public static final 'GL_READ_BUFFER' 'I' @484 3074 (c02)
- public static final 'GL_SCISSOR_BOX' 'I' @488 3088 (c10)
- public static final 'GL_SCISSOR_TEST' 'I' @492 3089 (c11)
- public static final 'GL_COLOR_CLEAR_VALUE' 'I' @496 3106 (c22)
- public static final 'GL_COLOR_WRITEMASK' 'I' @500 3107 (c23)
- public static final 'GL_DOUBLEBUFFER' 'I' @504 3122 (c32)
- public static final 'GL_STEREO' 'I' @508 3123 (c33)
- public static final 'GL_LINE_SMOOTH_HINT' 'I' @512 3154 (c52)
- public static final 'GL_POLYGON_SMOOTH_HINT' 'I' @516 3155 (c53)
- public static final 'GL_UNPACK_SWAP_BYTES' 'I' @520 3312 (cf0)
- public static final 'GL_UNPACK_LSB_FIRST' 'I' @524 3313 (cf1)
- public static final 'GL_UNPACK_ROW_LENGTH' 'I' @528 3314 (cf2)
- public static final 'GL_UNPACK_SKIP_ROWS' 'I' @532 3315 (cf3)
- public static final 'GL_UNPACK_SKIP_PIXELS' 'I' @536 3316 (cf4)
- public static final 'GL_UNPACK_ALIGNMENT' 'I' @540 3317 (cf5)
- public static final 'GL_PACK_SWAP_BYTES' 'I' @544 3328 (d00)
- public static final 'GL_PACK_LSB_FIRST' 'I' @548 3329 (d01)
- public static final 'GL_PACK_ROW_LENGTH' 'I' @552 3330 (d02)
- public static final 'GL_PACK_SKIP_ROWS' 'I' @556 3331 (d03)
- public static final 'GL_PACK_SKIP_PIXELS' 'I' @560 3332 (d04)
- public static final 'GL_PACK_ALIGNMENT' 'I' @564 3333 (d05)
- public static final 'GL_MAX_TEXTURE_SIZE' 'I' @568 3379 (d33)
- public static final 'GL_MAX_VIEWPORT_DIMS' 'I' @572 3386 (d3a)
- public static final 'GL_SUBPIXEL_BITS' 'I' @576 3408 (d50)
- public static final 'GL_TEXTURE_1D' 'I' @580 3552 (de0)
- public static final 'GL_TEXTURE_2D' 'I' @584 3553 (de1)
- public static final 'GL_TEXTURE_WIDTH' 'I' @588 4096 (1000)
- public static final 'GL_TEXTURE_HEIGHT' 'I' @592 4097 (1001)
- public static final 'GL_TEXTURE_INTERNAL_FORMAT' 'I' @596 4099 (1003)
- public static final 'GL_TEXTURE_BORDER_COLOR' 'I' @600 4100 (1004)
- public static final 'GL_DONT_CARE' 'I' @604 4352 (1100)
- public static final 'GL_FASTEST' 'I' @608 4353 (1101)
- public static final 'GL_NICEST' 'I' @612 4354 (1102)
- public static final 'GL_CLEAR' 'I' @616 5376 (1500)
- public static final 'GL_AND' 'I' @620 5377 (1501)
- public static final 'GL_AND_REVERSE' 'I' @624 5378 (1502)
- public static final 'GL_COPY' 'I' @628 5379 (1503)
- public static final 'GL_AND_INVERTED' 'I' @632 5380 (1504)
- public static final 'GL_NOOP' 'I' @636 5381 (1505)
- public static final 'GL_XOR' 'I' @640 5382 (1506)
- public static final 'GL_OR' 'I' @644 5383 (1507)
- public static final 'GL_NOR' 'I' @648 5384 (1508)
- public static final 'GL_EQUIV' 'I' @652 5385 (1509)
- public static final 'GL_INVERT' 'I' @656 5386 (150a)
- public static final 'GL_OR_REVERSE' 'I' @660 5387 (150b)
- public static final 'GL_COPY_INVERTED' 'I' @664 5388 (150c)
- public static final 'GL_OR_INVERTED' 'I' @668 5389 (150d)
- public static final 'GL_NAND' 'I' @672 5390 (150e)
- public static final 'GL_SET' 'I' @676 5391 (150f)
- public static final 'GL_TEXTURE' 'I' @680 5890 (1702)
- public static final 'GL_COLOR' 'I' @684 6144 (1800)
- public static final 'GL_DEPTH' 'I' @688 6145 (1801)
- public static final 'GL_STENCIL' 'I' @692 6146 (1802)
- public static final 'GL_STENCIL_INDEX' 'I' @696 6401 (1901)
- public static final 'GL_DEPTH_COMPONENT' 'I' @700 6402 (1902)
- public static final 'GL_RED' 'I' @704 6403 (1903)
- public static final 'GL_GREEN' 'I' @708 6404 (1904)
- public static final 'GL_BLUE' 'I' @712 6405 (1905)
- public static final 'GL_ALPHA' 'I' @716 6406 (1906)
- public static final 'GL_RGB' 'I' @720 6407 (1907)
- public static final 'GL_RGBA' 'I' @724 6408 (1908)
- public static final 'GL_POINT' 'I' @728 6912 (1b00)
- public static final 'GL_LINE' 'I' @732 6913 (1b01)
- public static final 'GL_FILL' 'I' @736 6914 (1b02)
- public static final 'GL_KEEP' 'I' @740 7680 (1e00)
- public static final 'GL_REPLACE' 'I' @744 7681 (1e01)
- public static final 'GL_INCR' 'I' @748 7682 (1e02)
- public static final 'GL_DECR' 'I' @752 7683 (1e03)
- public static final 'GL_VENDOR' 'I' @756 7936 (1f00)
- public static final 'GL_RENDERER' 'I' @760 7937 (1f01)
- public static final 'GL_VERSION' 'I' @764 7938 (1f02)
- public static final 'GL_EXTENSIONS' 'I' @768 7939 (1f03)
- public static final 'GL_NEAREST' 'I' @772 9728 (2600)
- public static final 'GL_LINEAR' 'I' @776 9729 (2601)
- public static final 'GL_NEAREST_MIPMAP_NEAREST' 'I' @780 9984 (2700)
- public static final 'GL_LINEAR_MIPMAP_NEAREST' 'I' @784 9985 (2701)
- public static final 'GL_NEAREST_MIPMAP_LINEAR' 'I' @788 9986 (2702)
- public static final 'GL_LINEAR_MIPMAP_LINEAR' 'I' @792 9987 (2703)
- public static final 'GL_TEXTURE_MAG_FILTER' 'I' @796 10240 (2800)
- public static final 'GL_TEXTURE_MIN_FILTER' 'I' @800 10241 (2801)
- public static final 'GL_TEXTURE_WRAP_S' 'I' @804 10242 (2802)
- public static final 'GL_TEXTURE_WRAP_T' 'I' @808 10243 (2803)
- public static final 'GL_REPEAT' 'I' @812 10497 (2901)
- public static final 'GL_POLYGON_OFFSET_FACTOR' 'I' @816 32824 (8038)
- public static final 'GL_POLYGON_OFFSET_UNITS' 'I' @820 10752 (2a00)
- public static final 'GL_POLYGON_OFFSET_POINT' 'I' @824 10753 (2a01)
- public static final 'GL_POLYGON_OFFSET_LINE' 'I' @828 10754 (2a02)
- public static final 'GL_POLYGON_OFFSET_FILL' 'I' @832 32823 (8037)
- public static final 'GL_R3_G3_B2' 'I' @836 10768 (2a10)
- public static final 'GL_RGB4' 'I' @840 32847 (804f)
- public static final 'GL_RGB5' 'I' @844 32848 (8050)
- public static final 'GL_RGB8' 'I' @848 32849 (8051)
- public static final 'GL_RGB10' 'I' @852 32850 (8052)
- public static final 'GL_RGB12' 'I' @856 32851 (8053)
- public static final 'GL_RGB16' 'I' @860 32852 (8054)
- public static final 'GL_RGBA2' 'I' @864 32853 (8055)
- public static final 'GL_RGBA4' 'I' @868 32854 (8056)
- public static final 'GL_RGB5_A1' 'I' @872 32855 (8057)
- public static final 'GL_RGBA8' 'I' @876 32856 (8058)
- public static final 'GL_RGB10_A2' 'I' @880 32857 (8059)
- public static final 'GL_RGBA12' 'I' @884 32858 (805a)
- public static final 'GL_RGBA16' 'I' @888 32859 (805b)
- public static final 'GL_TEXTURE_RED_SIZE' 'I' @892 32860 (805c)
- public static final 'GL_TEXTURE_GREEN_SIZE' 'I' @896 32861 (805d)
- public static final 'GL_TEXTURE_BLUE_SIZE' 'I' @900 32862 (805e)
- public static final 'GL_TEXTURE_ALPHA_SIZE' 'I' @904 32863 (805f)
- public static final 'GL_PROXY_TEXTURE_1D' 'I' @908 32867 (8063)
- public static final 'GL_PROXY_TEXTURE_2D' 'I' @912 32868 (8064)
- public static final 'GL_TEXTURE_BINDING_1D' 'I' @916 32872 (8068)
- public static final 'GL_TEXTURE_BINDING_2D' 'I' @920 32873 (8069)
- public static final 'GL_VERTEX_ARRAY' 'I' @924 32884 (8074)
R12=0x0 is NULL
R13={method} {0x00000234025b1730} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
R14=0x0000008f887ff5a8 is pointing into the stack for thread: 0x0000023453c10460
R15=0x0000023453c10460 is a thread
Top of Stack: (sp=0x0000008f887ff4e8)
0x0000008f887ff4e8: 0000023462ff3478 0000000000000001
0x0000008f887ff4f8: 0000023462ff2dba 00000234025b1728
0x0000008f887ff508: 00000234022fff90 0000000000000000
0x0000008f887ff518: 0000008f887ff530 0000008f887ff590
0x0000008f887ff528: 0000023462ff2d76 0000008f887ff530
0x0000008f887ff538: 00000234025b1728 0000008f887ff5a8
0x0000008f887ff548: 00000234025bb7d8 0000000000000000
0x0000008f887ff558: 000000062bb40c80 00000234025b1728
0x0000008f887ff568: 0000000000000000 0000008f887ff598
0x0000008f887ff578: 0000008f887ff5f8 0000023462fec11a
0x0000008f887ff588: 000000062bb40c80 0000023462fef557
0x0000008f887ff598: 0000023406349008 0000000000000000
0x0000008f887ff5a8: 000000000000809d 0000008f887ff5b0
0x0000008f887ff5b8: 00000234025b18dc 0000008f887ff630
0x0000008f887ff5c8: 00000234025bb7d8 0000000000000000
0x0000008f887ff5d8: 000000062bb40c80 00000234025b1968
Instructions: (pc=0x00007ff8b13cc79d)
0x00007ff8b13cc69d: cc cc cc 48 8b 01 45 8b d8 44 8b 44 24 28 41 8b
0x00007ff8b13cc6ad: d1 41 8b cb 4c 8b 50 18 49 ff a2 e8 01 00 00 cc
0x00007ff8b13cc6bd: cc cc cc 48 8b 01 41 8b c8 48 8b 50 18 48 ff a2
0x00007ff8b13cc6cd: f0 01 00 00 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc6dd: cc cc cc 40 53 48 8b 01 41 8b d8 44 8b 44 24 30
0x00007ff8b13cc6ed: 41 8b d1 4c 8b 4c 24 38 8b cb 4c 8b 50 18 5b 49
0x00007ff8b13cc6fd: ff a2 f8 01 00 00 cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc70d: cc cc cc 48 8b 01 48 8b 48 18 48 ff a1 98 02 00
0x00007ff8b13cc71d: 00 cc cc 48 8b 01 48 8b 48 18 48 ff a1 a0 02 00
0x00007ff8b13cc72d: 00 cc cc 48 8b 01 41 8b c8 48 8b 50 18 48 ff a2
0x00007ff8b13cc73d: c8 02 00 00 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc74d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc75d: 49 ff a2 d8 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc76d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc77d: 49 ff a2 e0 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc78d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc79d: 49 ff a2 f0 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7ad: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7bd: 49 ff a2 f8 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7cd: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7dd: 49 ff a2 00 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7ed: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7fd: 49 ff a2 08 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc80d: cc cc cc 48 8b 01 48 8b 48 18 48 8b 81 10 03 00
0x00007ff8b13cc81d: 00 48 ff e0 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc82d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc83d: 49 ff a2 68 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc84d: cc cc cc 48 8b 01 48 8b 48 18 48 8b 81 78 03 00
0x00007ff8b13cc85d: 00 41 8b c8 48 ff e0 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc86d: cc cc cc 40 53 48 8b 01 41 8b d8 44 8b 44 24 30
0x00007ff8b13cc87d: 41 8b d1 44 8b 4c 24 38 8b cb 4c 8b 50 18 48 8b
0x00007ff8b13cc88d: 44 24 40 48 89 44 24 30 5b 49 ff a2 a8 03 00 00
Stack slot to memory mapping:
stack at sp + 0 slots: 0x0000023462ff3478 is at code_begin+1976 in an Interpreter codelet
method entry point (kind = native) [0x0000023462ff2cc0, 0x0000023462ff4000] 4928 bytes
stack at sp + 1 slots: 0x0000000000000001 is an unknown value
stack at sp + 2 slots: 0x0000023462ff2dba is at code_begin+250 in an Interpreter codelet
method entry point (kind = native) [0x0000023462ff2cc0, 0x0000023462ff4000] 4928 bytes
stack at sp + 3 slots: {method} {0x00000234025b1730} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
stack at sp + 4 slots: 0x00000234022fff90 is pointing into metadata
stack at sp + 5 slots: 0x0 is NULL
stack at sp + 6 slots: 0x0000008f887ff530 is pointing into the stack for thread: 0x0000023453c10460
stack at sp + 7 slots: 0x0000008f887ff590 is pointing into the stack for thread: 0x0000023453c10460
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000002347fb81600, length=18, elements={
0x0000023453c10460, 0x000002347e65ecb0, 0x000002347e660120, 0x000002347e6625a0,
0x000002347e664ee0, 0x000002347e6682e0, 0x000002347e66cbf0, 0x000002347e673540,
0x000002347e677fd0, 0x000002347e68cd10, 0x000002347e68c270, 0x000002347f904e70,
0x000002347f907810, 0x000002347f9b69e0, 0x000002347fabebd0, 0x000002347fabf520,
0x000002347fb8ae70, 0x000002347e68b280
}
Java Threads: ( => current thread )
=>0x0000023453c10460 JavaThread "main" [_thread_in_native, id=8228, stack(0x0000008f88700000,0x0000008f88800000)]
0x000002347e65ecb0 JavaThread "Reference Handler" daemon [_thread_blocked, id=4572, stack(0x0000008f88e00000,0x0000008f88f00000)]
0x000002347e660120 JavaThread "Finalizer" daemon [_thread_blocked, id=14964, stack(0x0000008f88f00000,0x0000008f89000000)]
0x000002347e6625a0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=13492, stack(0x0000008f89000000,0x0000008f89100000)]
0x000002347e664ee0 JavaThread "Attach Listener" daemon [_thread_blocked, id=6888, stack(0x0000008f89100000,0x0000008f89200000)]
0x000002347e6682e0 JavaThread "Service Thread" daemon [_thread_blocked, id=728, stack(0x0000008f89200000,0x0000008f89300000)]
0x000002347e66cbf0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=18136, stack(0x0000008f89300000,0x0000008f89400000)]
0x000002347e673540 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=9016, stack(0x0000008f89400000,0x0000008f89500000)]
0x000002347e677fd0 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=13344, stack(0x0000008f89500000,0x0000008f89600000)]
0x000002347e68cd10 JavaThread "Sweeper thread" daemon [_thread_blocked, id=1584, stack(0x0000008f89600000,0x0000008f89700000)]
0x000002347e68c270 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=14728, stack(0x0000008f89700000,0x0000008f89800000)]
0x000002347f904e70 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=6828, stack(0x0000008f89800000,0x0000008f89900000)]
0x000002347f907810 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=8444, stack(0x0000008f89900000,0x0000008f89a00000)]
0x000002347f9b69e0 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=3880, stack(0x0000008f89a00000,0x0000008f89b00000)]
0x000002347fabebd0 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=19600, stack(0x0000008f89b00000,0x0000008f89c00000)]
0x000002347fabf520 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=19804, stack(0x0000008f89c00000,0x0000008f89d00000)]
0x000002347fb8ae70 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=7232, stack(0x0000008f89d00000,0x0000008f89e00000)]
0x000002347e68b280 JavaThread "Notification Thread" daemon [_thread_blocked, id=10452, stack(0x0000008f89e00000,0x0000008f89f00000)]
Other Threads:
0x0000023453c336a0 VMThread "VM Thread" [stack: 0x0000008f88d00000,0x0000008f88e00000] [id=16992]
0x00000234061a4250 WatcherThread "VM Periodic Task Thread" [stack: 0x0000008f89f00000,0x0000008f8a000000] [id=7680]
0x0000023453c344b0 WorkerThread "GC Thread#0" [stack: 0x0000008f88800000,0x0000008f88900000] [id=4880]
0x0000023453cd3340 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000008f88900000,0x0000008f88a00000] [id=12608]
0x0000023453c333d0 WorkerThread "G1 Conc#0" [stack: 0x0000008f88a00000,0x0000008f88b00000] [id=4216]
0x000002347e580c20 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000008f88b00000,0x0000008f88c00000] [id=12096]
0x000002347e582520 ConcurrentGCThread "G1 Service" [stack: 0x0000008f88c00000,0x0000008f88d00000] [id=2688]
Threads with active compile tasks:
VM state: not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap address: 0x000000060d800000, size: 7976 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000800000000-0x0000000800c40000-0x0000000800c40000), size 12845056, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 0.
Compressed class space mapped at: 0x0000000801000000-0x0000000841000000, reserved size: 1073741824
Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
GC Precious Log:
CardTable entry size: 512
Card Set container configuration: InlinePtr #cards 4 size 8 Array Of Cards #cards 32 size 80 Howl #buckets 8 coarsen threshold 7372 Howl Bitmap #cards 1024 size 144 coarsen threshold 921 Card regions per heap region 1 cards per card region 8192
CPUs: 24 total, 24 available
Memory: 31894M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (Zero based)
Heap Region Size: 4M
Heap Min Capacity: 8M
Heap Initial Capacity: 500M
Heap Max Capacity: 7976M
Pre-touch: Disabled
Parallel Workers: 18
Concurrent Workers: 5
Concurrent Refinement Workers: 18
Periodic GC: Disabled
Heap:
garbage-first heap total 512000K, used 16384K [0x000000060d800000, 0x0000000800000000)
region size 4096K, 5 young (20480K), 0 survivors (0K)
Metaspace used 5191K, committed 5376K, reserved 1114112K
class space used 367K, committed 448K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
| 0|0x000000060d800000, 0x000000060d800000, 0x000000060dc00000| 0%| F| |TAMS 0x000000060d800000, 0x000000060d800000| Untracked
| 1|0x000000060dc00000, 0x000000060dc00000, 0x000000060e000000| 0%| F| |TAMS 0x000000060dc00000, 0x000000060dc00000| Untracked
| 2|0x000000060e000000, 0x000000060e000000, 0x000000060e400000| 0%| F| |TAMS 0x000000060e000000, 0x000000060e000000| Untracked
| 3|0x000000060e400000, 0x000000060e400000, 0x000000060e800000| 0%| F| |TAMS 0x000000060e400000, 0x000000060e400000| Untracked
| 4|0x000000060e800000, 0x000000060e800000, 0x000000060ec00000| 0%| F| |TAMS 0x000000060e800000, 0x000000060e800000| Untracked
| 5|0x000000060ec00000, 0x000000060ec00000, 0x000000060f000000| 0%| F| |TAMS 0x000000060ec00000, 0x000000060ec00000| Untracked
| 6|0x000000060f000000, 0x000000060f000000, 0x000000060f400000| 0%| F| |TAMS 0x000000060f000000, 0x000000060f000000| Untracked
| 7|0x000000060f400000, 0x000000060f400000, 0x000000060f800000| 0%| F| |TAMS 0x000000060f400000, 0x000000060f400000| Untracked
| 8|0x000000060f800000, 0x000000060f800000, 0x000000060fc00000| 0%| F| |TAMS 0x000000060f800000, 0x000000060f800000| Untracked
| 9|0x000000060fc00000, 0x000000060fc00000, 0x0000000610000000| 0%| F| |TAMS 0x000000060fc00000, 0x000000060fc00000| Untracked
| 10|0x0000000610000000, 0x0000000610000000, 0x0000000610400000| 0%| F| |TAMS 0x0000000610000000, 0x0000000610000000| Untracked
| 11|0x0000000610400000, 0x0000000610400000, 0x0000000610800000| 0%| F| |TAMS 0x0000000610400000, 0x0000000610400000| Untracked
| 12|0x0000000610800000, 0x0000000610800000, 0x0000000610c00000| 0%| F| |TAMS 0x0000000610800000, 0x0000000610800000| Untracked
| 13|0x0000000610c00000, 0x0000000610c00000, 0x0000000611000000| 0%| F| |TAMS 0x0000000610c00000, 0x0000000610c00000| Untracked
| 14|0x0000000611000000, 0x0000000611000000, 0x0000000611400000| 0%| F| |TAMS 0x0000000611000000, 0x0000000611000000| Untracked
| 15|0x0000000611400000, 0x0000000611400000, 0x0000000611800000| 0%| F| |TAMS 0x0000000611400000, 0x0000000611400000| Untracked
| 16|0x0000000611800000, 0x0000000611800000, 0x0000000611c00000| 0%| F| |TAMS 0x0000000611800000, 0x0000000611800000| Untracked
| 17|0x0000000611c00000, 0x0000000611c00000, 0x0000000612000000| 0%| F| |TAMS 0x0000000611c00000, 0x0000000611c00000| Untracked
| 18|0x0000000612000000, 0x0000000612000000, 0x0000000612400000| 0%| F| |TAMS 0x0000000612000000, 0x0000000612000000| Untracked
| 19|0x0000000612400000, 0x0000000612400000, 0x0000000612800000| 0%| F| |TAMS 0x0000000612400000, 0x0000000612400000| Untracked
| 20|0x0000000612800000, 0x0000000612800000, 0x0000000612c00000| 0%| F| |TAMS 0x0000000612800000, 0x0000000612800000| Untracked
| 21|0x0000000612c00000, 0x0000000612c00000, 0x0000000613000000| 0%| F| |TAMS 0x0000000612c00000, 0x0000000612c00000| Untracked
| 22|0x0000000613000000, 0x0000000613000000, 0x0000000613400000| 0%| F| |TAMS 0x0000000613000000, 0x0000000613000000| Untracked
| 23|0x0000000613400000, 0x0000000613400000, 0x0000000613800000| 0%| F| |TAMS 0x0000000613400000, 0x0000000613400000| Untracked
| 24|0x0000000613800000, 0x0000000613800000, 0x0000000613c00000| 0%| F| |TAMS 0x0000000613800000, 0x0000000613800000| Untracked
| 25|0x0000000613c00000, 0x0000000613c00000, 0x0000000614000000| 0%| F| |TAMS 0x0000000613c00000, 0x0000000613c00000| Untracked
| 26|0x0000000614000000, 0x0000000614000000, 0x0000000614400000| 0%| F| |TAMS 0x0000000614000000, 0x0000000614000000| Untracked
| 27|0x0000000614400000, 0x0000000614400000, 0x0000000614800000| 0%| F| |TAMS 0x0000000614400000, 0x0000000614400000| Untracked
| 28|0x0000000614800000, 0x0000000614800000, 0x0000000614c00000| 0%| F| |TAMS 0x0000000614800000, 0x0000000614800000| Untracked
| 29|0x0000000614c00000, 0x0000000614c00000, 0x0000000615000000| 0%| F| |TAMS 0x0000000614c00000, 0x0000000614c00000| Untracked
| 30|0x0000000615000000, 0x0000000615000000, 0x0000000615400000| 0%| F| |TAMS 0x0000000615000000, 0x0000000615000000| Untracked
| 31|0x0000000615400000, 0x0000000615400000, 0x0000000615800000| 0%| F| |TAMS 0x0000000615400000, 0x0000000615400000| Untracked
| 32|0x0000000615800000, 0x0000000615800000, 0x0000000615c00000| 0%| F| |TAMS 0x0000000615800000, 0x0000000615800000| Untracked
| 33|0x0000000615c00000, 0x0000000615c00000, 0x0000000616000000| 0%| F| |TAMS 0x0000000615c00000, 0x0000000615c00000| Untracked
| 34|0x0000000616000000, 0x0000000616000000, 0x0000000616400000| 0%| F| |TAMS 0x0000000616000000, 0x0000000616000000| Untracked
| 35|0x0000000616400000, 0x0000000616400000, 0x0000000616800000| 0%| F| |TAMS 0x0000000616400000, 0x0000000616400000| Untracked
| 36|0x0000000616800000, 0x0000000616800000, 0x0000000616c00000| 0%| F| |TAMS 0x0000000616800000, 0x0000000616800000| Untracked
| 37|0x0000000616c00000, 0x0000000616c00000, 0x0000000617000000| 0%| F| |TAMS 0x0000000616c00000, 0x0000000616c00000| Untracked
| 38|0x0000000617000000, 0x0000000617000000, 0x0000000617400000| 0%| F| |TAMS 0x0000000617000000, 0x0000000617000000| Untracked
| 39|0x0000000617400000, 0x0000000617400000, 0x0000000617800000| 0%| F| |TAMS 0x0000000617400000, 0x0000000617400000| Untracked
| 40|0x0000000617800000, 0x0000000617800000, 0x0000000617c00000| 0%| F| |TAMS 0x0000000617800000, 0x0000000617800000| Untracked
| 41|0x0000000617c00000, 0x0000000617c00000, 0x0000000618000000| 0%| F| |TAMS 0x0000000617c00000, 0x0000000617c00000| Untracked
| 42|0x0000000618000000, 0x0000000618000000, 0x0000000618400000| 0%| F| |TAMS 0x0000000618000000, 0x0000000618000000| Untracked
| 43|0x0000000618400000, 0x0000000618400000, 0x0000000618800000| 0%| F| |TAMS 0x0000000618400000, 0x0000000618400000| Untracked
| 44|0x0000000618800000, 0x0000000618800000, 0x0000000618c00000| 0%| F| |TAMS 0x0000000618800000, 0x0000000618800000| Untracked
| 45|0x0000000618c00000, 0x0000000618c00000, 0x0000000619000000| 0%| F| |TAMS 0x0000000618c00000, 0x0000000618c00000| Untracked
| 46|0x0000000619000000, 0x0000000619000000, 0x0000000619400000| 0%| F| |TAMS 0x0000000619000000, 0x0000000619000000| Untracked
| 47|0x0000000619400000, 0x0000000619400000, 0x0000000619800000| 0%| F| |TAMS 0x0000000619400000, 0x0000000619400000| Untracked
| 48|0x0000000619800000, 0x0000000619800000, 0x0000000619c00000| 0%| F| |TAMS 0x0000000619800000, 0x0000000619800000| Untracked
| 49|0x0000000619c00000, 0x0000000619c00000, 0x000000061a000000| 0%| F| |TAMS 0x0000000619c00000, 0x0000000619c00000| Untracked
| 50|0x000000061a000000, 0x000000061a000000, 0x000000061a400000| 0%| F| |TAMS 0x000000061a000000, 0x000000061a000000| Untracked
| 51|0x000000061a400000, 0x000000061a400000, 0x000000061a800000| 0%| F| |TAMS 0x000000061a400000, 0x000000061a400000| Untracked
| 52|0x000000061a800000, 0x000000061a800000, 0x000000061ac00000| 0%| F| |TAMS 0x000000061a800000, 0x000000061a800000| Untracked
| 53|0x000000061ac00000, 0x000000061ac00000, 0x000000061b000000| 0%| F| |TAMS 0x000000061ac00000, 0x000000061ac00000| Untracked
| 54|0x000000061b000000, 0x000000061b000000, 0x000000061b400000| 0%| F| |TAMS 0x000000061b000000, 0x000000061b000000| Untracked
| 55|0x000000061b400000, 0x000000061b400000, 0x000000061b800000| 0%| F| |TAMS 0x000000061b400000, 0x000000061b400000| Untracked
| 56|0x000000061b800000, 0x000000061b800000, 0x000000061bc00000| 0%| F| |TAMS 0x000000061b800000, 0x000000061b800000| Untracked
| 57|0x000000061bc00000, 0x000000061bc00000, 0x000000061c000000| 0%| F| |TAMS 0x000000061bc00000, 0x000000061bc00000| Untracked
| 58|0x000000061c000000, 0x000000061c000000, 0x000000061c400000| 0%| F| |TAMS 0x000000061c000000, 0x000000061c000000| Untracked
| 59|0x000000061c400000, 0x000000061c400000, 0x000000061c800000| 0%| F| |TAMS 0x000000061c400000, 0x000000061c400000| Untracked
| 60|0x000000061c800000, 0x000000061c800000, 0x000000061cc00000| 0%| F| |TAMS 0x000000061c800000, 0x000000061c800000| Untracked
| 61|0x000000061cc00000, 0x000000061cc00000, 0x000000061d000000| 0%| F| |TAMS 0x000000061cc00000, 0x000000061cc00000| Untracked
| 62|0x000000061d000000, 0x000000061d000000, 0x000000061d400000| 0%| F| |TAMS 0x000000061d000000, 0x000000061d000000| Untracked
| 63|0x000000061d400000, 0x000000061d400000, 0x000000061d800000| 0%| F| |TAMS 0x000000061d400000, 0x000000061d400000| Untracked
| 64|0x000000061d800000, 0x000000061d800000, 0x000000061dc00000| 0%| F| |TAMS 0x000000061d800000, 0x000000061d800000| Untracked
| 65|0x000000061dc00000, 0x000000061dc00000, 0x000000061e000000| 0%| F| |TAMS 0x000000061dc00000, 0x000000061dc00000| Untracked
| 66|0x000000061e000000, 0x000000061e000000, 0x000000061e400000| 0%| F| |TAMS 0x000000061e000000, 0x000000061e000000| Untracked
| 67|0x000000061e400000, 0x000000061e400000, 0x000000061e800000| 0%| F| |TAMS 0x000000061e400000, 0x000000061e400000| Untracked
| 68|0x000000061e800000, 0x000000061e800000, 0x000000061ec00000| 0%| F| |TAMS 0x000000061e800000, 0x000000061e800000| Untracked
| 69|0x000000061ec00000, 0x000000061ec00000, 0x000000061f000000| 0%| F| |TAMS 0x000000061ec00000, 0x000000061ec00000| Untracked
| 70|0x000000061f000000, 0x000000061f000000, 0x000000061f400000| 0%| F| |TAMS 0x000000061f000000, 0x000000061f000000| Untracked
| 71|0x000000061f400000, 0x000000061f400000, 0x000000061f800000| 0%| F| |TAMS 0x000000061f400000, 0x000000061f400000| Untracked
| 72|0x000000061f800000, 0x000000061f800000, 0x000000061fc00000| 0%| F| |TAMS 0x000000061f800000, 0x000000061f800000| Untracked
| 73|0x000000061fc00000, 0x000000061fc00000, 0x0000000620000000| 0%| F| |TAMS 0x000000061fc00000, 0x000000061fc00000| Untracked
| 74|0x0000000620000000, 0x0000000620000000, 0x0000000620400000| 0%| F| |TAMS 0x0000000620000000, 0x0000000620000000| Untracked
| 75|0x0000000620400000, 0x0000000620400000, 0x0000000620800000| 0%| F| |TAMS 0x0000000620400000, 0x0000000620400000| Untracked
| 76|0x0000000620800000, 0x0000000620800000, 0x0000000620c00000| 0%| F| |TAMS 0x0000000620800000, 0x0000000620800000| Untracked
| 77|0x0000000620c00000, 0x0000000620c00000, 0x0000000621000000| 0%| F| |TAMS 0x0000000620c00000, 0x0000000620c00000| Untracked
| 78|0x0000000621000000, 0x0000000621000000, 0x0000000621400000| 0%| F| |TAMS 0x0000000621000000, 0x0000000621000000| Untracked
| 79|0x0000000621400000, 0x0000000621400000, 0x0000000621800000| 0%| F| |TAMS 0x0000000621400000, 0x0000000621400000| Untracked
| 80|0x0000000621800000, 0x0000000621800000, 0x0000000621c00000| 0%| F| |TAMS 0x0000000621800000, 0x0000000621800000| Untracked
| 81|0x0000000621c00000, 0x0000000621c00000, 0x0000000622000000| 0%| F| |TAMS 0x0000000621c00000, 0x0000000621c00000| Untracked
| 82|0x0000000622000000, 0x0000000622000000, 0x0000000622400000| 0%| F| |TAMS 0x0000000622000000, 0x0000000622000000| Untracked
| 83|0x0000000622400000, 0x0000000622400000, 0x0000000622800000| 0%| F| |TAMS 0x0000000622400000, 0x0000000622400000| Untracked
| 84|0x0000000622800000, 0x0000000622800000, 0x0000000622c00000| 0%| F| |TAMS 0x0000000622800000, 0x0000000622800000| Untracked
| 85|0x0000000622c00000, 0x0000000622c00000, 0x0000000623000000| 0%| F| |TAMS 0x0000000622c00000, 0x0000000622c00000| Untracked
| 86|0x0000000623000000, 0x0000000623000000, 0x0000000623400000| 0%| F| |TAMS 0x0000000623000000, 0x0000000623000000| Untracked
| 87|0x0000000623400000, 0x0000000623400000, 0x0000000623800000| 0%| F| |TAMS 0x0000000623400000, 0x0000000623400000| Untracked
| 88|0x0000000623800000, 0x0000000623800000, 0x0000000623c00000| 0%| F| |TAMS 0x0000000623800000, 0x0000000623800000| Untracked
| 89|0x0000000623c00000, 0x0000000623c00000, 0x0000000624000000| 0%| F| |TAMS 0x0000000623c00000, 0x0000000623c00000| Untracked
| 90|0x0000000624000000, 0x0000000624000000, 0x0000000624400000| 0%| F| |TAMS 0x0000000624000000, 0x0000000624000000| Untracked
| 91|0x0000000624400000, 0x0000000624400000, 0x0000000624800000| 0%| F| |TAMS 0x0000000624400000, 0x0000000624400000| Untracked
| 92|0x0000000624800000, 0x0000000624800000, 0x0000000624c00000| 0%| F| |TAMS 0x0000000624800000, 0x0000000624800000| Untracked
| 93|0x0000000624c00000, 0x0000000624c00000, 0x0000000625000000| 0%| F| |TAMS 0x0000000624c00000, 0x0000000624c00000| Untracked
| 94|0x0000000625000000, 0x0000000625000000, 0x0000000625400000| 0%| F| |TAMS 0x0000000625000000, 0x0000000625000000| Untracked
| 95|0x0000000625400000, 0x0000000625400000, 0x0000000625800000| 0%| F| |TAMS 0x0000000625400000, 0x0000000625400000| Untracked
| 96|0x0000000625800000, 0x0000000625800000, 0x0000000625c00000| 0%| F| |TAMS 0x0000000625800000, 0x0000000625800000| Untracked
| 97|0x0000000625c00000, 0x0000000625c00000, 0x0000000626000000| 0%| F| |TAMS 0x0000000625c00000, 0x0000000625c00000| Untracked
| 98|0x0000000626000000, 0x0000000626000000, 0x0000000626400000| 0%| F| |TAMS 0x0000000626000000, 0x0000000626000000| Untracked
| 99|0x0000000626400000, 0x0000000626400000, 0x0000000626800000| 0%| F| |TAMS 0x0000000626400000, 0x0000000626400000| Untracked
| 100|0x0000000626800000, 0x0000000626800000, 0x0000000626c00000| 0%| F| |TAMS 0x0000000626800000, 0x0000000626800000| Untracked
| 101|0x0000000626c00000, 0x0000000626c00000, 0x0000000627000000| 0%| F| |TAMS 0x0000000626c00000, 0x0000000626c00000| Untracked
| 102|0x0000000627000000, 0x0000000627000000, 0x0000000627400000| 0%| F| |TAMS 0x0000000627000000, 0x0000000627000000| Untracked
| 103|0x0000000627400000, 0x0000000627400000, 0x0000000627800000| 0%| F| |TAMS 0x0000000627400000, 0x0000000627400000| Untracked
| 104|0x0000000627800000, 0x0000000627800000, 0x0000000627c00000| 0%| F| |TAMS 0x0000000627800000, 0x0000000627800000| Untracked
| 105|0x0000000627c00000, 0x0000000627c00000, 0x0000000628000000| 0%| F| |TAMS 0x0000000627c00000, 0x0000000627c00000| Untracked
| 106|0x0000000628000000, 0x0000000628000000, 0x0000000628400000| 0%| F| |TAMS 0x0000000628000000, 0x0000000628000000| Untracked
| 107|0x0000000628400000, 0x0000000628400000, 0x0000000628800000| 0%| F| |TAMS 0x0000000628400000, 0x0000000628400000| Untracked
| 108|0x0000000628800000, 0x0000000628800000, 0x0000000628c00000| 0%| F| |TAMS 0x0000000628800000, 0x0000000628800000| Untracked
| 109|0x0000000628c00000, 0x0000000628c00000, 0x0000000629000000| 0%| F| |TAMS 0x0000000628c00000, 0x0000000628c00000| Untracked
| 110|0x0000000629000000, 0x0000000629000000, 0x0000000629400000| 0%| F| |TAMS 0x0000000629000000, 0x0000000629000000| Untracked
| 111|0x0000000629400000, 0x0000000629400000, 0x0000000629800000| 0%| F| |TAMS 0x0000000629400000, 0x0000000629400000| Untracked
| 112|0x0000000629800000, 0x0000000629800000, 0x0000000629c00000| 0%| F| |TAMS 0x0000000629800000, 0x0000000629800000| Untracked
| 113|0x0000000629c00000, 0x0000000629c00000, 0x000000062a000000| 0%| F| |TAMS 0x0000000629c00000, 0x0000000629c00000| Untracked
| 114|0x000000062a000000, 0x000000062a000000, 0x000000062a400000| 0%| F| |TAMS 0x000000062a000000, 0x000000062a000000| Untracked
| 115|0x000000062a400000, 0x000000062a400000, 0x000000062a800000| 0%| F| |TAMS 0x000000062a400000, 0x000000062a400000| Untracked
| 116|0x000000062a800000, 0x000000062a800000, 0x000000062ac00000| 0%| F| |TAMS 0x000000062a800000, 0x000000062a800000| Untracked
| 117|0x000000062ac00000, 0x000000062ac00000, 0x000000062b000000| 0%| F| |TAMS 0x000000062ac00000, 0x000000062ac00000| Untracked
| 118|0x000000062b000000, 0x000000062b000000, 0x000000062b400000| 0%| F| |TAMS 0x000000062b000000, 0x000000062b000000| Untracked
| 119|0x000000062b400000, 0x000000062b400000, 0x000000062b800000| 0%| F| |TAMS 0x000000062b400000, 0x000000062b400000| Untracked
| 120|0x000000062b800000, 0x000000062bb7fc80, 0x000000062bc00000| 87%| E| |TAMS 0x000000062b800000, 0x000000062b800000| Complete
| 121|0x000000062bc00000, 0x000000062c000000, 0x000000062c000000|100%| E|CS|TAMS 0x000000062bc00000, 0x000000062bc00000| Complete
| 122|0x000000062c000000, 0x000000062c400000, 0x000000062c400000|100%| E|CS|TAMS 0x000000062c000000, 0x000000062c000000| Complete
| 123|0x000000062c400000, 0x000000062c800000, 0x000000062c800000|100%| E|CS|TAMS 0x000000062c400000, 0x000000062c400000| Complete
| 124|0x000000062c800000, 0x000000062cc00000, 0x000000062cc00000|100%| E|CS|TAMS 0x000000062c800000, 0x000000062c800000| Complete
Card table byte_map: [0x000002346c8f0000,0x000002346d890000] _byte_map_base: 0x0000023469884000
Marking Bits (Prev, Next): (CMBitMap*) 0x0000023453cc26f0, (CMBitMap*) 0x0000023453cc2730
Prev Bits: [0x000002346e830000, 0x00000234764d0000)
Next Bits: [0x00000234764d0000, 0x000002347e170000)
Polling page: 0x0000023451ab0000
Metaspace:
Usage:
Non-class: 4.71 MB used.
Class: 367.62 KB used.
Both: 5.07 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 4.81 MB ( 8%) committed, 1 nodes.
Class space: 1.00 GB reserved, 448.00 KB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 5.25 MB ( <1%) committed.
Chunk freelists:
Non-Class: 2.25 MB
Class: 3.51 MB
Both: 5.76 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 21.00 MB
CDS: on
MetaspaceReclaimPolicy: balanced
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 8388608.
- enlarge_chunks_in_place: 1.
- new_chunks_are_fully_committed: 0.
- uncommit_free_chunks: 1.
- use_allocation_guard: 0.
Internal statistics:
num_allocs_failed_limit: 0.
num_arena_births: 84.
num_arena_deaths: 0.
num_vsnodes_births: 2.
num_vsnodes_deaths: 0.
num_space_committed: 84.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 0.
num_chunks_taken_from_freelist: 166.
num_chunk_merges: 0.
num_chunk_splits: 118.
num_chunks_enlarged: 83.
num_inconsistent_stats: 0.
CodeHeap 'non-profiled nmethods': size=119168Kb used=290Kb max_used=290Kb free=118878Kb
bounds [0x0000023463720000, 0x0000023463990000, 0x000002346ab80000]
CodeHeap 'profiled nmethods': size=119104Kb used=1485Kb max_used=1485Kb free=117618Kb
bounds [0x000002345bb80000, 0x000002345bdf0000, 0x0000023462fd0000]
CodeHeap 'non-nmethods': size=7488Kb used=2889Kb max_used=2902Kb free=4598Kb
bounds [0x0000023462fd0000, 0x00000234632b0000, 0x0000023463720000]
total_blobs=1942 nmethods=912 adapters=939
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 0.301 Thread 0x000002347f904e70 901 3 java.lang.Integer::toUnsignedLong (7 bytes)
Event: 0.301 Thread 0x000002347e677fd0 902 3 org.lwjgl.system.MemoryUtil::write8 (19 bytes)
Event: 0.301 Thread 0x000002347f904e70 nmethod 901 0x000002345bcf1090 code [0x000002345bcf1220, 0x000002345bcf1318]
Event: 0.301 Thread 0x000002347f907810 903 3 sun.misc.Unsafe::putByte (11 bytes)
Event: 0.301 Thread 0x000002347f907810 nmethod 903 0x000002345bcf1390 code [0x000002345bcf1520, 0x000002345bcf1638]
Event: 0.301 Thread 0x000002347e677fd0 nmethod 902 0x000002345bcf1710 code [0x000002345bcf18c0, 0x000002345bcf1b18]
Event: 0.302 Thread 0x000002347fb8ae70 905 4 org.eclipse.jdt.launching.internal.org.objectweb.asm.ByteVector::putShort (52 bytes)
Event: 0.303 Thread 0x000002347fb8ae70 nmethod 905 0x0000023463767c90 code [0x0000023463767e20, 0x0000023463767fc8]
Event: 0.305 Thread 0x000002347e677fd0 906 3 java.lang.String::indexOf (64 bytes)
Event: 0.305 Thread 0x000002347f907810 907 3 java.lang.StringLatin1::indexOf (25 bytes)
Event: 0.305 Thread 0x000002347f907810 nmethod 907 0x000002345bcf1c10 code [0x000002345bcf1dc0, 0x000002345bcf1fe8]
Event: 0.305 Thread 0x000002347e677fd0 nmethod 906 0x000002345bcf2110 code [0x000002345bcf2320, 0x000002345bcf2808]
Event: 0.306 Thread 0x000002347f907810 909 3 sun.misc.Unsafe::putLong (11 bytes)
Event: 0.306 Thread 0x000002347f904e70 910 3 org.lwjgl.system.MemoryUtil::memPutAddress (29 bytes)
Event: 0.306 Thread 0x000002347fb8ae70 911 4 java.lang.Integer::toUnsignedLong (7 bytes)
Event: 0.306 Thread 0x000002347f907810 nmethod 909 0x000002345bcf2990 code [0x000002345bcf2b20, 0x000002345bcf2c38]
Event: 0.306 Thread 0x000002347f904e70 nmethod 910 0x000002345bcf2d10 code [0x000002345bcf2ec0, 0x000002345bcf30b8]
Event: 0.306 Thread 0x000002347fb8ae70 nmethod 911 0x0000023463768510 code [0x0000023463768680, 0x00000234637686d8]
Event: 0.306 Thread 0x000002347f904e70 912 3 java.lang.ref.PhantomReference::<init> (7 bytes)
Event: 0.306 Thread 0x000002347f904e70 nmethod 912 0x000002345bcf3190 code [0x000002345bcf3340, 0x000002345bcf3638]
GC Heap History (0 events):
No events
Dll operation events (11 events):
Event: 0.004 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\java.dll
Event: 0.009 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\jsvml.dll
Event: 0.151 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
Event: 0.152 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\instrument.dll
Event: 0.155 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\net.dll
Event: 0.155 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\nio.dll
Event: 0.157 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
Event: 0.194 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\jimage.dll
Event: 0.215 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\verify.dll
Event: 0.270 Loaded shared library C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl.dll
Event: 0.280 Loaded shared library C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl_opengl.dll
Deoptimization events (20 events):
Event: 0.223 Thread 0x0000023453c10460 DEOPT PACKING pc=0x000002345bc168f3 sp=0x0000008f887fbd10
Event: 0.223 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303b0e3 sp=0x0000008f887fb178 mode 0
Event: 0.224 Thread 0x0000023453c10460 DEOPT PACKING pc=0x000002345bc168f3 sp=0x0000008f887fbde0
Event: 0.224 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303b0e3 sp=0x0000008f887fb248 mode 0
Event: 0.225 Thread 0x0000023453c10460 DEOPT PACKING pc=0x000002345bc168f3 sp=0x0000008f887f7f90
Event: 0.225 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303b0e3 sp=0x0000008f887f73f8 mode 0
Event: 0.226 Thread 0x0000023453c10460 DEOPT PACKING pc=0x000002345bc168f3 sp=0x0000008f887f7f90
Event: 0.226 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303b0e3 sp=0x0000008f887f73f8 mode 0
Event: 0.240 Thread 0x0000023453c10460 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000023463750608 relative=0x00000000000002c8
Event: 0.240 Thread 0x0000023453c10460 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000023463750608 method=org.eclipse.jdt.launching.internal.org.objectweb.asm.ClassReader.readUTF8(I[C)Ljava/lang/String; @ 11 c2
Event: 0.240 Thread 0x0000023453c10460 DEOPT PACKING pc=0x0000023463750608 sp=0x0000008f887fc150
Event: 0.240 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303a5a3 sp=0x0000008f887fc158 mode 2
Event: 0.253 Thread 0x0000023453c10460 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000023463750d18 relative=0x00000000000000f8
Event: 0.253 Thread 0x0000023453c10460 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000023463750d18 method=org.eclipse.jdt.launching.internal.org.objectweb.asm.ByteVector.putShort(I)Lorg/eclipse/jdt/launching/internal/org/objectweb/asm/ByteVector; @ 13 c2
Event: 0.253 Thread 0x0000023453c10460 DEOPT PACKING pc=0x0000023463750d18 sp=0x0000008f887fb060
Event: 0.253 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303a5a3 sp=0x0000008f887faff8 mode 2
Event: 0.264 Thread 0x0000023453c10460 Uncommon trap: trap_request=0xffffff45 fr.pc=0x000002346375e008 relative=0x0000000000000068
Event: 0.264 Thread 0x0000023453c10460 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002346375e008 method=java.io.WinNTFileSystem.isSlash(C)Z @ 9 c2
Event: 0.264 Thread 0x0000023453c10460 DEOPT PACKING pc=0x000002346375e008 sp=0x0000008f887fcc70
Event: 0.264 Thread 0x0000023453c10460 DEOPT UNPACKING pc=0x000002346303a5a3 sp=0x0000008f887fcc08 mode 2
Classes loaded (20 events):
Event: 0.286 Loading class sun/misc/Unsafe
Event: 0.286 Loading class sun/misc/Unsafe done
Event: 0.286 Loading class java/lang/invoke/DirectMethodHandle$StaticAccessor
Event: 0.286 Loading class java/lang/invoke/DirectMethodHandle$StaticAccessor done
Event: 0.288 Loading class java/util/function/LongPredicate
Event: 0.288 Loading class java/util/function/LongPredicate done
Event: 0.288 Loading class java/lang/foreign/MemorySegment
Event: 0.289 Loading class java/lang/foreign/Addressable
Event: 0.289 Loading class java/lang/foreign/Addressable done
Event: 0.289 Loading class java/lang/foreign/MemorySegment done
Event: 0.290 Loading class java/nio/InvalidMarkException
Event: 0.291 Loading class java/nio/InvalidMarkException done
Event: 0.291 Loading class java/nio/BufferUnderflowException
Event: 0.291 Loading class java/nio/BufferUnderflowException done
Event: 0.301 Loading class jdk/internal/foreign/MemorySessionImpl
Event: 0.301 Loading class java/lang/foreign/MemorySession
Event: 0.301 Loading class java/lang/foreign/SegmentAllocator
Event: 0.301 Loading class java/lang/foreign/SegmentAllocator done
Event: 0.301 Loading class java/lang/foreign/MemorySession done
Event: 0.301 Loading class jdk/internal/foreign/MemorySessionImpl done
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 0.276 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf80f98}> (0x000000062bf80f98)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.276 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf818f8}> (0x000000062bf818f8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.276 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf8a610}> (0x000000062bf8a610)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.278 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf8d3f0}> (0x000000062bf8d3f0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.278 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf8d7b0}> (0x000000062bf8d7b0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.282 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf99658}> (0x000000062bf99658)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.282 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bf99950}> (0x000000062bf99950)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.284 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b83b910}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object)'> (0x000000062b83b910)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.288 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b88f0f0}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, int, long)'> (0x000000062b88f0f0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.288 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b8949c0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, int)'> (0x000000062b8949c0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.289 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b8b36a8}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, long, long)'> (0x000000062b8b36a8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.289 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b8b97c0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, long)'> (0x000000062b8b97c0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.290 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b8bdad0}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, long, java.lang.Object)'> (0x000000062b8bdad0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.290 Thread 0x0000023453c10460 Exception <a 'java/lang/NoSuchMethodError'{0x000000062b8c5058}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, java.lang.Object, long)'> (0x000000062b8c5058)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.295 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9a95b8}> (0x000000062b9a95b8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.296 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9a98b0}> (0x000000062b9a98b0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.296 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9aa4c0}> (0x000000062b9aa4c0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.296 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9b1250}> (0x000000062b9b1250)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.299 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9b4030}> (0x000000062b9b4030)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.299 Thread 0x0000023453c10460 Exception <a 'sun/nio/fs/WindowsException'{0x000000062b9b43e0}> (0x000000062b9b43e0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
VM Operations (10 events):
Event: 0.031 Executing VM operation: HandshakeAllThreads
Event: 0.031 Executing VM operation: HandshakeAllThreads done
Event: 0.040 Executing VM operation: ChangeBreakpoints
Event: 0.040 Executing VM operation: ChangeBreakpoints done
Event: 0.137 Executing VM operation: ChangeBreakpoints
Event: 0.137 Executing VM operation: ChangeBreakpoints done
Event: 0.259 Executing VM operation: HandshakeAllThreads
Event: 0.259 Executing VM operation: HandshakeAllThreads done
Event: 0.264 Executing VM operation: HandshakeAllThreads
Event: 0.264 Executing VM operation: HandshakeAllThreads done
Events (18 events):
Event: 0.009 Thread 0x0000023453c10460 Thread added: 0x0000023453c10460
Event: 0.014 Thread 0x000002347e65ecb0 Thread added: 0x000002347e65ecb0
Event: 0.015 Thread 0x000002347e660120 Thread added: 0x000002347e660120
Event: 0.015 Thread 0x000002347e6625a0 Thread added: 0x000002347e6625a0
Event: 0.015 Thread 0x000002347e664ee0 Thread added: 0x000002347e664ee0
Event: 0.015 Thread 0x000002347e6682e0 Thread added: 0x000002347e6682e0
Event: 0.015 Thread 0x000002347e66cbf0 Thread added: 0x000002347e66cbf0
Event: 0.015 Thread 0x000002347e673540 Thread added: 0x000002347e673540
Event: 0.015 Thread 0x000002347e677fd0 Thread added: 0x000002347e677fd0
Event: 0.015 Thread 0x000002347e68cd10 Thread added: 0x000002347e68cd10
Event: 0.029 Thread 0x000002347e68c270 Thread added: 0x000002347e68c270
Event: 0.031 Thread 0x000002347f904e70 Thread added: 0x000002347f904e70
Event: 0.032 Thread 0x000002347f907810 Thread added: 0x000002347f907810
Event: 0.040 Thread 0x000002347f9b69e0 Thread added: 0x000002347f9b69e0
Event: 0.040 Thread 0x000002347fabebd0 Thread added: 0x000002347fabebd0
Event: 0.040 Thread 0x000002347fabf520 Thread added: 0x000002347fabf520
Event: 0.200 Thread 0x000002347fb8ae70 Thread added: 0x000002347fb8ae70
Event: 0.212 Thread 0x000002347e68b280 Thread added: 0x000002347e68b280
Dynamic libraries:
0x00007ff636b50000 - 0x00007ff636b60000 C:\Program Files\Java\jdk-19.0.2\bin\javaw.exe
0x00007ff935510000 - 0x00007ff935708000 C:\Windows\SYSTEM32\ntdll.dll
0x00007ff934e50000 - 0x00007ff934f0f000 C:\Windows\System32\KERNEL32.DLL
0x00007ff932bf0000 - 0x00007ff932ee6000 C:\Windows\System32\KERNELBASE.dll
0x00007ff932f20000 - 0x00007ff933020000 C:\Windows\System32\ucrtbase.dll
0x00007ff91a600000 - 0x00007ff91a618000 C:\Program Files\Java\jdk-19.0.2\bin\jli.dll
0x00007ff91a700000 - 0x00007ff91a71b000 C:\Program Files\Java\jdk-19.0.2\bin\VCRUNTIME140.dll
0x00007ff934720000 - 0x00007ff9347cf000 C:\Windows\System32\ADVAPI32.dll
0x00007ff934bb0000 - 0x00007ff934c4e000 C:\Windows\System32\msvcrt.dll
0x00007ff9353a0000 - 0x00007ff93543c000 C:\Windows\System32\sechost.dll
0x00007ff934a80000 - 0x00007ff934ba6000 C:\Windows\System32\RPCRT4.dll
0x00007ff933570000 - 0x00007ff93370d000 C:\Windows\System32\USER32.dll
0x00007ff9334a0000 - 0x00007ff9334c2000 C:\Windows\System32\win32u.dll
0x00007ff925810000 - 0x00007ff925aaa000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll
0x00007ff934c80000 - 0x00007ff934cac000 C:\Windows\System32\GDI32.dll
0x00007ff933380000 - 0x00007ff933495000 C:\Windows\System32\gdi32full.dll
0x00007ff9334d0000 - 0x00007ff93356d000 C:\Windows\System32\msvcp_win.dll
0x00007ff92b1d0000 - 0x00007ff92b1da000 C:\Windows\SYSTEM32\VERSION.dll
0x00007ff934c50000 - 0x00007ff934c80000 C:\Windows\System32\IMM32.DLL
0x00007ff92f6f0000 - 0x00007ff92f6fc000 C:\Program Files\Java\jdk-19.0.2\bin\vcruntime140_1.dll
0x00007ff8fde20000 - 0x00007ff8fdeae000 C:\Program Files\Java\jdk-19.0.2\bin\msvcp140.dll
0x00007ff8884e0000 - 0x00007ff8891a0000 C:\Program Files\Java\jdk-19.0.2\bin\server\jvm.dll
0x00007ff8cf580000 - 0x00007ff8cf589000 C:\Windows\SYSTEM32\WSOCK32.dll
0x00007ff925d90000 - 0x00007ff925db7000 C:\Windows\SYSTEM32\WINMM.dll
0x00007ff934990000 - 0x00007ff9349fb000 C:\Windows\System32\WS2_32.dll
0x00007ff930ac0000 - 0x00007ff930ad2000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x00007ff92f6d0000 - 0x00007ff92f6da000 C:\Program Files\Java\jdk-19.0.2\bin\jimage.dll
0x00007ff929560000 - 0x00007ff929744000 C:\Windows\SYSTEM32\DBGHELP.DLL
0x00007ff9154a0000 - 0x00007ff9154d4000 C:\Windows\SYSTEM32\dbgcore.DLL
0x00007ff933280000 - 0x00007ff933302000 C:\Windows\System32\bcryptPrimitives.dll
0x00007ff90cd20000 - 0x00007ff90cd5c000 C:\Program Files\Java\jdk-19.0.2\bin\jdwp.dll
0x00007ff91a5f0000 - 0x00007ff91a5fe000 C:\Program Files\Java\jdk-19.0.2\bin\instrument.dll
0x00007ff911b60000 - 0x00007ff911b86000 C:\Program Files\Java\jdk-19.0.2\bin\java.dll
0x00007ff8a3af0000 - 0x00007ff8a3bc7000 C:\Program Files\Java\jdk-19.0.2\bin\jsvml.dll
0x00007ff933710000 - 0x00007ff933e54000 C:\Windows\System32\SHELL32.dll
0x00007ff930cc0000 - 0x00007ff931453000 C:\Windows\SYSTEM32\windows.storage.dll
0x00007ff934f10000 - 0x00007ff935264000 C:\Windows\System32\combase.dll
0x00007ff932640000 - 0x00007ff93266e000 C:\Windows\SYSTEM32\Wldp.dll
0x00007ff9352d0000 - 0x00007ff93537d000 C:\Windows\System32\SHCORE.dll
0x00007ff935270000 - 0x00007ff9352c5000 C:\Windows\System32\shlwapi.dll
0x00007ff932b30000 - 0x00007ff932b4f000 C:\Windows\SYSTEM32\profapi.dll
0x00007ff919f00000 - 0x00007ff919f0c000 C:\Program Files\Java\jdk-19.0.2\bin\dt_socket.dll
0x00007ff932040000 - 0x00007ff93207c000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x00007ff9323a0000 - 0x00007ff93240a000 C:\Windows\system32\mswsock.dll
0x00007ff932090000 - 0x00007ff93215a000 C:\Windows\SYSTEM32\DNSAPI.dll
0x00007ff934e40000 - 0x00007ff934e48000 C:\Windows\System32\NSI.dll
0x00007ff92a320000 - 0x00007ff92a32a000 C:\Windows\System32\rasadhlp.dll
0x00007ff9279b0000 - 0x00007ff927a32000 C:\Windows\System32\fwpuclnt.dll
0x00007ff932ef0000 - 0x00007ff932f17000 C:\Windows\System32\bcrypt.dll
0x00007ff919c40000 - 0x00007ff919c58000 C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
0x00007ff916970000 - 0x00007ff916983000 C:\Program Files\Java\jdk-19.0.2\bin\net.dll
0x00007ff92bf70000 - 0x00007ff92c07a000 C:\Windows\SYSTEM32\WINHTTP.dll
0x00007ff912fa0000 - 0x00007ff912fb6000 C:\Program Files\Java\jdk-19.0.2\bin\nio.dll
0x00007ff919ef0000 - 0x00007ff919f00000 C:\Program Files\Java\jdk-19.0.2\bin\verify.dll
0x00007ff8a45d0000 - 0x00007ff8a464a000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl.dll
0x00007ff8b13c0000 - 0x00007ff8b141e000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl_opengl.dll
0x00007ff8c8fb0000 - 0x00007ff8c90d5000 C:\Windows\SYSTEM32\opengl32.dll
0x00007ff8c8a90000 - 0x00007ff8c8abc000 C:\Windows\SYSTEM32\GLU32.dll
0x00007ff8a2190000 - 0x00007ff8a2400000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\jemalloc.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Java\jdk-19.0.2\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e;C:\Program Files\Java\jdk-19.0.2\bin\server;C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64
VM Arguments:
jvm_args: -XX:+ShowCodeDetailsInExceptionMessages -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:63099 -javaagent:C:\Users\Speiger\eclipse\java-2022-12\eclipse\configuration\org.eclipse.osgi\636\0\.cp\lib\javaagent-shaded.jar -Dfile.encoding=UTF-8
java_command: speiger.src.coreengine.Testing
java_class_path (initial): D:\Projects\GameProject\SimpleJavaEngine\bin\main;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\757920418805fb90bfebb3d46b1d9e7669fca2eb\lwjgl-glfw-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\1251e3cb7e5d6159334cfb9244f789ce992f03b\lwjgl-glfw-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-jemalloc\3.3.2\877e17e39ebcd58a9c956dc3b5b777813de0873a\lwjgl-jemalloc-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-jemalloc\3.3.2\db886c1f9e313c3fa2a25543b99ccd250d3f9fb5\lwjgl-jemalloc-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-nfd\3.3.2\ec66452fad5bf48707cbe96c573c6cc3dd8a7a82\lwjgl-nfd-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-nfd\3.3.2\12c0041066a97f0c74d0f72db1423ac9ea124275\lwjgl-nfd-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openal\3.3.2\ae5357ed6d934546d3533993ea84c0cfb75eed95\lwjgl-openal-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openal\3.3.2\e74f299a602192faaf14b917632e4cbbb493c940\lwjgl-openal-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\ee8e95be0b438602038bc1f02dc5e3d011b1b216\lwjgl-opengl-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\83cd34469d4e0bc335bf74c7f62206530a9480bf\lwjgl-opengl-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-stb\3.3.2\a2550795014d622b686e9caac50b14baa87d2c70\lwjgl-stb-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-stb\3.3.2\1c4f4b8353bdb78c5264ab921436f03fc9aa1ba5\lwjgl-stb-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\4421d94af68e35dcaa31737a6fc59136a1e61b94\lwjgl-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\a55169ced70ffcd15f2162daf4a9c968578f6cd5\lwjgl-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.8.6\9180733b7df8542621dc12e21e87557e8c99b8cb\gson-2.8.6.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\de.speiger\Primitive-Collections\0.8.0\333b9d587940fc34ad68f3d7d6bace4646dd02ec\Primitive-Collections-0.8.0.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 12 {product} {ergonomic}
uint ConcGCThreads = 5 {product} {ergonomic}
uint G1ConcRefinementThreads = 18 {product} {ergonomic}
size_t G1HeapRegionSize = 4194304 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 524288000 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 8363442176 {product} {ergonomic}
size_t MaxNewSize = 5016387584 {product} {ergonomic}
size_t MinHeapDeltaBytes = 4194304 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 7602480 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122027880 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122027880 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line}
size_t SoftMaxHeapSize = 8363442176 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags foldmultilines=false
#1: stderr all=off uptime,level,tags foldmultilines=false
Environment Variables:
PATH=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Users\Speiger\AppData\Local\Microsoft\WindowsApps;
USERNAME=Speiger
OS=Windows_NT
PROCESSOR_IDENTIFIER=AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD
TMP=C:\Users\Speiger\AppData\Local\Temp
TEMP=C:\Users\Speiger\AppData\Local\Temp
--------------- S Y S T E M ---------------
OS:
Windows 10 , 64 bit Build 19041 (10.0.19041.3031)
OS uptime: 0 days 3:11 hours
CPU: total 24 (initial active 24) (24 cores per cpu, 2 threads per core) family 25 model 97 stepping 2 microcode 0x0, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4a, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, avx512f, avx512dq, avx512cd, avx512bw, avx512vl, sha, fma, vzeroupper, avx512_vpopcntdq, avx512_vpclmulqdq, avx512_vaes, avx512_vnni, clflush, clflushopt, avx512_vbmi2, avx512_vbmi, rdtscp, rdpid, fsrm, gfni, avx512_bitalg
Memory: 4k page, system-wide physical 31894M (21103M free)
TotalPageFile size 36502M (AvailPageFile size 20303M)
current process WorkingSet (physical memory assigned to process): 66M, peak: 66M
current process commit charge ("private bytes"): 639M, peak: 639M
vm_info: Java HotSpot(TM) 64-Bit Server VM (19.0.2+7-44) for windows-amd64 JRE (19.0.2+7-44), built on 2022-11-30T18:02:09Z by "mach5one" with MS VC++ 17.1 (VS2022)
END.
+943
View File
@@ -0,0 +1,943 @@
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff8b13cc79d, pid=9584, tid=6384
#
# JRE version: Java(TM) SE Runtime Environment (19.0.2+7) (build 19.0.2+7-44)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0.2+7-44, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [lwjgl_opengl.dll+0xc79d]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- S U M M A R Y ------------
Command Line: -XX:+ShowCodeDetailsInExceptionMessages -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:63110 -javaagent:C:\Users\Speiger\eclipse\java-2022-12\eclipse\configuration\org.eclipse.osgi\636\0\.cp\lib\javaagent-shaded.jar -Dfile.encoding=UTF-8 speiger.src.coreengine.Testing
Host: AMD Ryzen 9 7900 12-Core Processor , 24 cores, 31G, Windows 10 , 64 bit Build 19041 (10.0.19041.3031)
Time: Mon Jun 19 04:07:01 2023 Mitteleuropäische Sommerzeit elapsed time: 0.291177 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x000001b7f7801df0): JavaThread "main" [_thread_in_native, id=6384, stack(0x000000549c500000,0x000000549c600000)]
Stack: [0x000000549c500000,0x000000549c600000], sp=0x000000549c5ff6d8, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [lwjgl_opengl.dll+0xc79d]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.lwjgl.opengl.GL11C.nglGetBooleanv(IJ)V+0
j org.lwjgl.opengl.GL11C.glGetBoolean(I)Z+20
j org.lwjgl.opengl.GL11.glGetBoolean(I)Z+1
j speiger.src.coreengine.Testing.main([Ljava/lang/String;)V+18
v ~StubRoutines::call_stub 0x000001b7874510e8
siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 0x00000000000002f0
Registers:
RAX=0x000001b7a9f46800, RBX=0x000001b7a5dcdd48, RCX=0x000000000000809d, RDX=0x000001b7aa035008
RSP=0x000000549c5ff6d8, RBP=0x000000549c5ff768, RSI=0x000001b7a5afb998, RDI=0x0000000000000001
R8 =0x000000000000809d, R9 =0x000001b7aa035008, R10=0x0000000000000000, R11=0x000000062b44f290
R12=0x0000000000000000, R13=0x000001b7a5dcdd48, R14=0x000000549c5ff798, R15=0x000001b7f7801df0
RIP=0x00007ff8b13cc79d, EFLAGS=0x0000000000010206
Register to memory mapping:
RIP=0x00007ff8b13cc79d lwjgl_opengl.dll
RAX=0x000001b7a9f46800 points into unknown readable memory: 0x0000000000000000 | 00 00 00 00 00 00 00 00
RBX={method} {0x000001b7a5dcdd50} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
RCX=0x000000000000809d is an unknown value
RDX=0x000001b7aa035008 points into unknown readable memory: 0x006200657a690000 | 00 00 69 7a 65 00 62 00
RSP=0x000000549c5ff6d8 is pointing into the stack for thread: 0x000001b7f7801df0
RBP=0x000000549c5ff768 is pointing into the stack for thread: 0x000001b7f7801df0
RSI=0x000001b7a5afb998 is pointing into metadata
RDI=0x0000000000000001 is an unknown value
R8 =0x000000000000809d is an unknown value
R9 =0x000001b7aa035008 points into unknown readable memory: 0x006200657a690000 | 00 00 69 7a 65 00 62 00
R10=0x0 is NULL
R11=0x000000062b44f290 is an oop: java.lang.Class
{0x000000062b44f290} - klass: 'java/lang/Class'
- ---- fields (total size 116 words):
- private volatile transient 'classRedefinedCount' 'I' @12 0
- abstract internal 'klass' 'J' @16 34376626080 (101afa0 8)
- abstract internal 'array_klass' 'J' @24 0 (0 0)
- abstract internal 'oop_size' 'I' @32 116 (74)
- abstract internal 'static_oop_field_count' 'I' @36 0
- private volatile transient 'cachedConstructor' 'Ljava/lang/reflect/Constructor;' @40 NULL (0)
- private transient 'name' 'Ljava/lang/String;' @44 "org.lwjgl.opengl.GL11C"{0x000000062b44f640} (c5689ec8)
- private transient 'module' 'Ljava/lang/Module;' @48 a 'java/lang/Module'{0x000000062c86c9c8} (c590d939)
- private final 'classLoader' 'Ljava/lang/ClassLoader;' @52 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x000000062c86c808} (c590d901)
- private transient 'classData' 'Ljava/lang/Object;' @56 NULL (0)
- private transient 'packageName' 'Ljava/lang/String;' @60 "org.lwjgl.opengl"{0x000000062bff7af0} (c57fef5e)
- private final 'componentType' 'Ljava/lang/Class;' @64 NULL (0)
- private volatile transient 'reflectionData' 'Ljava/lang/ref/SoftReference;' @68 NULL (0)
- private volatile transient 'genericInfo' 'Lsun/reflect/generics/repository/ClassRepository;' @72 NULL (0)
- private volatile transient 'enumConstants' '[Ljava/lang/Object;' @76 NULL (0)
- private volatile transient 'enumConstantDirectory' 'Ljava/util/Map;' @80 NULL (0)
- private volatile transient 'annotationData' 'Ljava/lang/Class$AnnotationData;' @84 NULL (0)
- private volatile transient 'annotationType' 'Lsun/reflect/annotation/AnnotationType;' @88 NULL (0)
- transient 'classValueMap' 'Ljava/lang/ClassValue$ClassValueMap;' @92 NULL (0)
- abstract internal 'protection_domain' 'Ljava/lang/Object;' @96 a 'java/security/ProtectionDomain'{0x000000062b810610} (c57020c2)
- abstract internal 'signers_name' 'Ljava/lang/Object;' @100 NULL (0)
- abstract internal 'source_file' 'Ljava/lang/Object;' @104 NULL (0)
- signature: Lorg/lwjgl/opengl/GL11C;
- ---- static fields (0):
- public static final 'GL_NEVER' 'I' @112 512 (200)
- public static final 'GL_LESS' 'I' @116 513 (201)
- public static final 'GL_EQUAL' 'I' @120 514 (202)
- public static final 'GL_LEQUAL' 'I' @124 515 (203)
- public static final 'GL_GREATER' 'I' @128 516 (204)
- public static final 'GL_NOTEQUAL' 'I' @132 517 (205)
- public static final 'GL_GEQUAL' 'I' @136 518 (206)
- public static final 'GL_ALWAYS' 'I' @140 519 (207)
- public static final 'GL_DEPTH_BUFFER_BIT' 'I' @144 256 (100)
- public static final 'GL_STENCIL_BUFFER_BIT' 'I' @148 1024 (400)
- public static final 'GL_COLOR_BUFFER_BIT' 'I' @152 16384 (4000)
- public static final 'GL_POINTS' 'I' @156 0
- public static final 'GL_LINES' 'I' @160 1
- public static final 'GL_LINE_LOOP' 'I' @164 2
- public static final 'GL_LINE_STRIP' 'I' @168 3
- public static final 'GL_TRIANGLES' 'I' @172 4
- public static final 'GL_TRIANGLE_STRIP' 'I' @176 5
- public static final 'GL_TRIANGLE_FAN' 'I' @180 6
- public static final 'GL_QUADS' 'I' @184 7
- public static final 'GL_ZERO' 'I' @188 0
- public static final 'GL_ONE' 'I' @192 1
- public static final 'GL_SRC_COLOR' 'I' @196 768 (300)
- public static final 'GL_ONE_MINUS_SRC_COLOR' 'I' @200 769 (301)
- public static final 'GL_SRC_ALPHA' 'I' @204 770 (302)
- public static final 'GL_ONE_MINUS_SRC_ALPHA' 'I' @208 771 (303)
- public static final 'GL_DST_ALPHA' 'I' @212 772 (304)
- public static final 'GL_ONE_MINUS_DST_ALPHA' 'I' @216 773 (305)
- public static final 'GL_DST_COLOR' 'I' @220 774 (306)
- public static final 'GL_ONE_MINUS_DST_COLOR' 'I' @224 775 (307)
- public static final 'GL_SRC_ALPHA_SATURATE' 'I' @228 776 (308)
- public static final 'GL_TRUE' 'I' @232 1
- public static final 'GL_FALSE' 'I' @236 0
- public static final 'GL_BYTE' 'I' @240 5120 (1400)
- public static final 'GL_UNSIGNED_BYTE' 'I' @244 5121 (1401)
- public static final 'GL_SHORT' 'I' @248 5122 (1402)
- public static final 'GL_UNSIGNED_SHORT' 'I' @252 5123 (1403)
- public static final 'GL_INT' 'I' @256 5124 (1404)
- public static final 'GL_UNSIGNED_INT' 'I' @260 5125 (1405)
- public static final 'GL_FLOAT' 'I' @264 5126 (1406)
- public static final 'GL_DOUBLE' 'I' @268 5130 (140a)
- public static final 'GL_NONE' 'I' @272 0
- public static final 'GL_FRONT_LEFT' 'I' @276 1024 (400)
- public static final 'GL_FRONT_RIGHT' 'I' @280 1025 (401)
- public static final 'GL_BACK_LEFT' 'I' @284 1026 (402)
- public static final 'GL_BACK_RIGHT' 'I' @288 1027 (403)
- public static final 'GL_FRONT' 'I' @292 1028 (404)
- public static final 'GL_BACK' 'I' @296 1029 (405)
- public static final 'GL_LEFT' 'I' @300 1030 (406)
- public static final 'GL_RIGHT' 'I' @304 1031 (407)
- public static final 'GL_FRONT_AND_BACK' 'I' @308 1032 (408)
- public static final 'GL_NO_ERROR' 'I' @312 0
- public static final 'GL_INVALID_ENUM' 'I' @316 1280 (500)
- public static final 'GL_INVALID_VALUE' 'I' @320 1281 (501)
- public static final 'GL_INVALID_OPERATION' 'I' @324 1282 (502)
- public static final 'GL_STACK_OVERFLOW' 'I' @328 1283 (503)
- public static final 'GL_STACK_UNDERFLOW' 'I' @332 1284 (504)
- public static final 'GL_OUT_OF_MEMORY' 'I' @336 1285 (505)
- public static final 'GL_CW' 'I' @340 2304 (900)
- public static final 'GL_CCW' 'I' @344 2305 (901)
- public static final 'GL_POINT_SIZE' 'I' @348 2833 (b11)
- public static final 'GL_POINT_SIZE_RANGE' 'I' @352 2834 (b12)
- public static final 'GL_POINT_SIZE_GRANULARITY' 'I' @356 2835 (b13)
- public static final 'GL_LINE_SMOOTH' 'I' @360 2848 (b20)
- public static final 'GL_LINE_WIDTH' 'I' @364 2849 (b21)
- public static final 'GL_LINE_WIDTH_RANGE' 'I' @368 2850 (b22)
- public static final 'GL_LINE_WIDTH_GRANULARITY' 'I' @372 2851 (b23)
- public static final 'GL_POLYGON_MODE' 'I' @376 2880 (b40)
- public static final 'GL_POLYGON_SMOOTH' 'I' @380 2881 (b41)
- public static final 'GL_CULL_FACE' 'I' @384 2884 (b44)
- public static final 'GL_CULL_FACE_MODE' 'I' @388 2885 (b45)
- public static final 'GL_FRONT_FACE' 'I' @392 2886 (b46)
- public static final 'GL_DEPTH_RANGE' 'I' @396 2928 (b70)
- public static final 'GL_DEPTH_TEST' 'I' @400 2929 (b71)
- public static final 'GL_DEPTH_WRITEMASK' 'I' @404 2930 (b72)
- public static final 'GL_DEPTH_CLEAR_VALUE' 'I' @408 2931 (b73)
- public static final 'GL_DEPTH_FUNC' 'I' @412 2932 (b74)
- public static final 'GL_STENCIL_TEST' 'I' @416 2960 (b90)
- public static final 'GL_STENCIL_CLEAR_VALUE' 'I' @420 2961 (b91)
- public static final 'GL_STENCIL_FUNC' 'I' @424 2962 (b92)
- public static final 'GL_STENCIL_VALUE_MASK' 'I' @428 2963 (b93)
- public static final 'GL_STENCIL_FAIL' 'I' @432 2964 (b94)
- public static final 'GL_STENCIL_PASS_DEPTH_FAIL' 'I' @436 2965 (b95)
- public static final 'GL_STENCIL_PASS_DEPTH_PASS' 'I' @440 2966 (b96)
- public static final 'GL_STENCIL_REF' 'I' @444 2967 (b97)
- public static final 'GL_STENCIL_WRITEMASK' 'I' @448 2968 (b98)
- public static final 'GL_VIEWPORT' 'I' @452 2978 (ba2)
- public static final 'GL_DITHER' 'I' @456 3024 (bd0)
- public static final 'GL_BLEND_DST' 'I' @460 3040 (be0)
- public static final 'GL_BLEND_SRC' 'I' @464 3041 (be1)
- public static final 'GL_BLEND' 'I' @468 3042 (be2)
- public static final 'GL_LOGIC_OP_MODE' 'I' @472 3056 (bf0)
- public static final 'GL_COLOR_LOGIC_OP' 'I' @476 3058 (bf2)
- public static final 'GL_DRAW_BUFFER' 'I' @480 3073 (c01)
- public static final 'GL_READ_BUFFER' 'I' @484 3074 (c02)
- public static final 'GL_SCISSOR_BOX' 'I' @488 3088 (c10)
- public static final 'GL_SCISSOR_TEST' 'I' @492 3089 (c11)
- public static final 'GL_COLOR_CLEAR_VALUE' 'I' @496 3106 (c22)
- public static final 'GL_COLOR_WRITEMASK' 'I' @500 3107 (c23)
- public static final 'GL_DOUBLEBUFFER' 'I' @504 3122 (c32)
- public static final 'GL_STEREO' 'I' @508 3123 (c33)
- public static final 'GL_LINE_SMOOTH_HINT' 'I' @512 3154 (c52)
- public static final 'GL_POLYGON_SMOOTH_HINT' 'I' @516 3155 (c53)
- public static final 'GL_UNPACK_SWAP_BYTES' 'I' @520 3312 (cf0)
- public static final 'GL_UNPACK_LSB_FIRST' 'I' @524 3313 (cf1)
- public static final 'GL_UNPACK_ROW_LENGTH' 'I' @528 3314 (cf2)
- public static final 'GL_UNPACK_SKIP_ROWS' 'I' @532 3315 (cf3)
- public static final 'GL_UNPACK_SKIP_PIXELS' 'I' @536 3316 (cf4)
- public static final 'GL_UNPACK_ALIGNMENT' 'I' @540 3317 (cf5)
- public static final 'GL_PACK_SWAP_BYTES' 'I' @544 3328 (d00)
- public static final 'GL_PACK_LSB_FIRST' 'I' @548 3329 (d01)
- public static final 'GL_PACK_ROW_LENGTH' 'I' @552 3330 (d02)
- public static final 'GL_PACK_SKIP_ROWS' 'I' @556 3331 (d03)
- public static final 'GL_PACK_SKIP_PIXELS' 'I' @560 3332 (d04)
- public static final 'GL_PACK_ALIGNMENT' 'I' @564 3333 (d05)
- public static final 'GL_MAX_TEXTURE_SIZE' 'I' @568 3379 (d33)
- public static final 'GL_MAX_VIEWPORT_DIMS' 'I' @572 3386 (d3a)
- public static final 'GL_SUBPIXEL_BITS' 'I' @576 3408 (d50)
- public static final 'GL_TEXTURE_1D' 'I' @580 3552 (de0)
- public static final 'GL_TEXTURE_2D' 'I' @584 3553 (de1)
- public static final 'GL_TEXTURE_WIDTH' 'I' @588 4096 (1000)
- public static final 'GL_TEXTURE_HEIGHT' 'I' @592 4097 (1001)
- public static final 'GL_TEXTURE_INTERNAL_FORMAT' 'I' @596 4099 (1003)
- public static final 'GL_TEXTURE_BORDER_COLOR' 'I' @600 4100 (1004)
- public static final 'GL_DONT_CARE' 'I' @604 4352 (1100)
- public static final 'GL_FASTEST' 'I' @608 4353 (1101)
- public static final 'GL_NICEST' 'I' @612 4354 (1102)
- public static final 'GL_CLEAR' 'I' @616 5376 (1500)
- public static final 'GL_AND' 'I' @620 5377 (1501)
- public static final 'GL_AND_REVERSE' 'I' @624 5378 (1502)
- public static final 'GL_COPY' 'I' @628 5379 (1503)
- public static final 'GL_AND_INVERTED' 'I' @632 5380 (1504)
- public static final 'GL_NOOP' 'I' @636 5381 (1505)
- public static final 'GL_XOR' 'I' @640 5382 (1506)
- public static final 'GL_OR' 'I' @644 5383 (1507)
- public static final 'GL_NOR' 'I' @648 5384 (1508)
- public static final 'GL_EQUIV' 'I' @652 5385 (1509)
- public static final 'GL_INVERT' 'I' @656 5386 (150a)
- public static final 'GL_OR_REVERSE' 'I' @660 5387 (150b)
- public static final 'GL_COPY_INVERTED' 'I' @664 5388 (150c)
- public static final 'GL_OR_INVERTED' 'I' @668 5389 (150d)
- public static final 'GL_NAND' 'I' @672 5390 (150e)
- public static final 'GL_SET' 'I' @676 5391 (150f)
- public static final 'GL_TEXTURE' 'I' @680 5890 (1702)
- public static final 'GL_COLOR' 'I' @684 6144 (1800)
- public static final 'GL_DEPTH' 'I' @688 6145 (1801)
- public static final 'GL_STENCIL' 'I' @692 6146 (1802)
- public static final 'GL_STENCIL_INDEX' 'I' @696 6401 (1901)
- public static final 'GL_DEPTH_COMPONENT' 'I' @700 6402 (1902)
- public static final 'GL_RED' 'I' @704 6403 (1903)
- public static final 'GL_GREEN' 'I' @708 6404 (1904)
- public static final 'GL_BLUE' 'I' @712 6405 (1905)
- public static final 'GL_ALPHA' 'I' @716 6406 (1906)
- public static final 'GL_RGB' 'I' @720 6407 (1907)
- public static final 'GL_RGBA' 'I' @724 6408 (1908)
- public static final 'GL_POINT' 'I' @728 6912 (1b00)
- public static final 'GL_LINE' 'I' @732 6913 (1b01)
- public static final 'GL_FILL' 'I' @736 6914 (1b02)
- public static final 'GL_KEEP' 'I' @740 7680 (1e00)
- public static final 'GL_REPLACE' 'I' @744 7681 (1e01)
- public static final 'GL_INCR' 'I' @748 7682 (1e02)
- public static final 'GL_DECR' 'I' @752 7683 (1e03)
- public static final 'GL_VENDOR' 'I' @756 7936 (1f00)
- public static final 'GL_RENDERER' 'I' @760 7937 (1f01)
- public static final 'GL_VERSION' 'I' @764 7938 (1f02)
- public static final 'GL_EXTENSIONS' 'I' @768 7939 (1f03)
- public static final 'GL_NEAREST' 'I' @772 9728 (2600)
- public static final 'GL_LINEAR' 'I' @776 9729 (2601)
- public static final 'GL_NEAREST_MIPMAP_NEAREST' 'I' @780 9984 (2700)
- public static final 'GL_LINEAR_MIPMAP_NEAREST' 'I' @784 9985 (2701)
- public static final 'GL_NEAREST_MIPMAP_LINEAR' 'I' @788 9986 (2702)
- public static final 'GL_LINEAR_MIPMAP_LINEAR' 'I' @792 9987 (2703)
- public static final 'GL_TEXTURE_MAG_FILTER' 'I' @796 10240 (2800)
- public static final 'GL_TEXTURE_MIN_FILTER' 'I' @800 10241 (2801)
- public static final 'GL_TEXTURE_WRAP_S' 'I' @804 10242 (2802)
- public static final 'GL_TEXTURE_WRAP_T' 'I' @808 10243 (2803)
- public static final 'GL_REPEAT' 'I' @812 10497 (2901)
- public static final 'GL_POLYGON_OFFSET_FACTOR' 'I' @816 32824 (8038)
- public static final 'GL_POLYGON_OFFSET_UNITS' 'I' @820 10752 (2a00)
- public static final 'GL_POLYGON_OFFSET_POINT' 'I' @824 10753 (2a01)
- public static final 'GL_POLYGON_OFFSET_LINE' 'I' @828 10754 (2a02)
- public static final 'GL_POLYGON_OFFSET_FILL' 'I' @832 32823 (8037)
- public static final 'GL_R3_G3_B2' 'I' @836 10768 (2a10)
- public static final 'GL_RGB4' 'I' @840 32847 (804f)
- public static final 'GL_RGB5' 'I' @844 32848 (8050)
- public static final 'GL_RGB8' 'I' @848 32849 (8051)
- public static final 'GL_RGB10' 'I' @852 32850 (8052)
- public static final 'GL_RGB12' 'I' @856 32851 (8053)
- public static final 'GL_RGB16' 'I' @860 32852 (8054)
- public static final 'GL_RGBA2' 'I' @864 32853 (8055)
- public static final 'GL_RGBA4' 'I' @868 32854 (8056)
- public static final 'GL_RGB5_A1' 'I' @872 32855 (8057)
- public static final 'GL_RGBA8' 'I' @876 32856 (8058)
- public static final 'GL_RGB10_A2' 'I' @880 32857 (8059)
- public static final 'GL_RGBA12' 'I' @884 32858 (805a)
- public static final 'GL_RGBA16' 'I' @888 32859 (805b)
- public static final 'GL_TEXTURE_RED_SIZE' 'I' @892 32860 (805c)
- public static final 'GL_TEXTURE_GREEN_SIZE' 'I' @896 32861 (805d)
- public static final 'GL_TEXTURE_BLUE_SIZE' 'I' @900 32862 (805e)
- public static final 'GL_TEXTURE_ALPHA_SIZE' 'I' @904 32863 (805f)
- public static final 'GL_PROXY_TEXTURE_1D' 'I' @908 32867 (8063)
- public static final 'GL_PROXY_TEXTURE_2D' 'I' @912 32868 (8064)
- public static final 'GL_TEXTURE_BINDING_1D' 'I' @916 32872 (8068)
- public static final 'GL_TEXTURE_BINDING_2D' 'I' @920 32873 (8069)
- public static final 'GL_VERTEX_ARRAY' 'I' @924 32884 (8074)
R12=0x0 is NULL
R13={method} {0x000001b7a5dcdd50} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
R14=0x000000549c5ff798 is pointing into the stack for thread: 0x000001b7f7801df0
R15=0x000001b7f7801df0 is a thread
Top of Stack: (sp=0x000000549c5ff6d8)
0x000000549c5ff6d8: 000001b787473478 0000000000000001
0x000000549c5ff6e8: 000001b787472dba 000001b7a5dcdd48
0x000000549c5ff6f8: 000001b7a5afb998 0000000000000000
0x000000549c5ff708: 000000549c5ff720 000000549c5ff780
0x000000549c5ff718: 000001b787472d76 000000549c5ff720
0x000000549c5ff728: 000001b7a5dcdd48 000000549c5ff798
0x000000549c5ff738: 000001b7a5dd8000 0000000000000000
0x000000549c5ff748: 000000062b44f290 000001b7a5dcdd48
0x000000549c5ff758: 0000000000000000 000000549c5ff788
0x000000549c5ff768: 000000549c5ff7e8 000001b78746c11a
0x000000549c5ff778: 000000062b44f290 000001b78746f557
0x000000549c5ff788: 000001b7aa035008 0000000000000000
0x000000549c5ff798: 000000000000809d 000000549c5ff7a0
0x000000549c5ff7a8: 000001b7a5dcdefc 000000549c5ff820
0x000000549c5ff7b8: 000001b7a5dd8000 0000000000000000
0x000000549c5ff7c8: 000000062b44f290 000001b7a5dcdf88
Instructions: (pc=0x00007ff8b13cc79d)
0x00007ff8b13cc69d: cc cc cc 48 8b 01 45 8b d8 44 8b 44 24 28 41 8b
0x00007ff8b13cc6ad: d1 41 8b cb 4c 8b 50 18 49 ff a2 e8 01 00 00 cc
0x00007ff8b13cc6bd: cc cc cc 48 8b 01 41 8b c8 48 8b 50 18 48 ff a2
0x00007ff8b13cc6cd: f0 01 00 00 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc6dd: cc cc cc 40 53 48 8b 01 41 8b d8 44 8b 44 24 30
0x00007ff8b13cc6ed: 41 8b d1 4c 8b 4c 24 38 8b cb 4c 8b 50 18 5b 49
0x00007ff8b13cc6fd: ff a2 f8 01 00 00 cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc70d: cc cc cc 48 8b 01 48 8b 48 18 48 ff a1 98 02 00
0x00007ff8b13cc71d: 00 cc cc 48 8b 01 48 8b 48 18 48 ff a1 a0 02 00
0x00007ff8b13cc72d: 00 cc cc 48 8b 01 41 8b c8 48 8b 50 18 48 ff a2
0x00007ff8b13cc73d: c8 02 00 00 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc74d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc75d: 49 ff a2 d8 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc76d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc77d: 49 ff a2 e0 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc78d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc79d: 49 ff a2 f0 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7ad: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7bd: 49 ff a2 f8 02 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7cd: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7dd: 49 ff a2 00 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc7ed: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc7fd: 49 ff a2 08 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc80d: cc cc cc 48 8b 01 48 8b 48 18 48 8b 81 10 03 00
0x00007ff8b13cc81d: 00 48 ff e0 cc cc cc cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc82d: cc cc cc 48 8b 01 49 8b d1 41 8b c8 4c 8b 50 18
0x00007ff8b13cc83d: 49 ff a2 68 03 00 00 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc84d: cc cc cc 48 8b 01 48 8b 48 18 48 8b 81 78 03 00
0x00007ff8b13cc85d: 00 41 8b c8 48 ff e0 cc cc cc cc cc cc cc cc cc
0x00007ff8b13cc86d: cc cc cc 40 53 48 8b 01 41 8b d8 44 8b 44 24 30
0x00007ff8b13cc87d: 41 8b d1 44 8b 4c 24 38 8b cb 4c 8b 50 18 48 8b
0x00007ff8b13cc88d: 44 24 40 48 89 44 24 30 5b 49 ff a2 a8 03 00 00
Stack slot to memory mapping:
stack at sp + 0 slots: 0x000001b787473478 is at code_begin+1976 in an Interpreter codelet
method entry point (kind = native) [0x000001b787472cc0, 0x000001b787474000] 4928 bytes
stack at sp + 1 slots: 0x0000000000000001 is an unknown value
stack at sp + 2 slots: 0x000001b787472dba is at code_begin+250 in an Interpreter codelet
method entry point (kind = native) [0x000001b787472cc0, 0x000001b787474000] 4928 bytes
stack at sp + 3 slots: {method} {0x000001b7a5dcdd50} 'nglGetBooleanv' '(IJ)V' in 'org/lwjgl/opengl/GL11C'
stack at sp + 4 slots: 0x000001b7a5afb998 is pointing into metadata
stack at sp + 5 slots: 0x0 is NULL
stack at sp + 6 slots: 0x000000549c5ff720 is pointing into the stack for thread: 0x000001b7f7801df0
stack at sp + 7 slots: 0x000000549c5ff780 is pointing into the stack for thread: 0x000001b7f7801df0
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000001b7a55cc070, length=19, elements={
0x000001b7f7801df0, 0x000001b7a4262ce0, 0x000001b7a4264270, 0x000001b7a4266200,
0x000001b7a42684e0, 0x000001b7a426cfb0, 0x000001b7a426c5d0, 0x000001b7a4272110,
0x000001b7a427eae0, 0x000001b7a4289060, 0x000001b7a55067f0, 0x000001b7a5507e80,
0x000001b7a550c420, 0x000001b7a5525550, 0x000001b7a55c40c0, 0x000001b7a55ba2c0,
0x000001b7a55ba810, 0x000001b7a9cb7650, 0x000001b7a9d4f890
}
Java Threads: ( => current thread )
=>0x000001b7f7801df0 JavaThread "main" [_thread_in_native, id=6384, stack(0x000000549c500000,0x000000549c600000)]
0x000001b7a4262ce0 JavaThread "Reference Handler" daemon [_thread_blocked, id=17712, stack(0x000000549cc00000,0x000000549cd00000)]
0x000001b7a4264270 JavaThread "Finalizer" daemon [_thread_blocked, id=13484, stack(0x000000549cd00000,0x000000549ce00000)]
0x000001b7a4266200 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=13520, stack(0x000000549ce00000,0x000000549cf00000)]
0x000001b7a42684e0 JavaThread "Attach Listener" daemon [_thread_blocked, id=4268, stack(0x000000549cf00000,0x000000549d000000)]
0x000001b7a426cfb0 JavaThread "Service Thread" daemon [_thread_blocked, id=9864, stack(0x000000549d000000,0x000000549d100000)]
0x000001b7a426c5d0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=12076, stack(0x000000549d100000,0x000000549d200000)]
0x000001b7a4272110 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=8124, stack(0x000000549d200000,0x000000549d300000)]
0x000001b7a427eae0 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=11212, stack(0x000000549d300000,0x000000549d400000)]
0x000001b7a4289060 JavaThread "Sweeper thread" daemon [_thread_blocked, id=7964, stack(0x000000549d400000,0x000000549d500000)]
0x000001b7a55067f0 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=3064, stack(0x000000549d500000,0x000000549d600000)]
0x000001b7a5507e80 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=1292, stack(0x000000549d600000,0x000000549d700000)]
0x000001b7a550c420 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=12712, stack(0x000000549d700000,0x000000549d800000)]
0x000001b7a5525550 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=4864, stack(0x000000549d800000,0x000000549d900000)]
0x000001b7a55c40c0 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=8996, stack(0x000000549d900000,0x000000549da00000)]
0x000001b7a55ba2c0 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=20132, stack(0x000000549da00000,0x000000549db00000)]
0x000001b7a55ba810 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=8152, stack(0x000000549db00000,0x000000549dc00000)]
0x000001b7a9cb7650 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=13052, stack(0x000000549dc00000,0x000000549dd00000)]
0x000001b7a9d4f890 JavaThread "Notification Thread" daemon [_thread_blocked, id=12976, stack(0x000000549dd00000,0x000000549de00000)]
Other Threads:
0x000001b7f7825aa0 VMThread "VM Thread" [stack: 0x000000549cb00000,0x000000549cc00000] [id=1132]
0x000001b7a9e14d40 WatcherThread "VM Periodic Task Thread" [stack: 0x000000549de00000,0x000000549df00000] [id=5172]
0x000001b7f7825500 WorkerThread "GC Thread#0" [stack: 0x000000549c600000,0x000000549c700000] [id=9320]
0x000001b7f78c5ce0 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000549c700000,0x000000549c800000] [id=18060]
0x000001b7f7825230 WorkerThread "G1 Conc#0" [stack: 0x000000549c800000,0x000000549c900000] [id=13100]
0x000001b7a41838f0 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000549c900000,0x000000549ca00000] [id=3660]
0x000001b7a4184340 ConcurrentGCThread "G1 Service" [stack: 0x000000549ca00000,0x000000549cb00000] [id=3504]
Threads with active compile tasks:
VM state: not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap address: 0x000000060d800000, size: 7976 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000800000000-0x0000000800c40000-0x0000000800c40000), size 12845056, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 0.
Compressed class space mapped at: 0x0000000801000000-0x0000000841000000, reserved size: 1073741824
Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
GC Precious Log:
CardTable entry size: 512
Card Set container configuration: InlinePtr #cards 4 size 8 Array Of Cards #cards 32 size 80 Howl #buckets 8 coarsen threshold 7372 Howl Bitmap #cards 1024 size 144 coarsen threshold 921 Card regions per heap region 1 cards per card region 8192
CPUs: 24 total, 24 available
Memory: 31894M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (Zero based)
Heap Region Size: 4M
Heap Min Capacity: 8M
Heap Initial Capacity: 500M
Heap Max Capacity: 7976M
Pre-touch: Disabled
Parallel Workers: 18
Concurrent Workers: 5
Concurrent Refinement Workers: 18
Periodic GC: Disabled
Heap:
garbage-first heap total 512000K, used 20480K [0x000000060d800000, 0x0000000800000000)
region size 4096K, 6 young (24576K), 0 survivors (0K)
Metaspace used 5386K, committed 5568K, reserved 1114112K
class space used 375K, committed 448K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
| 0|0x000000060d800000, 0x000000060d800000, 0x000000060dc00000| 0%| F| |TAMS 0x000000060d800000, 0x000000060d800000| Untracked
| 1|0x000000060dc00000, 0x000000060dc00000, 0x000000060e000000| 0%| F| |TAMS 0x000000060dc00000, 0x000000060dc00000| Untracked
| 2|0x000000060e000000, 0x000000060e000000, 0x000000060e400000| 0%| F| |TAMS 0x000000060e000000, 0x000000060e000000| Untracked
| 3|0x000000060e400000, 0x000000060e400000, 0x000000060e800000| 0%| F| |TAMS 0x000000060e400000, 0x000000060e400000| Untracked
| 4|0x000000060e800000, 0x000000060e800000, 0x000000060ec00000| 0%| F| |TAMS 0x000000060e800000, 0x000000060e800000| Untracked
| 5|0x000000060ec00000, 0x000000060ec00000, 0x000000060f000000| 0%| F| |TAMS 0x000000060ec00000, 0x000000060ec00000| Untracked
| 6|0x000000060f000000, 0x000000060f000000, 0x000000060f400000| 0%| F| |TAMS 0x000000060f000000, 0x000000060f000000| Untracked
| 7|0x000000060f400000, 0x000000060f400000, 0x000000060f800000| 0%| F| |TAMS 0x000000060f400000, 0x000000060f400000| Untracked
| 8|0x000000060f800000, 0x000000060f800000, 0x000000060fc00000| 0%| F| |TAMS 0x000000060f800000, 0x000000060f800000| Untracked
| 9|0x000000060fc00000, 0x000000060fc00000, 0x0000000610000000| 0%| F| |TAMS 0x000000060fc00000, 0x000000060fc00000| Untracked
| 10|0x0000000610000000, 0x0000000610000000, 0x0000000610400000| 0%| F| |TAMS 0x0000000610000000, 0x0000000610000000| Untracked
| 11|0x0000000610400000, 0x0000000610400000, 0x0000000610800000| 0%| F| |TAMS 0x0000000610400000, 0x0000000610400000| Untracked
| 12|0x0000000610800000, 0x0000000610800000, 0x0000000610c00000| 0%| F| |TAMS 0x0000000610800000, 0x0000000610800000| Untracked
| 13|0x0000000610c00000, 0x0000000610c00000, 0x0000000611000000| 0%| F| |TAMS 0x0000000610c00000, 0x0000000610c00000| Untracked
| 14|0x0000000611000000, 0x0000000611000000, 0x0000000611400000| 0%| F| |TAMS 0x0000000611000000, 0x0000000611000000| Untracked
| 15|0x0000000611400000, 0x0000000611400000, 0x0000000611800000| 0%| F| |TAMS 0x0000000611400000, 0x0000000611400000| Untracked
| 16|0x0000000611800000, 0x0000000611800000, 0x0000000611c00000| 0%| F| |TAMS 0x0000000611800000, 0x0000000611800000| Untracked
| 17|0x0000000611c00000, 0x0000000611c00000, 0x0000000612000000| 0%| F| |TAMS 0x0000000611c00000, 0x0000000611c00000| Untracked
| 18|0x0000000612000000, 0x0000000612000000, 0x0000000612400000| 0%| F| |TAMS 0x0000000612000000, 0x0000000612000000| Untracked
| 19|0x0000000612400000, 0x0000000612400000, 0x0000000612800000| 0%| F| |TAMS 0x0000000612400000, 0x0000000612400000| Untracked
| 20|0x0000000612800000, 0x0000000612800000, 0x0000000612c00000| 0%| F| |TAMS 0x0000000612800000, 0x0000000612800000| Untracked
| 21|0x0000000612c00000, 0x0000000612c00000, 0x0000000613000000| 0%| F| |TAMS 0x0000000612c00000, 0x0000000612c00000| Untracked
| 22|0x0000000613000000, 0x0000000613000000, 0x0000000613400000| 0%| F| |TAMS 0x0000000613000000, 0x0000000613000000| Untracked
| 23|0x0000000613400000, 0x0000000613400000, 0x0000000613800000| 0%| F| |TAMS 0x0000000613400000, 0x0000000613400000| Untracked
| 24|0x0000000613800000, 0x0000000613800000, 0x0000000613c00000| 0%| F| |TAMS 0x0000000613800000, 0x0000000613800000| Untracked
| 25|0x0000000613c00000, 0x0000000613c00000, 0x0000000614000000| 0%| F| |TAMS 0x0000000613c00000, 0x0000000613c00000| Untracked
| 26|0x0000000614000000, 0x0000000614000000, 0x0000000614400000| 0%| F| |TAMS 0x0000000614000000, 0x0000000614000000| Untracked
| 27|0x0000000614400000, 0x0000000614400000, 0x0000000614800000| 0%| F| |TAMS 0x0000000614400000, 0x0000000614400000| Untracked
| 28|0x0000000614800000, 0x0000000614800000, 0x0000000614c00000| 0%| F| |TAMS 0x0000000614800000, 0x0000000614800000| Untracked
| 29|0x0000000614c00000, 0x0000000614c00000, 0x0000000615000000| 0%| F| |TAMS 0x0000000614c00000, 0x0000000614c00000| Untracked
| 30|0x0000000615000000, 0x0000000615000000, 0x0000000615400000| 0%| F| |TAMS 0x0000000615000000, 0x0000000615000000| Untracked
| 31|0x0000000615400000, 0x0000000615400000, 0x0000000615800000| 0%| F| |TAMS 0x0000000615400000, 0x0000000615400000| Untracked
| 32|0x0000000615800000, 0x0000000615800000, 0x0000000615c00000| 0%| F| |TAMS 0x0000000615800000, 0x0000000615800000| Untracked
| 33|0x0000000615c00000, 0x0000000615c00000, 0x0000000616000000| 0%| F| |TAMS 0x0000000615c00000, 0x0000000615c00000| Untracked
| 34|0x0000000616000000, 0x0000000616000000, 0x0000000616400000| 0%| F| |TAMS 0x0000000616000000, 0x0000000616000000| Untracked
| 35|0x0000000616400000, 0x0000000616400000, 0x0000000616800000| 0%| F| |TAMS 0x0000000616400000, 0x0000000616400000| Untracked
| 36|0x0000000616800000, 0x0000000616800000, 0x0000000616c00000| 0%| F| |TAMS 0x0000000616800000, 0x0000000616800000| Untracked
| 37|0x0000000616c00000, 0x0000000616c00000, 0x0000000617000000| 0%| F| |TAMS 0x0000000616c00000, 0x0000000616c00000| Untracked
| 38|0x0000000617000000, 0x0000000617000000, 0x0000000617400000| 0%| F| |TAMS 0x0000000617000000, 0x0000000617000000| Untracked
| 39|0x0000000617400000, 0x0000000617400000, 0x0000000617800000| 0%| F| |TAMS 0x0000000617400000, 0x0000000617400000| Untracked
| 40|0x0000000617800000, 0x0000000617800000, 0x0000000617c00000| 0%| F| |TAMS 0x0000000617800000, 0x0000000617800000| Untracked
| 41|0x0000000617c00000, 0x0000000617c00000, 0x0000000618000000| 0%| F| |TAMS 0x0000000617c00000, 0x0000000617c00000| Untracked
| 42|0x0000000618000000, 0x0000000618000000, 0x0000000618400000| 0%| F| |TAMS 0x0000000618000000, 0x0000000618000000| Untracked
| 43|0x0000000618400000, 0x0000000618400000, 0x0000000618800000| 0%| F| |TAMS 0x0000000618400000, 0x0000000618400000| Untracked
| 44|0x0000000618800000, 0x0000000618800000, 0x0000000618c00000| 0%| F| |TAMS 0x0000000618800000, 0x0000000618800000| Untracked
| 45|0x0000000618c00000, 0x0000000618c00000, 0x0000000619000000| 0%| F| |TAMS 0x0000000618c00000, 0x0000000618c00000| Untracked
| 46|0x0000000619000000, 0x0000000619000000, 0x0000000619400000| 0%| F| |TAMS 0x0000000619000000, 0x0000000619000000| Untracked
| 47|0x0000000619400000, 0x0000000619400000, 0x0000000619800000| 0%| F| |TAMS 0x0000000619400000, 0x0000000619400000| Untracked
| 48|0x0000000619800000, 0x0000000619800000, 0x0000000619c00000| 0%| F| |TAMS 0x0000000619800000, 0x0000000619800000| Untracked
| 49|0x0000000619c00000, 0x0000000619c00000, 0x000000061a000000| 0%| F| |TAMS 0x0000000619c00000, 0x0000000619c00000| Untracked
| 50|0x000000061a000000, 0x000000061a000000, 0x000000061a400000| 0%| F| |TAMS 0x000000061a000000, 0x000000061a000000| Untracked
| 51|0x000000061a400000, 0x000000061a400000, 0x000000061a800000| 0%| F| |TAMS 0x000000061a400000, 0x000000061a400000| Untracked
| 52|0x000000061a800000, 0x000000061a800000, 0x000000061ac00000| 0%| F| |TAMS 0x000000061a800000, 0x000000061a800000| Untracked
| 53|0x000000061ac00000, 0x000000061ac00000, 0x000000061b000000| 0%| F| |TAMS 0x000000061ac00000, 0x000000061ac00000| Untracked
| 54|0x000000061b000000, 0x000000061b000000, 0x000000061b400000| 0%| F| |TAMS 0x000000061b000000, 0x000000061b000000| Untracked
| 55|0x000000061b400000, 0x000000061b400000, 0x000000061b800000| 0%| F| |TAMS 0x000000061b400000, 0x000000061b400000| Untracked
| 56|0x000000061b800000, 0x000000061b800000, 0x000000061bc00000| 0%| F| |TAMS 0x000000061b800000, 0x000000061b800000| Untracked
| 57|0x000000061bc00000, 0x000000061bc00000, 0x000000061c000000| 0%| F| |TAMS 0x000000061bc00000, 0x000000061bc00000| Untracked
| 58|0x000000061c000000, 0x000000061c000000, 0x000000061c400000| 0%| F| |TAMS 0x000000061c000000, 0x000000061c000000| Untracked
| 59|0x000000061c400000, 0x000000061c400000, 0x000000061c800000| 0%| F| |TAMS 0x000000061c400000, 0x000000061c400000| Untracked
| 60|0x000000061c800000, 0x000000061c800000, 0x000000061cc00000| 0%| F| |TAMS 0x000000061c800000, 0x000000061c800000| Untracked
| 61|0x000000061cc00000, 0x000000061cc00000, 0x000000061d000000| 0%| F| |TAMS 0x000000061cc00000, 0x000000061cc00000| Untracked
| 62|0x000000061d000000, 0x000000061d000000, 0x000000061d400000| 0%| F| |TAMS 0x000000061d000000, 0x000000061d000000| Untracked
| 63|0x000000061d400000, 0x000000061d400000, 0x000000061d800000| 0%| F| |TAMS 0x000000061d400000, 0x000000061d400000| Untracked
| 64|0x000000061d800000, 0x000000061d800000, 0x000000061dc00000| 0%| F| |TAMS 0x000000061d800000, 0x000000061d800000| Untracked
| 65|0x000000061dc00000, 0x000000061dc00000, 0x000000061e000000| 0%| F| |TAMS 0x000000061dc00000, 0x000000061dc00000| Untracked
| 66|0x000000061e000000, 0x000000061e000000, 0x000000061e400000| 0%| F| |TAMS 0x000000061e000000, 0x000000061e000000| Untracked
| 67|0x000000061e400000, 0x000000061e400000, 0x000000061e800000| 0%| F| |TAMS 0x000000061e400000, 0x000000061e400000| Untracked
| 68|0x000000061e800000, 0x000000061e800000, 0x000000061ec00000| 0%| F| |TAMS 0x000000061e800000, 0x000000061e800000| Untracked
| 69|0x000000061ec00000, 0x000000061ec00000, 0x000000061f000000| 0%| F| |TAMS 0x000000061ec00000, 0x000000061ec00000| Untracked
| 70|0x000000061f000000, 0x000000061f000000, 0x000000061f400000| 0%| F| |TAMS 0x000000061f000000, 0x000000061f000000| Untracked
| 71|0x000000061f400000, 0x000000061f400000, 0x000000061f800000| 0%| F| |TAMS 0x000000061f400000, 0x000000061f400000| Untracked
| 72|0x000000061f800000, 0x000000061f800000, 0x000000061fc00000| 0%| F| |TAMS 0x000000061f800000, 0x000000061f800000| Untracked
| 73|0x000000061fc00000, 0x000000061fc00000, 0x0000000620000000| 0%| F| |TAMS 0x000000061fc00000, 0x000000061fc00000| Untracked
| 74|0x0000000620000000, 0x0000000620000000, 0x0000000620400000| 0%| F| |TAMS 0x0000000620000000, 0x0000000620000000| Untracked
| 75|0x0000000620400000, 0x0000000620400000, 0x0000000620800000| 0%| F| |TAMS 0x0000000620400000, 0x0000000620400000| Untracked
| 76|0x0000000620800000, 0x0000000620800000, 0x0000000620c00000| 0%| F| |TAMS 0x0000000620800000, 0x0000000620800000| Untracked
| 77|0x0000000620c00000, 0x0000000620c00000, 0x0000000621000000| 0%| F| |TAMS 0x0000000620c00000, 0x0000000620c00000| Untracked
| 78|0x0000000621000000, 0x0000000621000000, 0x0000000621400000| 0%| F| |TAMS 0x0000000621000000, 0x0000000621000000| Untracked
| 79|0x0000000621400000, 0x0000000621400000, 0x0000000621800000| 0%| F| |TAMS 0x0000000621400000, 0x0000000621400000| Untracked
| 80|0x0000000621800000, 0x0000000621800000, 0x0000000621c00000| 0%| F| |TAMS 0x0000000621800000, 0x0000000621800000| Untracked
| 81|0x0000000621c00000, 0x0000000621c00000, 0x0000000622000000| 0%| F| |TAMS 0x0000000621c00000, 0x0000000621c00000| Untracked
| 82|0x0000000622000000, 0x0000000622000000, 0x0000000622400000| 0%| F| |TAMS 0x0000000622000000, 0x0000000622000000| Untracked
| 83|0x0000000622400000, 0x0000000622400000, 0x0000000622800000| 0%| F| |TAMS 0x0000000622400000, 0x0000000622400000| Untracked
| 84|0x0000000622800000, 0x0000000622800000, 0x0000000622c00000| 0%| F| |TAMS 0x0000000622800000, 0x0000000622800000| Untracked
| 85|0x0000000622c00000, 0x0000000622c00000, 0x0000000623000000| 0%| F| |TAMS 0x0000000622c00000, 0x0000000622c00000| Untracked
| 86|0x0000000623000000, 0x0000000623000000, 0x0000000623400000| 0%| F| |TAMS 0x0000000623000000, 0x0000000623000000| Untracked
| 87|0x0000000623400000, 0x0000000623400000, 0x0000000623800000| 0%| F| |TAMS 0x0000000623400000, 0x0000000623400000| Untracked
| 88|0x0000000623800000, 0x0000000623800000, 0x0000000623c00000| 0%| F| |TAMS 0x0000000623800000, 0x0000000623800000| Untracked
| 89|0x0000000623c00000, 0x0000000623c00000, 0x0000000624000000| 0%| F| |TAMS 0x0000000623c00000, 0x0000000623c00000| Untracked
| 90|0x0000000624000000, 0x0000000624000000, 0x0000000624400000| 0%| F| |TAMS 0x0000000624000000, 0x0000000624000000| Untracked
| 91|0x0000000624400000, 0x0000000624400000, 0x0000000624800000| 0%| F| |TAMS 0x0000000624400000, 0x0000000624400000| Untracked
| 92|0x0000000624800000, 0x0000000624800000, 0x0000000624c00000| 0%| F| |TAMS 0x0000000624800000, 0x0000000624800000| Untracked
| 93|0x0000000624c00000, 0x0000000624c00000, 0x0000000625000000| 0%| F| |TAMS 0x0000000624c00000, 0x0000000624c00000| Untracked
| 94|0x0000000625000000, 0x0000000625000000, 0x0000000625400000| 0%| F| |TAMS 0x0000000625000000, 0x0000000625000000| Untracked
| 95|0x0000000625400000, 0x0000000625400000, 0x0000000625800000| 0%| F| |TAMS 0x0000000625400000, 0x0000000625400000| Untracked
| 96|0x0000000625800000, 0x0000000625800000, 0x0000000625c00000| 0%| F| |TAMS 0x0000000625800000, 0x0000000625800000| Untracked
| 97|0x0000000625c00000, 0x0000000625c00000, 0x0000000626000000| 0%| F| |TAMS 0x0000000625c00000, 0x0000000625c00000| Untracked
| 98|0x0000000626000000, 0x0000000626000000, 0x0000000626400000| 0%| F| |TAMS 0x0000000626000000, 0x0000000626000000| Untracked
| 99|0x0000000626400000, 0x0000000626400000, 0x0000000626800000| 0%| F| |TAMS 0x0000000626400000, 0x0000000626400000| Untracked
| 100|0x0000000626800000, 0x0000000626800000, 0x0000000626c00000| 0%| F| |TAMS 0x0000000626800000, 0x0000000626800000| Untracked
| 101|0x0000000626c00000, 0x0000000626c00000, 0x0000000627000000| 0%| F| |TAMS 0x0000000626c00000, 0x0000000626c00000| Untracked
| 102|0x0000000627000000, 0x0000000627000000, 0x0000000627400000| 0%| F| |TAMS 0x0000000627000000, 0x0000000627000000| Untracked
| 103|0x0000000627400000, 0x0000000627400000, 0x0000000627800000| 0%| F| |TAMS 0x0000000627400000, 0x0000000627400000| Untracked
| 104|0x0000000627800000, 0x0000000627800000, 0x0000000627c00000| 0%| F| |TAMS 0x0000000627800000, 0x0000000627800000| Untracked
| 105|0x0000000627c00000, 0x0000000627c00000, 0x0000000628000000| 0%| F| |TAMS 0x0000000627c00000, 0x0000000627c00000| Untracked
| 106|0x0000000628000000, 0x0000000628000000, 0x0000000628400000| 0%| F| |TAMS 0x0000000628000000, 0x0000000628000000| Untracked
| 107|0x0000000628400000, 0x0000000628400000, 0x0000000628800000| 0%| F| |TAMS 0x0000000628400000, 0x0000000628400000| Untracked
| 108|0x0000000628800000, 0x0000000628800000, 0x0000000628c00000| 0%| F| |TAMS 0x0000000628800000, 0x0000000628800000| Untracked
| 109|0x0000000628c00000, 0x0000000628c00000, 0x0000000629000000| 0%| F| |TAMS 0x0000000628c00000, 0x0000000628c00000| Untracked
| 110|0x0000000629000000, 0x0000000629000000, 0x0000000629400000| 0%| F| |TAMS 0x0000000629000000, 0x0000000629000000| Untracked
| 111|0x0000000629400000, 0x0000000629400000, 0x0000000629800000| 0%| F| |TAMS 0x0000000629400000, 0x0000000629400000| Untracked
| 112|0x0000000629800000, 0x0000000629800000, 0x0000000629c00000| 0%| F| |TAMS 0x0000000629800000, 0x0000000629800000| Untracked
| 113|0x0000000629c00000, 0x0000000629c00000, 0x000000062a000000| 0%| F| |TAMS 0x0000000629c00000, 0x0000000629c00000| Untracked
| 114|0x000000062a000000, 0x000000062a000000, 0x000000062a400000| 0%| F| |TAMS 0x000000062a000000, 0x000000062a000000| Untracked
| 115|0x000000062a400000, 0x000000062a400000, 0x000000062a800000| 0%| F| |TAMS 0x000000062a400000, 0x000000062a400000| Untracked
| 116|0x000000062a800000, 0x000000062a800000, 0x000000062ac00000| 0%| F| |TAMS 0x000000062a800000, 0x000000062a800000| Untracked
| 117|0x000000062ac00000, 0x000000062ac00000, 0x000000062b000000| 0%| F| |TAMS 0x000000062ac00000, 0x000000062ac00000| Untracked
| 118|0x000000062b000000, 0x000000062b000000, 0x000000062b400000| 0%| F| |TAMS 0x000000062b000000, 0x000000062b000000| Untracked
| 119|0x000000062b400000, 0x000000062b495768, 0x000000062b800000| 14%| E| |TAMS 0x000000062b400000, 0x000000062b400000| Complete
| 120|0x000000062b800000, 0x000000062bc00000, 0x000000062bc00000|100%| E|CS|TAMS 0x000000062b800000, 0x000000062b800000| Complete
| 121|0x000000062bc00000, 0x000000062c000000, 0x000000062c000000|100%| E|CS|TAMS 0x000000062bc00000, 0x000000062bc00000| Complete
| 122|0x000000062c000000, 0x000000062c400000, 0x000000062c400000|100%| E|CS|TAMS 0x000000062c000000, 0x000000062c000000| Complete
| 123|0x000000062c400000, 0x000000062c800000, 0x000000062c800000|100%| E|CS|TAMS 0x000000062c400000, 0x000000062c400000| Complete
| 124|0x000000062c800000, 0x000000062cc00000, 0x000000062cc00000|100%| E|CS|TAMS 0x000000062c800000, 0x000000062c800000| Complete
Card table byte_map: [0x000001b7904f0000,0x000001b791490000] _byte_map_base: 0x000001b78d484000
Marking Bits (Prev, Next): (CMBitMap*) 0x000001b7f78b5090, (CMBitMap*) 0x000001b7f78b50d0
Prev Bits: [0x000001b792430000, 0x000001b79a0d0000)
Next Bits: [0x000001b79a0d0000, 0x000001b7a1d70000)
Polling page: 0x000001b7f5550000
Metaspace:
Usage:
Non-class: 4.89 MB used.
Class: 375.18 KB used.
Both: 5.26 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 5.00 MB ( 8%) committed, 1 nodes.
Class space: 1.00 GB reserved, 448.00 KB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 5.44 MB ( <1%) committed.
Chunk freelists:
Non-Class: 2.14 MB
Class: 3.51 MB
Both: 5.66 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 21.00 MB
CDS: on
MetaspaceReclaimPolicy: balanced
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 8388608.
- enlarge_chunks_in_place: 1.
- new_chunks_are_fully_committed: 0.
- uncommit_free_chunks: 1.
- use_allocation_guard: 0.
Internal statistics:
num_allocs_failed_limit: 0.
num_arena_births: 84.
num_arena_deaths: 0.
num_vsnodes_births: 2.
num_vsnodes_deaths: 0.
num_space_committed: 87.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 0.
num_chunks_taken_from_freelist: 168.
num_chunk_merges: 0.
num_chunk_splits: 121.
num_chunks_enlarged: 90.
num_inconsistent_stats: 0.
CodeHeap 'non-profiled nmethods': size=119168Kb used=297Kb max_used=297Kb free=118870Kb
bounds [0x000001b787ba0000, 0x000001b787e10000, 0x000001b78f000000]
CodeHeap 'profiled nmethods': size=119104Kb used=1574Kb max_used=1574Kb free=117529Kb
bounds [0x000001b780000000, 0x000001b780270000, 0x000001b787450000]
CodeHeap 'non-nmethods': size=7488Kb used=3456Kb max_used=3470Kb free=4031Kb
bounds [0x000001b787450000, 0x000001b7877c0000, 0x000001b787ba0000]
total_blobs=1984 nmethods=949 adapters=943
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 0.286 Thread 0x000001b7a5525550 nmethod 937 0x000001b780183f10 code [0x000001b7801840e0, 0x000001b7801844a8]
Event: 0.286 Thread 0x000001b7a550c420 940 1 org.lwjgl.system.Pointer$Default::address (5 bytes)
Event: 0.286 Thread 0x000001b7a5507e80 nmethod 939 0x000001b780184690 code [0x000001b7801848e0, 0x000001b780185498]
Event: 0.286 Thread 0x000001b7a550c420 nmethod 940 0x000001b787be9990 code [0x000001b787be9b20, 0x000001b787be9bd8]
Event: 0.287 Thread 0x000001b7a5507e80 941 1 java.net.URLStreamHandler::getDefaultPort (2 bytes)
Event: 0.287 Thread 0x000001b7a5507e80 nmethod 941 0x000001b787be9c90 code [0x000001b787be9e20, 0x000001b787be9ef8]
Event: 0.287 Thread 0x000001b7a5507e80 942 3 java.net.URL::isBuiltinStreamHandler (32 bytes)
Event: 0.287 Thread 0x000001b7a427eae0 943 3 java.net.URL::isBuiltinStreamHandler (8 bytes)
Event: 0.287 Thread 0x000001b7a550c420 944 3 sun.net.util.IPAddressUtil::checkHostString (53 bytes)
Event: 0.287 Thread 0x000001b7a5525550 945 3 sun.net.util.IPAddressUtil::scan (92 bytes)
Event: 0.287 Thread 0x000001b7a427eae0 nmethod 943 0x000001b780185910 code [0x000001b780185ac0, 0x000001b780185c88]
Event: 0.287 Thread 0x000001b7a427eae0 947 3 sun.misc.Unsafe::putLong (11 bytes)
Event: 0.287 Thread 0x000001b7a5507e80 nmethod 942 0x000001b780185d90 code [0x000001b780185fe0, 0x000001b780186898]
Event: 0.287 Thread 0x000001b7a427eae0 nmethod 947 0x000001b780186c10 code [0x000001b780186da0, 0x000001b780186eb8]
Event: 0.287 Thread 0x000001b7a5507e80 948 3 org.lwjgl.system.MemoryUtil::memPutAddress (29 bytes)
Event: 0.287 Thread 0x000001b7a550c420 nmethod 944 0x000001b780186f90 code [0x000001b780187220, 0x000001b780187cf8]
Event: 0.287 Thread 0x000001b7a5525550 nmethod 945 0x000001b780188190 code [0x000001b780188400, 0x000001b780188fb8]
Event: 0.287 Thread 0x000001b7a9cb7650 949 4 sun.misc.Unsafe::putLong (11 bytes)
Event: 0.287 Thread 0x000001b7a5507e80 nmethod 948 0x000001b780189510 code [0x000001b7801896c0, 0x000001b7801898b8]
Event: 0.288 Thread 0x000001b7a9cb7650 nmethod 949 0x000001b787bea390 code [0x000001b787bea520, 0x000001b787bea5d8]
GC Heap History (0 events):
No events
Dll operation events (11 events):
Event: 0.004 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\java.dll
Event: 0.009 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\jsvml.dll
Event: 0.109 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
Event: 0.110 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\instrument.dll
Event: 0.113 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\net.dll
Event: 0.113 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\nio.dll
Event: 0.115 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
Event: 0.154 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\jimage.dll
Event: 0.175 Loaded shared library C:\Program Files\Java\jdk-19.0.2\bin\verify.dll
Event: 0.227 Loaded shared library C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl.dll
Event: 0.278 Loaded shared library C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl_opengl.dll
Deoptimization events (20 events):
Event: 0.181 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78009c6f3 sp=0x000000549c5f8590
Event: 0.181 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5f79f8 mode 0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78009c6f3 sp=0x000000549c5f8590
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5f79f8 mode 0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78009c6f3 sp=0x000000549c5fbfd0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5fb438 mode 0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78009c6f3 sp=0x000000549c5fbfd0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5fb438 mode 0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78009c6f3 sp=0x000000549c5fbfd0
Event: 0.182 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5fb438 mode 0
Event: 0.201 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b78006f49f sp=0x000000549c5fad50
Event: 0.201 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874bb0e3 sp=0x000000549c5fa1e8 mode 0
Event: 0.223 Thread 0x000001b7f7801df0 Uncommon trap: trap_request=0xffffff45 fr.pc=0x000001b787bdb488 relative=0x0000000000000068
Event: 0.223 Thread 0x000001b7f7801df0 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000001b787bdb488 method=java.io.WinNTFileSystem.isSlash(C)Z @ 9 c2
Event: 0.223 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b787bdb488 sp=0x000000549c5fd9b0
Event: 0.223 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874ba5a3 sp=0x000000549c5fd948 mode 2
Event: 0.288 Thread 0x000001b7f7801df0 Uncommon trap: trap_request=0xffffff54 fr.pc=0x000001b787bea58c relative=0x000000000000006c
Event: 0.288 Thread 0x000001b7f7801df0 Uncommon trap: reason=speculate_null_assert action=make_not_entrant pc=0x000001b787bea58c method=sun.misc.Unsafe.putLong(Ljava/lang/Object;JJ)V @ 7 c2
Event: 0.288 Thread 0x000001b7f7801df0 DEOPT PACKING pc=0x000001b787bea58c sp=0x000000549c5ff620
Event: 0.289 Thread 0x000001b7f7801df0 DEOPT UNPACKING pc=0x000001b7874ba5a3 sp=0x000000549c5ff5b8 mode 2
Classes loaded (20 events):
Event: 0.244 Loading class sun/misc/Unsafe
Event: 0.244 Loading class sun/misc/Unsafe done
Event: 0.244 Loading class java/lang/invoke/DirectMethodHandle$StaticAccessor
Event: 0.244 Loading class java/lang/invoke/DirectMethodHandle$StaticAccessor done
Event: 0.245 Loading class java/util/function/LongPredicate
Event: 0.245 Loading class java/util/function/LongPredicate done
Event: 0.246 Loading class java/lang/foreign/MemorySegment
Event: 0.246 Loading class java/lang/foreign/Addressable
Event: 0.246 Loading class java/lang/foreign/Addressable done
Event: 0.246 Loading class java/lang/foreign/MemorySegment done
Event: 0.248 Loading class java/nio/InvalidMarkException
Event: 0.248 Loading class java/nio/InvalidMarkException done
Event: 0.248 Loading class java/nio/BufferUnderflowException
Event: 0.248 Loading class java/nio/BufferUnderflowException done
Event: 0.284 Loading class jdk/internal/foreign/MemorySessionImpl
Event: 0.284 Loading class java/lang/foreign/MemorySession
Event: 0.284 Loading class java/lang/foreign/SegmentAllocator
Event: 0.284 Loading class java/lang/foreign/SegmentAllocator done
Event: 0.284 Loading class java/lang/foreign/MemorySession done
Event: 0.284 Loading class jdk/internal/foreign/MemorySessionImpl done
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 0.236 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bcff6d8}> (0x000000062bcff6d8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.236 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bd001a8}> (0x000000062bd001a8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.237 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bd07b00}> (0x000000062bd07b00)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.239 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bd0a958}> (0x000000062bd0a958)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.239 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bd0acd8}> (0x000000062bd0acd8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.243 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062bdb1b80}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object)'> (0x000000062bdb1b80)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.245 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be051f8}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, int, long)'> (0x000000062be051f8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.245 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be0aac8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, int)'> (0x000000062be0aac8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.246 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be297b0}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, long, long)'> (0x000000062be297b0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.247 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be2f8c8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, long)'> (0x000000062be2f8c8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.247 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be33928}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, long, java.lang.Object)'> (0x000000062be33928)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.247 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062be3aeb0}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, java.lang.Object, java.lang.Object, long)'> (0x000000062be3aeb0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.275 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062bb43dd8}: 'void java.lang.System.load(java.lang.String, java.lang.Class)'> (0x000000062bb43dd8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.275 Thread 0x000001b7f7801df0 Exception <a 'java/lang/NoSuchMethodError'{0x000000062bb46be0}: 'void java.lang.System.loadLibrary(java.lang.String, java.lang.Class)'> (0x000000062bb46be0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 774]
Event: 0.277 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bb56610}> (0x000000062bb56610)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.277 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bb569d0}> (0x000000062bb569d0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.280 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bb62730}> (0x000000062bb62730)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.280 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bb62a28}> (0x000000062bb62a28)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.284 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bbc3e78}> (0x000000062bbc3e78)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
Event: 0.284 Thread 0x000001b7f7801df0 Exception <a 'sun/nio/fs/WindowsException'{0x000000062bbc4228}> (0x000000062bbc4228)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 517]
VM Operations (10 events):
Event: 0.032 Executing VM operation: HandshakeAllThreads
Event: 0.032 Executing VM operation: HandshakeAllThreads done
Event: 0.041 Executing VM operation: ChangeBreakpoints
Event: 0.041 Executing VM operation: ChangeBreakpoints done
Event: 0.103 Executing VM operation: ChangeBreakpoints
Event: 0.103 Executing VM operation: ChangeBreakpoints done
Event: 0.223 Executing VM operation: HandshakeAllThreads
Event: 0.223 Executing VM operation: HandshakeAllThreads done
Event: 0.227 Executing VM operation: HandshakeAllThreads
Event: 0.227 Executing VM operation: HandshakeAllThreads done
Events (19 events):
Event: 0.009 Thread 0x000001b7f7801df0 Thread added: 0x000001b7f7801df0
Event: 0.015 Thread 0x000001b7a4262ce0 Thread added: 0x000001b7a4262ce0
Event: 0.015 Thread 0x000001b7a4264270 Thread added: 0x000001b7a4264270
Event: 0.015 Thread 0x000001b7a4266200 Thread added: 0x000001b7a4266200
Event: 0.015 Thread 0x000001b7a42684e0 Thread added: 0x000001b7a42684e0
Event: 0.015 Thread 0x000001b7a426cfb0 Thread added: 0x000001b7a426cfb0
Event: 0.015 Thread 0x000001b7a426c5d0 Thread added: 0x000001b7a426c5d0
Event: 0.016 Thread 0x000001b7a4272110 Thread added: 0x000001b7a4272110
Event: 0.016 Thread 0x000001b7a427eae0 Thread added: 0x000001b7a427eae0
Event: 0.016 Thread 0x000001b7a4289060 Thread added: 0x000001b7a4289060
Event: 0.029 Thread 0x000001b7a55067f0 Thread added: 0x000001b7a55067f0
Event: 0.032 Thread 0x000001b7a5507e80 Thread added: 0x000001b7a5507e80
Event: 0.032 Thread 0x000001b7a550c420 Thread added: 0x000001b7a550c420
Event: 0.033 Thread 0x000001b7a5525550 Thread added: 0x000001b7a5525550
Event: 0.041 Thread 0x000001b7a55c40c0 Thread added: 0x000001b7a55c40c0
Event: 0.041 Thread 0x000001b7a55ba2c0 Thread added: 0x000001b7a55ba2c0
Event: 0.041 Thread 0x000001b7a55ba810 Thread added: 0x000001b7a55ba810
Event: 0.160 Thread 0x000001b7a9cb7650 Thread added: 0x000001b7a9cb7650
Event: 0.173 Thread 0x000001b7a9d4f890 Thread added: 0x000001b7a9d4f890
Dynamic libraries:
0x00007ff636b50000 - 0x00007ff636b60000 C:\Program Files\Java\jdk-19.0.2\bin\javaw.exe
0x00007ff935510000 - 0x00007ff935708000 C:\Windows\SYSTEM32\ntdll.dll
0x00007ff934e50000 - 0x00007ff934f0f000 C:\Windows\System32\KERNEL32.DLL
0x00007ff932bf0000 - 0x00007ff932ee6000 C:\Windows\System32\KERNELBASE.dll
0x00007ff932f20000 - 0x00007ff933020000 C:\Windows\System32\ucrtbase.dll
0x00007ff91a700000 - 0x00007ff91a718000 C:\Program Files\Java\jdk-19.0.2\bin\jli.dll
0x00007ff91a600000 - 0x00007ff91a61b000 C:\Program Files\Java\jdk-19.0.2\bin\VCRUNTIME140.dll
0x00007ff934720000 - 0x00007ff9347cf000 C:\Windows\System32\ADVAPI32.dll
0x00007ff934bb0000 - 0x00007ff934c4e000 C:\Windows\System32\msvcrt.dll
0x00007ff9353a0000 - 0x00007ff93543c000 C:\Windows\System32\sechost.dll
0x00007ff934a80000 - 0x00007ff934ba6000 C:\Windows\System32\RPCRT4.dll
0x00007ff933570000 - 0x00007ff93370d000 C:\Windows\System32\USER32.dll
0x00007ff9334a0000 - 0x00007ff9334c2000 C:\Windows\System32\win32u.dll
0x00007ff934c80000 - 0x00007ff934cac000 C:\Windows\System32\GDI32.dll
0x00007ff925810000 - 0x00007ff925aaa000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll
0x00007ff933380000 - 0x00007ff933495000 C:\Windows\System32\gdi32full.dll
0x00007ff9334d0000 - 0x00007ff93356d000 C:\Windows\System32\msvcp_win.dll
0x00007ff92b1d0000 - 0x00007ff92b1da000 C:\Windows\SYSTEM32\VERSION.dll
0x00007ff934c50000 - 0x00007ff934c80000 C:\Windows\System32\IMM32.DLL
0x00007ff92f6f0000 - 0x00007ff92f6fc000 C:\Program Files\Java\jdk-19.0.2\bin\vcruntime140_1.dll
0x00007ff8fde20000 - 0x00007ff8fdeae000 C:\Program Files\Java\jdk-19.0.2\bin\msvcp140.dll
0x00007ff8884e0000 - 0x00007ff8891a0000 C:\Program Files\Java\jdk-19.0.2\bin\server\jvm.dll
0x00007ff8cf580000 - 0x00007ff8cf589000 C:\Windows\SYSTEM32\WSOCK32.dll
0x00007ff925d90000 - 0x00007ff925db7000 C:\Windows\SYSTEM32\WINMM.dll
0x00007ff934990000 - 0x00007ff9349fb000 C:\Windows\System32\WS2_32.dll
0x00007ff930ac0000 - 0x00007ff930ad2000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x00007ff92f6d0000 - 0x00007ff92f6da000 C:\Program Files\Java\jdk-19.0.2\bin\jimage.dll
0x00007ff929560000 - 0x00007ff929744000 C:\Windows\SYSTEM32\DBGHELP.DLL
0x00007ff9154a0000 - 0x00007ff9154d4000 C:\Windows\SYSTEM32\dbgcore.DLL
0x00007ff933280000 - 0x00007ff933302000 C:\Windows\System32\bcryptPrimitives.dll
0x00007ff90cd20000 - 0x00007ff90cd5c000 C:\Program Files\Java\jdk-19.0.2\bin\jdwp.dll
0x00007ff91a5f0000 - 0x00007ff91a5fe000 C:\Program Files\Java\jdk-19.0.2\bin\instrument.dll
0x00007ff911b60000 - 0x00007ff911b86000 C:\Program Files\Java\jdk-19.0.2\bin\java.dll
0x00007ff8a3af0000 - 0x00007ff8a3bc7000 C:\Program Files\Java\jdk-19.0.2\bin\jsvml.dll
0x00007ff933710000 - 0x00007ff933e54000 C:\Windows\System32\SHELL32.dll
0x00007ff930cc0000 - 0x00007ff931453000 C:\Windows\SYSTEM32\windows.storage.dll
0x00007ff934f10000 - 0x00007ff935264000 C:\Windows\System32\combase.dll
0x00007ff932640000 - 0x00007ff93266e000 C:\Windows\SYSTEM32\Wldp.dll
0x00007ff9352d0000 - 0x00007ff93537d000 C:\Windows\System32\SHCORE.dll
0x00007ff935270000 - 0x00007ff9352c5000 C:\Windows\System32\shlwapi.dll
0x00007ff932b30000 - 0x00007ff932b4f000 C:\Windows\SYSTEM32\profapi.dll
0x00007ff919f00000 - 0x00007ff919f0c000 C:\Program Files\Java\jdk-19.0.2\bin\dt_socket.dll
0x00007ff932040000 - 0x00007ff93207c000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x00007ff9323a0000 - 0x00007ff93240a000 C:\Windows\system32\mswsock.dll
0x00007ff932090000 - 0x00007ff93215a000 C:\Windows\SYSTEM32\DNSAPI.dll
0x00007ff934e40000 - 0x00007ff934e48000 C:\Windows\System32\NSI.dll
0x00007ff92a320000 - 0x00007ff92a32a000 C:\Windows\System32\rasadhlp.dll
0x00007ff9279b0000 - 0x00007ff927a32000 C:\Windows\System32\fwpuclnt.dll
0x00007ff932ef0000 - 0x00007ff932f17000 C:\Windows\System32\bcrypt.dll
0x00007ff919c40000 - 0x00007ff919c58000 C:\Program Files\Java\jdk-19.0.2\bin\zip.dll
0x00007ff916970000 - 0x00007ff916983000 C:\Program Files\Java\jdk-19.0.2\bin\net.dll
0x00007ff92bf70000 - 0x00007ff92c07a000 C:\Windows\SYSTEM32\WINHTTP.dll
0x00007ff912fa0000 - 0x00007ff912fb6000 C:\Program Files\Java\jdk-19.0.2\bin\nio.dll
0x00007ff919ef0000 - 0x00007ff919f00000 C:\Program Files\Java\jdk-19.0.2\bin\verify.dll
0x00007ff8a45d0000 - 0x00007ff8a464a000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl.dll
0x00007ff8a26e0000 - 0x00007ff8a2762000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\glfw.dll
0x00007ff8f5090000 - 0x00007ff8f50d5000 C:\Windows\SYSTEM32\dinput8.dll
0x00007ff911910000 - 0x00007ff911921000 C:\Windows\SYSTEM32\xinput1_4.dll
0x00007ff933020000 - 0x00007ff93306e000 C:\Windows\System32\cfgmgr32.dll
0x00007ff9329a0000 - 0x00007ff9329cc000 C:\Windows\SYSTEM32\DEVOBJ.dll
0x00007ff9307d0000 - 0x00007ff9307ff000 C:\Windows\SYSTEM32\dwmapi.dll
0x00007ff924940000 - 0x00007ff924a92000 C:\Windows\SYSTEM32\inputhost.dll
0x00007ff934130000 - 0x00007ff9341fd000 C:\Windows\System32\OLEAUT32.dll
0x00007ff9301d0000 - 0x00007ff9302c2000 C:\Windows\SYSTEM32\CoreMessaging.dll
0x00007ff92e200000 - 0x00007ff92e2f6000 C:\Windows\SYSTEM32\PROPSYS.dll
0x00007ff92f570000 - 0x00007ff92f6c4000 C:\Windows\SYSTEM32\wintypes.dll
0x00007ff92fd90000 - 0x00007ff9300ee000 C:\Windows\SYSTEM32\CoreUIComponents.dll
0x00007ff931d70000 - 0x00007ff931da3000 C:\Windows\SYSTEM32\ntmarta.dll
0x00007ff930550000 - 0x00007ff9305ee000 C:\Windows\system32\uxtheme.dll
0x00007ff934010000 - 0x00007ff934124000 C:\Windows\System32\MSCTF.dll
0x00007ff8b13c0000 - 0x00007ff8b141e000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\lwjgl_opengl.dll
0x00007ff8c8fb0000 - 0x00007ff8c90d5000 C:\Windows\SYSTEM32\opengl32.dll
0x00007ff8c8a90000 - 0x00007ff8c8abc000 C:\Windows\SYSTEM32\GLU32.dll
0x00007ff8a2190000 - 0x00007ff8a2400000 C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64\jemalloc.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Java\jdk-19.0.2\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e;C:\Program Files\Java\jdk-19.0.2\bin\server;C:\Users\Speiger\AppData\Local\Temp\lwjgl_Speiger\3.3.2+13\x64
VM Arguments:
jvm_args: -XX:+ShowCodeDetailsInExceptionMessages -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:63110 -javaagent:C:\Users\Speiger\eclipse\java-2022-12\eclipse\configuration\org.eclipse.osgi\636\0\.cp\lib\javaagent-shaded.jar -Dfile.encoding=UTF-8
java_command: speiger.src.coreengine.Testing
java_class_path (initial): D:\Projects\GameProject\SimpleJavaEngine\bin\main;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\757920418805fb90bfebb3d46b1d9e7669fca2eb\lwjgl-glfw-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\1251e3cb7e5d6159334cfb9244f789ce992f03b\lwjgl-glfw-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-jemalloc\3.3.2\877e17e39ebcd58a9c956dc3b5b777813de0873a\lwjgl-jemalloc-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-jemalloc\3.3.2\db886c1f9e313c3fa2a25543b99ccd250d3f9fb5\lwjgl-jemalloc-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-nfd\3.3.2\ec66452fad5bf48707cbe96c573c6cc3dd8a7a82\lwjgl-nfd-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-nfd\3.3.2\12c0041066a97f0c74d0f72db1423ac9ea124275\lwjgl-nfd-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openal\3.3.2\ae5357ed6d934546d3533993ea84c0cfb75eed95\lwjgl-openal-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openal\3.3.2\e74f299a602192faaf14b917632e4cbbb493c940\lwjgl-openal-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\ee8e95be0b438602038bc1f02dc5e3d011b1b216\lwjgl-opengl-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\83cd34469d4e0bc335bf74c7f62206530a9480bf\lwjgl-opengl-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-stb\3.3.2\a2550795014d622b686e9caac50b14baa87d2c70\lwjgl-stb-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-stb\3.3.2\1c4f4b8353bdb78c5264ab921436f03fc9aa1ba5\lwjgl-stb-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\4421d94af68e35dcaa31737a6fc59136a1e61b94\lwjgl-3.3.2.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\a55169ced70ffcd15f2162daf4a9c968578f6cd5\lwjgl-3.3.2-natives-windows.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.8.6\9180733b7df8542621dc12e21e87557e8c99b8cb\gson-2.8.6.jar;C:\Users\Speiger\.gradle\caches\modules-2\files-2.1\de.speiger\Primitive-Collections\0.8.0\333b9d587940fc34ad68f3d7d6bace4646dd02ec\Primitive-Collections-0.8.0.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 12 {product} {ergonomic}
uint ConcGCThreads = 5 {product} {ergonomic}
uint G1ConcRefinementThreads = 18 {product} {ergonomic}
size_t G1HeapRegionSize = 4194304 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 524288000 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 8363442176 {product} {ergonomic}
size_t MaxNewSize = 5016387584 {product} {ergonomic}
size_t MinHeapDeltaBytes = 4194304 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 7602480 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122027880 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122027880 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line}
size_t SoftMaxHeapSize = 8363442176 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags foldmultilines=false
#1: stderr all=off uptime,level,tags foldmultilines=false
Environment Variables:
PATH=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Users\Speiger\AppData\Local\Microsoft\WindowsApps;
USERNAME=Speiger
OS=Windows_NT
PROCESSOR_IDENTIFIER=AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD
TMP=C:\Users\Speiger\AppData\Local\Temp
TEMP=C:\Users\Speiger\AppData\Local\Temp
--------------- S Y S T E M ---------------
OS:
Windows 10 , 64 bit Build 19041 (10.0.19041.3031)
OS uptime: 0 days 3:11 hours
CPU: total 24 (initial active 24) (24 cores per cpu, 2 threads per core) family 25 model 97 stepping 2 microcode 0x0, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4a, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, avx512f, avx512dq, avx512cd, avx512bw, avx512vl, sha, fma, vzeroupper, avx512_vpopcntdq, avx512_vpclmulqdq, avx512_vaes, avx512_vnni, clflush, clflushopt, avx512_vbmi2, avx512_vbmi, rdtscp, rdpid, fsrm, gfni, avx512_bitalg
Memory: 4k page, system-wide physical 31894M (21079M free)
TotalPageFile size 36502M (AvailPageFile size 20292M)
current process WorkingSet (physical memory assigned to process): 70M, peak: 70M
current process commit charge ("private bytes"): 640M, peak: 640M
vm_info: Java HotSpot(TM) 64-Bit Server VM (19.0.2+7-44) for windows-amd64 JRE (19.0.2+7-44), built on 2022-11-30T18:02:09Z by "mach5one" with MS VC++ 17.1 (VS2022)
END.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 MiB

+14653
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,47 @@
package speiger.src.coreengine;
import java.nio.file.Path;
import org.lwjgl.opengl.ARBBaseInstance;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL31;
import org.lwjgl.opengl.NVMeshShader;
import speiger.src.coreengine.application.Application;
import speiger.src.coreengine.rendering.input.window.Window;
import speiger.src.coreengine.rendering.input.window.WindowProvider;
public class Testing extends Application {
public static void main(String... args) {
System.out.println((int)1E-6F);
new Testing().run();
}
@Override
public String getMainWindowName() { return "Testing"; }
@Override
public Window createWindow(WindowProvider provider) throws Exception {
return provider.createBuilder().setWidth(250).setHeight(250).setName("Testing").build();
}
@Override
public void init(Path file) {
System.out.println(GL11.glGetInteger(GL31.GL_MAX_UNIFORM_BUFFER_BINDINGS));
}
@Override
public void update() {
System.exit(0);
}
@Override
public void render(float particalTicks) {
}
@Override
public void destroy() {
}
}
@@ -1,14 +1,16 @@
package speiger.src.coreengine.application;
import java.io.File;
import java.nio.ByteBuffer;
import java.nio.file.Path;
import java.util.List;
import java.util.function.IntConsumer;
import java.util.function.ObjLongConsumer;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWErrorCallback;
import speiger.src.collections.objects.utils.ObjectLists;
import speiger.src.coreengine.assets.AssetManager;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.assets.reloader.ResourceReloader;
import speiger.src.coreengine.rendering.gui.GuiManager;
import speiger.src.coreengine.rendering.gui.base.DebugOverlay;
@@ -18,20 +20,21 @@ import speiger.src.coreengine.rendering.input.Mouse;
import speiger.src.coreengine.rendering.input.camera.Camera;
import speiger.src.coreengine.rendering.input.window.Window;
import speiger.src.coreengine.rendering.input.window.WindowProvider;
import speiger.src.coreengine.rendering.shader.ProjectionBuffer;
import speiger.src.coreengine.rendering.shader.ShaderTracker;
import speiger.src.coreengine.rendering.textures.base.NativeMemoryParser;
import speiger.src.coreengine.rendering.shaderOld.ProjectionBuffer;
import speiger.src.coreengine.rendering.shaderOld.ShaderTracker;
import speiger.src.coreengine.rendering.textures.base.TextureManager;
import speiger.src.coreengine.rendering.utils.Cursor;
import speiger.src.coreengine.utils.counters.timers.FPSTimer;
import speiger.src.coreengine.utils.eventbus.EventBus;
import speiger.src.coreengine.utils.helpers.FileUtils;
import speiger.src.coreengine.utils.helpers.IOUtils;
import speiger.src.coreengine.utils.profiler.GPUProfiler;
import speiger.src.coreengine.utils.profiler.IProfiler;
import speiger.src.coreengine.utils.profiler.Profiler;
public abstract class Application
{
private static Application INSTANCE;
protected Path applicationFolder;
protected FPSTimer timer;
protected ApplicationExecutor executor = new ApplicationExecutor(this);
protected IProfiler clientProfiler = new Profiler("Client Thread");
@@ -47,7 +50,15 @@ public abstract class Application
protected FontManager fonts = new FontManager();
protected ProjectionBuffer projectionBuffer;
protected GuiManager uiManager;
protected Application() {
INSTANCE = this;
}
public static Application getInstance() {
return INSTANCE;
}
public void run()
{
GLFWErrorCallback.createPrint(System.err).set();
@@ -69,10 +80,10 @@ public abstract class Application
return;
}
Thread.currentThread().setName("Client Thread");
File file = FileUtils.getBase();
file = file.getName().endsWith(".jar") ? file : new File("bin/main");
internalInit(file);
init(file);
applicationFolder = IOUtils.getBaseLocation();
applicationFolder = IOUtils.endsWith(applicationFolder, ".jar") ? applicationFolder : Path.of("bin/main");
internalInit();
init(applicationFolder);
if(!initEarly) mainWindow.finishWindow();
executor.start(mainWindow);
mainWindow.destroy();
@@ -81,10 +92,8 @@ public abstract class Application
System.exit(0);
}
protected void internalInit(File file)
{
assetManager = reloader.addReloadableResource(new AssetManager(file), true);
assetManager.registerAssetParser(ByteBuffer.class, new NativeMemoryParser());
protected void internalInit() {
assetManager = new AssetManager(gatherPackages());
reloader.addReloadableResource(fonts);
fonts.setAssetManager(assetManager);
ShaderTracker.INSTANCE.init(assetManager);
@@ -101,6 +110,7 @@ public abstract class Application
projectionBuffer = new ProjectionBuffer(camera, mainWindow);
}
public List<IAssetPackage> gatherPackages() { return ObjectLists.singleton(IAssetPackage.of(applicationFolder)); }
public abstract String getMainWindowName();
public void addExtraTickRates(IntConsumer ticks) {};
public void addExtraTimers(ObjLongConsumer<String> profiler) {};
@@ -109,7 +119,7 @@ public abstract class Application
public DebugOverlay createCustomDebug() { return null; }
public abstract Window createWindow(WindowProvider provider) throws Exception;
public void preinit() {}
public abstract void init(File file);
public abstract void init(Path path);
public void preUpdate() {}
public abstract void update();
public abstract void render(float particalTicks);
@@ -131,8 +141,7 @@ public abstract class Application
update();
}
protected final void renderInternal(float particalTicks)
{
protected final void renderInternal(float particalTicks) {
render(particalTicks);
if(uiManager != null)
{
@@ -145,63 +154,16 @@ public abstract class Application
gpuProfiler.stop();
}
public AssetManager getAssetManager()
{
return assetManager;
}
public ResourceReloader getReloader()
{
return reloader;
}
public Window getMainWindow()
{
return mainWindow;
}
public Camera getCamera()
{
return camera;
}
public EventBus getEventBus()
{
return eventBus;
}
public ProjectionBuffer getProjectionBuffer()
{
return projectionBuffer;
}
public FPSTimer getTimer()
{
return timer;
}
public FontManager getFonts()
{
return fonts;
}
public GuiManager getUiManager()
{
return uiManager;
}
public IProfiler getClientProfiler()
{
return clientProfiler;
}
public IProfiler getGPUProfiler()
{
return gpuProfiler;
}
public long getFrame()
{
return executor.frame;
}
public AssetManager getAssetManager() { return assetManager; }
public ResourceReloader getReloader() { return reloader; }
public Window getMainWindow() { return mainWindow; }
public Camera getCamera() { return camera; }
public EventBus getEventBus() { return eventBus; }
public ProjectionBuffer getProjectionBuffer() { return projectionBuffer; }
public FPSTimer getTimer() { return timer; }
public FontManager getFonts() { return fonts; }
public GuiManager getUiManager() { return uiManager; }
public IProfiler getClientProfiler() { return clientProfiler; }
public IProfiler getGPUProfiler() { return gpuProfiler; }
public long getFrame() { return executor.frame; }
}
@@ -10,12 +10,12 @@ import speiger.src.coreengine.rendering.input.window.Window;
import speiger.src.coreengine.rendering.utils.AllocationTracker;
import speiger.src.coreengine.rendering.utils.GLStamper;
import speiger.src.coreengine.rendering.utils.GLStamper.GLStamp;
import speiger.src.coreengine.rendering.utils.GLUtils;
import speiger.src.coreengine.rendering.utils.GLStateTracker;
import speiger.src.coreengine.utils.counters.averager.TimeAverager;
import speiger.src.coreengine.utils.counters.timers.FPSTimer;
import speiger.src.coreengine.utils.counters.timers.FrameSyncer;
import speiger.src.coreengine.utils.counters.timers.TimerTarget;
import speiger.src.coreengine.utils.helpers.FileUtils;
import speiger.src.coreengine.utils.helpers.IOUtils;
import speiger.src.coreengine.utils.helpers.TextUtil;
import speiger.src.coreengine.utils.io.GameLog;
import speiger.src.coreengine.utils.io.GameLog.LogLevel;
@@ -83,7 +83,7 @@ public class ApplicationExecutor
boolean end = timer.update();
stamp.stop();
AllocationTracker.INSTANCE.update();
GLUtils.onFrameEnded();
GLStateTracker.onFrameEnded();
gpu().next("Window").start("V-Sync");
window.finishFrame();
if(window.isCPULimited()) sync.sync(fps.getTargetTicks());
@@ -126,8 +126,8 @@ public class ApplicationExecutor
builder.append(fps.getTicks()).append(":").append(ups.getTicks());
owner.addExtraTickRates(T -> builder.append(":").append(T));
builder.append(",").append(getMemoryUsage());
builder.append(",").append("CPU-A: "+FileUtils.convertBytes(AllocationTracker.INSTANCE.getCPUAllocatedBytes()));
builder.append(",").append("GPU-A: "+FileUtils.convertBytes(AllocationTracker.INSTANCE.getGPUAllocatedBytes()));
builder.append(",").append("CPU-A: "+IOUtils.convertBytes(AllocationTracker.INSTANCE.getCPUAllocatedBytes()));
builder.append(",").append("GPU-A: "+IOUtils.convertBytes(AllocationTracker.INSTANCE.getGPUAllocatedBytes()));
builder.append(",").append(TextUtil.convertTime(timer.getUsage(), "Client:", FORMATTER));
builder.append(",").append(TextUtil.convertTime(gpuTime.getAverage(), "GPU:", FORMATTER));
owner.addExtraTimers((N, T) -> builder.append(",").append(TextUtil.convertTime(T, N, FORMATTER)));
@@ -2,7 +2,7 @@ package speiger.src.coreengine.application;
import speiger.src.coreengine.rendering.gui.GuiManager;
import speiger.src.coreengine.rendering.gui.base.DebugOverlay;
import speiger.src.coreengine.rendering.models.UniformBuffer;
import speiger.src.coreengine.rendering.models.buffers.UniformBuffer;
import speiger.src.coreengine.utils.collections.FlagHolder;
import speiger.src.coreengine.utils.profiler.EmptyProfiler;
import speiger.src.coreengine.utils.profiler.IProfiler;
@@ -2,103 +2,71 @@ package speiger.src.coreengine.assets;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import speiger.src.collections.objects.maps.impl.hash.Object2ObjectOpenHashMap;
import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
import speiger.src.collections.objects.maps.impl.concurrent.Object2ObjectConcurrentOpenHashMap;
public final class AssetLocation implements Comparable<AssetLocation>
{
static final Map<String, AssetLocation> LOCATION = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>());
static final Function<String, AssetLocation> BUILDER = AssetLocation::compute;
public final class AssetLocation implements Comparable<AssetLocation> {
static final Map<String, AssetLocation> LOCATION = new Object2ObjectConcurrentOpenHashMap<>();
final String domain;
final String location;
private AssetLocation() {throw new UnsupportedOperationException("use AssetLocation.of instead");}
private AssetLocation() {
throw new UnsupportedOperationException("use AssetLocation.of instead");
}
private AssetLocation(String domain, String location)
{
private AssetLocation(String domain, String location) {
this.domain = domain;
this.location = location;
}
public String getDomain()
{
return domain;
public String domain() { return domain; }
public String location() { return location; }
public String actualLocation() { return "assets/"+domain+"/"+location; }
public boolean endsWith(String suffix) { return location.endsWith(suffix); }
public AssetLocation subAsset(String subPath) {
return of(domain+":"+location+"/"+subPath);
}
public String getLocation()
{
return location;
}
public String getActualLocation()
{
return "assets/"+domain+"/"+location;
}
public AssetLocation subAsset(String subPath)
{
return of(domain+":"+location + "/" + subPath);
}
public AssetLocation alternate(String alterversion)
{
public AssetLocation alternate(String alterversion) {
return of(domain+":"+location+"."+alterversion);
}
@Override
public String toString()
{
public String toString() {
return domain+":"+location;
}
@Override
public int hashCode()
{
public int hashCode() {
return Objects.hash(domain, location);
}
@Override
public boolean equals(Object obj)
{
if(obj == this)
{
return true;
}
if(obj instanceof AssetLocation)
{
AssetLocation location = (AssetLocation)obj;
return location.domain.equals(domain) && location.location.equals(this.location);
}
return false;
public boolean equals(Object obj) {
return obj == this || (obj instanceof AssetLocation location && matches(location));
}
@Override
public int compareTo(AssetLocation o)
{
public int compareTo(AssetLocation o) {
int result = domain.compareToIgnoreCase(o.domain);
return result != 0 ? result : location.compareToIgnoreCase(location);
}
public boolean matches(AssetLocation location)
{
public boolean matches(AssetLocation location) {
return location.domain.equals(domain) && location.location.equals(this.location);
}
public static final AssetLocation of(String domain, String location)
{
public static final AssetLocation of(String domain, String location) {
return of((domain == null || domain.isEmpty() ? "base" : domain)+":"+location);
}
public static final AssetLocation of(String location)
{
return LOCATION.computeIfAbsent(location.indexOf(":") == -1 ? "base:"+location : location, BUILDER);
public static final AssetLocation of(String location) {
return LOCATION.computeIfAbsent(location.indexOf(":") == -1 ? "base:"+location : location, AssetLocation::compute);
}
private static final AssetLocation compute(String s)
{
private static final AssetLocation compute(String s) {
int index = s.indexOf(":");
return new AssetLocation(s.substring(0, index), s.substring(index+1, s.length()));
return new AssetLocation(s.substring(0, index), s.substring(index + 1));
}
}
@@ -1,211 +1,95 @@
package speiger.src.coreengine.assets;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
import java.nio.file.attribute.FileTime;
import java.util.List;
import java.util.Set;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.function.Predicate;
import java.util.zip.ZipFile;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap;
import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap;
import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap.Entry;
import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet;
import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
import speiger.src.coreengine.assets.impl.FolderAssetPackage;
import speiger.src.coreengine.assets.impl.ZipAssetPackage;
import speiger.src.coreengine.assets.reloader.IReloadableResource;
import speiger.src.collections.objects.lists.ObjectList;
import speiger.src.collections.objects.utils.ObjectLists;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.assets.base.IAssetProvider.ICloseableAssetProvider;
import speiger.src.coreengine.assets.base.IManagedAsset;
import speiger.src.coreengine.assets.base.IReloadableAsset;
import speiger.src.coreengine.assets.base.MultiAsset;
import speiger.src.coreengine.assets.base.PackReloadingTask;
import speiger.src.coreengine.assets.impl.LayeredAssetProvider;
public class AssetManager implements IReloadableResource
public class AssetManager implements ICloseableAssetProvider
{
Object2ObjectMap<String, DomainAssets> domains = new Object2ObjectLinkedOpenHashMap<>();
Object2ObjectMap<Class<?>, IAssetParser<?>> parsers = new Object2ObjectLinkedOpenHashMap<>();
Path path;
ObjectList<IReloadableAsset> listeners = new ObjectArrayList<>();
LayeredAssetProvider provider;
public AssetManager(File file)
{
this(file.toPath());
public AssetManager(List<IAssetPackage> packages) {
provider = new LayeredAssetProvider(packages);
}
public AssetManager(Path path)
{
this.path = path;
public void addListener(IReloadableAsset listener) {
listeners.add(listener);
if(listener instanceof IManagedAsset managed) {
managed.setProvider(this);
}
}
public Path getMainAsset()
{
return path;
}
public <T> void registerAssetParser(Class<T> clz, IAssetParser<T> parser)
{
if(clz == null || parser == null) return;
parsers.put(clz, parser);
public ObjectList<IReloadableAsset> listeners() {
return ObjectLists.unmodifiable(listeners);
}
public AssetManager reload(Executor offthread, Executor syncer, List<IAssetPackage> packages) {
return reloadAssets(packages).reloadSelective(offthread, syncer, listeners);
}
public AssetManager reload(Executor offthread, Executor syncer) {
return reloadSelective(offthread, syncer, listeners);
}
public AssetManager reloadSelective(Executor offthread, Executor syncer, List<IReloadableAsset> listeners) {
PackReloadingTask.reload(provider, listeners, offthread, syncer).join();
return this;
}
public AssetManager reloadAssets(List<IAssetPackage> packages) {
provider.close();
provider = new LayeredAssetProvider(packages);
return this;
}
@Override
public void reload()
{
domains.clear();
loadAssetPackage(path);
public void close() {
provider.close();
listeners.forEach(IReloadableAsset::destroy);
}
public void loadAssetPackage(File file)
{
loadAssetPackage(file.toPath());
@Override
public FileTime getModifiedTime(AssetLocation location) {
return provider.getModifiedTime(location);
}
public void loadAssetPackage(Path path)
{
if(Files.notExists(path)) return;
if(Files.isDirectory(path)) loadAssets(new FolderAssetPackage(path));
else if(isZipFile(path)) loadAssets(new ZipAssetPackage(path));
@Override
public FileTime getLatestTime(AssetLocation... locations) {
return provider.getLatestTime(locations);
}
public void loadAssets(IAssetPackage packages)
{
for(String s : packages.getDomains())
{
DomainAssets entry = domains.get(s);
if(entry == null)
{
entry = new DomainAssets();
domains.put(s, entry);
}
entry.addAssets(packages);
}
packages.setParsers(parsers);
@Override
public IAsset getAsset(AssetLocation location) {
return provider.getAsset(location);
}
public Set<String> getDomains()
{
return domains.keySet();
@Override
public MultiAsset getAllAssets(AssetLocation location) {
return provider.getAllAssets(location);
}
public IAsset getAsset(AssetLocation location) throws IOException
{
DomainAssets asset = domains.get(location.getDomain());
if(asset == null)
{
throw new FileNotFoundException("Domain & File["+location.toString()+"] not found");
}
return asset.getAsset(location);
@Override
public Map<AssetLocation, IAsset> listAssets(String folder, Predicate<AssetLocation> filter) {
return provider.listAssets(folder, filter);
}
public MultiAsset getAssets(AssetLocation...locations)
{
IAsset[] asset = new IAsset[locations.length];
for(int i = 0,m=locations.length;i<m;i++)
{
try
{
asset[i] = getAsset(locations[i]);
}
catch(Exception e) {e.printStackTrace();}
}
return new MultiAsset(asset);
}
public MultiAsset getMultiAsset(AssetLocation location, AssetLocation...subLocations) throws IOException
{
DomainAssets asset = domains.get(location.getDomain());
if(asset == null)
{
throw new FileNotFoundException("Domain & File["+location.toString()+"] not found");
}
return asset.getMultiAsset(location, subLocations);
}
public MultiAsset getAllAsset(AssetLocation location) throws IOException
{
DomainAssets asset = domains.get(location.getDomain());
if(asset == null)
{
throw new FileNotFoundException("Domain & File["+location.toString()+"] not found");
}
return asset.getAllAssets(location);
}
public Collection<AssetLocation> gatherAssets(String location, int maxDepth, Predicate<String> filter)
{
Set<AssetLocation> result = new ObjectLinkedOpenHashSet<>();
for(Entry<String, DomainAssets> asset : Object2ObjectMaps.fastIterable(domains))
{
asset.getValue().gatherAssets(AssetLocation.of(asset.getKey(), location), maxDepth, filter, result);
}
return result;
}
protected boolean isZipFile(Path file)
{
try(ZipFile zip = new ZipFile(file.toFile())) { return true; }
catch(Exception e) { return false; }
}
static class DomainAssets
{
List<IAssetPackage> packages = new ObjectArrayList<IAssetPackage>();
public void addAssets(IAssetPackage assets)
{
packages.add(assets);
}
public IAsset getAsset(AssetLocation location) throws IOException
{
for(int i = packages.size() - 1;i>=0;i--)
{
IAsset asset = packages.get(i).getAsset(location);
if(asset != null) return asset;
}
throw new FileNotFoundException("File["+location.toString()+"] not found");
}
public MultiAsset getMultiAsset(AssetLocation location, AssetLocation... subLocations)
{
for(int i = packages.size() - 1;i>=0;i--)
{
IAssetPackage entry = packages.get(i);
IAsset asset = entry.getAsset(location);
if(asset != null)
{
IAsset[] result = new IAsset[1 + subLocations.length];
result[0] = asset;
for(int x = 0;x<subLocations.length;x++)
{
result[x+1] = entry.getAsset(subLocations[x]);
}
return new MultiAsset(result);
}
}
return null;
}
public MultiAsset getAllAssets(AssetLocation location) throws IOException
{
List<IAsset> assets = new ObjectArrayList<IAsset>();
for(IAssetPackage entry : packages)
{
IAsset asset = entry.getAsset(location);
if(asset != null) assets.add(asset);
}
if(assets.isEmpty())
{
throw new FileNotFoundException("File["+location.toString()+"] not found");
}
return new MultiAsset(assets.toArray(new IAsset[assets.size()]));
}
public void gatherAssets(AssetLocation folder, int maxDepth, Predicate<String> filter, Collection<AssetLocation> result)
{
for(IAssetPackage entry : packages)
{
entry.getAllAssets(folder, filter, maxDepth, result);
}
}
@Override
public Map<AssetLocation, MultiAsset> listAllAssets(String folder, Predicate<AssetLocation> filter) {
return provider.listAllAssets(folder, filter);
}
}
@@ -1,29 +0,0 @@
package speiger.src.coreengine.assets;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import com.google.gson.JsonObject;
public interface IAsset extends Closeable
{
public AssetLocation getLocation();
public IAsset subAsset(String alternative);
public InputStream getStream() throws IOException;
public ByteBuffer getBytes() throws IOException;
public BufferedReader getStringReader() throws IOException;
public JsonObject getJsonObject() throws IOException;
public BufferedImage getTexture() throws Exception;
public <T> T getCustom(Class<T> clz) throws IOException;
}
@@ -1,14 +0,0 @@
package speiger.src.coreengine.assets;
import java.util.Collection;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
public interface IAssetPackage
{
public void setParsers(Function<Class<?>, IAssetParser<?>> parsers);
public List<String> getDomains();
public IAsset getAsset(AssetLocation location);
public void getAllAssets(AssetLocation folder, Predicate<String> fileNames, int maxDepth, Collection<AssetLocation> result);
}
@@ -1,38 +0,0 @@
package speiger.src.coreengine.assets;
import java.io.Closeable;
import java.io.IOException;
public class MultiAsset implements Closeable
{
IAsset[] assets;
public MultiAsset(IAsset[] assets)
{
this.assets = assets;
}
@Override
public void close() throws IOException
{
if(assets != null)
{
for(int i = 0,m=assets.length;i<m;i++)
{
if(assets[i] != null) assets[i].close();
}
assets = null;
}
}
public int size()
{
return assets.length;
}
public IAsset getAsset(int index)
{
return assets[index];
}
}
@@ -0,0 +1,29 @@
package speiger.src.coreengine.assets.base;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.List;
import com.google.gson.JsonObject;
import speiger.src.coreengine.assets.AssetLocation;
public interface IAsset extends Closeable
{
public IAssetPackage owner();
public AssetLocation location();
@Override
public void close();
public IAsset subAsset(String alternative);
public InputStream stream() throws IOException;
public ByteBuffer bytes() throws IOException;
public BufferedReader reader() throws IOException;
public List<String> lines() throws IOException;
public JsonObject json() throws IOException;
public BufferedImage texture() throws Exception;
public <T> T custom(IAssetParser<T> parser) throws IOException;
}
@@ -0,0 +1,31 @@
package speiger.src.coreengine.assets.base;
import java.io.Closeable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.util.List;
import java.util.function.BiConsumer;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.impl.FolderAssetPackage;
import speiger.src.coreengine.assets.impl.ZipAssetPackage;
import speiger.src.coreengine.utils.helpers.IOUtils;
public interface IAssetPackage extends Closeable
{
@Override
public void close();
public void getModifiedTime(String domain, BiConsumer<AssetLocation, FileTime> accept);
public List<String> getDomains();
public IAsset getAsset(AssetLocation location);
public void gatherAssets(AssetLocation folder, BiConsumer<AssetLocation, IAsset> accept);
public static IAssetPackage of(Path path) {
if(Files.exists(path)) {
if(Files.isDirectory(path)) return new FolderAssetPackage(path);
if(IOUtils.isZip(path)) return new ZipAssetPackage(path);
}
return null;
}
}
@@ -1,4 +1,4 @@
package speiger.src.coreengine.assets;
package speiger.src.coreengine.assets.base;
import java.io.Closeable;
import java.io.IOException;
@@ -0,0 +1,22 @@
package speiger.src.coreengine.assets.base;
import java.nio.file.attribute.FileTime;
import java.util.Map;
import java.util.function.Predicate;
import speiger.src.coreengine.assets.AssetLocation;
public interface IAssetProvider {
public IAsset getAsset(AssetLocation location);
public MultiAsset getAllAssets(AssetLocation location);
public FileTime getModifiedTime(AssetLocation location);
public FileTime getLatestTime(AssetLocation...locations);
public Map<AssetLocation, IAsset> listAssets(String folder, Predicate<AssetLocation> filter);
public Map<AssetLocation, MultiAsset> listAllAssets(String folder, Predicate<AssetLocation> filter);
public static interface ICloseableAssetProvider extends IAssetProvider, AutoCloseable {
@Override
public void close();
}
}
@@ -0,0 +1,5 @@
package speiger.src.coreengine.assets.base;
public interface IManagedAsset {
public void setProvider(IAssetProvider provider);
}
@@ -0,0 +1,23 @@
package speiger.src.coreengine.assets.base;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
public interface IReloadableAsset {
public String getName();
public CompletableFuture<Void> reloadAssets(IAssetProvider provider, IReloadSyncer syncer, Executor offthreadExectutor, Executor syncExecutor);
public void destroy();
public static interface IReloadSyncer {
public <T> CompletableFuture<T> sync(T value);
}
public static interface ISimpleRealodableAsset extends IReloadableAsset {
@Override
default CompletableFuture<Void> reloadAssets(IAssetProvider provider, IReloadSyncer syncer, Executor offthreadExectutor, Executor syncExecutor) {
return syncer.sync(null).thenRunAsync(() -> onAssetsReloaded(provider), syncExecutor);
}
public void onAssetsReloaded(IAssetProvider provider);
}
}
@@ -0,0 +1,59 @@
package speiger.src.coreengine.assets.base;
import java.io.Closeable;
import java.util.function.Consumer;
import speiger.src.collections.ints.functions.consumer.IntObjectConsumer;
import speiger.src.collections.objects.collections.ObjectIterable;
import speiger.src.collections.objects.collections.ObjectIterator;
import speiger.src.collections.objects.functions.consumer.ObjectObjectConsumer;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.lists.ObjectList;
public class MultiAsset implements Closeable, ObjectIterable<IAsset> {
ObjectList<IAsset> assets;
public MultiAsset(IAsset...assets) {
this(ObjectArrayList.wrap(assets));
}
public MultiAsset(ObjectList<IAsset> assets) {
this.assets = assets.unmodifiable();
}
@Override
public void close() {
if(assets != null) {
assets.forEach(IAsset::close);
assets = null;
}
}
public int size() {
return assets.size();
}
public IAsset get(int index) {
return assets.get(index);
}
@Override
public void forEach(Consumer<? super IAsset> action) {
assets.forEach(action);
}
@Override
public <E> void forEach(E input, ObjectObjectConsumer<E, IAsset> action) {
assets.forEach(input, action);
}
@Override
public void forEachIndexed(IntObjectConsumer<IAsset> action) {
assets.forEachIndexed(action);
}
@Override
public ObjectIterator<IAsset> iterator() {
return assets.iterator();
}
}
@@ -0,0 +1,51 @@
package speiger.src.coreengine.assets.base;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.sets.ObjectOpenHashSet;
import speiger.src.coreengine.assets.base.IReloadableAsset.IReloadSyncer;
public class PackReloadingTask {
public static CompletableFuture<?> reload(IAssetProvider provider, List<IReloadableAsset> assets, Executor offthreadTask, Executor mainThreadTask) {
CompletableFuture<Object> syncStep = new CompletableFuture<>();
List<CompletableFuture<?>> results = new ObjectArrayList<>();
CompletableFuture<?> currentStep = CompletableFuture.completedFuture("");
Set<IReloadableAsset> toComplete = new ObjectOpenHashSet<>(assets);
for(IReloadableAsset asset : assets) {
CompletableFuture<?> next = asset.reloadAssets(provider, new Syncer(mainThreadTask, currentStep, syncStep, asset, toComplete), offthreadTask, mainThreadTask);
results.add(next);
currentStep = next;
}
return CompletableFuture.allOf(results.toArray(CompletableFuture[]::new));
}
private static class Syncer implements IReloadSyncer {
Executor mainExecutor;
CompletableFuture<?> currentStep;
CompletableFuture<Object> syncStep;
IReloadableAsset currentAsset;
Set<IReloadableAsset> toComplete;
public Syncer(Executor mainExecutor, CompletableFuture<?> currentStep, CompletableFuture<Object> syncStep, IReloadableAsset currentAsset, Set<IReloadableAsset> toComplete) {
this.mainExecutor = mainExecutor;
this.currentStep = currentStep;
this.syncStep = syncStep;
this.currentAsset = currentAsset;
this.toComplete = toComplete;
}
@Override
public <T> CompletableFuture<T> sync(T value) {
mainExecutor.execute(() -> {
if(toComplete.remove(currentAsset) && toComplete.isEmpty()) {
syncStep.complete(new Object());
}
});
return syncStep.thenCombine(currentStep, (k, v) -> value);
}
}
}
@@ -0,0 +1,14 @@
package speiger.src.coreengine.assets.base;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
public abstract class SteppedReloadableAsset<T> implements IReloadableAsset {
@Override
public final CompletableFuture<Void> reloadAssets(IAssetProvider provider, IReloadSyncer syncer, Executor offthreadExectutor, Executor syncExecutor) {
return CompletableFuture.supplyAsync(() -> prepare(provider), offthreadExectutor).thenCompose(syncer::sync).thenAcceptAsync(T -> apply(T, provider), syncExecutor);
}
protected abstract T prepare(IAssetProvider provider);
protected abstract void apply(T value, IAssetProvider provider);
}
@@ -0,0 +1,44 @@
package speiger.src.coreengine.assets.impl;
import java.io.Closeable;
import java.util.List;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
public abstract class BaseAsset implements IAsset {
protected AssetLocation location;
protected IAssetPackage owner;
protected List<Closeable> closeable = new ObjectArrayList<>();
public BaseAsset(AssetLocation location, IAssetPackage owner) {
this.location = location;
this.owner = owner;
}
@Override
public void close() {
for(Closeable close : closeable) {
try { close.close(); }
catch(Exception e) { e.printStackTrace(); }
}
closeable.clear();
}
protected <T extends Closeable> T markClosed(T value) {
closeable.add(value);
return value;
}
@Override
public AssetLocation location() {
return location;
}
@Override
public IAssetPackage owner() {
return owner;
}
}
@@ -1,115 +0,0 @@
package speiger.src.coreengine.assets.impl;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.function.Function;
import javax.imageio.ImageIO;
import com.google.gson.JsonObject;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.IAsset;
import speiger.src.coreengine.assets.IAssetParser;
import speiger.src.coreengine.utils.helpers.JsonUtil;
public class FolderAsset implements IAsset
{
Function<Class<?>, IAssetParser<?>> parsers;
AssetLocation location;
Path path;
List<Closeable> closeable;
public FolderAsset(AssetLocation location, Path path, Function<Class<?>, IAssetParser<?>> parsers)
{
this(location, path, parsers, new ObjectArrayList<>());
}
public FolderAsset(AssetLocation location, Path path, Function<Class<?>, IAssetParser<?>> parsers, List<Closeable> closeable)
{
this.location = location;
this.path = path;
this.parsers = parsers;
this.closeable = closeable;
}
@Override
public void close() throws IOException
{
for(Closeable close : closeable)
{
try
{
close.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
closeable.clear();
}
@Override
public IAsset subAsset(String alternative)
{
Path newPath = path.resolveSibling(path.getFileName().toString()+"."+alternative);
return Files.exists(newPath) ? new FolderAsset(location.alternate(alternative), newPath, parsers, closeable) : null;
}
@Override
public AssetLocation getLocation()
{
return location;
}
@Override
public InputStream getStream() throws IOException
{
return markClosed(Files.newInputStream(path));
}
@Override
public ByteBuffer getBytes() throws IOException
{
return ByteBuffer.wrap(Files.readAllBytes(path));
}
@Override
public BufferedImage getTexture() throws Exception
{
return ImageIO.read(getStream());
}
@Override
public BufferedReader getStringReader() throws IOException
{
return markClosed(Files.newBufferedReader(path));
}
@Override
public JsonObject getJsonObject() throws IOException
{
return JsonUtil.loadFile(path);
}
@Override
public <T> T getCustom(Class<T> clz) throws IOException
{
return clz.cast(parsers.apply(clz).parseAsset(path, closeable::add));
}
protected <T extends Closeable> T markClosed(T value)
{
closeable.add(value);
return value;
}
}
@@ -1,84 +1,71 @@
package speiger.src.coreengine.assets.impl;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
import java.nio.file.attribute.FileTime;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.BiConsumer;
import java.util.stream.Stream;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.IAsset;
import speiger.src.coreengine.assets.IAssetPackage;
import speiger.src.coreengine.assets.IAssetParser;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.utils.collections.iterators.IterableWrapper;
public class FolderAssetPackage implements IAssetPackage
{
public class FolderAssetPackage implements IAssetPackage {
Path baseFolder;
Function<Class<?>, IAssetParser<?>> parsers;
public FolderAssetPackage(File baseFolder)
{
this(baseFolder.toPath());
}
public FolderAssetPackage(Path baseFolder)
{
public FolderAssetPackage(Path baseFolder) {
this.baseFolder = baseFolder;
}
@Override
public void setParsers(Function<Class<?>, IAssetParser<?>> parsers)
{
this.parsers = parsers;
public void close() {}
@Override
public void getModifiedTime(String domain, BiConsumer<AssetLocation, FileTime> accept) {
try {
Path start = baseFolder.resolve("assets");
for(Path path : IterableWrapper.wrap(Files.walk(start.resolve(domain)).filter(Files::isRegularFile).iterator())) {
accept.accept(AssetLocation.of(domain, start.relativize(path).toString().replace("\\", "/")), Files.getLastModifiedTime(path));
}
}
catch(IOException e) { e.printStackTrace(); }
}
@Override
public List<String> getDomains()
{
public List<String> getDomains() {
List<String> domains = new ObjectArrayList<>();
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(baseFolder.resolve("assets")))
{
for(Path path : dirs)
{
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(baseFolder.resolve("assets"))) {
for(Path path : dirs) {
domains.add(path.getFileName().toString());
}
}
catch(IOException e)
{
e.printStackTrace();
}
catch(IOException e) { e.printStackTrace(); }
return domains;
}
@Override
public IAsset getAsset(AssetLocation location)
{
Path path = baseFolder.resolve(location.getActualLocation());
return Files.exists(path) ? new FolderAsset(location, path, parsers) : null;
public IAsset getAsset(AssetLocation location) {
Path path = baseFolder.resolve(location.actualLocation());
return Files.exists(path) ? new SimpleAsset(location, this, path) : null;
}
@Override
public void getAllAssets(AssetLocation folder, Predicate<String> fileNames, int maxDepth, Collection<AssetLocation> result)
{
Path start = baseFolder.resolve(folder.getActualLocation());
public void gatherAssets(AssetLocation folder, BiConsumer<AssetLocation, IAsset> result) {
Path start = baseFolder.resolve(folder.actualLocation());
if(Files.notExists(start)) return;
try(Stream<Path> stream = Files.walk(start, maxDepth).filter(Files::isRegularFile).filter(T -> fileNames.test(T.getFileName().toString())))
{
for(Path path : IterableWrapper.wrap(stream.iterator()))
{
result.add(folder.subAsset(start.relativize(path).toString().replace("\\", "/")));
try(Stream<Path> stream = Files.walk(start).filter(Files::isRegularFile)) {
for(Path path : IterableWrapper.wrap(stream.iterator())) {
AssetLocation location = folder.subAsset(start.relativize(path).toString().replace("\\", "/"));
result.accept(location, new SimpleAsset(location, this, path));
}
}
catch(IOException e)
{
catch(IOException e) {
e.printStackTrace();
}
}
}
}
@@ -0,0 +1,161 @@
package speiger.src.coreengine.assets.impl;
import java.nio.file.attribute.FileTime;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.lists.ObjectList;
import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap;
import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.assets.base.IAssetProvider;
import speiger.src.coreengine.assets.base.IAssetProvider.ICloseableAssetProvider;
import speiger.src.coreengine.assets.base.MultiAsset;
import speiger.src.coreengine.math.ArrayUtil;
public class LayeredAssetProvider implements ICloseableAssetProvider {
public static final FileTime DEFAULT_TIME = FileTime.fromMillis(0L);
Map<String, DomainAssetProvider> domains = Object2ObjectMap.builder().linkedMap();
List<IAssetPackage> packages;
public LayeredAssetProvider(List<IAssetPackage> packages) {
this.packages = packages;
for(IAssetPackage pack : packages) {
for(String domain : pack.getDomains()) {
domains.computeIfAbsent(domain, DomainAssetProvider::new).addPackage(pack);
}
}
domains.values().forEach(DomainAssetProvider::buildCaches);
}
@Override
public void close() {
packages.forEach(IAssetPackage::close);
}
@Override
public FileTime getModifiedTime(AssetLocation location) {
DomainAssetProvider provider = domains.get(location.domain());
return provider == null ? DEFAULT_TIME : provider.getModifiedTime(location);
}
@Override
public FileTime getLatestTime(AssetLocation... locations) {
FileTime time = DEFAULT_TIME;
for(AssetLocation location : locations) {
time = ArrayUtil.higher(time, getModifiedTime(location));
}
return time;
}
@Override
public IAsset getAsset(AssetLocation location) {
DomainAssetProvider provider = domains.get(location.domain());
return provider == null ? null : provider.getAsset(location);
}
@Override
public MultiAsset getAllAssets(AssetLocation location) {
DomainAssetProvider provider = domains.get(location.domain());
return provider == null ? null : provider.getAllAssets(location);
}
@Override
public Map<AssetLocation, IAsset> listAssets(String folder, Predicate<AssetLocation> filter) {
Map<AssetLocation, IAsset> result = Object2ObjectMap.builder().linkedMap();
for(DomainAssetProvider provider : domains.values()) {
result.putAll(provider.listAssets(folder, filter));
}
return result;
}
@Override
public Map<AssetLocation, MultiAsset> listAllAssets(String folder, Predicate<AssetLocation> filter) {
Map<AssetLocation, MultiAsset> result = Object2ObjectMap.builder().linkedMap();
for(DomainAssetProvider provider : domains.values()) {
result.putAll(provider.listAllAssets(folder, filter));
}
return result;
}
private static class DomainAssetProvider implements IAssetProvider {
final String domain;
ObjectList<IAssetPackage> packages = new ObjectArrayList<>();
Map<AssetLocation, FileTime> lastChanges = Object2ObjectMap.builder().map();
public DomainAssetProvider(String domain) {
this.domain = domain;
}
public void addPackage(IAssetPackage pack) {
packages.add(pack);
}
private void buildCaches() {
for(int i = packages.size()-1;i>=0;i--) {
packages.get(i).getModifiedTime(domain, lastChanges::putIfAbsent);
}
}
@Override
public FileTime getModifiedTime(AssetLocation location) {
return lastChanges.getOrDefault(location, DEFAULT_TIME);
}
@Override
public FileTime getLatestTime(AssetLocation... locations) {
throw new UnsupportedOperationException();
}
@Override
public IAsset getAsset(AssetLocation location) {
for(int i = packages.size()-1;i>=0;i--) {
IAsset asset = packages.get(i).getAsset(location);
if(asset != null) return asset;
}
return null;
}
@Override
public MultiAsset getAllAssets(AssetLocation location) {
ObjectList<IAsset> result = new ObjectArrayList<>();
for(int i = packages.size()-1;i>=0;i--) {
IAsset asset = packages.get(i).getAsset(location);
if(asset != null) result.add(asset);
}
return new MultiAsset(result);
}
@Override
public Map<AssetLocation, IAsset> listAssets(String folder, Predicate<AssetLocation> filter) {
AssetLocation base = AssetLocation.of(domain, folder);
Map<AssetLocation, IAsset> result = Object2ObjectMap.builder().linkedMap();
for(int i = packages.size()-1;i>=0;i--) {
packages.get(i).gatherAssets(base, (K, V) -> {
if(filter.test(K)) result.putIfAbsent(K, V);
});
}
return result;
}
@Override
public Map<AssetLocation, MultiAsset> listAllAssets(String folder, Predicate<AssetLocation> filter) {
AssetLocation base = AssetLocation.of(domain, folder);
Object2ObjectMap<AssetLocation, ObjectList<IAsset>> assets = Object2ObjectMap.builder().linkedMap();
for(int i = packages.size()-1;i>=0;i--) {
packages.get(i).gatherAssets(base, (K, V) -> {
if(filter.test(K)) assets.supplyIfAbsent(K, ObjectArrayList::new).add(V);
});
}
Map<AssetLocation, MultiAsset> result = Object2ObjectMap.builder().linkedMap();
for(Object2ObjectMap.Entry<AssetLocation, ObjectList<IAsset>> entry : Object2ObjectMaps.fastIterable(assets)) {
result.put(entry.getKey(), new MultiAsset(entry.getValue()));
}
return result;
}
}
}
@@ -0,0 +1,51 @@
package speiger.src.coreengine.assets.impl;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import javax.imageio.ImageIO;
import com.google.gson.JsonObject;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.assets.base.IAssetParser;
import speiger.src.coreengine.utils.helpers.JsonUtil;
public class SimpleAsset extends BaseAsset {
Path path;
public SimpleAsset(AssetLocation location, IAssetPackage owner, Path path) {
super(location, owner);
this.path = path;
}
@Override
public IAsset subAsset(String alternative) {
Path newPath = path.resolveSibling(path.getFileName().toString()+"."+alternative);
return Files.exists(newPath) ? new SimpleAsset(location.alternate(alternative), owner, newPath) : null;
}
@Override
public InputStream stream() throws IOException { return markClosed(Files.newInputStream(path)); }
@Override
public ByteBuffer bytes() throws IOException { return ByteBuffer.wrap(Files.readAllBytes(path)); }
@Override
public BufferedImage texture() throws Exception { return ImageIO.read(stream()); }
@Override
public BufferedReader reader() throws IOException { return markClosed(Files.newBufferedReader(path)); }
@Override
public List<String> lines() throws IOException { return Files.readAllLines(path); }
@Override
public JsonObject json() throws IOException { return JsonUtil.loadFile(path); }
@Override
public <T> T custom(IAssetParser<T> parser) throws IOException { return parser.parseAsset(path, closeable::add); }
}
@@ -1,103 +0,0 @@
package speiger.src.coreengine.assets.impl;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.function.Function;
import javax.imageio.ImageIO;
import com.google.gson.JsonObject;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.IAsset;
import speiger.src.coreengine.assets.IAssetParser;
import speiger.src.coreengine.utils.helpers.JsonUtil;
public class ZipAsset implements IAsset
{
Runnable closer;
AssetLocation location;
Path path;
Function<Class<?>, IAssetParser<?>> parsers;
public ZipAsset(Runnable closer, AssetLocation location, Path path, Function<Class<?>, IAssetParser<?>> parsers)
{
this.closer = closer;
this.location = location;
this.path = path;
this.parsers = parsers;
}
@Override
public void close() throws IOException
{
if(closer != null)
{
closer.run();
closer = null;
}
}
private void closeInternal()
{
if(closer != null)
{
closer.run();
closer = null;
}
}
@Override
public IAsset subAsset(String alternative)
{
if(closer == null) return null;
Path newPath = path.resolveSibling(path.getFileName().toString()+"."+alternative);
return Files.exists(newPath) ? new ZipAsset(this::closeInternal, location.alternate(alternative), newPath, parsers) : null;
}
@Override
public AssetLocation getLocation()
{
return location;
}
@Override
public InputStream getStream() throws IOException
{
return Files.newInputStream(path);
}
@Override
public ByteBuffer getBytes() throws IOException
{
return ByteBuffer.wrap(Files.readAllBytes(path));
}
@Override
public BufferedImage getTexture() throws Exception
{
return ImageIO.read(getStream());
}
@Override
public BufferedReader getStringReader() throws IOException
{
return Files.newBufferedReader(path);
}
@Override
public JsonObject getJsonObject() throws IOException
{
return JsonUtil.loadFile(path);
}
@Override
public <T> T getCustom(Class<T> clz) throws IOException
{
return clz.cast(parsers.apply(clz).parseAsset(path, T -> {}));
}
}
@@ -1,116 +1,107 @@
package speiger.src.coreengine.assets.impl;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
import java.nio.file.attribute.FileTime;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.BiConsumer;
import java.util.stream.Stream;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.IAsset;
import speiger.src.coreengine.assets.IAssetPackage;
import speiger.src.coreengine.assets.IAssetParser;
import speiger.src.coreengine.assets.base.IAsset;
import speiger.src.coreengine.assets.base.IAssetPackage;
import speiger.src.coreengine.utils.collections.iterators.IterableWrapper;
public class ZipAssetPackage implements IAssetPackage
{
public class ZipAssetPackage implements IAssetPackage {
Path baseFolder;
Function<Class<?>, IAssetParser<?>> parsers;
FileSystem cache;
AtomicInteger usedReferences = new AtomicInteger();
Runnable referenceCleaner = this::cleanReference;
public ZipAssetPackage(File file)
{
this(file.toPath());
}
public ZipAssetPackage(Path baseFolder)
{
public ZipAssetPackage(Path baseFolder) {
this.baseFolder = baseFolder;
}
@Override
public void setParsers(Function<Class<?>, IAssetParser<?>> parsers)
{
this.parsers = parsers;
}
private void cleanReference()
{
int left = usedReferences.decrementAndGet();
if(left == 0 && cache != null)
{
public void close() {
if(cache != null) {
try { cache.close(); }
catch(Exception e) {e.printStackTrace();}
catch(Exception e) { e.printStackTrace(); }
cache = null;
}
else if(left < 0) usedReferences.set(0);
}
protected FileSystem getReference() throws IOException
{
usedReferences.getAndIncrement();
@Override
public void getModifiedTime(String domain, BiConsumer<AssetLocation, FileTime> accept) {
try {
try(FileSystem system = FileSystems.newFileSystem(baseFolder)) {
Path start = system.getPath("assets");
for(Path path : IterableWrapper.wrap(Files.walk(start.resolve(domain)).filter(Files::isRegularFile).iterator())) {
accept.accept(AssetLocation.of(domain, start.relativize(path).toString().replace("\\", "/")), Files.getLastModifiedTime(path));
}
}
}
catch(IOException e) { e.printStackTrace(); }
}
protected FileSystem getReference() throws IOException {
if(cache == null) cache = FileSystems.newFileSystem(baseFolder);
return cache;
}
@Override
public List<String> getDomains()
{
public List<String> getDomains() {
List<String> domains = new ObjectArrayList<>();
try(FileSystem system = FileSystems.newFileSystem(baseFolder))
{
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(system.getPath("assets")))
{
for(Path path : dirs)
{
try(FileSystem system = FileSystems.newFileSystem(baseFolder)) {
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(system.getPath("assets"))) {
for(Path path : dirs) {
String s = path.getFileName().toString();
domains.add(s.substring(0, s.length()-1));
domains.add(s.substring(0, s.length() - 1));
}
}
catch(Exception e) { e.printStackTrace(); }
catch(Exception e) {
e.printStackTrace();
}
}
catch(Exception e) {
e.printStackTrace();
}
catch(Exception e) { e.printStackTrace(); }
return domains;
}
@Override
public IAsset getAsset(AssetLocation location)
{
try
{
Path path = getReference().getPath(location.getActualLocation());
return Files.exists(path) ? new ZipAsset(referenceCleaner, location, path, parsers) : null;
public IAsset getAsset(AssetLocation location) {
try {
Path path = getReference().getPath(location.actualLocation());
return Files.exists(path) ? new SimpleAsset(location, this, path) : null;
}
catch(Exception e) {
e.printStackTrace();
return null;
}
catch(Exception e) { return null; }
}
@Override
public void getAllAssets(AssetLocation folder, Predicate<String> fileNames, int maxDepth, Collection<AssetLocation> result)
{
try(FileSystem system = FileSystems.newFileSystem(baseFolder))
{
Path start = system.getPath(folder.getActualLocation());
public void gatherAssets(AssetLocation folder, BiConsumer<AssetLocation, IAsset> result) {
try {
FileSystem system = getReference();
Path start = system.getPath(folder.actualLocation());
if(Files.notExists(start)) return;
try(Stream<Path> stream = Files.walk(start, maxDepth).filter(Files::isRegularFile).filter(T -> fileNames.test(T.getFileName().toString())))
{
for(Path path : IterableWrapper.wrap(stream.iterator()))
{
result.add(folder.subAsset(start.relativize(path).toString().replace("\\", "/")));
try(Stream<Path> stream = Files.walk(start).filter(Files::isRegularFile)) {
for(Path path : IterableWrapper.wrap(stream.iterator())) {
AssetLocation location = folder.subAsset(start.relativize(path).toString().replace("\\", "/"));
result.accept(location, new SimpleAsset(location, this, path));
}
}
catch(IOException e) { e.printStackTrace(); }
catch(IOException e) {
e.printStackTrace();
}
}
catch(Exception e) {
e.printStackTrace();
}
catch(Exception e) { e.printStackTrace(); }
}
}
}
@@ -1,21 +1,17 @@
package speiger.src.coreengine.assets.language;
public class I18n
{
public class I18n {
static Language CURRENT_LANGUAGE;
public static boolean has(String key)
{
public static boolean has(String key) {
return CURRENT_LANGUAGE.has(key);
}
public static String translate(String key)
{
public static String translate(String key) {
return CURRENT_LANGUAGE.translate(key);
}
public String translate(String key, Object...args)
{
public String translate(String key, Object... args) {
return CURRENT_LANGUAGE.translate(key, args);
}
}
@@ -4,50 +4,36 @@ import java.util.Map;
import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
public class Language
{
public class Language {
String language;
String code;
Map<String, String> translations = Object2ObjectMaps.empty();
public Language(String code, String language)
{
public Language(String code, String language) {
this.code = code;
this.language = language;
}
public void load(Map<String, String> data)
{
public void load(Map<String, String> data) {
translations = data;
}
public void clear()
{
public void clear() {
translations = Object2ObjectMaps.empty();
}
public boolean has(String s)
{
public boolean has(String s) {
return translations.containsKey(s);
}
public String translate(String key)
{
public String translate(String key) {
return translations.getOrDefault(key, key);
}
public String translate(String key, Object...args)
{
public String translate(String key, Object... args) {
return String.format(translate(key), args);
}
public String getCode()
{
return code;
}
public String getLanguage()
{
return language;
}
public String getCode() { return code; }
public String getLanguage() { return language; }
}
@@ -10,108 +10,79 @@ import speiger.src.collections.objects.maps.impl.hash.Object2ObjectOpenHashMap;
import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.AssetManager;
import speiger.src.coreengine.assets.MultiAsset;
import speiger.src.coreengine.assets.base.MultiAsset;
import speiger.src.coreengine.assets.reloader.IReloadableResource;
public class LanguageManager implements IReloadableResource
{
public class LanguageManager implements IReloadableResource {
final AssetLocation location = AssetLocation.of("lang");
Map<String, Language> languages = new Object2ObjectOpenHashMap<>();
AssetManager assets;
String currentLanguage;
String currentLanguage;
@Override
public void reload()
{
public void reload() {
languages.clear();
try(MultiAsset langs = assets.getAllAsset(location.subAsset("langs.json")))
{
for(int i = 0,m=langs.size();i<m;i++)
{
preLoadLanguage(langs.getAsset(i).getJsonObject());
try(MultiAsset langs = assets.getAllAssets(location.subAsset("langs.json"))) {
for(int i = 0,m = langs.size();i < m;i++) {
preLoadLanguage(langs.get(i).json());
}
}
catch(Exception e)
{
catch(Exception e) {
e.printStackTrace();
}
if(loadLanguage(currentLanguage))
{
if(loadLanguage(currentLanguage)) {
I18n.CURRENT_LANGUAGE = languages.get(currentLanguage);
}
else
{
else {
Language dummy = new Language("en_US", "English");
dummy.load(Object2ObjectMaps.empty());
I18n.CURRENT_LANGUAGE = dummy;
}
}
}
public boolean setLanguage(String lang)
{
if(loadLanguage(lang))
{
public boolean setLanguage(String lang) {
if(loadLanguage(lang)) {
I18n.CURRENT_LANGUAGE = languages.get(lang);
Language currentLang = languages.get(currentLanguage);
currentLanguage = lang;
if(currentLang != null)
{
currentLang.clear();
}
if(currentLang != null) currentLang.clear();
return true;
}
return false;
}
protected boolean loadLanguage(String loadingLang)
{
protected boolean loadLanguage(String loadingLang) {
Language lang = languages.get(loadingLang);
if(lang == null)
{
return false;
}
if(lang == null) return false;
Map<String, String> map = new Object2ObjectOpenHashMap<>();
loadLanguage(loadingLang, map);
if(loadingLang != "en_US")
{
loadLanguage("en_US", map);
}
if(loadingLang != "en_US") loadLanguage("en_US", map);
lang.load(map);
return true;
}
protected void loadLanguage(String lang, Map<String, String> data)
{
try(MultiAsset language = assets.getAllAsset(location.subAsset(lang+".lang")))
{
for(int i = 0,m=language.size();i<m;i++)
{
try
{
for(Map.Entry<String, JsonElement> element : language.getAsset(i).getJsonObject().entrySet())
{
loadEntry(element.getKey(), element.getValue(), data);
protected void loadLanguage(String lang, Map<String, String> data) {
try(MultiAsset language = assets.getAllAssets(location.subAsset(lang+".lang"))) {
for(int i = 0,m = language.size();i < m;i++) {
try {
for(Map.Entry<String, JsonElement> element : language.get(i).json().entrySet()) {
loadEntry(element.getKey(), element.getValue(), data);
}
}
catch(Exception e)
{
catch(Exception e) {
e.printStackTrace();
}
}
}
catch(Exception e)
{
catch(Exception e) {
e.printStackTrace();
}
}
protected void loadEntry(String basePath, JsonElement el, Map<String, String> data)
{
if(el.isJsonPrimitive()) data.put(basePath, el.getAsString());
else if(el.isJsonObject())
{
for(Map.Entry<String, JsonElement> elements : el.getAsJsonObject().entrySet())
{
protected void loadEntry(String basePath, JsonElement el, Map<String, String> data) {
if(el.isJsonPrimitive()) data.putIfAbsent(basePath, el.getAsString());
else if(el.isJsonObject()) {
for(Map.Entry<String, JsonElement> elements : el.getAsJsonObject().entrySet()) {
String key = elements.getKey();
if(key.isEmpty()) loadEntry(basePath, elements.getValue(), data);
else loadEntry(basePath+"."+key, elements.getValue(), data);
@@ -119,31 +90,16 @@ public class LanguageManager implements IReloadableResource
}
}
protected void preLoadLanguage(JsonObject object)
{
protected void preLoadLanguage(JsonObject object) {
JsonArray array = object.getAsJsonArray("languages");
if(array == null)
{
return;
}
for(int i = 0,m=array.size();i<m;i++)
{
if(array == null) return;
for(int i = 0,m = array.size();i < m;i++) {
JsonArray subArray = array.get(i).getAsJsonArray();
if(subArray.size() != 2)
{
continue;
}
if(subArray.size() != 2) continue;
String key = subArray.get(0).getAsString();
String value = subArray.get(1).getAsString();
if(key.length() != 2 || value.length() > 16)
{
continue;
}
Language lang = languages.get(key);
if(lang == null)
{
languages.put(key, new Language(key, value));
}
if(key.length() != 2 || value.length() > 16) continue;
languages.computeIfAbsent(key, T -> new Language(key, value));
}
}
@@ -3,6 +3,5 @@ package speiger.src.coreengine.assets.reloader;
public interface IReloadableResource
{
public void reload();
public default void destroy() {};
}
@@ -1,5 +1,6 @@
package speiger.src.coreengine.assets.reloader;
import java.util.ServiceLoader;
import java.util.Set;
import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet;
@@ -10,51 +11,31 @@ public class ResourceReloader
boolean globalRemoval = false;
boolean reloading = false;
public <T extends IReloadableResource> T addReloadableResource(T resource)
{
public <T extends IReloadableResource> T addReloadableResource(T resource) {
return addReloadableResource(resource, false);
}
public <T extends IReloadableResource> T addReloadableResource(T resource, boolean init)
{
if(resources.add(resource) && init)
{
resource.reload();
}
public <T extends IReloadableResource> T addReloadableResource(T resource, boolean init) {
if(resources.add(resource) && init) resource.reload();
return resource;
}
public void removeReloadableResource(IReloadableResource resource)
{
if(globalRemoval || reloading)
{
return;
}
public void removeReloadableResource(IReloadableResource resource) {
if(globalRemoval || reloading) return;
resources.remove(resource);
}
public boolean isReloading()
{
return reloading;
}
public boolean isReloading() { return reloading; }
public void reloadResources()
{
public void reloadResources() {
reloading = true;
for(IReloadableResource resource : resources)
{
resource.reload();
}
resources.forEach(IReloadableResource::reload);
reloading = false;
}
public void deleteResources()
{
public void deleteResources() {
globalRemoval = true;
for(IReloadableResource resource : resources)
{
resource.destroy();
}
resources.forEach(IReloadableResource::destroy);
resources.clear();
globalRemoval = false;
}
@@ -1,76 +1,91 @@
package speiger.src.coreengine.math;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import speiger.src.collections.ints.lists.IntList;
import speiger.src.collections.objects.lists.ObjectArrayList;
public class ArrayUtil
{
public static int[] fromTo(int from, int to)
{
public class ArrayUtil {
public static int[] fromTo(int from, int to) {
int[] result = new int[to - from];
for(int i = 0,m=result.length;i<m;i++)
{
result[i] = from + i;
}
for(int i = 0,m = result.length;i < m;i++) result[i] = from + i;
return result;
}
public static int sum(int...values)
{
public static int sum(int... values) {
int result = 0;
for(int index : values)
{
result += index;
}
for(int index : values) result += index;
return result;
}
public static byte[] fill(byte[] array, byte value)
{
public static byte[] fill(byte[] array, byte value) {
Arrays.fill(array, value);
return array;
}
public static short[] fill(short[] array, short value)
{
public static short[] fill(short[] array, short value) {
Arrays.fill(array, value);
return array;
}
public static int[] fill(int[] array, int value)
{
public static int[] fill(int[] array, int value) {
Arrays.fill(array, value);
return array;
}
public static long[] fill(long[] array, long value)
{
public static long[] fill(long[] array, long value) {
Arrays.fill(array, value);
return array;
}
public static float[] fill(float[] array, float value)
{
public static float[] fill(float[] array, float value) {
Arrays.fill(array, value);
return array;
}
public static double[] fill(double[] array, double value)
{
public static double[] fill(double[] array, double value) {
Arrays.fill(array, value);
return array;
}
public static <T> List<T> makeList(IntList indexes, List<T> entries)
{
List<T> result = new ObjectArrayList<T>(indexes.size());
for(int i = 0,m=indexes.size();i<m;i++)
{
result.add(entries.get(indexes.getInt(i)));
public static byte[] toArray(ByteBuffer buffer) {
if(buffer.hasArray()) {
byte[] data = buffer.array();
if(data.length == buffer.remaining()) return data;
}
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
return data;
}
public static byte[] toArray(ByteBuffer buffer, Consumer<ByteBuffer> action) {
if(buffer.hasArray()) {
byte[] data = buffer.array();
if(data.length == buffer.remaining()) {
action.accept(buffer);
return data;
}
}
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
action.accept(buffer);
return data;
}
public static <T extends Comparable<T>> T higher(T key, T value) {
return key.compareTo(value) < 0 ? value : key;
}
public static <T extends Comparable<T>> T lower(T key, T value) {
return key.compareTo(value) > 0 ? value : key;
}
public static <T> List<T> makeList(IntList indexes, List<T> entries) {
List<T> result = new ObjectArrayList<T>(indexes.size());
for(int i = 0,m = indexes.size();i < m;i++) result.add(entries.get(indexes.getInt(i)));
return result;
}
}
@@ -2,60 +2,48 @@ package speiger.src.coreengine.math;
import speiger.src.coreengine.math.vector.ints.Vec2i;
public class BitUtil
{
public static long toLong(long firstShort, long secondShort)
{
public class BitUtil {
public static long toLong(long firstShort, long secondShort) {
return (firstShort << 32) | (secondShort & 0xFFFFFFFFL);
}
public static int toFirstInt(long value)
{
public static int toFirstInt(long value) {
return (int)((value >> 32) & 0xFFFFFFFFL);
}
public static int toSecondInt(long value)
{
public static int toSecondInt(long value) {
return (int)(value & 0xFFFFFFFFL);
}
public static long addToLong(long value, long x, long z)
{
public static long addToLong(long value, long x, long z) {
return ((x + toFirstInt(value)) & 0xFFFFFFFFL) << 32 | (((z + toSecondInt(value)) & 0xFFFFFFFFL));
}
public static int toInt(int firstShort, int secondShort)
{
public static int toInt(int firstShort, int secondShort) {
return (firstShort & 0xFFFF) << 16 | (secondShort & 0xFFFF);
}
public static int toFirstShort(int value)
{
public static int toFirstShort(int value) {
return (short)(value >> 16 & 0xFFFF);
}
public static int toSecondShort(int value)
{
public static int toSecondShort(int value) {
return (short)(value & 0xFFFF);
}
public static int addToInt(int value, int x, int z)
{
public static int addToInt(int value, int x, int z) {
return ((x + toFirstShort(value)) & 0xFFFF) << 16 | ((z + toSecondShort(value)) & 0xFFFF);
}
public static int addToInt(int value, Vec2i offset)
{
return ((offset.getX() + toFirstShort(value)) & 0xFFFF) << 16 | ((offset.getY() + toSecondShort(value)) & 0xFFFF);
public static int addToInt(int value, Vec2i offset) {
return ((offset.x() + toFirstShort(value)) & 0xFFFF) << 16 | ((offset.y() + toSecondShort(value)) & 0xFFFF);
}
public static int pack_2_10_10_10_int_rev(float x, float y, float z, float w)
{
public static int pack_2_10_10_10_int_rev(float x, float y, float z, float w) {
return (Math.round(w * 3F) & 3) << 30 | (Math.round(((z * 0.5F) + 0.5F) * 1023F) & 1023) << 20 | (Math.round(((y * 0.5F) + 0.5F) * 1023F) & 1023) << 10 | (Math.round(((x * 0.5F) + 0.5F) * 1023F) & 1023);
}
public static int pack_10_10_10_2_int(float x, float y, float z, float w)
{
public static int pack_10_10_10_2_int(float x, float y, float z, float w) {
return (Math.round(((x * 0.5F) + 0.5F) * 1023F) & 1023) << 22 | (Math.round(((y * 0.5F) + 0.5F) * 1023F) & 1023) << 12 | (Math.round(((z * 0.5F) + 0.5F) * 1023F) & 1023) << 2 | (Math.round(w * 3F) & 3);
}
}
@@ -1,155 +1,126 @@
package speiger.src.coreengine.math;
public class MathUtils
{
public class MathUtils {
private static final float[] SIN_TABLE;
private static final float[] COS_TABLE;
private static final float TABLE_MASK;
private static final int SIN_MASK;
public static final double PI_INVERSION = 180D / Math.PI;
public static float sin(float a)
{
public static float sin(float a) {
return SIN_TABLE[(int)(a * TABLE_MASK) & SIN_MASK];
}
public static float sin(double a)
{
public static float sin(double a) {
return SIN_TABLE[(int)(a * TABLE_MASK) & SIN_MASK];
}
public static float cos(float a)
{
public static float cos(float a) {
return COS_TABLE[(int)(a * TABLE_MASK) & SIN_MASK];
}
public static float cos(double a)
{
public static float cos(double a) {
return COS_TABLE[(int)(a * TABLE_MASK) & SIN_MASK];
}
public static byte clamp(byte min, byte max, byte current)
{
public static byte clamp(byte min, byte max, byte current) {
return current < min ? min : (current > max ? max : current);
}
public static short clamp(short min, short max, short current)
{
public static short clamp(short min, short max, short current) {
return current < min ? min : (current > max ? max : current);
}
public static int clamp(int min, int max, int current)
{
public static int clamp(int min, int max, int current) {
return current < min ? min : (current > max ? max : current);
}
public static float clamp(float min, float max, float current)
{
public static float clamp(float min, float max, float current) {
return current < min ? min : (current > max ? max : current);
}
public static double clamp(double min, double max, double current)
{
public static double clamp(double min, double max, double current) {
return current < min ? min : (current > max ? max : current);
}
public static long clamp(long min, long max, long current)
{
public static long clamp(long min, long max, long current) {
return current < min ? min : (current > max ? max : current);
}
public static byte sign(byte value)
{
public static byte sign(byte value) {
return value > 0 ? 1 : (value < 0 ? -1 : (byte)0);
}
public static short sign(short value)
{
public static short sign(short value) {
return value > 0 ? 1 : (value < 0 ? -1 : (short)0);
}
public static int sign(int value)
{
public static int sign(int value) {
return value > 0 ? 1 : (value < 0 ? -1 : 0);
}
public static long sign(long value)
{
public static long sign(long value) {
return value > 0 ? 1 : (value < 0 ? -1 : 0);
}
public static float sign(float value)
{
public static float sign(float value) {
return value > 0 ? 1F : (value < 0 ? -1F : 0F);
}
public static double sign(double value)
{
public static double sign(double value) {
return value > 0 ? 1D : (value < 0 ? -1D : 0D);
}
public static int sub(int key, int value)
{
public static int sub(int key, int value) {
return key - value;
}
public static int ceil(double value)
{
public static int ceil(double value) {
int i = (int)value;
return value > i ? i + 1 : i;
}
public static int ceil(float value)
{
public static int ceil(float value) {
int i = (int)value;
return value > i ? i + 1 : i;
}
public static int floor(float value)
{
public static int floor(float value) {
int i = (int)value;
return value < i ? i - 1 : i;
}
public static int floor(double value)
{
public static int floor(double value) {
int i = (int)value;
return value < i ? i - 1 : i;
}
public static int pow(int base, int exp)
{
public static int pow(int base, int exp) {
return (int)Math.pow(base, exp);
}
public static float lerp(float start, float end, float progress)
{
public static float lerp(float start, float end, float progress) {
return start + ((end - start) * progress);
}
public static double lerp(double start, double end, float progress)
{
public static double lerp(double start, double end, float progress) {
return start + ((end - start) * progress);
}
public static float smoothLerp(float start, float end, float progress)
{
public static float smoothLerp(float start, float end, float progress) {
float cosProgress = (1F - MathUtils.cos(progress * Math.PI)) * 0.5F;
return start * (1F - cosProgress) + end * cosProgress;
}
public static float quadraticCurve(float start, float median, float end, float progress)
{
public static float quadraticCurve(float start, float median, float end, float progress) {
return lerp(lerp(start, median, progress), lerp(median, end, progress), progress);
}
public static float smoothQuadraticCurve(float start, float median, float end, float progress)
{
public static float smoothQuadraticCurve(float start, float median, float end, float progress) {
return smoothLerp(smoothLerp(start, median, progress), smoothLerp(median, end, progress), progress);
}
static
{
static {
SIN_MASK = ~(-1 << 12);
int SIN_COUNT = SIN_MASK + 1;
@@ -162,13 +133,11 @@ public class MathUtils
SIN_TABLE = new float[SIN_COUNT];
COS_TABLE = new float[SIN_COUNT];
for(int i = 0;i < SIN_COUNT;i++)
{
for(int i = 0;i < SIN_COUNT;i++) {
SIN_TABLE[i] = (float)Math.sin((i + 0.5f) / SIN_COUNT * radFull);
COS_TABLE[i] = (float)Math.cos((i + 0.5f) / SIN_COUNT * radFull);
}
for(int i = 0;i < 360;i += 90)
{
for(int i = 0;i < 360;i += 90) {
SIN_TABLE[(int)(i * degToIndex) & SIN_MASK] = (float)Math.sin(i * Math.PI / 180D);
COS_TABLE[(int)(i * degToIndex) & SIN_MASK] = (float)Math.cos(i * Math.PI / 180D);
}
@@ -2,20 +2,16 @@ package speiger.src.coreengine.math;
import speiger.src.coreengine.math.vector.ints.Vec2i;
public class ShapeUtil
{
public static boolean isInCircle(int position, int radius, int testX, int testZ)
{
public class ShapeUtil {
public static boolean isInCircle(int position, int radius, int testX, int testZ) {
return isInCircle(BitUtil.toFirstShort(position), BitUtil.toSecondShort(position), radius, testX, testZ);
}
public static boolean isInCircle(Vec2i position, int radius, int testX, int testZ)
{
return isInCircle(position.getX(), position.getY(), radius, testX, testZ);
public static boolean isInCircle(Vec2i position, int radius, int testX, int testZ) {
return isInCircle(position.x(), position.y(), radius, testX, testZ);
}
public static boolean isInCircle(int posX, int posZ, int radius, int testX, int testZ)
{
public static boolean isInCircle(int posX, int posZ, int radius, int testX, int testZ) {
posX -= testX;
posZ -= testZ;
return (posX * posX) + (posZ * posZ) < radius * radius;
@@ -5,87 +5,62 @@ import java.util.Iterator;
import speiger.src.coreengine.math.vector.ints.Vec2i;
import speiger.src.coreengine.math.vector.ints.Vec3i;
public class Circle implements I2DCollision
{
public class Circle implements I2DCollision {
final Vec2i center;
final int radius;
public Circle(int x, int y, int radius)
{
public Circle(int x, int y, int radius) {
center = Vec2i.of(x, y);
this.radius = radius;
}
public Circle(Vec2i center, int radius)
{
public Circle(Vec2i center, int radius) {
this.center = center.asImmutable();
this.radius = radius;
}
public Circle(Vec3i data)
{
this(data.getX(), data.getY(), data.getZ());
public Circle(Vec3i data) {
this(data.x(), data.y(), data.z());
}
public Vec2i getCenter()
{
return center;
}
public Vec2i getCenter() { return center; }
public int getRadius()
{
return radius;
}
public int getRadius() { return radius; }
@Override
public boolean isColliding(int x, int y)
{
int xDiff = center.getX() - x;
int yDiff = center.getY() - y;
public boolean isColliding(int x, int y) {
int xDiff = center.x() - x;
int yDiff = center.y() - y;
return ((xDiff * xDiff) + (yDiff * yDiff)) < radius * radius;
}
@Override
public Iterator<Vec2i> iterator()
{
return new Iterator<Vec2i>(){
public Iterator<Vec2i> iterator() {
return new Iterator<Vec2i>() {
Vec2i iter = step(Vec2i.mutable(center).sub(radius));
Vec2i result = Vec2i.mutable();
@Override
public boolean hasNext()
{
public boolean hasNext() {
return iter != null;
}
@Override
public Vec2i next()
{
public Vec2i next() {
result.set(iter);
iter = step(iter);
return result;
}
Vec2i step(Vec2i iter)
{
while(iter != null)
{
iter.add(1, 0);
if(iter.getX() >= center.getX() + radius)
{
iter.sub((radius * 2), 0).add(0, 1);
if(iter.getY() >= center.getY() + radius)
{
iter = null;
}
}
if(iter != null && isColliding(iter))
{
break;
Vec2i step(Vec2i iter) {
while(iter != null) {
if(iter.add(1, 0).x() >= center.x() + radius) {
if(iter.sub((radius * 2), 0).add(0, 1).y() >= center.y() + radius) iter = null;
}
if(iter != null && isColliding(iter)) break;
}
return iter;
}
};
}
}
}
@@ -7,6 +7,6 @@ public interface I2DCollision extends Iterable<Vec2i>
{
public default boolean isMixedCollision() {return false;}
public default boolean isColliding(int position){return isColliding(BitUtil.toFirstShort(position), BitUtil.toSecondShort(position));}
public default boolean isColliding(Vec2i pos){return isColliding(pos.getX(), pos.getY());}
public default boolean isColliding(Vec2i pos){return isColliding(pos.x(), pos.y());}
public boolean isColliding(int x, int y);
}
@@ -9,60 +9,45 @@ public class Mixed2DCollision implements I2DCollision
I2DCollision mainBox;
I2DCollision[] subBoxes;
public Mixed2DCollision(I2DCollision mainBox, I2DCollision...subBoxes)
{
public Mixed2DCollision(I2DCollision mainBox, I2DCollision...subBoxes) {
this.mainBox = mainBox;
this.subBoxes = subBoxes;
}
@Override
public boolean isColliding(int x, int y)
{
public boolean isColliding(int x, int y) {
return mainBox.isColliding(x, y) && isCollidingInSubBox(x, y);
}
public boolean isCollidingInSubBox(int x, int y)
{
for(int i = 0,m=subBoxes.length;i<m;i++)
{
if(!subBoxes[i].isColliding(x, y))
{
return false;
}
public boolean isCollidingInSubBox(int x, int y) {
for(int i = 0,m=subBoxes.length;i<m;i++) {
if(!subBoxes[i].isColliding(x, y)) return false;
}
return true;
}
@Override
public Iterator<Vec2i> iterator()
{
public Iterator<Vec2i> iterator() {
return new Iterator<Vec2i>(){
Iterator<Vec2i> mainIter = mainBox.iterator();
Vec2i cache = findNext(Vec2i.mutable());
Vec2i result = Vec2i.mutable();
@Override
public boolean hasNext()
{
public boolean hasNext() {
return cache != null;
}
@Override
public Vec2i next()
{
public Vec2i next() {
result.set(cache);
cache = findNext(cache);
return result;
}
Vec2i findNext(Vec2i input)
{
while(mainIter.hasNext())
{
Vec2i findNext(Vec2i input) {
while(mainIter.hasNext()) {
Vec2i next = mainIter.next();
if(isCollidingInSubBox(next.getX(), next.getY()))
{
return input.set(next);
}
if(isCollidingInSubBox(next.x(), next.y())) return input.set(next);
}
return null;
}
@@ -4,96 +4,70 @@ import java.util.Iterator;
import speiger.src.coreengine.math.vector.ints.Vec2i;
public class Plane implements I2DCollision
{
public class Plane implements I2DCollision {
Vec2i min;
Vec2i max;
public Plane()
{
public Plane() {
this(0, 0, 0, 0);
}
public Plane(int minX, int minY, int maxX, int maxY)
{
public Plane(int minX, int minY, int maxX, int maxY) {
this(Vec2i.mutable(minX, minY), Vec2i.mutable(maxX, maxY));
}
public Plane(Vec2i center, int radius)
{
public Plane(Vec2i center, int radius) {
this(center.sub(radius), center.add(radius));
}
public Plane(Vec2i min, Vec2i max)
{
public Plane(Vec2i min, Vec2i max) {
this.min = min;
this.max = max;
}
public Plane set(Plane other)
{
public Plane set(Plane other) {
min.set(other.getMin());
max.set(other.getMax());
return this;
}
public Plane set(int minX, int minY, int maxX, int maxY)
{
public Plane set(int minX, int minY, int maxX, int maxY) {
min.set(minX, minY);
max.set(maxX, maxY);
return this;
}
@Override
public boolean isColliding(int x, int y)
{
return x >= min.getX() && y >= min.getY() && x < max.getX() && y < max.getY();
}
public boolean isIntersecting(Plane plane)
{
return isIntersecting(plane.getMinX(), plane.getMinY(), plane.getMaxX(), plane.getMaxY());
}
public boolean isIntersecting(int minX, int minY, int maxX, int maxY)
{
return min.getX() <= maxX && max.getX() >= minX && min.getY() <= maxY && max.getY() >= minY;
}
public Vec2i getMin(){return min;}
public Vec2i getMax(){return max;}
public int getWidth(){return max.getX() - min.getX();}
public int getHeight(){return max.getY() - min.getY();}
public int getMinX(){return min.getX();}
public int getMinY(){return min.getY();}
public int getMaxX(){return max.getX();}
public int getMaxY(){return max.getY();}
public boolean isColliding(int x, int y) { return x >= min.x() && y >= min.y() && x < max.x() && y < max.y(); }
public boolean isIntersecting(Plane plane) { return isIntersecting(plane.getMinX(), plane.getMinY(), plane.getMaxX(), plane.getMaxY()); }
public boolean isIntersecting(int minX, int minY, int maxX, int maxY) { return min.x() <= maxX && max.x() >= minX && min.y() <= maxY && max.y() >= minY; }
public Vec2i getMin() { return min; }
public Vec2i getMax() { return max; }
public int getWidth() { return max.x() - min.x(); }
public int getHeight() { return max.y() - min.y(); }
public int getMinX() { return min.x(); }
public int getMinY() { return min.y(); }
public int getMaxX() { return max.x(); }
public int getMaxY() { return max.y(); }
@Override
public Iterator<Vec2i> iterator()
{
return new Iterator<Vec2i>(){
public Iterator<Vec2i> iterator() {
return new Iterator<Vec2i>() {
Vec2i iter = Vec2i.mutable(min);
Vec2i result = Vec2i.mutable();
@Override
public boolean hasNext()
{
public boolean hasNext() {
return iter != null;
}
@Override
public Vec2i next()
{
public Vec2i next() {
result.set(iter);
iter.add(1, 0);
if(iter.getX() == max.getX())
{
iter.set(min.getX(), iter.getY() + 1);
if(iter.getY() == max.getY())
{
iter = null;
}
if(iter.x() == max.x()) {
iter.set(min.x(), iter.y() + 1);
if(iter.y() == max.y()) iter = null;
}
return result;
}
@@ -6,8 +6,7 @@ import java.nio.FloatBuffer;
import speiger.src.collections.floats.lists.FloatList;
import speiger.src.coreengine.math.MathUtils;
public class ColorUtils
{
public class ColorUtils {
static final float DEVIDER = 1F / 255F;
public static final int R = 0xFF << 16;
public static final int G = 0xFF << 8;
@@ -15,7 +14,6 @@ public class ColorUtils
public static final int A = 0xFF << 24;
public static final long SIGN = 0x00000000FFFFFFFFL;
static final int ALL = 0xFFFFFFFF;
public static final int WHITE = rgb(255, 255, 255);
public static final int LIGHT_GRAY = rgb(192, 192, 192);
public static final int GRAY = rgb(128, 128, 128);
@@ -32,16 +30,15 @@ public class ColorUtils
public static final int CYAN = rgb(0, 255, 255);
public static final int BLUE = rgb(0, 0, 255);
public static final int LIGHT_BLUE = rgb(0, 150, 255);
//Specialized Components that get reused
// Specialized Components that get reused
public static final int INVISIBLE = rgb(0, 0, 0, 0);
public static final int TEXT_DEFAULT_BACKGROUND = rgb(80, 80, 80, 144);
public static final int WINDOW_DEFAULT_BACKGROUND = rgb(64, 64, 64, 128);
public static final int POPUP_DEFAULT_BACKGROUND = rgb(85, 85, 85);
public static final int DESTRUCTION = rgb(255, 0, 0, 128);
public static byte[] toByteArray(int color, boolean alpha)
{
public static byte[] toByteArray(int color, boolean alpha) {
byte[] data = new byte[alpha ? 4 : 3];
data[0] = (byte)((color >> 16) & 0xFF);
data[1] = (byte)((color >> 8) & 0xFF);
@@ -50,325 +47,154 @@ public class ColorUtils
return data;
}
public static void write(int color, boolean alpha, ByteBuffer buffer)
{
public static void write(int color, boolean alpha, ByteBuffer buffer) {
buffer.put((byte)((color >> 16) & 0xFF)).put((byte)((color >> 8) & 0xFF)).put((byte)(color & 0xFF));
if(alpha)
{
buffer.put((byte)((color >> 24) & 0xFF));
}
if(alpha) { buffer.put((byte)((color >> 24) & 0xFF)); }
}
public static void write(int index, int color, boolean alpha, ByteBuffer buffer)
{
public static void write(int index, int color, boolean alpha, ByteBuffer buffer) {
buffer.put(index, (byte)((color >> 16) & 0xFF)).put(index + 1, (byte)((color >> 8) & 0xFF)).put(index + 2, (byte)(color & 0xFF));
if(alpha)
{
buffer.put(index + 3, (byte)((color >> 24) & 0xFF));
}
if(alpha) buffer.put(index + 3, (byte)((color >> 24) & 0xFF));
}
public static void writeFloat(int color, boolean alpha, ByteBuffer buffer)
{
public static void writeFloat(int color, boolean alpha, ByteBuffer buffer) {
buffer.putFloat(((color >> 16) & 0xFF) * DEVIDER).putFloat(((color >> 8) & 0xFF) * DEVIDER).putFloat((color & 0xFF) * DEVIDER);
if(alpha)
{
buffer.putFloat(((color >> 24) & 0xFF) * DEVIDER);
}
if(alpha) buffer.putFloat(((color >> 24) & 0xFF) * DEVIDER);
}
public static void writeFloat(int index, int color, boolean alpha, ByteBuffer buffer)
{
public static void writeFloat(int index, int color, boolean alpha, ByteBuffer buffer) {
buffer.putFloat(index, ((color >> 16) & 0xFF) * DEVIDER).putFloat(index + 1, ((color >> 8) & 0xFF) * DEVIDER).putFloat(index + 2, (color & 0xFF) * DEVIDER);
if(alpha)
{
buffer.putFloat(index + 3, ((color >> 24) & 0xFF) * DEVIDER);
}
if(alpha) buffer.putFloat(index + 3, ((color >> 24) & 0xFF) * DEVIDER);
}
public static void write(int color, boolean alpha, FloatBuffer buffer)
{
public static void write(int color, boolean alpha, FloatBuffer buffer) {
buffer.put(((color >> 16) & 0xFF) * DEVIDER).put(((color >> 8) & 0xFF) * DEVIDER).put((color & 0xFF) * DEVIDER);
if(alpha)
{
buffer.put(((color >> 24) & 0xFF) * DEVIDER);
}
if(alpha) buffer.put(((color >> 24) & 0xFF) * DEVIDER);
}
public static void write(int index, int color, boolean alpha, FloatBuffer buffer)
{
public static void write(int index, int color, boolean alpha, FloatBuffer buffer) {
buffer.put(index, ((color >> 16) & 0xFF) * DEVIDER).put(index + 1, ((color >> 8) & 0xFF) * DEVIDER).put(index + 2, (color & 0xFF) * DEVIDER);
if(alpha)
{
buffer.put(index + 3, ((color >> 24) & 0xFF) * DEVIDER);
}
if(alpha) buffer.put(index + 3, ((color >> 24) & 0xFF) * DEVIDER);
}
public static void write(int color, boolean alpha, FloatList list)
{
public static void write(int color, boolean alpha, FloatList list) {
list.add(((color >> 16) & 0xFF) * DEVIDER);
list.add(((color >> 8) & 0xFF) * DEVIDER);
list.add((color & 0xFF) * DEVIDER);
if(alpha)
{
list.add(((color >> 24) & 0xFF) * DEVIDER);
}
if(alpha) { list.add(((color >> 24) & 0xFF) * DEVIDER); }
}
public static int read(ByteBuffer buffer, boolean alpha)
{
return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get());
public static int read(ByteBuffer buffer, boolean alpha) { return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get()); }
public static int read(ByteBuffer buffer, int index, boolean alpha) { return alpha ? rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2)) : rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2), buffer.get(index + 3)); }
public static int readFloat(ByteBuffer buffer, boolean alpha) { return alpha ? rgb(buffer.getFloat(), buffer.getFloat(), buffer.getFloat()) : rgb(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); }
public static int readFloat(ByteBuffer buffer, int index, boolean alpha) { return alpha ? rgb(buffer.getFloat(index), buffer.getFloat(index + 1), buffer.getFloat(index + 2)) : rgb(buffer.getFloat(index), buffer.getFloat(index + 1), buffer.getFloat(index + 2), buffer.getFloat(index + 3)); }
public static int read(FloatBuffer buffer, boolean alpha) { return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get()); }
public static int read(FloatBuffer buffer, int index, boolean alpha) { return alpha ? rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2)) : rgb(buffer.get(index), buffer.get(index + 1), buffer.get(index + 2), buffer.get(index + 3)); }
public static boolean needsDarkColor(int rgba) { return getBrightness(rgba) >= 130; }
public static int getBrightness(int rgba) { return getBrightness((rgba >> 16) & 0xFF, (rgba >> 8) & 0xFF, rgba & 0xFF); }
public static int getBrightness(int r, int g, int b) { return (int)Math.sqrt((r * r * 0.241F) + (g * g * 0.691F) + (b * b * 0.068F)); }
public static int mix(int from, int to, float factor) {
float weight0 = (1F - factor);
float weight1 = factor;
int r = (int)((((from >> 16) & 0xFF) * weight0) + (((to >> 16) & 0xFF) * weight1));
int g = (int)((((from >> 8) & 0xFF) * weight0) + (((to >> 8) & 0xFF) * weight1));
int b = (int)(((from & 0xFF) * weight0) + ((to & 0xFF) * weight1));
int a = (int)((((from >> 24) & 0xFF) * weight0) + (((to >> 24) & 0xFF) * weight1));
return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | b & 0xFF;
}
public static int read(ByteBuffer buffer, int index, boolean alpha)
{
return alpha ? rgb(buffer.get(index), buffer.get(index+1), buffer.get(index+2)) : rgb(buffer.get(index), buffer.get(index+1), buffer.get(index+2), buffer.get(index+3));
}
public static int readFloat(ByteBuffer buffer, boolean alpha)
{
return alpha ? rgb(buffer.getFloat(), buffer.getFloat(), buffer.getFloat()) : rgb(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat());
}
public static int readFloat(ByteBuffer buffer, int index, boolean alpha)
{
return alpha ? rgb(buffer.getFloat(index), buffer.getFloat(index+1), buffer.getFloat(index+2)) : rgb(buffer.getFloat(index), buffer.getFloat(index+1), buffer.getFloat(index+2), buffer.getFloat(index+3));
}
public static int read(FloatBuffer buffer, boolean alpha)
{
return alpha ? rgb(buffer.get(), buffer.get(), buffer.get()) : rgb(buffer.get(), buffer.get(), buffer.get(), buffer.get());
}
public static int read(FloatBuffer buffer, int index, boolean alpha)
{
return alpha ? rgb(buffer.get(index), buffer.get(index+1), buffer.get(index+2)) : rgb(buffer.get(index), buffer.get(index+1), buffer.get(index+2), buffer.get(index+3));
}
public static boolean needsDarkColor(int rgba)
{
return getBrightness(rgba) >= 130;
}
public static int getBrightness(int rgba)
{
return getBrightness((rgba >> 16) & 0xFF, (rgba >> 8) & 0xFF, rgba & 0xFF);
}
public static int getBrightness(int r, int g, int b)
{
return (int)Math.sqrt((r * r * 0.241F) + (g * g * 0.691F) + (b * b * 0.068F));
}
public static int mix(int from, int to, float factor)
{
float weight0 = (1F - factor);
float weight1 = factor;
int r = (int)((((from >> 16) & 0xFF) * weight0) + (((to >> 16) & 0xFF) * weight1));
int g = (int)((((from >> 8) & 0xFF) * weight0) + (((to >> 8) & 0xFF) * weight1));
int b = (int)(((from & 0xFF) * weight0) + ((to & 0xFF) * weight1));
int a = (int)((((from >> 24) & 0xFF) * weight0) + (((to >> 24) & 0xFF) * weight1));
return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | b & 0xFF;
}
public static int darker(int color)
{
return darker(color, 0.7F);
}
public static int darker(int color, float factor)
{
public static int darker(int color) { return darker(color, 0.7F); }
public static int darker(int color, float factor) {
int r = Math.max(0, (int)(((color >> 16) & 0xFF) * factor));
int g = Math.max(0, (int)(((color >> 8) & 0xFF) * factor));
int b = Math.max(0, (int)((color & 0xFF) * factor));
return (color & A) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
}
public static int brighter(int color)
{
return brighter(color, 0.7F);
}
public static int brighter(int color, float factor)
{
public static int brighter(int color) { return brighter(color, 0.7F); }
public static int brighter(int color, float factor) {
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = color & 0xFF;
int i = (int)(1.0 / (1.0 - factor));
if(r == 0 && g == 0 && b == 0)
{
return (color & A) | ((i & 0xFF) << 16) | ((i & 0xFF) << 8) | (i & 0xFF);
}
if(r == 0 && g == 0 && b == 0) { return (color & A) | ((i & 0xFF) << 16) | ((i & 0xFF) << 8) | (i & 0xFF); }
if(r > 0 && r < i) r = i;
if(g > 0 && g < i) g = i;
if(b > 0 && b < i) b = i;
return (color & A) | Math.min(255, (int)(r / factor)) << 16 | Math.min(255, (int)(g / factor)) << 8 | Math.min(255, (int)(b / factor));
}
public static int toRGB(float hue, float saturation, float brightness)
{
if (saturation == 0)
{
public static int toRGB(float hue, float saturation, float brightness) {
if(saturation == 0) {
int result = (int)(brightness * 255F + 0.5F);
return rgb(result, result, result);
}
}
float h = (hue - MathUtils.floor(hue)) * 6F;
float f = h - MathUtils.floor(h);
float p = brightness * (1F - saturation);
float q = brightness * (1F - saturation * f);
float t = brightness * (1F - (saturation * (1F - f)));
switch ((int)h) {
case 0: return rgb(brightness, t, p);
case 1: return rgb(q, brightness, p);
case 2: return rgb(p, brightness, t);
case 3: return rgb(p, q, brightness);
case 4: return rgb(t, p, brightness);
case 5: return rgb(brightness, p, q);
default: return BLACK;
}
}
float q = brightness * (1F - saturation * f);
float t = brightness * (1F - (saturation * (1F - f)));
switch((int)h) {
case 0: return rgb(brightness, t, p);
case 1: return rgb(q, brightness, p);
case 2: return rgb(p, brightness, t);
case 3: return rgb(p, q, brightness);
case 4: return rgb(t, p, brightness);
case 5: return rgb(brightness, p, q);
default: return BLACK;
}
}
public static float[] toHue(int rgba)
{
public static float[] toHue(int rgba) {
int r = getR(rgba);
int g = getG(rgba);
int b = getB(rgba);
int cmax = (r > g) ? r : g;
if (b > cmax) cmax = b;
int cmin = (r < g) ? r : g;
if (b < cmin) cmin = b;
float length = cmax - cmin;
int cmax = (r > g) ? r : g;
if(b > cmax) cmax = b;
int cmin = (r < g) ? r : g;
if(b < cmin) cmin = b;
float length = cmax - cmin;
float[] result = new float[3];
result[1] = cmax == 0 ? 0F : length / cmax;
result[2] = cmax * DEVIDER;
float hue = 0F;
if(result[1] != 0F) {
float redc = (cmax - r) / length;
float greenc = (cmax - g) / length;
float bluec = (cmax - b) / length;
if (r == cmax) hue = bluec - greenc;
else if (g == cmax) hue = 2F + redc - bluec;
else hue = 4F + greenc - redc;
hue /= 6F;
if (hue < 0) hue += 1F;
}
result[0] = hue;
return result;
float hue = 0F;
if(result[1] != 0F) {
float redc = (cmax - r) / length;
float greenc = (cmax - g) / length;
float bluec = (cmax - b) / length;
if(r == cmax) hue = bluec - greenc;
else if(g == cmax) hue = 2F + redc - bluec;
else hue = 4F + greenc - redc;
hue /= 6F;
if(hue < 0) hue += 1F;
}
result[0] = hue;
return result;
}
public static int rgb(int rgb)
{
return rgb | (255 << 24);
}
public static int rgb(int r, int g, int b)
{
return A | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
}
public static int rgb(float r, float g, float b)
{
return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F));
}
public static int rgb(int r, int g, int b, int a)
{
return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
}
public static int rgb(float r, float g, float b, float a)
{
return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F), (int)(b * 255F + 0.5F));
}
public static int setR(int rgba, int r)
{
return rgba & ~R | ((r & 0xFF) << 16);
}
public static int setR(int rgba, float r)
{
return rgba & ~R | (((int)(r * 255F + 0.5F)) << 16);
}
public static int setG(int rgba, int g)
{
return rgba & ~G | ((g & 0xFF) << 8);
}
public static int setG(int rgba, float g)
{
return rgba & ~G | (((int)(g * 255F + 0.5F)) << 8);
}
public static int setB(int rgba, int b)
{
return rgba & ~B | (b & 0xFF);
}
public static int setB(int rgba, float b)
{
return rgba & ~B | ((int)(b * 255F + 0.5F));
}
public static int setA(int rgba, int a)
{
return rgba & ~A | ((a & 0xFF) << 24);
}
public static int setA(int rgba, float a)
{
return rgba & ~A | (((int)(a * 255F + 0.5F)) << 24);
}
public static int getR(int rgba)
{
return (rgba >> 16) & 0xFF;
}
public static float getRF(int rgba)
{
return ((rgba >> 16) & 0xFF) * DEVIDER;
}
public static int getG(int rgba)
{
return (rgba >> 8) & 0xFF;
}
public static float getGF(int rgba)
{
return ((rgba >> 8) & 0xFF) * DEVIDER;
}
public static int getB(int rgba)
{
return rgba & 0xFF;
}
public static float getBF(int rgba)
{
return (rgba & 0xFF) * DEVIDER;
}
public static int getA(int rgba)
{
return (rgba >> 24) & 0xFF;
}
public static float getAF(int rgba)
{
return ((rgba >> 24) & 0xFF) * DEVIDER;
}
public static String getHexCode(int rgba, boolean alpha)
{
return "0x"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1);
}
public static String getHTMLCode(int rgba, boolean alpha)
{
return "#"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1);
}
public static int rgb(int rgb) { return rgb | (255 << 24); }
public static int rgb(int r, int g, int b) { return A | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF); }
public static int rgb(float r, float g, float b) { return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F)); }
public static int rgb(int r, int g, int b, int a) { return ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF); }
public static int rgb(float r, float g, float b, float a) { return rgb((int)(r * 255F + 0.5F), (int)(g * 255F + 0.5F), (int)(b * 255F + 0.5F), (int)(b * 255F + 0.5F)); }
public static int setR(int rgba, int r) { return rgba & ~R | ((r & 0xFF) << 16); }
public static int setR(int rgba, float r) { return rgba & ~R | (((int)(r * 255F + 0.5F)) << 16); }
public static int setG(int rgba, int g) { return rgba & ~G | ((g & 0xFF) << 8); }
public static int setG(int rgba, float g) { return rgba & ~G | (((int)(g * 255F + 0.5F)) << 8); }
public static int setB(int rgba, int b) { return rgba & ~B | (b & 0xFF); }
public static int setB(int rgba, float b) { return rgba & ~B | ((int)(b * 255F + 0.5F)); }
public static int setA(int rgba, int a) { return rgba & ~A | ((a & 0xFF) << 24); }
public static int setA(int rgba, float a) { return rgba & ~A | (((int)(a * 255F + 0.5F)) << 24); }
public static int getR(int rgba) { return (rgba >> 16) & 0xFF; }
public static float getRF(int rgba) { return ((rgba >> 16) & 0xFF) * DEVIDER; }
public static int getG(int rgba) { return (rgba >> 8) & 0xFF; }
public static float getGF(int rgba) { return ((rgba >> 8) & 0xFF) * DEVIDER; }
public static int getB(int rgba) { return rgba & 0xFF; }
public static float getBF(int rgba) { return (rgba & 0xFF) * DEVIDER; }
public static int getA(int rgba) { return (rgba >> 24) & 0xFF; }
public static float getAF(int rgba) { return ((rgba >> 24) & 0xFF) * DEVIDER; }
public static String toHex(int rgba, boolean alpha) { return "0x"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1); }
public static String toHTML(int rgba, boolean alpha) { return "#"+(alpha ? Long.toHexString(1 << 32 | rgba & SIGN) : Integer.toHexString((1 << 24) | (rgba & ~A))).substring(1); }
}
@@ -4,8 +4,7 @@ import java.util.function.Predicate;
import speiger.src.coreengine.math.vector.ints.Vec2i;
public enum Facing
{
public enum Facing {
NORTH(0, 2, "North", Axis.VERTICAL, Vec2i.of(0, 1)),
EAST(1, 3, "East", Axis.HORIZONTAL, Vec2i.of(1, 0)),
SOUTH(2, 0, "South", Axis.VERTICAL, Vec2i.of(0, -1)),
@@ -13,7 +12,6 @@ public enum Facing
private static final Facing[] VALUES;
private static final Facing[] ROTATIONS;
final int index;
final int rotationIndex;
final String name;
@@ -22,8 +20,7 @@ public enum Facing
final boolean positive;
final Rotation rotation;
private Facing(int direction, int rotation, String display, Axis axis, Vec2i offset)
{
private Facing(int direction, int rotation, String display, Axis axis, Vec2i offset) {
index = direction;
rotationIndex = rotation;
name = display;
@@ -33,123 +30,50 @@ public enum Facing
this.rotation = Rotation.fromFacing(this);
}
public int getIndex()
{
return index;
}
public int getIndex() { return index; }
public boolean isPositive() { return positive; }
public boolean isXAxis()
{
return axis == Axis.HORIZONTAL;
}
public boolean isXAxis() { return axis == Axis.HORIZONTAL; }
public boolean isZAxis() { return axis == Axis.VERTICAL; }
public Axis getAxis() { return axis; }
public boolean isZAxis()
{
return axis == Axis.VERTICAL;
}
public Axis getAxis()
{
return axis;
}
public Vec2i getOffset() { return offset; }
public float getMultiplier() { return positive ? 1F : -1F; }
public boolean isPositive()
{
return positive;
}
public Vec2i getOffset()
{
return offset;
}
public String getName() { return name; }
public float getMultiplier()
{
return positive ? 1F : -1F;
}
public String getName()
{
return name;
}
public int getRotationIndex()
{
return rotationIndex;
}
public int getRotation()
{
return rotationIndex * 90;
}
public int getRotation(Facing other)
{
public int getRotationIndex() { return rotationIndex; }
public int getRotation() { return rotationIndex * 90; }
public int getRotation(Facing other) {
if(other == backwards()) return getRotation() - 45;
else if(other == forward()) return getRotation() + 45;
return getRotation();
}
public Rotation toRotation()
{
return rotation;
}
public Facing rotate(int amount)
{
return byIndex(index + amount);
}
public Facing forward()
{
return byIndex(index + 1);
}
public Facing backwards()
{
return byIndex(index - 1);
}
public Facing opposite()
{
return byIndex(index + 2);
}
public Rotation toRotation() { return rotation; }
public Facing rotate(int amount) { return byIndex(index + amount); }
public Facing forward() { return byIndex(index + 1); }
public Facing backwards() { return byIndex(index - 1); }
public Facing opposite() { return byIndex(index + 2); }
@Override
public String toString()
{
return getName()+": "+offset;
}
public String toString() { return getName()+": "+offset; }
public static Facing byIndex(int index)
{
return VALUES[index & 3];
}
public static Facing byIndex(int index) { return VALUES[index & 3]; }
public static Facing byRotationIndex(int index) { return ROTATIONS[index & 3]; }
public static Facing byYaw(float value) { return byRotationIndex((int)(value / 90) & 3); }
public static Facing byRotationIndex(int index)
{
return ROTATIONS[index & 3];
}
public static Facing byYaw(float value)
{
return byRotationIndex((int)(value / 90) & 3);
}
static
{
static {
Facing[] values = values();
VALUES = new Facing[values.length];
ROTATIONS = new Facing[values.length];
for(Facing entry : values)
{
for(Facing entry : values) {
VALUES[entry.getIndex()] = entry;
ROTATIONS[entry.getRotationIndex()] = entry;
}
}
public static enum Rotation
{
public static enum Rotation {
NONE(Facing.NORTH),
CLOCKWISE(Facing.EAST),
OPPOSITE(Facing.SOUTH),
@@ -158,44 +82,27 @@ public enum Facing
static final Rotation[] ROTATION = Rotation.values();
Facing facing;
private Rotation(Facing facing)
{
private Rotation(Facing facing) {
this.facing = facing;
}
public static Rotation fromFacing(Facing facing)
{
return ROTATION[facing.getIndex()];
}
public Facing toFacing()
{
return facing;
}
public static Rotation fromFacing(Facing facing) { return ROTATION[facing.getIndex()]; }
public Facing toFacing() { return facing; }
}
public static enum Axis implements Predicate<Facing>
{
public static enum Axis implements Predicate<Facing> {
HORIZONTAL(5),
VERTICAL(10);
int code;
private Axis(int code)
{
this.code = code;
}
public int getCode()
{
return code;
private Axis(int code) {
this.code = code;
}
public int getCode() { return code; }
@Override
public boolean test(Facing t)
{
return t.getAxis() == this;
}
public boolean test(Facing t) { return t.getAxis() == this; }
}
}
@@ -12,24 +12,20 @@ import speiger.src.coreengine.math.MathUtils;
import speiger.src.coreengine.math.misc.Facing.Axis;
import speiger.src.coreengine.math.vector.ints.Vec2i;
public final class FacingList implements Iterable<Facing>, Predicate<Facing>
{
public final class FacingList implements Iterable<Facing>, Predicate<Facing> {
static final FacingList[] FACINGS = createArray();
public static final FacingList EMPTY = ofNumber(0);
public static final FacingList NORTH = ofFacings(Facing.NORTH);
public static final FacingList EAST = ofFacings(Facing.EAST);
public static final FacingList SOUTH = ofFacings(Facing.SOUTH);
public static final FacingList WEST = ofFacings(Facing.WEST);
public static final FacingList NORTH_EAST = ofFacings(Facing.NORTH, Facing.EAST);
public static final FacingList SOUTH_EAST = ofFacings(Facing.EAST, Facing.SOUTH);
public static final FacingList SOUTH_WEST = ofFacings(Facing.SOUTH, Facing.WEST);
public static final FacingList NORTH_WEST = ofFacings(Facing.WEST, Facing.NORTH);
public static final FacingList VERTICAL = ofFacings(Facing.NORTH, Facing.SOUTH);
public static final FacingList HORIZONTAL = ofFacings(Facing.EAST, Facing.WEST);
public static final FacingList ALL = ofFacings(Facing.NORTH, Facing.SOUTH, Facing.EAST, Facing.WEST);
final byte code;
final byte next;
final byte opposite;
@@ -38,22 +34,18 @@ public final class FacingList implements Iterable<Facing>, Predicate<Facing>
final Vec2i offset;
final Facing[] array;
private FacingList(int initCode)
{
private FacingList(int initCode) {
code = (byte)MathUtils.clamp(0, 15, initCode);
Vec2i pos = Vec2i.mutable();
ObjectList<Facing> facings = new ObjectArrayList<>();
for(int i = 0;i<4;i++)
{
if((code & 1 << i) != 0)
{
for(int i = 0;i < 4;i++) {
if((code & 1 << i) != 0) {
pos.add(Facing.byIndex(i).getOffset());
facings.add(Facing.byIndex(i));
}
}
int[] data = new int[3];
for(int i = 0,m=facings.size();i<m;i++)
{
for(int i = 0,m = facings.size();i < m;i++) {
Facing face = facings.get(i);
data[0] |= 1 << face.forward().getIndex();
data[1] |= 1 << face.opposite().getIndex();
@@ -67,68 +59,31 @@ public final class FacingList implements Iterable<Facing>, Predicate<Facing>
array = facings.toArray(new Facing[facings.size()]);
}
public static FacingList ofFacing(Facing facing)
{
return FACINGS[1 << facing.getIndex()];
}
public static FacingList ofFacing(Facing facing) { return FACINGS[1 << facing.getIndex()]; }
public static FacingList ofFacings(Facing... facings) { return FACINGS[toNumber(facings)]; }
public static FacingList ofFlags(boolean[] facings) { return FACINGS[toNumber(facings)]; }
public static FacingList ofNumber(int value) { return FACINGS[value & 15]; }
public static FacingList ofAxis(Axis axis) { return FACINGS[axis.getCode()]; }
public static FacingList ofFacings(Facing... facings)
{
return FACINGS[toNumber(facings)];
}
public static FacingList ofFlags(boolean[] facings)
{
return FACINGS[toNumber(facings)];
}
public static FacingList ofNumber(int value)
{
return FACINGS[value & 15];
}
public static FacingList ofAxis(Axis axis)
{
return FACINGS[axis.getCode()];
}
public static FacingList fromVec(Vec2i value)
{
public static FacingList fromVec(Vec2i value) {
value = value.clamp(-1, 1);
for(int i = 0;i<16;i++)
{
if(FACINGS[i].getOffset().equals(value))
{
return FACINGS[i];
}
}
for(int i = 0;i < 16;i++) { if(FACINGS[i].getOffset().equals(value)) { return FACINGS[i]; } }
return FACINGS[0];
}
public Set<Facing> toFacings()
{
return isEmpty() ? EnumSet.noneOf(Facing.class) : EnumSet.copyOf(ObjectArrayList.wrap(array));
}
public Set<Facing> toFacings() { return isEmpty() ? EnumSet.noneOf(Facing.class) : EnumSet.copyOf(ObjectArrayList.wrap(array)); }
public boolean[] toFlags() { return toFlags(array); }
public boolean[] toFlags()
{
return toFlags(array);
}
public int getRotation()
{
switch(count)
{
public int getRotation() {
switch(count) {
case 1: return array[0].getRotation();
case 2: return array[0].getRotation(array[1]);
default: return 0;
}
}
public FacingList rotate(int amount)
{
switch(amount & 3)
{
public FacingList rotate(int amount) {
switch(amount & 3) {
case 1: return FACINGS[next];
case 2: return FACINGS[opposite];
case 3: return FACINGS[prev];
@@ -136,177 +91,70 @@ public final class FacingList implements Iterable<Facing>, Predicate<Facing>
}
}
public FacingList invert()
{
return FACINGS[15 - code];
}
public FacingList opposite()
{
return FACINGS[opposite];
}
public FacingList add(Facing facing)
{
return FACINGS[code | (1 << facing.getIndex())];
}
public FacingList add(FacingList facings)
{
return FACINGS[code | facings.code];
}
public FacingList remove(Facing facing)
{
return FACINGS[code & ~(1 << facing.getIndex())];
}
public FacingList remove(FacingList facings)
{
return FACINGS[code & ~facings.code];
}
public boolean contains(Facing direction)
{
return (code & 1 << direction.getIndex()) != 0;
}
public boolean contains(FacingList facings)
{
return (code & facings.code) == facings.code;
}
public boolean containsAny(FacingList facings)
{
return (code & facings.code) != 0;
}
public boolean notContains(Facing direction)
{
return (code & 1 << direction.getIndex()) == 0;
}
public boolean notContains(FacingList facings)
{
return (code & facings.code) != facings.code;
}
public FacingList flipFacing(Facing facing)
{
return contains(facing) ? remove(facing).add(facing.opposite()) : this;
}
public FacingList flipAxis(Axis axis)
{
public FacingList invert() { return FACINGS[15 - code]; }
public FacingList opposite() { return FACINGS[opposite]; }
public FacingList add(Facing facing) { return FACINGS[code | (1 << facing.getIndex())]; }
public FacingList add(FacingList facings) { return FACINGS[code | facings.code]; }
public FacingList remove(Facing facing) { return FACINGS[code & ~(1 << facing.getIndex())]; }
public FacingList remove(FacingList facings) { return FACINGS[code & ~facings.code]; }
public boolean contains(Facing direction) { return (code & 1 << direction.getIndex()) != 0; }
public boolean contains(FacingList facings) { return (code & facings.code) == facings.code; }
public boolean containsAny(FacingList facings) { return (code & facings.code) != 0; }
public boolean notContains(Facing direction) { return (code & 1 << direction.getIndex()) == 0; }
public boolean notContains(FacingList facings) { return (code & facings.code) != facings.code; }
public FacingList flipFacing(Facing facing) { return contains(facing) ? remove(facing).add(facing.opposite()) : this; }
public FacingList flipAxis(Axis axis) {
FacingList result = this;
for(int i = 0,m=array.length;i<m;i++)
{
if(array[i].getAxis() == axis)
{
result = result.remove(array[i]).add(array[i].opposite());
}
}
for(int i = 0,m = array.length;i < m;i++) { if(array[i].getAxis() == axis) { result = result.remove(array[i]).add(array[i].opposite()); } }
return result;
}
public Vec2i getOffset()
{
return offset;
}
public Facing getFacing(int index)
{
return array[index];
}
public int getCode()
{
return code;
}
public int size()
{
return count;
}
public boolean isEmpty()
{
return code == 0;
}
public boolean isFull()
{
return code == 15;
}
public Vec2i getOffset() { return offset; }
public Facing getFacing(int index) { return array[index]; }
public int getCode() { return code; }
public int size() { return count; }
public boolean isEmpty() { return code == 0; }
public boolean isFull() { return code == 15; }
@Override
public String toString()
{
public String toString() {
StringJoiner joiner = new StringJoiner(",", "[", "]");
for(int i = 0,m=array.length;i<m;i++)
{
joiner.add(array[i].getName());
}
for(int i = 0,m = array.length;i < m;i++) { joiner.add(array[i].getName()); }
return joiner.toString();
}
@Override
public boolean test(Facing t)
{
return (code & 1 << t.getIndex()) != 0;
}
public boolean test(Facing t) { return (code & 1 << t.getIndex()) != 0; }
@Override
public Iterator<Facing> iterator()
{
return new Iterator<Facing>(){
public Iterator<Facing> iterator() {
return new Iterator<Facing>() {
int index = 0;
@Override
public boolean hasNext()
{
return index < size();
}
public boolean hasNext() { return index < size(); }
@Override
public Facing next()
{
return array[index++];
}
public Facing next() { return array[index++]; }
};
}
public static int toNumber(Facing...facings)
{
public static int toNumber(Facing... facings) {
int value = 0;
for(int i = 0,m=facings.length;i<m;i++)
{
value |= (1 << facings[i].getIndex());
}
for(int i = 0,m = facings.length;i < m;i++) { value |= (1 << facings[i].getIndex()); }
return value & 15;
}
public static int toNumber(boolean[] facings)
{
return (facings[0] ? 1 : 0) << 0 | (facings[1] ? 1 : 0) << 1 | (facings[2] ? 1 : 0) << 2 | (facings[3] ? 1 : 0) << 3;
}
public static int toNumber(boolean[] facings) { return (facings[0] ? 1 : 0) << 0 | (facings[1] ? 1 : 0) << 1 | (facings[2] ? 1 : 0) << 2 | (facings[3] ? 1 : 0) << 3; }
public static boolean[] toFlags(Facing...facings)
{
public static boolean[] toFlags(Facing... facings) {
boolean[] array = new boolean[4];
for(int i = 0,m=facings.length;i<m;i++)
{
array[facings[i].getIndex()] = true;
}
for(int i = 0,m = facings.length;i < m;i++) { array[facings[i].getIndex()] = true; }
return array;
}
private static FacingList[] createArray()
{
private static FacingList[] createArray() {
FacingList[] facings = new FacingList[16];
for(int i = 0;i<16;i++)
{
facings[i] = new FacingList(i);
}
for(int i = 0;i < 16;i++) { facings[i] = new FacingList(i); }
return facings;
}
}
@@ -6,26 +6,25 @@ public class SmoothFloat
protected float target;
protected float agility;
public SmoothFloat(float agility)
{
public SmoothFloat(float agility) {
this.agility = agility;
}
public SmoothFloat(float value, float agility)
{
public SmoothFloat(float value, float agility) {
this.value = value;
target = value;
this.agility = agility;
}
public boolean isDone(){return Math.abs(target - value) <= 0.5F;}
public void update(float delta){value += (target - value) * agility * delta;}
public boolean isDone() { return isDone(0.0005F); }
public boolean isDone(float limit) { return Math.abs(target - value) <= limit; }
public void update(float delta) { value += (target - value) * agility * delta; }
public void setTarget(float value){target = value;}
public void addTarget(float value){target += value;}
public void setTarget(float value) { target = value; }
public void addTarget(float value) { target += value; }
public void forceFinish(){value = target;}
public void forceFinish() { value = target; }
public float getValue(){return value;}
public float getTarget(){return target;}
public float getValue() { return value; }
public float getTarget() { return target; }
}
@@ -9,36 +9,28 @@ public class SmoothVec3f
Vec3f helper = Vec3f.mutable();
float agility = 0F;
public SmoothVec3f(float agility)
{
public SmoothVec3f(float agility) {
this.agility = agility;
}
public SmoothVec3f(Vec3f vec, float agility)
{
public SmoothVec3f(Vec3f vec, float agility) {
value.set(vec);
target.set(vec);
this.agility = agility;
}
public boolean isDone()
{
return target.distanceToSquared(value) <= 0.005F;
}
public boolean isDone() { return isDone(0.0005F); }
public boolean isDone(float limit) { return target.distanceToSquared(value) <= limit; }
public void update(float delta) { value.add(target.difference(value, helper).multiply(agility * delta)); }
public void update(float delta)
{
value.add(target.difference(value, helper).multiply(agility * delta));
}
public void setTarget(Vec3f value) { target.set(value); }
public void setTarget(float x, float y, float z) { target.set(x, y, z); }
public void setTarget(Vec3f value){setTarget(value.getX(), value.getY(), value.getZ());}
public void setTarget(float x, float y, float z) {target.set(x, y, z);}
public void addTarget(Vec3f value) { target.add(value); }
public void addTarget(float x, float y, float z) { target.add(x, y, z); }
public void addTarget(Vec3f value){addTarget(value.getX(), value.getY(), value.getZ());}
public void addTarget(float x, float y, float z) {target.add(x, y, z);}
public Vec3f getTarget() { return target.copy(); }
public Vec3f getValue() { return value.copy();}
public Vec3f getTarget(){return target.copy();}
public Vec3f getValue(){return value.copy();}
public void forceFinish(){value.set(target);}
public void forceFinish() { value.set(target); }
}
@@ -1,29 +1,19 @@
package speiger.src.coreengine.math.value;
public class ConstantValue extends Value
{
public class ConstantValue extends Value {
public static final IValue MINUS_ONE = new ConstantValue(-1F);
public static final IValue ZERO = new ConstantValue(0F);
public static final IValue ONE = new ConstantValue(1F);
final float value;
public ConstantValue(float value)
{
public ConstantValue(float value) {
super(0F, 0F);
this.value = value;
update(-1F);
}
@Override
protected float calculateProgress(float time)
{
return value;
}
protected float calculateProgress(float time) { return value; }
@Override
protected void onInitialValueSet()
{
finishProgress();
}
protected void onInitialValueSet() { finishProgress(); }
}
@@ -2,21 +2,18 @@ package speiger.src.coreengine.math.value;
import speiger.src.coreengine.math.MathUtils;
public class CubicValue extends Value
{
public class CubicValue extends Value {
final float startValue;
final float startHelperValue;
final float endHelperValue;
final float endValue;
boolean smooth = false;
public CubicValue(float duration, float startValue, float startHelper, float endHelper, float endValue)
{
this(0F, duration, startValue, startHelper, endHelper, endValue);
public CubicValue(float duration, float startValue, float startHelper, float endHelper, float endValue) {
this(0F, duration, startValue, startHelper, endHelper, endValue);
}
public CubicValue(float start, float duration, float startValue, float startHelper, float endHelper, float endValue)
{
public CubicValue(float start, float duration, float startValue, float startHelper, float endHelper, float endValue) {
super(start, duration);
this.startValue = startValue;
startHelperValue = startHelper;
@@ -24,23 +21,19 @@ public class CubicValue extends Value
this.endValue = endValue;
}
public CubicValue setSmooth()
{
public CubicValue setSmooth() {
smooth = true;
return this;
}
public CubicValue setSmooth(boolean smooth)
{
public CubicValue setSmooth(boolean smooth) {
this.smooth = smooth;
return this;
}
@Override
protected float calculateProgress(float time)
{
if(smooth)
{
protected float calculateProgress(float time) {
if(smooth) {
float first = MathUtils.smoothQuadraticCurve(startValue, startHelperValue, endHelperValue, time);
float second = MathUtils.smoothQuadraticCurve(startHelperValue, endHelperValue, endValue, time);
return MathUtils.smoothLerp(first, second, time);
@@ -51,9 +44,5 @@ public class CubicValue extends Value
}
@Override
protected void onFinished()
{
finishProgress();
}
protected void onFinished() { finishProgress(); }
}
@@ -1,15 +1,8 @@
package speiger.src.coreengine.math.value;
public interface IValue
{
public interface IValue {
public float get();
public default float get(float min, float max)
{
return min + ((max - min) * get());
}
public default float get(float min, float max) { return min + ((max - min) * get()); }
public float update(float particalTicks);
public boolean isDone();
}
@@ -2,45 +2,33 @@ package speiger.src.coreengine.math.value;
import speiger.src.coreengine.math.MathUtils;
public class LiniarValue extends Value
{
public class LiniarValue extends Value {
final float startValue;
final float endValue;
boolean smooth = false;
public LiniarValue(float duration, float startValue, float endValue)
{
this(0F, duration, startValue, endValue);
public LiniarValue(float duration, float startValue, float endValue) {
this(0F, duration, startValue, endValue);
}
public LiniarValue(float start, float duration, float startValue, float endValue)
{
public LiniarValue(float start, float duration, float startValue, float endValue) {
super(start, duration);
this.startValue = startValue;
this.endValue = endValue;
}
public LiniarValue setSmooth()
{
public LiniarValue setSmooth() {
smooth = true;
return this;
}
public LiniarValue setSmooth(boolean smooth)
{
public LiniarValue setSmooth(boolean smooth) {
this.smooth = smooth;
return this;
}
@Override
protected float calculateProgress(float time)
{
return smooth ? MathUtils.smoothLerp(startValue, endValue, time) : MathUtils.lerp(startValue, endValue, time);
}
protected float calculateProgress(float time) { return smooth ? MathUtils.smoothLerp(startValue, endValue, time) : MathUtils.lerp(startValue, endValue, time); }
@Override
protected void onFinished()
{
finishProgress();
}
protected void onFinished() { finishProgress(); }
}
@@ -2,47 +2,36 @@ package speiger.src.coreengine.math.value;
import speiger.src.coreengine.math.MathUtils;
public class QuadraticValue extends Value
{
public class QuadraticValue extends Value {
final float startValue;
final float medianValue;
final float endValue;
boolean smooth;
public QuadraticValue(float duration, float startValue, float medianValue, float endValue)
{
public QuadraticValue(float duration, float startValue, float medianValue, float endValue) {
this(0F, duration, startValue, medianValue, endValue);
}
public QuadraticValue(float start, float duration, float startValue, float medianValue, float endValue)
{
public QuadraticValue(float start, float duration