From c9f96297378028b5d84c0c1a073b0ef7b4088a03 Mon Sep 17 00:00:00 2001 From: Wang Yuyang Date: Thu, 4 Nov 2021 22:21:28 +0800 Subject: [PATCH] big-change-&-FPS-mode --- .idea/inspectionProfiles/Project_Default.xml | 10 + .idea/modules.xml | 2 +- .idea/uiDesigner.xml | 124 ++++ Assignment3.iml => Project1.iml | 0 bin/GraphicsObjects/Arcball.class | Bin 2067 -> 0 bytes bin/GraphicsObjects/Point4f.class | Bin 1715 -> 0 bytes bin/GraphicsObjects/Utils.class | Bin 748 -> 0 bytes bin/GraphicsObjects/Vector4f.class | Bin 2175 -> 0 bytes bin/GraphicsObjects/quat.class | Bin 3384 -> 0 bytes bin/META-INF/MANIFEST.MF | 3 - bin/MainWindow.class | Bin 11075 -> 0 bytes bin/Scene/Objects/Ground.class | Bin 0 -> 2345 bytes bin/Scene/Objects/Human.class | Bin 0 -> 8011 bytes bin/Scene/Objects/LAVA_Door.class | Bin 0 -> 2265 bytes bin/Scene/Objects/TNT_Door.class | Bin 0 -> 2280 bytes bin/Scene/Objects/Wall.class | Bin 0 -> 2339 bytes bin/Scene/Scene$1.class | Bin 0 -> 3418 bytes bin/Scene/Scene.class | Bin 0 -> 2181 bytes bin/Scene/base/IDrawListener.class | Bin 0 -> 197 bytes bin/Scene/base/IDrawable.class | Bin 0 -> 171 bytes bin/Scene/base/IMovable.class | Bin 0 -> 218 bytes bin/Scene/base/IScalable.class | Bin 0 -> 166 bytes bin/Scene/base/SceneManager.class | Bin 0 -> 1405 bytes bin/Scene/base/SceneObject.class | Bin 0 -> 4450 bytes bin/base/GraphicsObjects/Arcball.class | Bin 0 -> 2132 bytes bin/base/GraphicsObjects/Point4f.class | Bin 0 -> 1755 bytes bin/base/GraphicsObjects/Utils.class | Bin 0 -> 758 bytes bin/base/GraphicsObjects/Vector4f.class | Bin 0 -> 2624 bytes bin/base/GraphicsObjects/quat.class | Bin 0 -> 3454 bytes bin/base/RenderProgramStatement.class | Bin 0 -> 154 bytes bin/{ => base}/objects3D/Cube.class | Bin 1581 -> 1636 bytes bin/{ => base}/objects3D/Cylinder.class | Bin 1504 -> 1534 bytes bin/{ => base}/objects3D/Grid.class | Bin 1194 -> 1209 bytes bin/{ => base}/objects3D/Sphere.class | Bin 1477 -> 1487 bytes bin/{ => base}/objects3D/TexCube.class | Bin 2462 -> 2507 bytes bin/{ => base}/objects3D/TexSphere.class | Bin 1947 -> 1957 bytes bin/main/Camera.class | Bin 0 -> 3600 bytes bin/main/Engine.class | Bin 0 -> 6547 bytes bin/main/Main$1.class | Bin 0 -> 801 bytes bin/main/Main.class | Bin 0 -> 2144 bytes bin/main/MainWindow$1.class | Bin 0 -> 1727 bytes bin/main/MainWindow.class | Bin 0 -> 9544 bytes bin/main/Util.class | Bin 0 -> 706 bytes bin/objects3D/Human.class | Bin 6335 -> 0 bytes hs_err_pid3890.log | 612 +++++++++++++++++++ hs_err_pid87864.log | 10 +- src/META-INF/MANIFEST.MF | 3 - src/Scene/Objects/Ground.java | 54 ++ src/{objects3D => Scene/Objects}/Human.java | 142 +++-- src/Scene/Objects/LAVA_Door.java | 113 ++++ src/Scene/Objects/TNT_Door.java | 119 ++++ src/Scene/Objects/Wall.java | 54 ++ src/Scene/Scene.java | 175 ++++++ src/Scene/base/IDrawListener.java | 13 + src/Scene/base/IDrawable.java | 13 + src/Scene/base/IMovable.java | 16 + src/Scene/base/IScalable.java | 15 + src/Scene/base/SceneManager.java | 32 + src/Scene/base/SceneObject.java | 123 ++++ src/{ => base}/GraphicsObjects/Arcball.java | 2 +- src/{ => base}/GraphicsObjects/Point4f.java | 2 +- src/{ => base}/GraphicsObjects/Utils.java | 2 +- src/{ => base}/GraphicsObjects/Vector4f.java | 11 +- src/{ => base}/GraphicsObjects/quat.java | 4 +- src/base/RenderProgramStatement.java | 12 + src/{ => base}/objects3D/Cube.java | 6 +- src/{ => base}/objects3D/Cylinder.java | 4 +- src/{ => base}/objects3D/Grid.java | 8 +- src/{ => base}/objects3D/Sphere.java | 2 +- src/{ => base}/objects3D/TexCube.java | 6 +- src/{ => base}/objects3D/TexSphere.java | 2 +- src/main/Camera.java | 160 +++++ src/main/Engine.java | 239 ++++++++ src/main/Main.java | 78 +++ src/{ => main}/MainWindow.java | 442 +++++--------- src/main/Util.java | 23 + 76 files changed, 2277 insertions(+), 359 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/uiDesigner.xml rename Assignment3.iml => Project1.iml (100%) delete mode 100644 bin/GraphicsObjects/Arcball.class delete mode 100644 bin/GraphicsObjects/Point4f.class delete mode 100644 bin/GraphicsObjects/Utils.class delete mode 100644 bin/GraphicsObjects/Vector4f.class delete mode 100644 bin/GraphicsObjects/quat.class delete mode 100644 bin/META-INF/MANIFEST.MF delete mode 100644 bin/MainWindow.class create mode 100644 bin/Scene/Objects/Ground.class create mode 100644 bin/Scene/Objects/Human.class create mode 100644 bin/Scene/Objects/LAVA_Door.class create mode 100644 bin/Scene/Objects/TNT_Door.class create mode 100644 bin/Scene/Objects/Wall.class create mode 100644 bin/Scene/Scene$1.class create mode 100644 bin/Scene/Scene.class create mode 100644 bin/Scene/base/IDrawListener.class create mode 100644 bin/Scene/base/IDrawable.class create mode 100644 bin/Scene/base/IMovable.class create mode 100644 bin/Scene/base/IScalable.class create mode 100644 bin/Scene/base/SceneManager.class create mode 100644 bin/Scene/base/SceneObject.class create mode 100644 bin/base/GraphicsObjects/Arcball.class create mode 100644 bin/base/GraphicsObjects/Point4f.class create mode 100644 bin/base/GraphicsObjects/Utils.class create mode 100644 bin/base/GraphicsObjects/Vector4f.class create mode 100644 bin/base/GraphicsObjects/quat.class create mode 100644 bin/base/RenderProgramStatement.class rename bin/{ => base}/objects3D/Cube.class (58%) rename bin/{ => base}/objects3D/Cylinder.class (60%) rename bin/{ => base}/objects3D/Grid.class (57%) rename bin/{ => base}/objects3D/Sphere.class (84%) rename bin/{ => base}/objects3D/TexCube.class (74%) rename bin/{ => base}/objects3D/TexSphere.class (79%) create mode 100644 bin/main/Camera.class create mode 100644 bin/main/Engine.class create mode 100644 bin/main/Main$1.class create mode 100644 bin/main/Main.class create mode 100644 bin/main/MainWindow$1.class create mode 100644 bin/main/MainWindow.class create mode 100644 bin/main/Util.class delete mode 100644 bin/objects3D/Human.class create mode 100644 hs_err_pid3890.log delete mode 100644 src/META-INF/MANIFEST.MF create mode 100644 src/Scene/Objects/Ground.java rename src/{objects3D => Scene/Objects}/Human.java (84%) create mode 100644 src/Scene/Objects/LAVA_Door.java create mode 100644 src/Scene/Objects/TNT_Door.java create mode 100644 src/Scene/Objects/Wall.java create mode 100644 src/Scene/Scene.java create mode 100644 src/Scene/base/IDrawListener.java create mode 100644 src/Scene/base/IDrawable.java create mode 100644 src/Scene/base/IMovable.java create mode 100644 src/Scene/base/IScalable.java create mode 100644 src/Scene/base/SceneManager.java create mode 100644 src/Scene/base/SceneObject.java rename src/{ => base}/GraphicsObjects/Arcball.java (94%) rename src/{ => base}/GraphicsObjects/Point4f.java (97%) rename src/{ => base}/GraphicsObjects/Utils.java (88%) rename src/{ => base}/GraphicsObjects/Vector4f.java (93%) rename src/{ => base}/GraphicsObjects/quat.java (94%) create mode 100644 src/base/RenderProgramStatement.java rename src/{ => base}/objects3D/Cube.java (93%) rename src/{ => base}/objects3D/Cylinder.java (94%) rename src/{ => base}/objects3D/Grid.java (97%) rename src/{ => base}/objects3D/Sphere.java (96%) rename src/{ => base}/objects3D/TexCube.java (95%) rename src/{ => base}/objects3D/TexSphere.java (97%) create mode 100644 src/main/Camera.java create mode 100644 src/main/Engine.java create mode 100644 src/main/Main.java rename src/{ => main}/MainWindow.java (52%) create mode 100644 src/main/Util.java diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..b6f4091 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 9411eec..8c66cbc 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assignment3.iml b/Project1.iml similarity index 100% rename from Assignment3.iml rename to Project1.iml diff --git a/bin/GraphicsObjects/Arcball.class b/bin/GraphicsObjects/Arcball.class deleted file mode 100644 index 1fa1fde3d7eaa1976ef04de677d76217e4c50a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2067 zcmaJ?T~`}b6x}z;WHQMRT7(SYqkxqf(iU2ah(KEiNTEXcl#f~;hGc-jFrkwP=pW$C zwS4i(S0DSJYgusVTK)i^{XOcwGhs@hlB|1k?wNb{*=L_~Cx89(`=0;?@l_H{7*{co zL#JlM61)rGA+tLRk+UeZ4*5IMXj(01wR8uwJ(!ENq{kJ*mxJraoK`ql(ula-Ps z&^Tv1*0b9FmgTORTV;Bh<|;+Ayk@$#T-Tj3Z`ZC0WG@AnaEn`JxlH_qYSFbUXSK3e zu^m$F&du`Ecj?4AN`jDLn&TUeS&nZ7Qb)E^svND`C2v-b1rM>&0hhLhEQj zM#rZZQL&_B87mTPRmTl<>G%R`I@YlveVaO-<4YYcFeG4H#H;fWxaR9nHl3Y;pbG`k zZ(P)ig^N{Ry0T!oslF+x`!qjNDW&LEsw~-1?*AL(%ASdqD#Y!)>Nq>eS}{Yz_%zge^pRDv~tdJwS*`wpgn&Ik^cjc z%~M2QBSur98GjA+7yob@=O)BBU+3I}M#8ocxSbw7fItU2xnh3k3gE>U;z-fw<~v(r zCrBJOIKzqd<4*o=8wqDv={RnQoh{;qVkmn?+=%aO4Qqz>-EYvoA5I#Y{=<*x)QzMw ztV&vjDz~ZJmP(x>`Lpj+jJR%S+x{8f%cxN@1a3j&+(ni*nf3?hrRO7jh*9*RfIMb! zn>}^c&*Xq?XP8wt1ym*PdQQ@MpXa4iE-`LWR%!Lpiu%?qS~223Cvp#8m%W%rj#iv; zw;8Di2}T`fydLry#V3r~gCy?obOz#IQb?(|EBJ}9XdF_>ehdUkqC_NxzH~m{-rp``~~iX5&tHFRIU&P98vPWLd_~C&`08D zW`itBghk25Pmvx;?2RX_b$PUw}jO;Mk8@!(K#y$*h?1*&nfqw3`UgW(-f!F;Y!PV63K?EN0WCV}@ E1IRvaHUIzs diff --git a/bin/GraphicsObjects/Point4f.class b/bin/GraphicsObjects/Point4f.class deleted file mode 100644 index 607119bb0b03d5db9e8aab0af03c9605c4b530d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 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 diff --git a/bin/GraphicsObjects/quat.class b/bin/GraphicsObjects/quat.class deleted file mode 100644 index 0ab9924697e74690e2649c3e6e0f71c9b5b3a25a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3384 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 diff --git a/bin/Scene/Objects/Ground.class b/bin/Scene/Objects/Ground.class new file mode 100644 index 0000000000000000000000000000000000000000..f707049118b59ba317df79cec46d36ab4e581348 GIT binary patch literal 2345 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 literal 0 HcmV?d00001 diff --git a/bin/Scene/Objects/LAVA_Door.class b/bin/Scene/Objects/LAVA_Door.class new file mode 100644 index 0000000000000000000000000000000000000000..ba769f5296109b081c8bb47f616d0ad1791d0f8f GIT binary patch literal 2265 zcmcgsO>7%Q6#m9>;@I9KB&m~z(jWeUleXE0q%^J5&@_(I6el%ta4DdcwY}MFy4^MF zH4fakA#vk|#EkxF94X4&0F7#0?1v2?+_rH@l8$NoYk8Xziz&H}B2& z=9_Qc7r%dY6TmoLjG-T+5j+_~2xC$7VO)BSNAVO+#AqgB^qp+SsTfk2jNo(}aZE%o z6+;J}mgY?O7Ppe4X}QT+Ihv6sEzN8MnF!_t!lhbK7ucIEYE@lzifekwtB$4BWqo~y zD=C4tNz*pHDS^w$AZX6jDywFxdLal_bB<|y<14BASuGIGahW_+U@bFFnYDCfOB%}J%_?ZFDd!Dm*jqKL0t4B6Nw;-%yPE8DVfsqiaa>ut-x)p`xGc>!)V$}Kwvoy@uA$m`y{y%3wQ8BAtEyAcZNrj^kie-a z5*y8%hONn|!2AC%3-?*GudlMJ)dgCTauUlsHMgW^OnKLxP1TG@+7&#AeWY^tHz8L? z6zs)-91TWrPQg6RD|kk_vse&N%KC~{v%D)7cZ*T4vt!TVfx zbX38!SW=M3vV!MOP;gN~Jul5AXy!71Rf+<@sHyVgU7;@odwM}mgDjj)K^W9 z%na-z2tR}>2p3JeED$$zuOSYqGLanGDKrLm@6a=Ef|&w?$=hTYRF-P&;VZM@;v+Sz zSv%+m;pDu$#4f`ka!zx#Yr3bqCZBwAe%@bFxa4Yf)zUnDMfx+Dj7*8ADFPvNzmF-#7u+nB#0^(t|+kW;_!9OpawuNJ=g!UoMN(l1JcBN7msoj@_mot@dn@^ zJreK@wDJQI5^x~AiPpbBw%i7}4^cwyVWNZ_4-%V@i6&&C37J3uNdP>7B#Rtkrs5YS zJ+kb>^n`GPzM~ikcnB$enGk&+qiq9`;SIF+L^lw-h4`mXsDh5~x6n!3okaH_w$Rn{ zKs>&M?&0eQZ=h!jz44BJH{Y@0y&Z9e+*!jvcI?^0-G2VL6MstKYu*CLdmFE~pRDgE z-$T6QV;IB<@_mZzo*}n$Uqf4hl}n8r`vVI* BCQ$$Y literal 0 HcmV?d00001 diff --git a/bin/Scene/Objects/TNT_Door.class b/bin/Scene/Objects/TNT_Door.class new file mode 100644 index 0000000000000000000000000000000000000000..b0461fa039b5fd42cb2a9af4d31ea615512db546 GIT binary patch literal 2280 zcmcguO-x)>6#nioFwD%O$j~XEEwonYKwG91YH5ekA7JRzDMc8uwNZRCygn|zzBj)2 zrqG?nl{*tx?o3=5ceW~EO-xN(>CVKRF)=3Y+?kk|X#DP*0gDiul4u4_?mhRM^PTzb zcTeW)Kkt13U=Y`1XhVMl$72X#Ac{R0RGt%2JcE-lnxPndry6lOh75)yI1@)4LlKO` z(1f$foKvai)#`#Wqv89ktX5;nj7N}-U_zk2R4E$$0`2*t?ip#PxM-AoZ(uB4FqTJo zlo4ncmbUaq1YS;6gC<7m1=N$%8|A|cq6lu(^m$ork zxmh&af?l-fN#vc9Zq4ehRQsAU>@P@9bv{!vY$LtiO<}SyH|995>fCXqDQ$tye{W5o zvFv!#mkwj=Jwg$)Yx|syh6P^xFZswX>bLZC#g|t4qV6qR*2@7!jlQw$S6qW%ymgxp zfjyh4x?NtUE4MX#xazWW+f2{+uC&ce-f_*eZ7j{}OLp3`Wa-tkQ#NeVQi4#xnGq5j zosp)ktF6EX|1S$W>^YFvysIw>)TPuWHse&>l983_uAA0H)2CS1@Hn0zliR-tb=s$) z9UW@b9l=EnIb724ta9gZnQHQFf6kNhMg)@@u3$=F|HF6{NU9KPX^~vlD4)pp_iK0# z(;8+_(D1xMm{sNlT-9(*tzN`5TiyN%Y#apNB#5cL5`ng@{fs)6<5K@i3(_Yi9otAD z2;u#Qi_)GKh?|CAlLhsdO!aJ)7=v53D4BP_Oo8sy0|KmemZ{YUG+A?zP}3T>tD_*C z%BkyXHZ3Ag>8^g$@C{e;v8Qsm;3z)EYv!REUjmwGO;yzUp}v=cZNb%T&(eM4hDyq2 zv#MU4VNQ8HDr#C|(o=vqz(L!_(JA=PJEyJVngXHS%Uua!et_2A!$*#;LiB!)(6v?6 zeTwiMxEYitcZ#4~F*v}mc5bDVQrWFUd3I)EW@N^BZn;r%D2I~0% zk_xaRyo&mNK-N6~xffAF?xsgU4ptL4Ad?%A$qmRPs*nW0A*9%34>Pr(G38NhAEqaS zBlI0bUzLZ@fuK!@uDfVhL8NyDjfvsC?^y3gR986!b>Q|V?H>~_E3iyuG<$Dg7pKujFbF}<|>-ZHf z;Wy0Tcj)*7CB6eg)WH-DkRl38Xs|^y$|3<*B;kp6_@WcH0>K5c5nVOG38Vwz9QzCV CJ1GYM literal 0 HcmV?d00001 diff --git a/bin/Scene/Objects/Wall.class b/bin/Scene/Objects/Wall.class new file mode 100644 index 0000000000000000000000000000000000000000..f17b44a7be7b81463640a24652c88fb7151bc82d GIT binary patch literal 2339 zcmd5-U31$+6g_LpacnCocH%gJ(xy;?;xrX$622S)Y0{(yr%iB3hZh*xR-Fy16l58< zkNf~;c;^T33~Dug=-C_uhT*$Irh4Si-F| z^0<=3Vj3|lr7(_VWqDlD3PHdeB+PCdqR)zSWw0vni4i$% z`PR{atha7P&gPCM-C*f<>1n?16VCG)Ji9NTt$Phy;7moj_Ko(Pn(gmdHHVg5#j9J+ zzU51`?i#h=K(++NE7iK~+U6rRw=Bm|tUX^gr7Ljm$+QH9kGz%)q(|RGi!j7HKRBjG zR^anzsYT_``oc2XfppC4R_kEfItt|(4(z)@+qb#tu>mdu6MvWK-q9ne%Kh#uk;$># zrdbVq={8Fh&u^Np-Dy}I*K9em{+a0=*>2NO$)JEss}wd>l}*=DOM!3yTNR#?vr4V6 zpDEL@b{;Q_Ubgg$A04Of1y+=IzyGh;{R^43hHrHQ;)c>ZUG>_2-QJX{q*AIbFRR4X zF^MTA>)?i?zM48FP*AgrYM2wqtJHKlhs?!pN^Vsa7IbXkdJ<(F@8bg<6&1LR8v=U6 zzHPOg;M0cmgCuV1*uk#A^gkuIjt^1Qv4@Xz?4!!Y)8AXjJTiv-!)erd*tnVwD`m&> ztvhyL`;uMAD3{Ahi$Xv2y61R4drs#-1{7#&K>39(tU0YFT{h`V(+;|&$R3b4W(Q=J zK(?=Y@IV+TFk_r5`iOL?`;V{>bWLoDP3M{$wO-8#`DZqGu*6n(0{Ix5YE!AEvmsl` z4;Ogz&>WxVs?N2>_gHc6()I3_%=aMkh#(1oS1?18uQE~(i7AUg%PcK1Za~qR>(crPLwtZj zL~AN>f}tl6n?{BJ6NFX7R-@1!u|khnp+~IHBUZpAs-i?MgcK8}C@PD=ZAKL5N%1mF zj!L<2LM4IS?8w8c5zo$w`xp-Av1tB1QpZRakCDmg#~Aqyqd(yc^KRtfeLNRBB0B>H z6@P%1%N`>aej5Ahpl7HzNJpnSlbGkxntWcvG8V9gD=ggx_DG{~Y)oxMP;zw>*_a3d4US1@z{cQWadYBeav>vmER8MAh|x#_ z5~m~qlH!mMNJ$MTNt-rplitX}#;aZJN+0^rK6Le^FMa7lU%L7O`Vv;s?~LR~Py#E_ z^6YbFpMCc2?ETI0Uq1cq9{{Yw#Sp%M$0Qk*gzWRVQ?uLC46r@@9JNnVlzA-E`L@KBV> zOM%Uoz_G01b{v$PLy{bpW^eHWGOKG;AkgoOn*uGvmTm4R=8~rSsFBQ) z(>Cm+jO?i4TJpWh40suIR%Cyb6PdnEzs9TcegyWi9j8ta8 zHOd0ZV^x`?QK$;;Oir39Z-aEA!OP_ZZXfm+x4K3?W2Fj}^+J4K} zv=OK1rp!T0#;Ez(yib-4GrYx4Wu1a$rxT`^amH1=q~j=#>4>3AN4F#^CFzl56^^TT zS;s3l&Uhev z9JUG`E7cX~s9W-#5t+Baph0`dQ^^n_s>vdrolb+PjN z>W@j$+)|37Qdy_^_)wV*Bci)L=_bRuHUah^?Z=2KkfGXuGn-LZx#B z9*Nz==FNQy=M2k^_ZvCWWjh32$1^<3VME?AT+3V0v$FA$4;NL`SSwNEwi`>Zo3qTf zm+{jzNbssv0JBbZ$aD4>jJTXE+TaUdyzEdkX2WBBZpXDIW9OwPePHe$#UYm zT%O5@=bA>24lTV7o5{;dp{#_kdX%r!r4N(Ag6VClAYdTor#WQRK@;nNXK>d|lPyud zY-Fc66g-E(8)k_)`AUUhHNUO*K;T{kT3aQ&033-h{z#DVN8${>%nf{2;XX>oIU9h2 zMvlw6SI$9n_sl`*UNwh??r2~Rf$qy_yvS9B7Jw%10Ya22R<;PGHt=a;DJ66pjbi8LC+9ibT-ay@}Zud6Uy*AsuO$`gU zrBD4GTE;G;wJ+Fx31S{gW--0U3PnS58V*OA!k5uDkEMN~fWPS@eC-n2+d3wCwPO|`>nF> z?&5Q|Ea?Wnq(8;CI3MHNKHegq;63t5wDU&ViKnp^`>`3%U>gkVMv|*3-a^MwhKXrR z@JpS>d1UyBvoOyK>F+UxKk-ibSLE<_IQS>>_%{yV3JOAjCt6VyccUa8Kv_JDgJJ-O zMFP)?5loAx@VuDd-SaSxh$DDG%-}_F0WXP*I4Tx!Oni)&#h>wt_!~}$e_%%Z3$Kd* z;-t8O*Axw}D=TnHS&cW8^*F6;#2IBP-c%Aet2~CclniE-JkBXc@wRdT7nIX@M>&i4 zlyi9BZ{;h9GO7buk6wfrRRRy9kJ&g+x`9ua5#Ec3IMW%=R7H-_^jG8<)9Q*GBU@3C zV=R+Zxf$LAe0_}P{;J$XUc!BSjH4>YD60AxOI05us_H|FGJ}V)kwDb09OIci!V~LM zO4vlN0$8i0c~X4@vdzj~>ggj?ZBzCT+`0%xyOkmO(2Jl1r7B>_*&wzOvbOR3*CY5D zk1V8ONX55RY*#U?D2j@NiXFfwnEnLM@o(AkC7;nS7o?nzdpj3#j{!-X1c*PKHO$m} q-UrM}dTp1Olbhxe%2$DHKzKW0S;w4m}3^SEx&SiJM-97v5k^cDW*WUmv<7)|* zkP&f5#3w>N0!WA=E8?!O`U~I0k(Cg^JqbCiipUFvKe;%Gdm;)#;XA$=#(m*;5{p<9 zRyP14PlE)7+pJ3%=ktby^C(LA6q_PS5~fh*F1JK%i+I2w7cEP7@}}mxy2}v1V_1fl zWr(KdYK%PEEuCScWLWxE`)NaWs#?P&iBhtgnpx8vgYQG3;O!ga<4md2)Gb~0#|%S) zyYx2m|x1VYj!@1DOcH=;Adak;`#gwVoaO9X_OE*33 z@5p_6(r(_bKi=uruG+S#`*D43F0`tIbAdss*lnk&uNl1Ll3&6lUL_fqafO`u61DFX z4AXvT*B$L}-)OpB9?Cok}s@uc>ZT9~W%fVVLMwlybFPs5x&td#ZVKuxF}Zw-p5xA$$w}VQhqb}Bm@;8a?@+{aH^iAO9Rgz)+qBf+HUPm zYvb_fC)%E2SZlTX+`EZRoxCG~%I~x9|JURP*5$v>mM~nRt6(3|)e_Rhxm||QUj4&1 zCjy>pW?SEWLJgAMoeM6g&rt6oY^Mi^-&(}Ep6M%Qu|OBRWVjxEQuwu{{<%osVg5wH zXm^FicW9^5%xI3ycffw8MFdxAjQhd~yi032Fu*muN4o^lm?H^+*(=gTX?}K$Nc|Ym zdQuUR$qr)vIvFnGbw%VaDTWq0NR;OnUqG5aMl!&3?Fimo5=532IYgZ4Gbiz&5GU=2 z!<0sRM<;S3zz7d;jCh?~Dq@gcDhSpCkDe0kU%*Njc}zJw2t20H%R?`8a4rZp{^p1Y zLiC8bMuY&44Qn=p1^b5@N za=hUCc}U(L(LcLF*;c8UYPgA?{JgS3oNivYg%9W~^gpGXma#&4DP;ce%k(Y!pJ#P$<H2WF^^q@D~wAZOBSq9oc8yClEUBHPG=0 QU3h@g9(?Bzg4Rd>1+~jKdjJ3c literal 0 HcmV?d00001 diff --git a/bin/Scene/base/IScalable.class b/bin/Scene/base/IScalable.class new file mode 100644 index 0000000000000000000000000000000000000000..885c794595c2064f9c2338c03bbab8a6a94df4da GIT binary patch literal 166 zcmX^0Z`VEs1_l!bPId-%b_Nbc29Dy?lHlaToK!{zB@LgX#Nt$a_oBptjLhU>|D>$c zkra r$H*W6lGV>i%uCmY7|O=Tz{tP^bO{3kBMTz~GXo2V#lQ+AnHbmro{%Z< literal 0 HcmV?d00001 diff --git a/bin/Scene/base/SceneManager.class b/bin/Scene/base/SceneManager.class new file mode 100644 index 0000000000000000000000000000000000000000..71cb11d5afb17072d08e63ff6d9a211005c16b49 GIT binary patch literal 1405 zcmaJ=TTc@~7(KJS(Xvo3Qp!aT@zRU3f_McD7i%Hgtp?+xzr+_` zHBm@3F+Te@{1?WkXJ!{zpz^S@-+c4UIp@2~k3V0&0hq^P3f(9sa3KW)#UxU=sH_>a zSP5K8A%R)7nM>eu0`mf9t7a_%hO6&5awA!B2u$Em{Zk3#tw;+%#JN2gY z+O92Nb&6Rml@*XxkuBTOrjNO>#M|*jr|Ec00+C#PO(1$_qeh%`$!Xg6+b=4%`$$$A z^bC|XsrT}SN$XViPqg+b=xI=qUOq1%Z-M>$y_*WRiwR?ISa0;s&xNZi2-bJ{%Ho3G``(hHTa?e>6FW zE$1~waVj|y5w?I2Ah#0KJrqgYs2VW_vHvQ_uU$AK{}fYvZ{2){f)9+!`S0bfnqEb7isuH`5sYd9 z(*YsjF~&%~FGeL{{DvWZVUmssy{fEk^NLcPQsiV!K0cgJhF6C*QO1wlgHMrkifDpT zrg^6DEWHO}3hx6QhSnaZ8`QU7mRJDe7yAs)&*EGF@{oTeDqbiC1@KA6#fSG#xj6{Ab155BQC;5V{T&5L;;Dbpdd)R!~uq7VBN*p<(kCYOrGTz zh80ryH9`T>vK*IPyhb)cL1mGeH5*@ z9>!P{6}Vo7!x)$DMi>)OgtX=p(cBEz3HKt)lF@vPc&WhwnHy5Sxd6`X#bT5o_7@05@!nhxXYaobnetlkAcWSChO#!4A%y;Q&!40aJclIG49N`dXt;US$b0> zXRqWIT{~-_Au(qyS@Ff3lZs!ova^@11s+f};w00SEHNz3F4CH1VlF^(PnX=P%T+y#Y%{`Idf0=-v zXShdvXnGdv>OvmwkFOTY4zF8Wc=S?{mP`{r49c+j$Nvh_3ve6B+PM*({q1FZ^0`nc zaWAvP1PCpun!ps9cCBRt2Rn+Re((a72`8Il9=IwBBPs8ffqmsy8rYSzbK@B|H9hPX zr`C>R|DMPO!V9{pvF339kXHe#=vrQGE8|%dn!5|Xg6agl#;Zk4^+rM~ zRrxNJ((mw+cqWk)&TQ%^aiqXcl$hAznPM(NHoU-SD|Z8aWEhB!WER~iyWf%WxT~n_ zbqhfzx*vpPTps55oA;#8>#*#5c0$TUql^e)b}3;yXMr(TDS_q^0XR z-BlRWL#9i;fjvcQRW|5%qoG)RIkTj-&nyt|bKTVt$u^z%<<>WeR2 zo?KBzhf|ALO_YJNWuiV$WY2$QR&z1n;;c4MJ892kT)WSjnw1Fy`=6-+YNPk^39v?a z+f&PPe9XN!eIRk-gaI>|8g;F7Hf81P85S0CPx)<0Hm9!1_l8VFk|`CA6l<)RobBch z4z%$@s1=oHLpxqWke^QsBz~?{NGz$5;i5)Hj2amlFmPPSU8tqpjX3)^sreIO1UNp7 zZNZ5BhKh+TRBj?r5Q7v$)P^?^DTq}RqtsS!!c=QJH&DY?%T`ytgXTaQz-y|5+hC!9K<>L!gDo8c>Hl*oQ{?)TcB9wJXbR6GAFxDke)e_i5RjegQLL>&X<0lCQgj+fWj^Z5Q_pvH| zO!&ieV2p6Z`CbjrcYfS=e%yC{+;@Il>MGBmLyCrA5e=g0B9)qk_esNPMxV}`D?CML zY?9<)%9f);-CPYo7`k|(o-Hh88}rh zQ?=eyorhdcHON$5=T8J%p;EC)rPUDO4>Q@W68JStV6+JAO%H5@X?cNlM=pVnsRveS zuB2Cx_5%g8A*H;b%;@|JdS(o=GvICRB?!5}P)w4iz@`qcTZDGI2uR3hE#!s2L552K z32p~+w)_D;V;O40H6!Dyk`(tVNQwR0OD)Ed5p%N?}OVfc)z@%u}xN)^$=9-)Cey)YTGD K4TgmT)961qUihv6 literal 0 HcmV?d00001 diff --git a/bin/base/GraphicsObjects/Arcball.class b/bin/base/GraphicsObjects/Arcball.class new file mode 100644 index 0000000000000000000000000000000000000000..739fd395f714950c7102fd9c92a3ad92b7f1dc0b GIT binary patch literal 2132 zcmah~T~`}b6x}yuGMQuuEdntOAEihQ=?AUF8WY+=KngXKPx+|zVMr!07$$Tw0sRBK zxt1?J`RZdIbS(=mUCSTfv%g2(cP31!3l_<`H|L(Ycb|RsId}5cKfnJ8U<_Zy(1{5Z zlQD!aq2VfuDyCvk{Ka&Pp3h>K!Bgp*mCHG4J(JVt@=!@m^KyEwVnM~CK(yR+oTaAW z3ZzS0M#CI^>KOYwR=KgTwQH8$#^@_PEC_@S?gzh#XZ>&{q}+alwZZMlyH+Au-wMPJExS@bT(>Ijj)3m3W=(5*hrnUS zbT|B;P3Gnp6{{&R9Ol<>mdRwrHOgPl8~a`c6jeZLxQ62v$y7k~iBX7HbH8G^rtc0N z+^3+{9w&!dsJ40Nmq6P#-Fd@xED}s*O1s8^F=|`&(V1G^aEr}q)pQC{)^=Gn(+>9b zoWGSU_bgjLA&n84uf?&;wPQ9+rWaeOH=VLMW66r>Eq(9Gs5+8(pBygi2p#XCOQ7%E z4X2Xp=thr@Pmx!#q+=N?5_eTcKL&Jsfi)fL*pR+W9WU^uj+b~S(0eXui=Mz0PnMct zZ;$#tDv)^VqI|4lxbe!7^~+3;Ov^IN@FRs&%1*t(3QlA$X_m{IsjX6Hgd3LvvEPO= zGna)UxA0!GM#S6&h~7QCfL7~{M%}vKJs9NW@8nw}#4iiwS*!(rRR~#I&MB^z&_)YL zXHOuqe;~AZg0?pZ(^P0i-a!4uJA93EC&HYsa_&S2VXqN5O^@zFpcj2y@&01KhZp0B zAWol??duL7BYM$)BXU%^n8R5 zQNRd_$YK_^*mifkO!mokmRVh=fU4x(%1K%`cwS275Mzk4N^6)_n`hmm6(;@*A`kL? zJB)c`Xhj&e%1DEVGU^254U$g*pD^kmVz|xIJrMtrLR`fi!B2=qXEEUdjFn zHKiOw&qq$pc3G4Vi;{|*Ad!z|Q&B!*u{&fNrIdGA_Is-4sd9l?k5hq1%<&0Vll)G3 z%wPIZ1Lnnmc`;yK444;N%;Qw_J~0)J+ti_ldJXdXfJ0@BF8+abu?7Mk<6%qFN$+|9 znk0Pd7+2o5x-aK59w>RFdOUfxfRx5?Il>6}a%;hDaF1*TE#3PQl-}3r*If8LnD8Df zkliBLEPIgG{mo|}3#@_cFpbK{4wJpX>nU&Squ|EorHc>rGq?5syw@o3x);R1ntCgU Kz+;{a;mLoZ*oL_P literal 0 HcmV?d00001 diff --git a/bin/base/GraphicsObjects/Point4f.class b/bin/base/GraphicsObjects/Point4f.class new file mode 100644 index 0000000000000000000000000000000000000000..e9f980670cabf49d33401fcaa77f7b7fd22f2279 GIT binary patch literal 1755 zcmaKs+fEx-6o&t8j~UyTK%CT^4@saII|L_zgc4{%4s}XP8YC*J+;waZWT-o1*+Z1% zCV7B9NiR?%QILvM^|}vL^t1DPL+tS9j(iN|6-G4V8ooIKCT^PD`-VKq%3-$D)P};qc3@Y2d2ZJuMl$fXgNEzvDO|SloBQ@_yI8Zmy<)ga@9C}DL34*l zzoGEZ>K;sZ&S>)8&)dPK9#yMu;CpsWVY>U}GiM6@&t0!gPv{jx(zEv2JERt}M?@Wv z^tOM{s5m88I+2OqEl4Rcn8I`hqZrFzTx3FI5@YOPyHur`ZwCs)?VYfAj}P2h)nV0? zmBF{z5c!U)d5(MrH$Y?JbG;S(oWf++JFNs1hT7opTouB!rD=1xcUh(TEJ-G1gg;gCt@OT5kn;L zk%uw52OsxQ2Z*?U6b7k7xP*(uW^t7#na~lgVU{a_%teq7^pFq_8gfk_vjUkD$gt6c zk|Sl9lo3)!Ng1P#YsymSDWXVJlCGpMrW1~7OHz(&OOlqNe2ME(G{13{Tg&6WQ-MXT z(D$clOZ0h;g~AbHhm^R8A(A-Enuk1!cNAoXb-c<{XHg)e2#f#Q3OdwWh&c;&nP+*z z3-n+jF=Oz@CBHW63^(`rKr&fBMe^kdQrYw|`X!2EWU>RH9q+J>4m%QNv;2-o6 z_N-6)yVcR3^|Sum#6raVnc+x9=1(#7Qg}CxaIs7yP9rOZLF1Ab2^yEnC-~x1#!5%Z z^Jgi~vmm!fQMmni+HQ*`hNg+3X}eu$r5?095p9u82y5DrTdtK`tVN5rXhw^cAZ_^5 Q+_rntW_50Nb-nNX577-mLjV8( literal 0 HcmV?d00001 diff --git a/bin/base/GraphicsObjects/Utils.class b/bin/base/GraphicsObjects/Utils.class new file mode 100644 index 0000000000000000000000000000000000000000..8b0fd0c752673def1ad38d010d2756753fb0b494 GIT binary patch literal 758 zcmZ`%O>fgc5PjqLgBa8AhBg!m{Qx(WFo)hiNKnZYk_87!d+3FY*`ym8Z)7_~{42N= z#DO2ck3!7aIrM;ic(XH_dGp?`|NQ;+8^94lA1*e0Y@+Yu9<~hJ_wc~OHo<+Na#g(~ zbi#u(f_S-BUg9CRi6S z3wo7*JtFj42aNohgRl{{^7`-ftVm_7j2FLF_S8rS;Ng~shXEd8$HQ)bJ?sZ~j3+F# z-4$V}Hjs&Y95sFk>$(_6*_X*UiyA-m8p3i~NKwffMhTnYn^vuB|GOK0py{kKgYB1R zk1{nStlqqa`OUIDhyMcebwI{6W0$jtBXM*FKS1C4V8Lf}>!OR>d=8ohj(0fgVgZX> zF~c93%;LD`{e+bq4m!`S(HYn^IyJfmuVJ4be&fD|dx576tHXRd%w~4<8XhcRnKK95 fSix$&Wew}|ZT(sYvykE9XJl-2n$8|)7ViE7Ge)Bl literal 0 HcmV?d00001 diff --git a/bin/base/GraphicsObjects/Vector4f.class b/bin/base/GraphicsObjects/Vector4f.class new file mode 100644 index 0000000000000000000000000000000000000000..767d538aecad71d4eaa2d86f82dc3cc35dde363c GIT binary patch literal 2624 zcmah~ZBrXn7(F-HO+pB-rG!@62Et3A1ZazjwjeE#T6rl7f@rJVgaFBe1e3s&GJf;z zOK1EMes*+5!D(mw0sbh*^W5DHDNWkU+-J}3z4tliIrrJkzyH1X2fzfZATDFR0X`%o z+?VjNga>|n66AHkkHrQAWI79PAoYkxPBDm_eQ)2VW4Y@M-CoY=mt;EyHv z6N2DM?x1APD9ps(vUBJy^9l`jx3)6nLf*HJQ4S05cu z)wf(I?uiYG!@E^rxxIDDt?&;?HykRMsbZnTlk^;nOSmE7ri5DxfpTHBT+HNm6gsFX zYaLo+IV-<2W|tLioJ2dk2}^R+=Z#=xRECIu*iWd@bP{cKb-=Xi8t6*%wPs zKMCP3?kTjMCA525q5165k|o|7rEiOL+K9~!&G8JZ{rz-)OCcV6-Kf{Sa|F`DZt0b? z+_tsV)3f!b(ZesnWqwu+C~=yI?mAcct?y|$uOZIxKp1;@cMJ~^5Fb8;8gBdx9tmCv zh6J3`p^JBn)zwEK-7gM(l?W$1%v$fjGzsDdZi{qKL&UwLIxcn zzcQoAXQOq6L`7Vmi0c<|VT0<mQ)HsY|wS-ag9Rka1&+8W&2f^Kb%Zfzmf z)^xtM={jt~7}K?lka9^ck`I&KYZm=_CF3toV8Co=fH>(XIGBh%Y%xv=c z-)R2jH*TnIfK(Mpyh8GRMfhXKn*QMvw9L8cqj{mx(a_P1=3l8Gs5>gh9^b3-sNW$l z5y7P6(Fgd@spk>vk$#Rbx9(+KkMy!#k2JGgk92c3dA^k6DyCTFG-9~zbl06qFTdbv z_{g*@Rp_(?(!Sp8_PhhNn9jC+KLuXk)M7P8%D7!!|aFTfaL&*9k72e{-H!HN{M&DQ0!+%>56m CE8a~2 literal 0 HcmV?d00001 diff --git a/bin/base/GraphicsObjects/quat.class b/bin/base/GraphicsObjects/quat.class new file mode 100644 index 0000000000000000000000000000000000000000..aa24f67d2e7370294e65eba6119287c8377bb300 GIT binary patch literal 3454 zcma)8TX0iV6kR9HyEkow@(2ipCe=1+X~9CVAXG}r!#*gK7OW^qnzTvN1o9{k8TG?2 zM-UZX%sAtZ{^_XGhl=Bj{^^%r^5>s3j^m6U@~y6Y?@iKTA|`Y9Ip?0U_gQ=GefGIO z{Pop00J@NMV>6y|p#g&q47pK*VHu3LaRQ_EUapa!z1M4WTwHKc#3>PDZZ177Vq7#Q zM4Sac|Ov>CdB8Ekr6Y;DY&*8j?umceVYc>{6DX0N<6LaBdg~q{1I2Y?Uk_}&& zNknrakz_2I&vlGbX0l!JeG2ydiF6`=K%u6kb)0&AnW>mU{a_*;8!pU6V%f29B*iyt z1~bucYCN1x$k=>o&Ceuq3Y#nMa)D=Eg75pugZI+N5TJy4U-~mg;zGFI;KdG}rKe@e(kLeU`Z)tsiK3SP7r1A=T ztANrStzyL_L0zO@V|-5V8RauU41Jlo2zjRcXeOOh*isFOX~dN)%$;ICOBF{VJs->F z*mLGHLngDnmce9rKHQN`WI6^?nQ;D4As&xq_Xz`@Xd#=8rSrwL>nks1yz)jGxyCYm z8QFxMyH8~b*=TGaA*tXJI6Gt`4co9?!^7A@@c)@4=%ydV+NyEHs0>Ic#5z?_COG8!&`q&wiV}|tSE{c=Zmcy-wc@U;D95hvlbtwTQi=2@wr+6yDSy?|&B?C$tq&Aw( z1j^Dnqt=@|&J4A;j5-GpB9l4LFm^lb(_ z6FPyS1+4_%ix7fj&7!*#GTr%*7H!n(uIkPLY=K4861J^*5t_6cNTMg`r$1#To5%|o zf-o9uJ}JMz@?q+LQ=%nve^GED`Wm zg&bmxg9N<--X_?o(z*hka1mm@w5?#xUxMW)=tdouUk7Ngw(EaGXcGvl88RU3SOGzN z>m-DoRUj0ZF~A4}mLwBG2U}syCi(OUI~J17+gyLSTQ_JVvCZ^JF;n(bP_}(~pK?z{ zO(FvVOS}>A3#gqpTFq=d^UGLY z#%qv2xPrex2^Vhz)AkgRNaT7^RXe^M7aN4?h zc7?LcI*Sl$i$Sam!Rs>3==E~}#Z77r47Syq6lXOPp}nfIU?54w`6Bcph%%~3d^FTv z)42p+yH%GqUD|c&(4|wCypUv(*LcS}Nguh4#%(mUMxz;x$7t$|re2yQY?>%v4WF}u z0+T#!=a?nuQHL-u-UyFqly}z@@2waQX`EN=G*`~B942^VlRUJuOyLv{`y7t*3u*)z zjA0(va0$0@8DHWm?&5j;jcaNvUQqk-qMF1@>Ses5Zs1jQ3)j_c+)y9jHT4m0s*mxy zTEH9X4&GGX;gb;gwz`XV)X#WV{et(@@3^i0#QS=#2aVh<9$|HlNCueMHuVRK VkCYa-`VB`}ROCP(qmLFG{|6s5hGzf( literal 0 HcmV?d00001 diff --git a/bin/base/RenderProgramStatement.class b/bin/base/RenderProgramStatement.class new file mode 100644 index 0000000000000000000000000000000000000000..95e4a4d6009a443ec0014797043a085db9bdaac8 GIT binary patch literal 154 zcmX^0Z`VEs1_l!bPId-%b_Nbc2DYNqyp+@;Mg|rQPt7n!2Cm@z(xT*4x6GVWMh591 zuw+0{etJ=2Zg5FrNosCtUWr~-Vp$?kHYu?^Mq%@dUjEtq{QM>{fQeD*ySP2$>*44CcanVkdKD)3mL^HYcsmC$$(W(E@UiV z6NWG!F?w^@YaoUo8?K9brNn)}!qYI-rkR?8O4r3%E-{jwn t-pr;NAUP?JQWk4Q1_>ZTiP;P&2ozwp)&$d&KQQsI$Y?+~n`N2ZnE_0p98drN diff --git a/bin/objects3D/Cylinder.class b/bin/base/objects3D/Cylinder.class similarity index 60% rename from bin/objects3D/Cylinder.class rename to bin/base/objects3D/Cylinder.class index ec785482c7d8dc9bd4f493af8a4e5eea526e13a6..b2167ee66668e057f715af9b11811fda5222c778 100644 GIT binary patch delta 97 zcmaFB{f~RXT6RgFq{QM>{fX;S+2tY3$zqI0*kr+?lW#Lxu!%#MB1{b$4jK?8?nQ|O g8JWq&{z+M>$tA`5VL&p!$Ry2L6C%HP6O$e@0C;I3N&o-= delta 48 zcmeyz{eXMIS|$;niCa>cq_v0 zDUhH+k~S$i^6g^K$7Dc;p|BA-X5?9lb4`&gC3ckAQ{f=&M2$0bE;PB(l61tW%DhX9 ZF5AgfdJ-s>Xf347Ab>LHV@!2 zJcu)YKX3bHhYy*Y9$p`j(1B1Q{k#faL>(+#{guC!M}!P1vXsbCBTt)E~2;88!d_ diff --git a/bin/objects3D/Sphere.class b/bin/base/objects3D/Sphere.class similarity index 84% rename from bin/objects3D/Sphere.class rename to bin/base/objects3D/Sphere.class index a4305577410e6e4c2d3d34e57a24dbbb686ac3c6..8c60245f298df20076953e19dfb75e97b68d1df1 100644 GIT binary patch delta 30 jcmX@geV%*5Qg(5lq{QM>{f)~V8QDa^%*`(u?=S-ZtJDh* delta 20 ccmX@leUy8`QYImvjcXhk83i_fX1v1;08sk}b^rhX diff --git a/bin/objects3D/TexCube.class b/bin/base/objects3D/TexCube.class similarity index 74% rename from bin/objects3D/TexCube.class rename to bin/base/objects3D/TexCube.class index be796d99c6fcb5371b973559d70c914e1f04c66a..d3b951b8e1064b7960f14d2317b5df5fc57b586c 100644 GIT binary patch delta 125 zcmbOyd|G(IDs~B{fTP~*yW(idq(W?5a#5$OwyBe8O1o{qhWGVlM@&t*<>J^ p?uk#n$QZ&V2IfsxV~XOi*MKRMVAn(#!X^t*GM7nW^F^k!Yyd+6DQf@# delta 95 zcmX>tJWqJSDkfo{i5m@=Bz-1FF-lElVw7N#@|mp2Xvi!T4H7D56rX&VF`H3vvI|p` utf_{Ndr@LRMrLxce^ORza!Ij%Kz?RkiAkEZCP{f$5C8QCPj%*~ZdN~{2|n+k*g delta 20 ccmZ3=KbwETcP3GvjsNNy8HG1DGbynG08)tt>i_@% diff --git a/bin/main/Camera.class b/bin/main/Camera.class new file mode 100644 index 0000000000000000000000000000000000000000..648ac6880056edf6234af9de152921157d38b4d4 GIT binary patch literal 3600 zcmbtWTXPiG5&q81toAk-X+a1f5aQw>7E8-TD1Ze4Bp}!lcVq-OFe}YU3#;Ar?yL}C z8)L^8Y?FX7#ELO-;t+DNlUNtnimOuLEzV1-QkC)_NM4*gq>87Mizr{utR!McsB)yz zce?xZbf50i-A8};*Kd9cpb5ngA>l`F2pal=cnnG7_WOWP#{`ZGqy+i}(gK+fvUo-y zCy*C#1PTHJ0w;pBHz;sY;8X~w@vMCNoFC7JFdJvYVZyjw2MG0o?41o_B~BWxO`hz< z5MIK!1zr|-#n?n;WAmu&X7Q@PYx3DSW5c4)LPje$#K52*uN#~GAzG*LhDc5Y@g~lP z@Ev^Dj|(A6F8cA7La^T&Y|mtl@6Rfz?F!RcGwHlzrJYVIRj_pcwF=>qQd{OkS|1-D z|2suHb537oN1;D%=M)0DjAJ>;Oj@C?J(KH=rA{2{O~ndMG8G%JyPZrf*6A**5|1l{ z`ZI;Ry*F#yJqoju>7-+&j&xi7cFsDI&E%7wq517`D{sfP<*aO9vOB*sevB6KB|A-G zCorWPoH)P%hOw1lP4Hd!&<7Q!cZlnqX*-*<^Lg>FC=K-Ftlo}HkF8MFBIntlpw}<$ zR4`gy>Gbww+V+CoXT?+0i?nCDtyHI#OA22S8cts_&m6Y*Tgh~+)s2Yf4CZaeV-yzF zKO`*iss?zFLbk_p=*j5M3~=#T>0WW{OWP-o43^eY3Vt`4ZH&7_G2&@Y_1Si6*JLWo z+^DJI5!CRz689^QqAcQ4n+uMUN$;9SPcWJ14aDP;s%d*2tNVC|m36~qi7|66-KkQ- zLVGiXT(`Y7DW?p3@irc_1}qcX@r1&>|9PFFbjidfY&5YMttQ$8wg_y+HWS|z_y#um z@wSP}xMJda0`CY634CARU0gMB6z`e1CSU$Q;C;0E@k0|o!UrZEN3+80sR~V|vjr#i zqCK~+tM~_=97$0@6L!QZ4Ww}JM6>BVm9gzx~J|P)R z9y^b*;L1sukl-7ql+tI-UFuancThWy%l_;sAq zEJp4HrPR2Fq?p{5WzJQTW^h;bgS)aN+?8G7u51iZ5Oz1b+DyxFH0QPEshM5Nh2jPNLCxH!|r$|7dfT!T4` zs`Aj$5meP&EipZ0$}5Vf9zsg;a|?6U1*!vHsvKbe(0_^+Q53EYRE5ScgG+c|43*L7C=5}X%hZ?Gxen7`au`|cU5@K8 zGT(EVh&&qq3O?_1Isd=KxcL8zk-@n^-siCP!7;{^q_IrsgKBpB_Az#F1BXN-J2Qp~EXORY;DA`kq0z)a zwi@e*tysh1w3cI`1qV3hEDkw`{e6bR?JYj^*QxO#-}+HL^|z_{DSQ4;9AJN?k2~0* z%CJ*aW0$JKZnXq^R1@~87VKAB(5VjKfa*q<8o)ty4u{l599Hk(X>}b()JL$?O~low z=uw}+R-YrG?xI&S(5How)Mle!t3z6AL{@9YGg=!Q?FkgL-5AjJV^BMclUg^P(~@{z zE8vWF7B6TQa8|pH7qt<*r2QT*Yk$V8+8w;68#t%W!0UP~-q0KHroI{%bw;Om;F5k2 zZ|gZ+(NFV#5spj7Glw}iihayMfLYj#{mej+xrm{YREQawi>FA1nTL2u?+&x&>hb$V zPmfut@${IBl09alWRE#1*<)r(_9P#kJ!WLW-sh9{?oQZayuagJwIaZ%N6|$pD6_XT zp$&Zy2YIu6`*a6~NNF(jEDn>>QK28l)1(Z{(i8X=DIa_7D30)M%dkK{#ItVWG`Cny z%TYcqZv4C_?}yLH7s!5roQIW_<|1x`U;?X;!WUxg+AKgL#1<$e}a`= rk;Reu9B8XXFwYo4eQCm$-X0~DiwMsJRLbf2s8#WIHsk1_OoRPzr)n6~ literal 0 HcmV?d00001 diff --git a/bin/main/Engine.class b/bin/main/Engine.class new file mode 100644 index 0000000000000000000000000000000000000000..fd53377e614159f5ee57bb8bc0ca34fb5da76871 GIT binary patch literal 6547 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 literal 0 HcmV?d00001 diff --git a/bin/main/Main.class b/bin/main/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..1ada7d8bfb1f723336e3a26d331bbd4b1c3af625 GIT binary patch literal 2144 zcmaJ?`%@cL6#kY3mTa~ZD388qfzldU+kn{#3ltBnhI6xCS1bOWjEd36zbdh z*82EGXX+myGyYUz1{j%foT+1H{F8LX`rS=c=kA~X{PHV+llUfr zYNRAdYdC`QDn?a|X$a$GDZC(enFzWtE_W9t$x3obl2=qrgztV2gnw@VG}K{Iqv>U- zdsV}0cwNI4yrIEBPDNfrE6z*Zl#~b+(;D`nAmhwvFfl91)$rZFRhXtYMWzh-uwXP%|=^93B}b7iy<@ zVzB?>FwG|^0H_vr!L$XPQ*(xC#|H!UG~;-AVT-h38wKGi*ptdgKAtl?5f8Q%6-{gM z#+-1C%`*l9mWtY;vCNh9Xkt*ouGFk?-H2O;U5NKPjwK9RdiI&N>7P*$igjldga@1{ zrm{1|jLw(la>5-qauy|xDJO4OS;I9YUlE4=8IuS^%ZaC%Jx>hFDipNDE^iB%@m)Li7Gz>UtE!9OGy?8>$HJsAnqFaXt zUq?x@*Cm;kC$t5ZHS8M288h#V=4M6S_u^Sn$2~bM&sorM18?eh3va7 zKEO>CAL{sMD-jvGt5?Uz_(aF2Qoh@93vp|HwqV6gyIAt$=fsViW4Kc~KEvlap24#! zzR>X{ZtA#&uXKDZ-C7@k(niH)coo!dHB32mc5f`13@%YZN&8XPpK;2K!e;Y?9|+h4 zvA|49Qf6U>rgg&hg_~x3Sy@xe6Hj@>xXHd%pvH#ylLtrWu@S#Bmik}(f_91)gg-78 z{E{n&v6(#(WL@%2D?Va)GwdZcWwcy!Kr5ju`*`e;P4keGWQyBRcZwWdE1odDqGjA5 zVx~7>Ii9#6u9bx6i>Y9)CYjgPO;vn`Q@y>M@q#s0l1Xwt7C4Qru%{#-?Um9m1pJum z6kKDDv*C+5;#eu%8gq&po)OdI++o%otEP| zSwZeU4@7ld7K9Eykw^Gmsn~-Uy7_J$C0B)G3nY; z;faRuorX~RDr%OYE>E6@Tq8c;o;JC;zjj=G6xN|pM>k`^laNsu7&?3TAA6!P;hHUp{ zjP__H#Nz!QH-%e)7w>-?B-J6y4+Z6C(aik;)Z-vp&`#Qc!~8HE!y%%31PSiaIF1al z&l1BtM}L~A&JoulPgo#uw+PpF1nVaZ;y0YbAN1IQ^B(#!z!(Ysb*O(M-Pv?jscvho zuciG^8DQ)W;N@qHY2Trxvi)*sIgF79EtLl>QH$i}jrZ}2r literal 0 HcmV?d00001 diff --git a/bin/main/MainWindow$1.class b/bin/main/MainWindow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a20104c22cb21ccfbd64d5a1f17abf344e802c07 GIT binary patch literal 1727 zcmah}OK%%h6#lL~_9WwJY&Q>wmOe4yIBDI`0D*)8c{p)vCj}R`3D0Z$#-8BJSTkdX zz={oG!4e5|!47tGfz+lENC>uUka&YYAdnCX_zRSC$8l`JYb>8R_ndprIp25Aosa)` z?*jl6sPv*AlTtjOVE_+mn8LJ*hcukS!%{q=A%I7F(T5o+W~G=@F|R>KTE&7!>qWUI zBgJ`n{(_3EikylihTbNx#ml1Rat4-W2)b3niJxJJW;eKDrg9`M8)n(soFeD6VH)l^ zhQY+&yy=kwgEDKC1w%M%m}051Q55ziUaXPjVAd+}T7lb!T<;ncnTtWsn5M92Yus@J zE&KO}j*nC7zM@#OY%$ME)j6AQG8|51^Ce-5RFOL(<*CcXby0GsWFdiSV}qMi=26&K0J*IZ$DU}$-(VV6YOkSv8eY@e2Ok!9X2)hx#_D>>m-t+I;8bUco{ zj$z!UV+b)FhmcosNyih&6QC9;f5A(Mbrf(}#}%yTSjCe%o{}e@mf{)22#sY|Qnk(X zN-brW^@f|eAhwDYx63-7#d8ctJeC)1UauM@ryadObX)esnyi8AD59jJ454F9mJ;1J zK=E;gNQdrL5K7(E#*FN3)^J>Etj#dgf$eavDqB}Tn75!uHqi-b?iUmVA5#A;w zM?L$1XOAh(P^j%V*5!}~nr+ANu1GOu@4#5{I(*xRO1ORxZW>X7`zieFGidB{gxMDu zWM3lAzQS4dHD=g1IM2StD*Fya_B|Z-172c3;x+aYUS~h!E%poEVZVBGEfNu7yoosO zB;p3~2JXV$lqZf?k)WO^IEyWekQTrU){!JFD5={c_!>qrM#P>XYXX5=bfHxhr&Xj> zoKZ3E^HD>Fhhw)Wldt8VoecN1+kt6X%cdziIM`{bCT;9DLiu}FW0k$U%5GjiRVdF- U;9eO6_u+n;EkL6j{q&~iPyDoh#Q*>R literal 0 HcmV?d00001 diff --git a/bin/main/MainWindow.class b/bin/main/MainWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..4753f241a62136375768cb9fa55d251a1cf27f20 GIT binary patch literal 9544 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 literal 0 HcmV?d00001 diff --git a/bin/main/Util.class b/bin/main/Util.class new file mode 100644 index 0000000000000000000000000000000000000000..30f3f1da6f604c85b737b006af4dc6667421f827 GIT binary patch literal 706 zcmah`zi-n(7=33uF>$VKFwmCL&|fJe0pX=vQ6)rEmK26U_Ool63$9%`E;Bnq>QW}e z+O1NTf*4@uZ$gN7Nd+6RrSI;0_rC9Y@9yXCZ{GoIpyk2EZ4V2$W5S~I;~n6kj=L_F zTr3NeAL~>XTLN~o)e~@@X8WwzlNF_a$Ym;ArPSMvxfok_q z=`?s%=wwr%q|yUZ@ub-e)i4g8y#_|Z1klf2L0aKV}R>2HvL`?B}*!+Qq?FW~z+Ly4o z+Jm&y@STsJQ1PA48LAC=`WYqJX?*yK(#bjbHq49#P62z?*l~`rj_X*1k9FJ{&0QY% hChC*NDY(HMZxxHUNsfhCqAsjos9P=%=9pTT{{t`!k|F>A literal 0 HcmV?d00001 diff --git a/bin/objects3D/Human.class b/bin/objects3D/Human.class deleted file mode 100644 index 8a04469585548a4294eef1fc157b8be5bdb98b27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6335 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 IR>Hi00^v-j#Q*>R diff --git a/hs_err_pid3890.log b/hs_err_pid3890.log new file mode 100644 index 0000000..e497c55 --- /dev/null +++ b/hs_err_pid3890.log @@ -0,0 +1,612 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x00007fff202734af, pid=3890, tid=0x0000000000000f03 +# +# JRE version: Java(TM) SE Runtime Environment (8.0_271-b09) (build 1.8.0_271-b09) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.271-b09 mixed mode bsd-amd64 compressed oops) +# Problematic frame: +# C [libobjc.A.dylib+0x84af] objc_release+0x1f +# +# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again +# +# If you would like to submit a bug report, please visit: +# http://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. +# + +--------------- T H R E A D --------------- + +Current thread (0x00007fb00d009000): JavaThread "main" [_thread_in_native, id=3843, stack(0x000070000798c000,0x0000700007a8c000)] + +siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000020 + +Registers: +RAX=0x6000000000000000, RBX=0x0000000000000001, RCX=0x0000000000000000, RDX=0x0000000000000007 +RSP=0x0000700007a8b498, RBP=0x0000700007a8b4d0, RSI=0x00007fb009558df0, RDI=0x00007fb00b840820 +R8 =0x00007fb0099046c8, R9 =0x0000000000000000, R10=0x00007fb00b8277b0, R11=0x00007fff22c9eb3a +R12=0x00007fb00b840820, R13=0xa3a3a3a3a3a3a3a3, R14=0x00007fb00a01b090, R15=0x00007fb00a01b000 +RIP=0x00007fff202734af, EFLAGS=0x0000000000010246, ERR=0x0000000000000004 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x0000700007a8b498) +0x0000700007a8b498: 00007fff2029120f 85fd44d75ac60000 +0x0000700007a8b4a8: 00007fb00a01b000 00007fb00b83c300 +0x0000700007a8b4b8: 000000010ec1c910 00007fff7bacafbf +0x0000700007a8b4c8: 00007fb00d0091f8 0000700007a8b4f0 +0x0000700007a8b4d8: 00007fff20273e30 85fd44d75ac6009f +0x0000700007a8b4e8: 00007fb00a01b090 0000700007a8b510 +0x0000700007a8b4f8: 00007fff2048da66 85fd44d75ac6009f +0x0000700007a8b508: 00007fb00b83c300 0000700007a8b550 +0x0000700007a8b518: 00007fff21219123 00007fff872e50d8 +0x0000700007a8b528: 0000000000000000 00007fb0094320b0 +0x0000700007a8b538: 85fd44d75ac6009f 00007fb00b960820 +0x0000700007a8b548: 00007fb00973c310 0000700007a8b580 +0x0000700007a8b558: 000000012d59ccce 000000010ec1c918 +0x0000700007a8b568: 0000000000000000 0000700007a8b608 +0x0000700007a8b578: 00007fb00d009000 0000700007a8b5e0 +0x0000700007a8b588: 0000000111ba56c7 000000076b80f300 +0x0000700007a8b598: 0000000111ba53e2 0000700007a8b5a0 +0x0000700007a8b5a8: 000000010ec1c910 0000700007a8b608 +0x0000700007a8b5b8: 000000010ec1ce78 0000000000000000 +0x0000700007a8b5c8: 000000010ec1c918 0000000000000000 +0x0000700007a8b5d8: 0000700007a8b600 0000700007a8b650 +0x0000700007a8b5e8: 0000000111b952bd 000000076b8fb568 +0x0000700007a8b5f8: 0000000111b9ed18 000000076b90fb48 +0x0000700007a8b608: 000000076b80f300 0000700007a8b610 +0x0000700007a8b618: 000000010ec1c817 0000700007a8b680 +0x0000700007a8b628: 000000010ec1ce78 0000000000000000 +0x0000700007a8b638: 000000010ec1c888 0000700007a8b600 +0x0000700007a8b648: 0000700007a8b670 0000700007a8b6d8 +0x0000700007a8b658: 0000000111b95302 0000000000000000 +0x0000700007a8b668: 000000076b80f300 000000076b90fb48 +0x0000700007a8b678: 000000076b80f248 000000076b8fb5f8 +0x0000700007a8b688: 0000000000000001 000000076b8fb608 + +Instructions: (pc=0x00007fff202734af) +0x00007fff2027348f: 90 48 85 ff 74 76 89 f8 83 e0 01 48 85 c0 75 6c +0x00007fff2027349f: 48 8b 07 48 b9 f8 ff ff ff ff 7f 00 00 48 21 c1 +0x00007fff202734af: 48 8b 51 20 f6 c2 04 74 54 a8 01 74 6f 48 b9 00 +0x00007fff202734bf: 00 00 00 00 00 80 00 48 ba 00 00 00 00 00 00 00 + +Register to memory mapping: + +RAX=0x6000000000000000 is an unknown value +RBX=0x0000000000000001 is an unknown value +RCX=0x0000000000000000 is an unknown value +RDX=0x0000000000000007 is an unknown value +RSP=0x0000700007a8b498 is pointing into the stack for thread: 0x00007fb00d009000 +RBP=0x0000700007a8b4d0 is pointing into the stack for thread: 0x00007fb00d009000 +RSI=0x00007fb009558df0 is an unknown value +RDI=0x00007fb00b840820 is an unknown value +R8 =0x00007fb0099046c8 is an unknown value +R9 =0x0000000000000000 is an unknown value +R10=0x00007fb00b8277b0 is an unknown value +R11=0x00007fff22c9eb3a: -[NSResponder release]+0 in /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit at 0x00007fff22c93000 +R12=0x00007fb00b840820 is an unknown value +R13=0xa3a3a3a3a3a3a3a3 is an unknown value +R14=0x00007fb00a01b090 is an unknown value +R15=0x00007fb00a01b000 is an unknown value + + +Stack: [0x000070000798c000,0x0000700007a8c000], sp=0x0000700007a8b498, free space=1021k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libobjc.A.dylib+0x84af] objc_release+0x1f +C [libobjc.A.dylib+0x8e30] objc_autoreleasePoolPop+0xa1 +C [CoreFoundation+0x42a66] _CFAutoreleasePoolPop+0x16 +C [Foundation+0x1f123] -[NSAutoreleasePool release]+0x83 +C [liblwjgl.dylib+0x16cce] Java_org_lwjgl_opengl_MacOSXContextImplementation_setView+0x10e +j org.lwjgl.opengl.MacOSXContextImplementation.setView(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V+0 +j org.lwjgl.opengl.MacOSXContextImplementation.makeCurrent(Lorg/lwjgl/opengl/PeerInfo;Ljava/nio/ByteBuffer;)V+7 +j org.lwjgl.opengl.ContextGL.makeCurrent()V+46 +j org.lwjgl.opengl.DrawableGL.makeCurrent()V+14 +j org.lwjgl.opengl.Display.makeCurrent()V+3 +j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0 +j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108 +j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12 +j org.lwjgl.opengl.Display.create()V+7 +j main.Engine.(II)V+16 +j main.Main.main([Ljava/lang/String;)V+10 +v ~StubRoutines::call_stub +V [libjvm.dylib+0x2d4795] +V [libjvm.dylib+0x30582b] +V [libjvm.dylib+0x308edb] +C [java+0x316c] JavaMain+0x9dc +C [libsystem_pthread.dylib+0x68fc] _pthread_start+0xe0 +C [libsystem_pthread.dylib+0x2443] thread_start+0xf +C 0x0000000000000000 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j org.lwjgl.opengl.MacOSXContextImplementation.setView(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V+0 +j org.lwjgl.opengl.MacOSXContextImplementation.makeCurrent(Lorg/lwjgl/opengl/PeerInfo;Ljava/nio/ByteBuffer;)V+7 +j org.lwjgl.opengl.ContextGL.makeCurrent()V+46 +j org.lwjgl.opengl.DrawableGL.makeCurrent()V+14 +j org.lwjgl.opengl.Display.makeCurrent()V+3 +j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0 +j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108 +j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12 +j org.lwjgl.opengl.Display.create()V+7 +j main.Engine.(II)V+16 +j main.Main.main([Ljava/lang/String;)V+10 +v ~StubRoutines::call_stub + +--------------- P R O C E S S --------------- + +Java Threads: ( => current thread ) + 0x00007fb00c8ee000 JavaThread "AWT-Shutdown" [_thread_blocked, id=31527, stack(0x0000700009c78000,0x0000700009d78000)] + 0x00007fb00d066800 JavaThread "AppKit Thread" daemon [_thread_in_native, id=259, stack(0x00007ffeeb71b000,0x00007ffeebf1b000)] + 0x00007fb00d850800 JavaThread "Service Thread" daemon [_thread_blocked, id=39427, stack(0x00007000099ef000,0x0000700009aef000)] + 0x00007fb00d04c000 JavaThread "C1 CompilerThread11" daemon [_thread_blocked, id=39939, stack(0x00007000098ec000,0x00007000099ec000)] + 0x00007fb00c020800 JavaThread "C1 CompilerThread10" daemon [_thread_blocked, id=40451, stack(0x00007000097e9000,0x00007000098e9000)] + 0x00007fb00c020000 JavaThread "C1 CompilerThread9" daemon [_thread_blocked, id=23811, stack(0x00007000096e6000,0x00007000097e6000)] + 0x00007fb00c01f000 JavaThread "C1 CompilerThread8" daemon [_thread_blocked, id=23299, stack(0x00007000095e3000,0x00007000096e3000)] + 0x00007fb00a040800 JavaThread "C2 CompilerThread7" daemon [_thread_blocked, id=40963, stack(0x00007000094e0000,0x00007000095e0000)] + 0x00007fb00a040000 JavaThread "C2 CompilerThread6" daemon [_thread_blocked, id=41475, stack(0x00007000093dd000,0x00007000094dd000)] + 0x00007fb00a01d000 JavaThread "C2 CompilerThread5" daemon [_thread_blocked, id=41731, stack(0x00007000092da000,0x00007000093da000)] + 0x00007fb00a01c000 JavaThread "C2 CompilerThread4" daemon [_thread_blocked, id=42243, stack(0x00007000091d7000,0x00007000092d7000)] + 0x00007fb00b098800 JavaThread "C2 CompilerThread3" daemon [_thread_blocked, id=22531, stack(0x00007000090d4000,0x00007000091d4000)] + 0x00007fb00b098000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=42755, stack(0x0000700008fd1000,0x00007000090d1000)] + 0x00007fb00b097000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=43011, stack(0x0000700008ece000,0x0000700008fce000)] + 0x00007fb00b096800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=21763, stack(0x0000700008dcb000,0x0000700008ecb000)] + 0x00007fb00d82d800 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=16643, stack(0x0000700008cc8000,0x0000700008dc8000)] + 0x00007fb00a818000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=15875, stack(0x0000700008bc5000,0x0000700008cc5000)] + 0x00007fb00c01d800 JavaThread "Finalizer" daemon [_thread_blocked, id=13315, stack(0x00007000089bc000,0x0000700008abc000)] + 0x00007fb00c01b000 JavaThread "Reference Handler" daemon [_thread_blocked, id=13059, stack(0x00007000088b9000,0x00007000089b9000)] +=>0x00007fb00d009000 JavaThread "main" [_thread_in_native, id=3843, stack(0x000070000798c000,0x0000700007a8c000)] + +Other Threads: + 0x00007fb00c838000 VMThread [stack: 0x00007000087b6000,0x00007000088b6000] [id=12803] + 0x00007fb00a01e800 WatcherThread [stack: 0x0000700009af2000,0x0000700009bf2000] [id=38915] + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x00000007c0000000 + +Heap: + PSYoungGen total 76288K, used 14418K [0x000000076ab00000, 0x0000000770000000, 0x00000007c0000000) + eden space 65536K, 22% used [0x000000076ab00000,0x000000076b914af8,0x000000076eb00000) + from space 10752K, 0% used [0x000000076f580000,0x000000076f580000,0x0000000770000000) + to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) + ParOldGen total 175104K, used 0K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) + object space 175104K, 0% used [0x00000006c0000000,0x00000006c0000000,0x00000006cab00000) + Metaspace used 5709K, capacity 5882K, committed 6144K, reserved 1056768K + class space used 636K, capacity 729K, committed 768K, reserved 1048576K + +Card table byte_map: [0x000000010d1ce000,0x000000010d9cf000] byte_map_base: 0x0000000109bce000 + +Marking Bits: (ParMarkBitMap*) 0x000000010c729768 + Begin Bits: [0x0000000120b8d000, 0x0000000124b8d000) + End Bits: [0x0000000124b8d000, 0x0000000128b8d000) + +Polling page: 0x0000000103d67000 + +CodeCache: size=245760Kb used=3684Kb max_used=3684Kb free=242075Kb + bounds [0x0000000111b8d000, 0x0000000111f2d000, 0x0000000120b8d000] + total_blobs=715 nmethods=416 adapters=210 + compilation: enabled + +Compilation events (10 events): +Event: 0.438 Thread 0x00007fb00d04c000 409 3 java.lang.Integer::valueOf (32 bytes) +Event: 0.438 Thread 0x00007fb00c020800 410 3 java.nio.Buffer::remaining (10 bytes) +Event: 0.438 Thread 0x00007fb00c020800 nmethod 410 0x0000000111f231d0 code [0x0000000111f23320, 0x0000000111f23470] +Event: 0.438 Thread 0x00007fb00d04c000 nmethod 409 0x0000000111f234d0 code [0x0000000111f23660, 0x0000000111f239b0] +Event: 0.438 Thread 0x00007fb00c01f000 411 ! 3 java.util.zip.Inflater::inflate (113 bytes) +Event: 0.438 Thread 0x00007fb00d04c000 413 s! 3 java.net.URLStreamHandler::getHostAddress (54 bytes) +Event: 0.438 Thread 0x00007fb00c020800 414 3 java.io.UnixFileSystem::getBooleanAttributes (49 bytes) +Event: 0.438 Thread 0x00007fb00c01f000 nmethod 411 0x0000000111f24250 code [0x0000000111f24420, 0x0000000111f24a98] +Event: 0.438 Thread 0x00007fb00d04c000 nmethod 413 0x0000000111f24e10 code [0x0000000111f24fc0, 0x0000000111f25798] +Event: 0.438 Thread 0x00007fb00c020800 nmethod 414 0x0000000111f25ad0 code [0x0000000111f25c80, 0x0000000111f26228] + +GC Heap History (0 events): +No events + +Deoptimization events (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (10 events): +Event: 0.026 Thread 0x00007fb00d009000 Exception (0x000000076ab07cc0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/s +Event: 0.026 Thread 0x00007fb00d009000 Exception (0x000000076ab07fa8) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni. +Event: 0.127 Thread 0x00007fb00d009000 Exception (0x000000076b2ba2b0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512] +Event: 0.127 Thread 0x00007fb00d009000 Exception (0x000000076b2ba4c0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512] +Event: 0.127 Thread 0x00007fb00d009000 Exception (0x000000076b2bd9d8) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512] +Event: 0.127 Thread 0x00007fb00d009000 Exception (0x000000076b2bdbe8) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512] +Event: 0.163 Thread 0x00007fb00d009000 Exception (0x000000076b543b70) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/methodHandles.cpp, line 1169] +Event: 0.164 Thread 0x00007fb00d009000 Exception (0x000000076b551b30) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/methodHandles.cpp, line 1169] +Event: 0.382 Thread 0x00007fb00d009000 Exception (0x000000076b5f6d58) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni.cpp, line 710] +Event: 0.383 Thread 0x00007fb00d009000 Exception (0x000000076b5f78e0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni.cpp, line 710] + +Events (10 events): +Event: 0.438 loading class org/lwjgl/opengl/ContextImplementation +Event: 0.438 loading class org/lwjgl/opengl/ContextImplementation done +Event: 0.439 loading class org/lwjgl/opengl/MacOSXContextImplementation +Event: 0.439 loading class org/lwjgl/opengl/MacOSXContextImplementation done +Event: 0.439 loading class org/lwjgl/opengl/GLContext +Event: 0.439 loading class org/lwjgl/opengl/GLContext done +Event: 0.439 loading class java/lang/NumberFormatException +Event: 0.439 loading class java/lang/NumberFormatException done +Event: 0.440 loading class org/lwjgl/opengl/GLContext$CapabilitiesCacheEntry +Event: 0.440 loading class org/lwjgl/opengl/GLContext$CapabilitiesCacheEntry done + + +Dynamic libraries: +0x00007fff34f1d000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa +0x00007fff22262000 /System/Library/Frameworks/Security.framework/Versions/A/Security +0x00007fff33125000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices +0x00007fff2a4e4000 /usr/lib/libz.1.dylib +0x00007fff2a5ac000 /usr/lib/libSystem.B.dylib +0x00007fff2044b000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x00007fff211fa000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation +0x00007fff2026b000 /usr/lib/libobjc.A.dylib +0x00007fff22c93000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x00007fff25b57000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData +0x00007fff239df000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation +0x00007fff2fbdf000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices +0x00007fff289f0000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap +0x00007fff2b6d5000 /usr/lib/libspindump.dylib +0x00007fff23c2e000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers +0x00007fff271f4000 /usr/lib/libapp_launch_measurement.dylib +0x00007fff271f7000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout +0x00007fff28357000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal +0x00007fff2904d000 /usr/lib/liblangid.dylib +0x00007fff289f4000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG +0x00007fff24c6e000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight +0x00007fff24fd4000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics +0x00007fff30106000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate +0x00007fff2b113000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices +0x00007fff2833b000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface +0x00007fff264df000 /usr/lib/libDiagnosticMessagesClient.dylib +0x00007fff289dc000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation +0x00007fff225ba000 /usr/lib/libicucore.A.dylib +0x00007fff2cc1e000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox +0x00007fff2bea6000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore +0x00007fff24be1000 /usr/lib/libMobileGestalt.dylib +0x00007fff286e0000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x00007fff26c39000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore +0x00007fff2fc17000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition +0x00007fff26f59000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI +0x00007fff21bd0000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio +0x00007fff265ca000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration +0x00007fff2baa3000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport +0x00007fff2be9d000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport +0x00007fff24be0000 /usr/lib/libenergytrace.dylib +0x00007fff22b8a000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit +0x00007fff2ff4a000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices +0x00007fff27186000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis +0x00007fff6bab5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL +0x00007fff2bf21000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity +0x00007fff2565e000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync +0x00007fff28c5b000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage +0x00007fff219ea000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText +0x00007fff28a1e000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO +0x00007fff2a5b2000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking +0x00007fff2723f000 /usr/lib/libxml2.2.dylib +0x00007fff20331000 /usr/lib/libc++.1.dylib +0x00007fff2a823000 /usr/lib/libcompression.dylib +0x00007fff2bdcf000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO +0x00007fff2ae52000 /usr/lib/libate.dylib +0x00007fff2a5a6000 /usr/lib/system/libcache.dylib +0x00007fff2a562000 /usr/lib/system/libcommonCrypto.dylib +0x00007fff2a58c000 /usr/lib/system/libcompiler_rt.dylib +0x00007fff2a581000 /usr/lib/system/libcopyfile.dylib +0x00007fff2015b000 /usr/lib/system/libcorecrypto.dylib +0x00007fff20226000 /usr/lib/system/libdispatch.dylib +0x00007fff203d9000 /usr/lib/system/libdyld.dylib +0x00007fff2a59d000 /usr/lib/system/libkeymgr.dylib +0x00007fff2d9b5000 /usr/lib/system/liblaunch.dylib +0x00007fff2a540000 /usr/lib/system/libmacho.dylib +0x00007fff29d38000 /usr/lib/system/libquarantine.dylib +0x00007fff2a59a000 /usr/lib/system/libremovefile.dylib +0x00007fff24c3e000 /usr/lib/system/libsystem_asl.dylib +0x00007fff2010b000 /usr/lib/system/libsystem_blocks.dylib +0x00007fff202a8000 /usr/lib/system/libsystem_c.dylib +0x00007fff2a594000 /usr/lib/system/libsystem_collections.dylib +0x00007fff2903e000 /usr/lib/system/libsystem_configuration.dylib +0x00007fff2832a000 /usr/lib/system/libsystem_containermanager.dylib +0x00007fff2a2e3000 /usr/lib/system/libsystem_coreservices.dylib +0x00007fff2281a000 /usr/lib/system/libsystem_darwin.dylib +0x00007fff2a59e000 /usr/lib/system/libsystem_dnssd.dylib +0x00007fff202a5000 /usr/lib/system/libsystem_featureflags.dylib +0x00007fff2041f000 /usr/lib/system/libsystem_info.dylib +0x00007fff2a4f7000 /usr/lib/system/libsystem_m.dylib +0x00007fff201f9000 /usr/lib/system/libsystem_malloc.dylib +0x00007fff24bd1000 /usr/lib/system/libsystem_networkextension.dylib +0x00007fff22c39000 /usr/lib/system/libsystem_notify.dylib +0x00007fff2fe4c000 /usr/lib/system/libsystem_product_info_filter.dylib +0x00007fff29042000 /usr/lib/system/libsystem_sandbox.dylib +0x00007fff2a597000 /usr/lib/system/libsystem_secinit.dylib +0x00007fff2039d000 /usr/lib/system/libsystem_kernel.dylib +0x00007fff20415000 /usr/lib/system/libsystem_platform.dylib +0x00007fff203cd000 /usr/lib/system/libsystem_pthread.dylib +0x00007fff2631b000 /usr/lib/system/libsystem_symptoms.dylib +0x00007fff20143000 /usr/lib/system/libsystem_trace.dylib +0x00007fff2a56e000 /usr/lib/system/libunwind.dylib +0x00007fff2010d000 /usr/lib/system/libxpc.dylib +0x00007fff20387000 /usr/lib/libc++abi.dylib +0x00007fff2a579000 /usr/lib/liboah.dylib +0x00007fff2ac37000 /usr/lib/liblzma.5.dylib +0x00007fff20f0e000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration +0x00007fff2a5ae000 /usr/lib/libfakelink.dylib +0x00007fff24732000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork +0x00007fff2a6ee000 /usr/lib/libarchive.2.dylib +0x00007fff20f8c000 /usr/lib/libCRFSuite.dylib +0x00007fff29d5f000 /usr/lib/libbsm.0.dylib +0x00007fff240ab000 /usr/lib/libnetwork.dylib +0x00007fff2a5b3000 /usr/lib/libpcap.A.dylib +0x00007fff26314000 /usr/lib/libdns_services.dylib +0x00007fff2ac50000 /usr/lib/libcoretls_cfhelpers.dylib +0x00007fff2a7ed000 /usr/lib/libapple_nghttp2.dylib +0x00007fff2a546000 /usr/lib/system/libkxld.dylib +0x00007fff25f8d000 /usr/lib/libsqlite3.dylib +0x00007fff2a2c6000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression +0x00007fff29d47000 /usr/lib/libcoretls.dylib +0x00007fff2a81e000 /usr/lib/libpam.2.dylib +0x00007fff2ad4e000 /usr/lib/libxar.1.dylib +0x00007fff29049000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo +0x00007fff29989000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer +0x00007fff2a2d6000 /usr/lib/libbz2.1.0.dylib +0x00007fff2a5eb000 /usr/lib/libiconv.2.dylib +0x00007fff2a53f000 /usr/lib/libcharset.1.dylib +0x00007fff271c2000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents +0x00007fff22824000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore +0x00007fff2652f000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata +0x00007fff2a2e8000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices +0x00007fff2a760000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit +0x00007fff2629f000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE +0x00007fff208e9000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices +0x00007fff2abe7000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices +0x00007fff271cf000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList +0x00007fff29d3b000 /usr/lib/libCheckFix.dylib +0x00007fff24c55000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC +0x00007fff2904f000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP +0x00007fff264e2000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities +0x00007fff20fc1000 /usr/lib/libmecabra.dylib +0x00007fff2a045000 /System/Library/Frameworks/MLCompute.framework/Versions/A/MLCompute +0x00007fff29d70000 /usr/lib/libmecab.dylib +0x00007fff29dba000 /usr/lib/libgermantok.dylib +0x00007fff2a7c8000 /usr/lib/libThaiTokenizer.dylib +0x00007fff2ad89000 /usr/lib/libChineseTokenizer.dylib +0x00007fff2a81c000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders +0x00007fff265d1000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage +0x00007fff2ff24000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib +0x00007fff2ad94000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib +0x00007fff297a4000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib +0x00007fff20bf4000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib +0x00007fff2a849000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib +0x00007fff29dc0000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib +0x00007fff2a805000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib +0x00007fff2a843000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib +0x00007fff290fb000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib +0x00007fff20e9f000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib +0x00007fff28fd7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore +0x00007fff2a235000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage +0x00007fff29dd6000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork +0x00007fff2a1a7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix +0x00007fff29ff5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector +0x00007fff2a1de000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray +0x00007fff20b1f000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools +0x00007fff29047000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary +0x00007fff264af000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics +0x00007fff2a7ca000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce +0x00007fff2834d000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator +0x00007fff6baa9000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib +0x00007fff21559000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling +0x00007fff29977000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji +0x00007fff290f4000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData +0x00007fff20e51000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon +0x00007fff2a6dc000 /usr/lib/libcmph.dylib +0x00007fff271a2000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory +0x00007fff27192000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory +0x00007fff2ac52000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS +0x00007fff29c9d000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation +0x00007fff2ad5c000 /usr/lib/libutil.dylib +0x00007fff22b4f000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore +0x00007fff29d33000 /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement +0x00007fff2ad60000 /usr/lib/libxslt.1.dylib +0x00007fff29d29000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement +0x00007fff2bd19000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib +0x00007fff2bd23000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib +0x00007fff2bc6d000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib +0x00007fff2bc94000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib +0x00007fff2bd78000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib +0x00007fff2b9bf000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib +0x00007fff2b0db000 /usr/lib/libexpat.1.dylib +0x00007fff2b975000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG +0x00007fff28583000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib +0x00007fff26256000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices +0x00007fff2ba9f000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient +0x00007fff21642000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay +0x00007fff28498000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia +0x00007fff27322000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo +0x00007fff2bada000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox +0x00007fff261d6000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard +0x00007fff2b21f000 /System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection +0x00007fff25f77000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer +0x00007fff261be000 /System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities +0x00007fff2b938000 /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom +0x00007fff2bd11000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler +0x00007fff2bcf4000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment +0x00007fff2bd1d000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay +0x00007fff2bd7d000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore +0x00007fff2b6bb000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport +0x00007fff2d758000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata +0x00007fff29c8c000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices +0x00007fff21779000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore +0x00007fff2847b000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk +0x00007fff3cc04000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy +0x00007fff2aeea000 /usr/lib/libIOReport.dylib +0x00007fff2cf94000 /usr/lib/libSMC.dylib +0x00007fff2bc39000 /usr/lib/libAudioToolboxUtility.dylib +0x00007fff3d561000 /usr/lib/libmis.dylib +0x00007fff6bb05000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib +0x00007fff6bac8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib +0x00007fff6bcd6000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib +0x00007fff6bad1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib +0x00007fff6bac5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib +0x00007fff6bab0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib +0x00007fff6d120000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL +0x00007fff2b248000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer +0x00007fff2b257000 /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore +0x00007fff2b673000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG +0x00007fff26f17000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib +0x00007fff2b6c2000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib +0x00007fff2b087000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA +0x00007fff2cddc000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS +0x00007fff2d0ef000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy +0x00007fff25755000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices +0x00007fff2d0d4000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis +0x00007fff2bd87000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore +0x00007fff2d0f7000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD +0x00007fff2cdcc000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis +0x00007fff2bd48000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI +0x00007fff2d074000 /usr/lib/libcups.2.dylib +0x00007fff2d0e4000 /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth +0x00007fff2d773000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos +0x00007fff2d783000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS +0x00007fff2ce49000 /usr/lib/libresolv.9.dylib +0x00007fff2b6d8000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal +0x00007fff3343a000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib +0x00007fff26323000 /System/Library/Frameworks/Network.framework/Versions/A/Network +0x00007fff2b0f4000 /usr/lib/libheimdal-asn1.dylib +0x00007fff2d7d4000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth +0x00007fff27370000 /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport +0x00007fff2cd53000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession +0x00007fff2cdb9000 /usr/lib/libAudioStatistics.dylib +0x00007fff2b180000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience +0x00007fff2cbec000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib +0x00007fff2d764000 /usr/lib/libperfcheck.dylib +0x00007fff2d103000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration +0x00007fff2b0fe000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation +0x00007fff2fc07000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore +0x000000010c000000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/server/libjvm.dylib +0x0000000103d23000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libverify.dylib +0x0000000103d34000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libjava.dylib +0x0000000103d68000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libinstrument.dylib +0x0000000103dd7000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libzip.dylib +0x0000000103fd9000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libnet.dylib +0x0000000110ffe000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libawt.dylib +0x000000011109e000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libmlib_image.dylib +0x00007fff6ea55000 /System/Library/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation +0x00007fff6ea61000 /System/Library/Frameworks/JavaRuntimeSupport.framework/Versions/A/JavaRuntimeSupport +0x00007fff3c94e000 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon +0x00007fff31a78000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication +0x00007fff363e5000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels +0x00007fff32ecf000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help +0x00007fff363e9000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture +0x00007fff363b9000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting +0x00007fff363e1000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink +0x00007fff3c94a000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print +0x00007fff363dd000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI +0x00007fff31a3c000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols +0x000000011115d000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libawt_lwawt.dylib +0x000000011120c000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libosxapp.dylib +0x00007fff3bf65000 /System/Library/Frameworks/ExceptionHandling.framework/Versions/A/ExceptionHandling +0x00007fff22b10000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal +0x00007fff30f8e000 /System/Library/Frameworks/FileProvider.framework/Versions/A/FileProvider +0x00007fff26141000 /System/Library/Frameworks/Accounts.framework/Versions/A/Accounts +0x00007fff310de000 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage +0x00007fff309ae000 /System/Library/PrivateFrameworks/SymptomDiagnosticReporter.framework/Versions/A/SymptomDiagnosticReporter +0x00007fff23c41000 /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv +0x00007fff22c45000 /usr/lib/libsandbox.1.dylib +0x00007fff2739b000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement +0x00007fff29c69000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag +0x00007fff344bd000 /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary +0x00007fff2e197000 /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing +0x00007fff32a3c000 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211 +0x00007fff2a316000 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit +0x00007fff29a67000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils +0x00007fff29994000 /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN +0x00007fff2e2e3000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth +0x00007fff32aa0000 /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi +0x00007fff2d85a000 /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers +0x00007fff30ab5000 /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement +0x00007fff309cb000 /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport +0x00007fff2d83a000 /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle +0x00007fff30a81000 /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit +0x00007fff309d8000 /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording +0x00007fff2affb000 /usr/lib/libCoreStorage.dylib +0x00007fff32edb000 /usr/lib/libcsfde.dylib +0x00007fff2e41e000 /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage +0x00007fff32ed3000 /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin +0x00007fff334ed000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit +0x00007fff30948000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth +0x00007fff2aff3000 /usr/lib/libMatch.1.dylib +0x00007fff437d5000 /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera +0x00007fff2d7e5000 /System/Library/PrivateFrameworks/MobileAsset.framework/Versions/A/MobileAsset +0x00007fff33511000 /System/Library/PrivateFrameworks/StreamingZip.framework/Versions/A/StreamingZip +0x00007fff2bf7f000 /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox +0x00007fff30f60000 /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD +0x00007fff30147000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility +0x00007fff30f5c000 /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove +0x00007fff30153000 /System/Library/PrivateFrameworks/AlgosScoreFramework.framework/Versions/A/AlgosScoreFramework +0x00007fff3194a000 /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA +0x00007fff30ba1000 /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC +0x00007fff41228000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib +0x00000001119c3000 /usr/lib/libobjc-trampolines.dylib +0x00007fff2709a000 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge +0x00007fff2b799000 /System/Library/PrivateFrameworks/login.framework/Versions/A/login +0x00007fff77954000 /usr/lib/libRosetta.dylib +0x000000012d525000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libfontmanager.dylib +0x000000012d586000 /Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/project1/liblwjgl.dylib +0x0000000111a5d000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libjawt.dylib +0x00007fff6bce1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine +0x00007fff6bb42000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib +0x00007fff5eec5000 /System/Library/Extensions/AppleIntelKBLGraphicsGLDriver.bundle/Contents/MacOS/AppleIntelKBLGraphicsGLDriver +0x00007fff4631b000 /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupportMercury.dylib +0x000000012d608000 /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/AMDRadeonX4000GLDriver +0x00007fff6e022000 /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/ATIRadeonX4000SCLib.dylib +0x00007fff5e12d000 /System/Library/Extensions/AMDShared.bundle/Contents/PlugIns/libSC.dylib +0x00007fff6be5f000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat + +VM Arguments: +jvm_args: -Dvisualvm.id=6509053298218 -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53892:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 +java_command: main.Main +java_class_path (initial): /Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/project1/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Conte +Launcher Type: SUN_STANDARD + +Environment Variables: +JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home +PATH=/opt/MonkeyDev/bin:/Users/yuyangwang/opt/anaconda3/bin:/Users/yuyangwang/opt/anaconda3/condabin:/Users/yuyangwang/.autojump/bin:/Users/yuyangwang/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/usr/local/share/dotnet:/opt/X11/bin:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS:/Users/yuyangwang/flutter/bin +SHELL=/bin/zsh + +Signal Handlers: +SIGSEGV: [libjvm.dylib+0x5a0dcb], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.dylib+0x5a0dcb], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none +SIGUSR2: [libjvm.dylib+0x49202a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:Bsduname:Darwin 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64 x86_64 +rlimit: STACK 8192k, CORE 0k, NPROC 2784, NOFILE 10240, AS infinity +load average:2.50 2.21 1.97 + +CPU:total 16 (initial active 16) (8 cores per cpu, 2 threads per core) family 6 model 158 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx + +Memory: 4k page, physical 16777216k(393524k free) + +/proc/meminfo: + + +vm_info: Java HotSpot(TM) 64-Bit Server VM (25.271-b09) for bsd-amd64 JRE (1.8.0_271-b09), built on Sep 16 2020 16:54:38 by "java_re" with gcc 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5) + +time: Thu Nov 4 21:50:32 2021 +timezone: CST +elapsed time: 0.451916 seconds (0d 0h 0m 0s) + diff --git a/hs_err_pid87864.log b/hs_err_pid87864.log index 2a8d231..af7377c 100644 --- a/hs_err_pid87864.log +++ b/hs_err_pid87864.log @@ -106,8 +106,8 @@ j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0 j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108 j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12 j org.lwjgl.opengl.Display.create()V+7 -j MainWindow.start()V+24 -j MainWindow.main([Ljava/lang/String;)V+9 +j main.MainWindow.start()V+24 +j main.MainWindow.main([Ljava/lang/String;)V+9 v ~StubRoutines::call_stub V [libjvm.dylib+0x2d4795] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x771 V [libjvm.dylib+0x30582b] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x279 @@ -127,8 +127,8 @@ j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0 j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108 j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12 j org.lwjgl.opengl.Display.create()V+7 -j MainWindow.start()V+24 -j MainWindow.main([Ljava/lang/String;)V+9 +j main.MainWindow.start()V+24 +j main.MainWindow.main([Ljava/lang/String;)V+9 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- @@ -567,7 +567,7 @@ Dynamic libraries: VM Arguments: jvm_args: -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=62805:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -java_command: MainWindow +java_command: main.MainWindow java_class_path (initial): /Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/Assignment3/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Co Launcher Type: SUN_STANDARD diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF deleted file mode 100644 index c2184f5..0000000 --- a/src/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: MainWindow - diff --git a/src/Scene/Objects/Ground.java b/src/Scene/Objects/Ground.java new file mode 100644 index 0000000..3eaffcf --- /dev/null +++ b/src/Scene/Objects/Ground.java @@ -0,0 +1,54 @@ +package Scene.Objects; + +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import Scene.base.SceneObject; +import base.objects3D.TexCube; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.Color; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-16:01 + * @Project: Assignment3 + * @Package: Scene.Objects + * @Description: + **/ +public class Ground extends SceneObject { + private TexCube MyGrid = new TexCube(); + + public Ground(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public Ground(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + + public Ground(Point4f origin, Point4f position, Vector4f scale, Vector4f rotation, HashMap textures) { + super(origin, position, scale, rotation, textures); + } + + + @Override + public void draw() { + + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, + GL11.GL_REPEAT); + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, + GL11.GL_REPEAT); + Color.white.bind(); + //bind texture + getTextures().get("default_dirt").bind(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + MyGrid.DrawTexCube(10f); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + } +} diff --git a/src/objects3D/Human.java b/src/Scene/Objects/Human.java similarity index 84% rename from src/objects3D/Human.java rename to src/Scene/Objects/Human.java index 98c3a06..2f2144b 100644 --- a/src/objects3D/Human.java +++ b/src/Scene/Objects/Human.java @@ -1,13 +1,21 @@ -package objects3D; - -import GraphicsObjects.Utils; +package Scene.Objects; + +import Scene.base.SceneObject; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Utils; +import base.GraphicsObjects.Vector4f; +import base.objects3D.Cylinder; +import base.objects3D.Sphere; +import base.objects3D.TexSphere; +import main.Engine; import org.lwjgl.opengl.GL11; import org.newdawn.slick.Color; import org.newdawn.slick.opengl.Texture; import java.util.HashMap; -public class Human { +public class Human extends SceneObject { + // basic colours static float black[] = {0.0f, 0.0f, 0.0f, 1.0f}; @@ -32,20 +40,71 @@ public class Human { static float dkgreen[] = {0.0f, 0.5f, 0.0f, 1.0f, 1.0f}; static float pink[] = {1.0f, 0.6f, 0.6f, 1.0f, 1.0f}; - private HashMap textures; + private float delta; + private Boolean isWalking = false; + private long walkStartTime; + private int stopCount = 0; + private float angle; + + public Human(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public Human(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + - public Human(HashMap textures) { - this.textures = textures; + public float getDelta() { + return delta; + } + + public void setDelta(float delta) { + this.delta = delta; + } + + public void walk() { + stopCount = 0; + if (isWalking == false) { + isWalking = true; + walkStartTime = Engine.getTimePassed(); +// System.out.println(walkStartTime); + } + if (isWalking) { + this.delta = (Engine.getTimePassed() - walkStartTime)/10000f; + } } - // Implement using notes in Animation lecture - public void DrawHuman(float delta, boolean GoodAnimation) { + public void stop() { + if(stopCount > 5) { + isWalking = false; + this.delta = 0; + stopCount = 0; + } + stopCount++; + } + + public void setAngle(float angle) { + this.angle = angle; + } + + @Override + public void draw() { + + + Boolean GoodAnimation = true; + float theta_face = (float) (delta * 2 * Math.PI); +// float angle = -(float) (180 * (theta_face) / Math.PI); + + GL11.glRotatef(angle + 180, 0, 1, 0); + + float theta = (float) (delta * 2 * Math.PI) * 8; //a variable for anim sync float LimbRotation; //two animation if (GoodAnimation) { - LimbRotation = (float) Math.cos(theta) * 60; + LimbRotation = (float) Math.sin(theta) * 60; } else { LimbRotation = 0; } @@ -68,12 +127,13 @@ public class Human { GL11.GL_REPEAT); //bind a color texture Color.white.bind(); - textures.get("wool_pink").bind(); + + getTextures().get("wool_pink").bind(); //Enable TEXTURE GL11.glEnable(GL11.GL_TEXTURE_2D); //set texture Parameters GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("wool_pink")); + texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("wool_pink")); //Draw finish Disable TEXTURE GL11.glDisable(GL11.GL_TEXTURE_2D); @@ -91,11 +151,11 @@ public class Human { GL11.GL_REPEAT); Color.white.bind(); //bind color //bind texture - textures.get("tnt_side").bind(); //set texture + getTextures().get("tnt_side").bind(); //set texture //Enable TEXTURE GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("tnt_side")); + texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("tnt_side")); GL11.glDisable(GL11.GL_TEXTURE_2D); //disable texture @@ -125,10 +185,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("awesomeface").bind(); //set texture + getTextures().get("awesomeface").bind(); //set texture GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("awesomeface")); + texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("awesomeface")); GL11.glDisable(GL11.GL_TEXTURE_2D); @@ -151,10 +211,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); //set texture + getTextures().get("default_stone").bind(); //set texture GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -185,10 +245,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); + getTextures().get("default_stone").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.2f, 32, 32); @@ -212,10 +272,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); + getTextures().get("default_stone").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.2f, 32, 32); @@ -244,10 +304,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); + getTextures().get("default_stone").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -278,10 +338,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); + getTextures().get("default_stone").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.2f, 32, 32); @@ -305,10 +365,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_stone").bind(); + getTextures().get("default_stone").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone")); + texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.2f, 32, 32); @@ -344,10 +404,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -377,10 +437,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -404,10 +464,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.3f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.3f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.3f, 32, 32); @@ -434,10 +494,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -468,10 +528,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.25f, 32, 32); @@ -495,10 +555,10 @@ public class Human { GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); Color.white.bind(); - textures.get("default_cobble").bind(); + getTextures().get("default_cobble").bind(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - texSphere.DrawTexSphere(0.3f, 32, 32, textures.get("default_cobble")); + texSphere.DrawTexSphere(0.3f, 32, 32, getTextures().get("default_cobble")); GL11.glDisable(GL11.GL_TEXTURE_2D); // sphere.DrawSphere(0.3f, 32, 32); @@ -517,8 +577,6 @@ public class Human { GL11.glPopMatrix(); } - - } diff --git a/src/Scene/Objects/LAVA_Door.java b/src/Scene/Objects/LAVA_Door.java new file mode 100644 index 0000000..66849bf --- /dev/null +++ b/src/Scene/Objects/LAVA_Door.java @@ -0,0 +1,113 @@ +package Scene.Objects; + +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import Scene.base.SceneObject; +import base.objects3D.TexCube; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.Color; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-16:34 + * @Project: Assignment3 + * @Package: Scene.Objects + * @Description: + **/ +public class LAVA_Door extends SceneObject { + TexCube cube = new TexCube(); + public LAVA_Door(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public LAVA_Door(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + + @Override + public void draw() { + + Color.white.bind(); + getTextures().get("default_lava").bind(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + GL11.glTranslatef(-2f, 0f, 0); + cube.DrawTexCube(); + //LAVA + GL11.glPushMatrix(); + { + //Go UP + GL11.glTranslatef(0f, 2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, 2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, 2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, 2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + //go left (TOP lava) + GL11.glTranslatef(-2f, 0f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(-2f, 0f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(-2f, 0f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + //Go DOWN + GL11.glTranslatef(0f, -2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube.DrawTexCube(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + + } + GL11.glPopMatrix(); + + } + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + } +} diff --git a/src/Scene/Objects/TNT_Door.java b/src/Scene/Objects/TNT_Door.java new file mode 100644 index 0000000..2cd26fb --- /dev/null +++ b/src/Scene/Objects/TNT_Door.java @@ -0,0 +1,119 @@ +package Scene.Objects; + +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import Scene.base.SceneObject; +import base.objects3D.TexCube; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.Color; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:06 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public class TNT_Door extends SceneObject { + TexCube cube1 = new TexCube(); + + public TNT_Door(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public TNT_Door(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + + + @Override + public void draw() { + + Color.white.bind(); + getTextures().get("tnt_side").bind(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + cube1.DrawTexCube(); + //TNT + GL11.glPushMatrix(); + { + //go up + GL11.glTranslatef(0, 2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0, 2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0, 2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0, 2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + //right(top TNTs) + GL11.glTranslatef(2f, 0f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(2f, 0f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(2f, 0f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(2f, 0f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + //go down + GL11.glTranslatef(0f, -2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube1.DrawTexCube(); + GL11.glPushMatrix(); + { + GL11.glTranslatef(0f, -2f, 0); + cube1.DrawTexCube(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + } +} diff --git a/src/Scene/Objects/Wall.java b/src/Scene/Objects/Wall.java new file mode 100644 index 0000000..2c56f68 --- /dev/null +++ b/src/Scene/Objects/Wall.java @@ -0,0 +1,54 @@ +package Scene.Objects; + +import Scene.base.SceneObject; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import base.objects3D.TexCube; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.Color; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-16:01 + * @Project: Assignment3 + * @Package: Scene.Objects + * @Description: + **/ +public class Wall extends SceneObject { + private TexCube MyGrid = new TexCube(); + + public Wall(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public Wall(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + + public Wall(Point4f origin, Point4f position, Vector4f scale, Vector4f rotation, HashMap textures) { + super(origin, position, scale, rotation, textures); + } + + + @Override + public void draw() { + + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, + GL11.GL_REPEAT); + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, + GL11.GL_REPEAT); + Color.white.bind(); + //bind texture + getTextures().get("default_dirt").bind(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + MyGrid.DrawTexCube(10f); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + } +} diff --git a/src/Scene/Scene.java b/src/Scene/Scene.java new file mode 100644 index 0000000..77859d7 --- /dev/null +++ b/src/Scene/Scene.java @@ -0,0 +1,175 @@ +package Scene; + +import Scene.Objects.*; +import Scene.base.IDrawListener; +import Scene.base.SceneManager; +import Scene.base.SceneObject; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import main.Camera; +import main.Util; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import java.util.HashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-16:28 + * @Project: Assignment3 + * @Package: main + * @Description: + **/ +public class Scene { + + + public static void initScene(SceneManager sceneManager, HashMap textures) { + + Human human = new Human( + new Point4f(0, 130, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(90, 90, 90, 0), + textures + ); + sceneManager.addSceneObject(human); + sceneManager.addSceneObject(new Ground( + new Point4f(0, 0, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(2000f, 1f, 2000f, 0), + textures + )); + sceneManager.addSceneObject(new Ground( + new Point4f(0, 2000, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(2000f, 1f, 2000f, 0), + textures + )); + sceneManager.addSceneObject(new Wall( + new Point4f(0, 1000f, 2000, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(2000f, 1f, 1000f, 0), + new Vector4f(1, 0, 0, 90), + textures + )); + + sceneManager.addSceneObject(new Wall( + new Point4f(0, 1000f, -2000, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(2000f, 1f, 1000f, 0), + new Vector4f(1, 0, 0, 90), + textures + )); + + sceneManager.addSceneObject(new TNT_Door( + new Point4f(0, 50f, 200, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(50f, 50f, 50f, 0), + textures + )); + + sceneManager.addSceneObject(new LAVA_Door( + new Point4f(0, 50f, 200, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(50f, 50f, 50f, 0), + textures + )); + + } + + public static void drawAll(SceneManager sceneManager, Integer delta) { + + Boolean KEY_W = Keyboard.isKeyDown(Keyboard.KEY_W); + Boolean KEY_A = Keyboard.isKeyDown(Keyboard.KEY_A); + Boolean KEY_S = Keyboard.isKeyDown(Keyboard.KEY_S); + Boolean KEY_D = Keyboard.isKeyDown(Keyboard.KEY_D); + + sceneManager.drawAll(new IDrawListener() { + @Override + public void beforeEachDraw(SceneObject object) { + GL11.glPushMatrix(); + if (object instanceof Human) { + Human human = (Human) object; + Integer speed = 10; + float speedX = speed / human.getScale().x; + float speedY = speed / human.getScale().y; + float speedZ = speed / human.getScale().z; + Boolean hasKeyDown = false; + Vector4f move = new Vector4f(); + if (KEY_W) { + Vector4f tmp = new Vector4f(); + tmp = tmp.PlusVector(new Vector4f(0, 0, speedZ, 0)); + hasKeyDown = true; + float angle = Camera.rotation.y - 180; + float new_x = (float) (tmp.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (tmp.length() * Math.cos(Math.toRadians(angle))); + tmp.x = -new_x; + tmp.z = new_z; + System.out.println(tmp); + move = tmp.PlusVector(move); + human.setAngle(-angle); + } + if (KEY_D) { + Vector4f tmp = new Vector4f(); + tmp = tmp.PlusVector(new Vector4f(-speedX, 0, 0, 0)); +// System.out.println(tmp.length()); + hasKeyDown = true; + float angle = 180 - Camera.rotation.y - 90; + float new_x = (float) (tmp.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (tmp.length() * Math.cos(Math.toRadians(angle))); + tmp.x = new_x; + tmp.z = new_z; +// System.out.println(tmp); + move = tmp.PlusVector(move); + human.setAngle(angle); + } + if (KEY_S) { + Vector4f tmp = new Vector4f(); + tmp = tmp.PlusVector(new Vector4f(0, 0, -speedZ, 0)); + hasKeyDown = true; + float angle = Camera.rotation.y - 180; + float new_x = (float) (tmp.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (tmp.length() * Math.cos(Math.toRadians(angle))); + tmp.x = new_x; + tmp.z = -new_z; +// System.out.println(tmp); + move = tmp.PlusVector(move); + human.setAngle(-angle); + } + if (KEY_A) { + Vector4f tmp = new Vector4f(); + tmp = tmp.PlusVector(new Vector4f(speedX, 0, 0, 0)); + hasKeyDown = true; + float angle = 180 - Camera.rotation.y + 90; + float new_x = (float) (tmp.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (tmp.length() * Math.cos(Math.toRadians(angle))); + tmp.x = new_x; + tmp.z = new_z; + move = tmp.PlusVector(move); + human.setAngle(angle); + } + if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { + move = move.PlusVector(new Vector4f(0, speedY, 0, 0)); + } + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + move = move.PlusVector(new Vector4f(0, -speedY, 0, 0)); + } + human.move(move); +// human.setPosition(new Point4f(posn_x * 3.0f, 0.0f, posn_y * 3.0f, 0)); + if (hasKeyDown) { + human.walk(); + + } + { + human.stop(); + } + } + } + + @Override + public void afterEachDraw(SceneObject object) { + GL11.glPopMatrix(); + } + }); + } + +} diff --git a/src/Scene/base/IDrawListener.java b/src/Scene/base/IDrawListener.java new file mode 100644 index 0000000..0ae9076 --- /dev/null +++ b/src/Scene/base/IDrawListener.java @@ -0,0 +1,13 @@ +package Scene.base; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:46 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public interface IDrawListener { + void beforeEachDraw(SceneObject object); + void afterEachDraw(SceneObject object); +} diff --git a/src/Scene/base/IDrawable.java b/src/Scene/base/IDrawable.java new file mode 100644 index 0000000..be65ac5 --- /dev/null +++ b/src/Scene/base/IDrawable.java @@ -0,0 +1,13 @@ +package Scene.base; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:06 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public interface IDrawable { + void draw(IDrawListener listener); + void draw(); +} diff --git a/src/Scene/base/IMovable.java b/src/Scene/base/IMovable.java new file mode 100644 index 0000000..ce83a5f --- /dev/null +++ b/src/Scene/base/IMovable.java @@ -0,0 +1,16 @@ +package Scene.base; + +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:42 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public interface IMovable { + void setPosition(Point4f point); + void move(Vector4f vector); +} diff --git a/src/Scene/base/IScalable.java b/src/Scene/base/IScalable.java new file mode 100644 index 0000000..a7e323d --- /dev/null +++ b/src/Scene/base/IScalable.java @@ -0,0 +1,15 @@ +package Scene.base; + +import base.GraphicsObjects.Vector4f; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-16:23 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public interface IScalable { + void setScale(Vector4f scale); + +} diff --git a/src/Scene/base/SceneManager.java b/src/Scene/base/SceneManager.java new file mode 100644 index 0000000..f52cd10 --- /dev/null +++ b/src/Scene/base/SceneManager.java @@ -0,0 +1,32 @@ +package Scene.base; + +import java.util.ArrayList; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:39 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public class SceneManager { + private ArrayList sceneObjects = new ArrayList<>(); + + public void drawAll(IDrawListener listener){ + for(int i = 0; i < sceneObjects.size(); i++){ + sceneObjects.get(i).draw(listener); + } + } + + public void addSceneObject(SceneObject sceneObject) { + sceneObjects.add(sceneObject); + } + + public ArrayList getSceneObjects() { + return sceneObjects; + } + + public void setSceneObjects(ArrayList sceneObjects) { + this.sceneObjects = sceneObjects; + } +} diff --git a/src/Scene/base/SceneObject.java b/src/Scene/base/SceneObject.java new file mode 100644 index 0000000..33549b2 --- /dev/null +++ b/src/Scene/base/SceneObject.java @@ -0,0 +1,123 @@ +package Scene.base; + +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; +import java.util.LinkedHashMap; + +/** + * @Author: WangYuyang + * @Date: 2021/11/2-15:07 + * @Project: Assignment3 + * @Package: Scene + * @Description: + **/ +public abstract class SceneObject implements IDrawable, IMovable, IScalable { + private Point4f origin = new Point4f(); + private Point4f position = new Point4f(); + private Vector4f scale = new Vector4f(); + private Vector4f rotation = new Vector4f(); + private HashMap textures = new LinkedHashMap<>(); + + public SceneObject(Point4f origin, Point4f position, Vector4f scale) { + this.origin = new Point4f(origin.x, origin.y, origin.z, 0); + this.position = new Point4f(position.x, position.y, position.z, 0); + this.scale = new Vector4f(scale.x, scale.y, scale.z, 0); + } + + public SceneObject(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + this.origin = new Point4f(origin.x, origin.y, origin.z, 0); + this.position = new Point4f(position.x, position.y, position.z, 0); + this.textures = new LinkedHashMap<>(textures); + this.scale = new Vector4f(scale.x, scale.y, scale.z, 0); + } + + public SceneObject(Point4f origin, Point4f position, Vector4f scale, Vector4f rotation, HashMap textures) { + this.origin = origin; + this.position = position; + this.scale = scale; + this.rotation = rotation; + this.textures = textures; + } + + @Override + public void setScale(Vector4f scale) { + scale = new Vector4f( + scale.x, + scale.y, + scale.z, + 0 + ); + } + + @Override + public void move(Vector4f vector) { + this.position = position.PlusVector(vector); + +// GL11.glTranslatef(getOrigin().x, getOrigin().y, getOrigin().z); +// GL11.glScalef(90f, 90f, 90f); +// GL11.glTranslatef(getPosition().x , getPosition().y, getPosition().z); + } + + @Override + public void draw(IDrawListener listener) { + //move object to correct position + listener.beforeEachDraw(this); + GL11.glTranslatef(origin.x, origin.y, origin.z); + GL11.glRotatef(rotation.a, rotation.x, rotation.y, rotation.z); + GL11.glScalef(scale.x, scale.y, scale.z); + GL11.glTranslatef(position.x, position.y, position.z); + this.draw(); + listener.afterEachDraw(this); + + } + + public Point4f getWorldPosition(){ + Point4f point4f = new Point4f(); + point4f.x = getOrigin().x + position.x * scale.x; + point4f.y = getOrigin().y + position.y * scale.y; + point4f.z = getOrigin().z + position.z * scale.z; + + return point4f; + } + + public Point4f getOrigin() { + return origin; + } + + public void setOrigin(Point4f origin) { + this.origin = origin; + } + + public Point4f getPosition() { + return position; + } + + @Override + public void setPosition(Point4f point) { + this.position = new Point4f( + point.x, + point.y, + point.z, + 0 + ); +// GL11.glTranslatef(getOrigin().x, getOrigin().y, getOrigin().z); +// GL11.glScalef(90f, 90f, 90f); +// GL11.glTranslatef(getPosition().x , getPosition().y, getPosition().z); + } + + public HashMap getTextures() { + return textures; + } + + public void setTextures(HashMap textures) { + this.textures = textures; + } + + public Vector4f getScale() { + return scale; + } +} diff --git a/src/GraphicsObjects/Arcball.java b/src/base/GraphicsObjects/Arcball.java similarity index 94% rename from src/GraphicsObjects/Arcball.java rename to src/base/GraphicsObjects/Arcball.java index 0006d42..36e147d 100644 --- a/src/GraphicsObjects/Arcball.java +++ b/src/base/GraphicsObjects/Arcball.java @@ -1,4 +1,4 @@ -package GraphicsObjects; +package base.GraphicsObjects; import java.nio.FloatBuffer; diff --git a/src/GraphicsObjects/Point4f.java b/src/base/GraphicsObjects/Point4f.java similarity index 97% rename from src/GraphicsObjects/Point4f.java rename to src/base/GraphicsObjects/Point4f.java index 3202c03..e320a9a 100644 --- a/src/GraphicsObjects/Point4f.java +++ b/src/base/GraphicsObjects/Point4f.java @@ -1,4 +1,4 @@ -package GraphicsObjects; +package base.GraphicsObjects; public class Point4f { diff --git a/src/GraphicsObjects/Utils.java b/src/base/GraphicsObjects/Utils.java similarity index 88% rename from src/GraphicsObjects/Utils.java rename to src/base/GraphicsObjects/Utils.java index baa958b..9ef3bdc 100644 --- a/src/GraphicsObjects/Utils.java +++ b/src/base/GraphicsObjects/Utils.java @@ -1,4 +1,4 @@ -package GraphicsObjects; +package base.GraphicsObjects; import java.nio.FloatBuffer; import org.lwjgl.BufferUtils; diff --git a/src/GraphicsObjects/Vector4f.java b/src/base/GraphicsObjects/Vector4f.java similarity index 93% rename from src/GraphicsObjects/Vector4f.java rename to src/base/GraphicsObjects/Vector4f.java index 45f130a..1a3b1d9 100644 --- a/src/GraphicsObjects/Vector4f.java +++ b/src/base/GraphicsObjects/Vector4f.java @@ -1,4 +1,4 @@ -package GraphicsObjects; +package base.GraphicsObjects; public class Vector4f { @@ -136,6 +136,15 @@ public class Vector4f { return new Vector4f(u0, u1, u2, u3); } + @Override + public String toString() { + return "Vector4f{" + + "x=" + x + + ", y=" + y + + ", z=" + z + + ", a=" + a + + '}'; + } } diff --git a/src/GraphicsObjects/quat.java b/src/base/GraphicsObjects/quat.java similarity index 94% rename from src/GraphicsObjects/quat.java rename to src/base/GraphicsObjects/quat.java index b1c94fa..e465b66 100644 --- a/src/GraphicsObjects/quat.java +++ b/src/base/GraphicsObjects/quat.java @@ -1,9 +1,7 @@ -package GraphicsObjects; +package base.GraphicsObjects; import java.nio.FloatBuffer; -import org.lwjgl.BufferUtils; - /* * Created by Owen Grogan on 06/05/2010. * Copyright 2010 School of Computer Science and Informatics. All rights reserved. diff --git a/src/base/RenderProgramStatement.java b/src/base/RenderProgramStatement.java new file mode 100644 index 0000000..0200c39 --- /dev/null +++ b/src/base/RenderProgramStatement.java @@ -0,0 +1,12 @@ +package base; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-16:18 + * @Project: Assignment3 + * @Package: base + * @Description: + **/ +public interface RenderProgramStatement { + void render(int delta); +} diff --git a/src/objects3D/Cube.java b/src/base/objects3D/Cube.java similarity index 93% rename from src/objects3D/Cube.java rename to src/base/objects3D/Cube.java index 81dc991..35c18d4 100644 --- a/src/objects3D/Cube.java +++ b/src/base/objects3D/Cube.java @@ -1,7 +1,7 @@ -package objects3D; +package base.objects3D; -import GraphicsObjects.Point4f; -import GraphicsObjects.Vector4f; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; import org.lwjgl.opengl.GL11; public class Cube { diff --git a/src/objects3D/Cylinder.java b/src/base/objects3D/Cylinder.java similarity index 94% rename from src/objects3D/Cylinder.java rename to src/base/objects3D/Cylinder.java index 0ebc551..5c20ee6 100644 --- a/src/objects3D/Cylinder.java +++ b/src/base/objects3D/Cylinder.java @@ -1,6 +1,6 @@ -package objects3D; +package base.objects3D; -import GraphicsObjects.Vector4f; +import base.GraphicsObjects.Vector4f; import org.lwjgl.opengl.GL11; public class Cylinder { diff --git a/src/objects3D/Grid.java b/src/base/objects3D/Grid.java similarity index 97% rename from src/objects3D/Grid.java rename to src/base/objects3D/Grid.java index 6f9c4e2..d9629ad 100644 --- a/src/objects3D/Grid.java +++ b/src/base/objects3D/Grid.java @@ -1,10 +1,8 @@ -package objects3D; +package base.objects3D; import org.lwjgl.opengl.GL11; -import GraphicsObjects.Point4f; -import GraphicsObjects.Utils; -import GraphicsObjects.Vector4f; - +import base.GraphicsObjects.Utils; + public class Grid { diff --git a/src/objects3D/Sphere.java b/src/base/objects3D/Sphere.java similarity index 96% rename from src/objects3D/Sphere.java rename to src/base/objects3D/Sphere.java index 96245cf..ef54180 100644 --- a/src/objects3D/Sphere.java +++ b/src/base/objects3D/Sphere.java @@ -1,4 +1,4 @@ -package objects3D; +package base.objects3D; import org.lwjgl.opengl.GL11; diff --git a/src/objects3D/TexCube.java b/src/base/objects3D/TexCube.java similarity index 95% rename from src/objects3D/TexCube.java rename to src/base/objects3D/TexCube.java index 08931dc..7c17d70 100644 --- a/src/objects3D/TexCube.java +++ b/src/base/objects3D/TexCube.java @@ -1,7 +1,7 @@ -package objects3D; +package base.objects3D; -import GraphicsObjects.Point4f; -import GraphicsObjects.Vector4f; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; import org.lwjgl.opengl.GL11; public class TexCube { diff --git a/src/objects3D/TexSphere.java b/src/base/objects3D/TexSphere.java similarity index 97% rename from src/objects3D/TexSphere.java rename to src/base/objects3D/TexSphere.java index 3fdd562..8532420 100644 --- a/src/objects3D/TexSphere.java +++ b/src/base/objects3D/TexSphere.java @@ -1,4 +1,4 @@ -package objects3D; +package base.objects3D; import org.lwjgl.opengl.GL11; import org.newdawn.slick.opengl.Texture; diff --git a/src/main/Camera.java b/src/main/Camera.java new file mode 100644 index 0000000..d9ebb6a --- /dev/null +++ b/src/main/Camera.java @@ -0,0 +1,160 @@ +package main; + +import base.GraphicsObjects.Vector4f; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.lwjgl.util.vector.Vector3f; + +import static org.lwjgl.opengl.GL11.glRotatef; +import static org.lwjgl.opengl.GL11.glTranslatef; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-16:56 + * @Project: Assignment3 + * @Package: main + * @Description: + **/ +public class Camera { + private static final int maxLookUp = 30; + private static final int maxLookDown = -20; + public static int OrthoNumber = 0; // using this for screen size, making a window of 1200 x 800 so aspect ratio 3:2 + public static Vector3f rotation = new Vector3f(10, 180, 0); + private static int mouseSpeed = 1; + private static Vector4f inital_camera_position = new Vector4f(); + private Vector4f position = new Vector4f(0, 0, 0, 0); + private float rotationX = -20; + private float rotationY = 0; + private float rotationZ = 0; + private boolean MouseOnepressed = true; + private boolean dragMode = false; + + + public Camera() { + } + + public void setCamera(Vector4f v) { + inital_camera_position = v; +// glRotatef(rotationX, 1, 0, 0); +// glRotatef(rotationY, 0, 1, 0); +// glRotatef(rotationZ, 0, 0, 1); + } + + public void update() { + int WheelPosition = Mouse.getDWheel(); + int MouseX = Mouse.getX(); + int MouseY = Mouse.getY(); + int MouseDX = Mouse.getDX(); + int MouseDY = Mouse.getDY(); + boolean MouseButtonPressed = Mouse.isButtonDown(0); + boolean isGrabbed = Mouse.isGrabbed(); + + glTranslatef(inital_camera_position.x, inital_camera_position.y, inital_camera_position.z); + if (WheelPosition > 0) { + OrthoNumber += 10; + } + if (WheelPosition < 0) { + OrthoNumber -= 10; + } + + if (Keyboard.isKeyDown(Keyboard.KEY_W)) { + Vector4f move = new Vector4f(); + move = move.PlusVector(new Vector4f(0, 0, -10, 0)); +// position.z -= 10f; + float angle = rotation.y - 180; + float new_x = (float) (move.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (move.length() * Math.cos(Math.toRadians(angle))); + move.x = new_x; + move.z = -new_z; + position = position.PlusVector(move); + } + if (Keyboard.isKeyDown(Keyboard.KEY_D)) { +// move = move.PlusVector(new Vector4f(10, 0, 0, 0)); +// position.x += 10f; + Vector4f move = new Vector4f(); + move = move.PlusVector(new Vector4f(10, 0, 0, 0)); +// position.z -= 10f; + float angle = 180 - rotation.y + 90; + float new_x = (float) (move.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (move.length() * Math.cos(Math.toRadians(angle))); + move.x = new_x; + move.z = new_z; + position = position.PlusVector(move); + } + if (Keyboard.isKeyDown(Keyboard.KEY_S)) { + Vector4f move = new Vector4f(); + move = move.PlusVector(new Vector4f(0, 0, 10, 0)); +// position.z += 10f; + float angle = rotation.y - 180; + float new_x = (float) (move.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (move.length() * Math.cos(Math.toRadians(angle))); + move.x = -new_x; + move.z = new_z; + position = position.PlusVector(move); + } + if (Keyboard.isKeyDown(Keyboard.KEY_A)) { +// move = move.PlusVector(new Vector4f(-10, 0, 0, 0)); + Vector4f move = new Vector4f(); + move = move.PlusVector(new Vector4f(-10, 0, 0, 0)); +// position.z -= 10f; + float angle = 180 - rotation.y - 90; + float new_x = (float) (move.length() * Math.sin(Math.toRadians(angle))); + float new_z = (float) (move.length() * Math.cos(Math.toRadians(angle))); + move.x = new_x; + move.z = new_z; + position = position.PlusVector(move); + } + + + if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { + position.y -= 10f; + } + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + position.y += 10f; + } + + while (Mouse.next()) { + if (Mouse.isButtonDown(0)) { + Mouse.setGrabbed(true); + } + if (Mouse.isButtonDown(1)) { + Mouse.setGrabbed(false); + } + } + + if (Mouse.isGrabbed()) { + float mouseDX = MouseDX * mouseSpeed * 0.16f; + float mouseDY = MouseDY * mouseSpeed * 0.16f; + if (rotation.y + mouseDX >= 360) { + rotation.y = rotation.y + mouseDX - 360; + } else if (rotation.y + mouseDX < 0) { + rotation.y = 360 - rotation.y + mouseDX; + } else { + rotation.y += mouseDX; + } + if (rotation.x - mouseDY >= maxLookDown && rotation.x - mouseDY <= maxLookUp) { + rotation.x += -mouseDY; + } else if (rotation.x - mouseDY < maxLookDown) { + rotation.x = maxLookDown; + } else if (rotation.x - mouseDY > maxLookUp) { + rotation.x = maxLookUp; + } + } + + + glRotatef(rotation.x, 1, 0, 0); + glRotatef(rotation.y, 0, 1, 0); + glRotatef(-rotation.z, 0, 0, 1); + glTranslatef(position.x, position.y, position.z); + + Main.engine.setOrtho(Camera.OrthoNumber); + + +// GL11.glMatrixMode(GL11.GL_MODELVIEW); +// FloatBuffer CurrentMatrix = BufferUtils.createFloatBuffer(16); +// GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, CurrentMatrix); +// MyArcball.getMatrix(CurrentMatrix); +// GL11.glMultMatrix(CurrentMatrix); + + } +} diff --git a/src/main/Engine.java b/src/main/Engine.java new file mode 100644 index 0000000..10ebe13 --- /dev/null +++ b/src/main/Engine.java @@ -0,0 +1,239 @@ +package main; + +import base.GraphicsObjects.Utils; +import base.RenderProgramStatement; +import org.lwjgl.BufferUtils; +import org.lwjgl.LWJGLException; +import org.lwjgl.Sys; +import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.DisplayMode; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.opengl.Texture; +import org.newdawn.slick.opengl.TextureLoader; +import org.newdawn.slick.util.ResourceLoader; + +import java.io.IOException; +import java.nio.FloatBuffer; +import java.util.HashMap; +import java.util.LinkedHashMap; + +import static org.lwjgl.opengl.GL11.*; +import static org.lwjgl.util.glu.GLU.gluPerspective; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-15:58 + * @Project: Assignment3 + * @Package: PACKAGE_NAME + * @Description: + **/ +public class Engine { + private static final int FPS = 60; + public static HashMap textures = new LinkedHashMap(); + // basic colours + static float black[] = {0.0f, 0.0f, 0.0f, 1.0f}; + static float white[] = {1.0f, 1.0f, 1.0f, 1.0f}; + static float grey[] = {0.5f, 0.5f, 0.5f, 1.0f}; + static float spot[] = {0.1f, 0.1f, 0.1f, 0.5f}; + // primary colours + static float red[] = {1.0f, 0.0f, 0.0f, 1.0f}; + static float green[] = {0.0f, 1.0f, 0.0f, 1.0f}; + static float blue[] = {0.0f, 0.0f, 1.0f, 1.0f}; + // secondary colours + static float yellow[] = {1.0f, 1.0f, 0.0f, 1.0f}; + static float magenta[] = {1.0f, 0.0f, 1.0f, 1.0f}; + static float cyan[] = {0.0f, 1.0f, 1.0f, 1.0f}; + // other colours + static float orange[] = {1.0f, 0.5f, 0.0f, 1.0f, 1.0f}; + static float brown[] = {0.5f, 0.25f, 0.0f, 1.0f, 1.0f}; + static float dkgreen[] = {0.0f, 0.5f, 0.0f, 1.0f, 1.0f}; + static float pink[] = {1.0f, 0.6f, 0.6f, 1.0f, 1.0f}; + private static long lastFrameTime; + private static long startTime; + private static long timePassed; + /** + * frames per second + */ + int fps; + /** + * last fps time + */ + long lastFPS; + + + public Engine(int WIDTH, int HEIGHT) { + try { + Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT)); + Display.create(); + Display.setTitle("CG Project 1"); + } catch (LWJGLException e) { + e.printStackTrace(); + } + } + + public static HashMap getTextures() { + return textures; + } + + public static long getStartTime() { + return startTime; + } + + public static long getTimePassed() { + return timePassed; + } + + public void init() { + Display.setVSyncEnabled(true); + loadTexture(); + + } + + public void enterModelView() { + GL11.glMatrixMode(GL_MODELVIEW); + } + + public void initTimer() { + lastFrameTime = getTime(); + startTime = getTime(); + lastFPS = getTime(); // call before loop to initialise fps timer + } + + public void setLight() { + GL11.glMatrixMode(GL11.GL_MODELVIEW); + FloatBuffer lightPos = BufferUtils.createFloatBuffer(4); + lightPos.put(10000f).put(1000f).put(1000).put(0).flip(); + + FloatBuffer lightPos2 = BufferUtils.createFloatBuffer(4); + lightPos2.put(0f).put(1000f).put(0).put(-1000f).flip(); + + FloatBuffer lightPos3 = BufferUtils.createFloatBuffer(4); + lightPos3.put(-10000f).put(1000f).put(1000).put(0).flip(); + + FloatBuffer lightPos4 = BufferUtils.createFloatBuffer(4); + lightPos4.put(1000f).put(1000f).put(1000f).put(0).flip(); + + GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, lightPos); // specify the + // position + // of the + // light +// GL11.glEnable(GL11.GL_LIGHT0); // switch light #0 on // I've setup specific materials so in real light it will look abit strange + + GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, lightPos); // specify the + // position + // of the + // light + GL11.glEnable(GL11.GL_LIGHT1); // switch light #0 on + GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, Utils.ConvertForGL(spot)); + + GL11.glLight(GL11.GL_LIGHT2, GL11.GL_POSITION, lightPos3); // specify + // the + // position + // of the + // light + GL11.glEnable(GL11.GL_LIGHT2); // switch light #0 on + GL11.glLight(GL11.GL_LIGHT2, GL11.GL_DIFFUSE, Utils.ConvertForGL(grey)); + + GL11.glLight(GL11.GL_LIGHT3, GL11.GL_POSITION, lightPos4); // specify + // the + // position + // of the + // light + GL11.glEnable(GL11.GL_LIGHT3); // switch light #0 on + GL11.glLight(GL11.GL_LIGHT3, GL11.GL_DIFFUSE, Utils.ConvertForGL(grey)); + + GL11.glEnable(GL11.GL_LIGHTING); // switch lighting on + GL11.glEnable(GL11.GL_DEPTH_TEST); // make sure depth buffer is switched + // on + GL11.glEnable(GL11.GL_NORMALIZE); // normalize normal vectors for safety + GL11.glEnable(GL11.GL_COLOR_MATERIAL); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } + + public void close() { + Display.destroy(); + System.exit(0); + } + + public void render(RenderProgramStatement renderProgram) { + + glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); + GL11.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + GL11.glColor3f(0.5f, 0.5f, 1.0f); + + int delta = getDelta(); + timePassed = getTime() - startTime; + + updateFPS(); + checkInput(); + glPushMatrix(); + renderProgram.render(delta); + glPopMatrix(); + + Display.update(); + Display.sync(FPS); + } + + private void checkInput() { + + } + + public void setOrtho(int OrthoNumber) { + if (600 + OrthoNumber > 0 && 700 + OrthoNumber * 0.66 > 0) { + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + //Placing 0,0 at the center of the screen +// GL11.glOrtho(1200 / 2 - OrthoNumber, OrthoNumber / 2, (800 / 2 - (OrthoNumber * 0.66f)), (OrthoNumber / 2 * 0.66f), 100000, -100000); +// GL11.glOrtho(1200 - OrthoNumber, OrthoNumber, (800 - (OrthoNumber * 0.66f)), (OrthoNumber * 0.66f), 100000, -100000);F + gluPerspective((float) 60, Display.getWidth() / Display.getHeight(), 100f, 10000); + +// GL11.glOrtho(-600 - OrthoNumber, 600 + OrthoNumber, -100 - OrthoNumber * 0.66, 700 + OrthoNumber * 0.66, 100000, -100000); + enterModelView(); + } + + } + + private long getTime() { + return (Sys.getTime() * 1000) / Sys.getTimerResolution(); + } + + private int getDelta() { + long currentTime = getTime(); + int delta = (int) (currentTime - lastFrameTime); + lastFrameTime = getTime(); + return delta; + } + + private void loadTexture() { + //LOAD textures + try { + textures.put("awesomeface", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png"))); + + textures.put("default_dirt", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_dirt.png"))); + textures.put("earthspace", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/earthspace.png"))); + textures.put("tnt_side", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/tnt_side.png"))); + textures.put("farming_wheat_8", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/farming_wheat_8.png"))); + textures.put("wool_pink", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/wool_pink.png"))); + textures.put("default_lava", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_lava.png"))); + textures.put("default_stone", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_stone.png"))); + textures.put("default_cobble", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_cobble.png"))); +// textures.put("awesomeface",TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png"))); +// textures.put("awesomeface",TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png"))); + + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("Texture loaded okay "); + } + + public void updateFPS() { + if (getTime() - lastFPS > 1000) { + Display.setTitle("FPS: " + fps); + fps = 0; + lastFPS += 1000; + } + fps++; + } +} diff --git a/src/main/Main.java b/src/main/Main.java new file mode 100644 index 0000000..94266a2 --- /dev/null +++ b/src/main/Main.java @@ -0,0 +1,78 @@ +package main; + +import Scene.Scene; +import Scene.base.SceneManager; +import base.GraphicsObjects.Vector4f; +import base.RenderProgramStatement; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.Display; + +import static org.lwjgl.opengl.GL11.glPopMatrix; +import static org.lwjgl.opengl.GL11.glPushMatrix; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-15:58 + * @Project: Assignment3 + * @Package: PACKAGE_NAME + * @Description: + **/ +public class Main { + public static final int WIDTH = 1200; + public static final int HEIGHT = 800; + private static final boolean DEBUG = false; + public static Engine engine; + private static SceneManager sceneManager = new SceneManager(); + private static Camera camera = new Camera(); + private static Boolean FPS_MODE = false; + + public static void main(String[] args) { + engine = new Engine(WIDTH, HEIGHT); + engine.init(); + engine.setOrtho(Camera.OrthoNumber); + engine.setLight(); + engine.enterModelView(); + engine.initTimer(); + + + camera.setCamera(new Vector4f( + 0, -300, -600, 0 + )); + + + Scene.initScene(sceneManager, Engine.getTextures()); + + while (!Display.isCloseRequested()) { + glPushMatrix(); + engine.render(new RenderProgramStatement() { + @Override + public void render(int delta) { + camera.update(); + Scene.drawAll(sceneManager, delta); + + } + }); + glPopMatrix(); + + if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) { + break; + } + if (Keyboard.isKeyDown(Keyboard.KEY_F)) { + FPS_MODE = FPS_MODE ? false : true; + } + if(FPS_MODE){ + camera.setCamera(new Vector4f( + 0, -500, 0, 0 + )); + } + else{ + camera.setCamera(new Vector4f( + 0, -300, -600, 0 + )); + } + } + + engine.close(); + + } +} diff --git a/src/MainWindow.java b/src/main/MainWindow.java similarity index 52% rename from src/MainWindow.java rename to src/main/MainWindow.java index efc2d16..977b08f 100644 --- a/src/MainWindow.java +++ b/src/main/MainWindow.java @@ -1,9 +1,16 @@ -import GraphicsObjects.Arcball; -import GraphicsObjects.Utils; -import GraphicsObjects.Vector4f; -import objects3D.Grid; -import objects3D.Human; -import objects3D.TexCube; +package main; + +import base.GraphicsObjects.Arcball; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Utils; +import base.GraphicsObjects.Vector4f; +import Scene.base.IDrawListener; +import Scene.Objects.Ground; +import Scene.Objects.Human; +import Scene.Objects.LAVA_Door; +import Scene.Objects.TNT_Door; +import Scene.base.SceneManager; +import Scene.base.SceneObject; import org.lwjgl.BufferUtils; import org.lwjgl.LWJGLException; import org.lwjgl.Sys; @@ -12,18 +19,17 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import org.lwjgl.opengl.GL11; -import org.lwjgl.util.glu.GLU; -import org.newdawn.slick.Color; import org.newdawn.slick.opengl.Texture; import org.newdawn.slick.opengl.TextureLoader; import org.newdawn.slick.util.ResourceLoader; + import java.io.IOException; import java.nio.FloatBuffer; import java.util.HashMap; import java.util.LinkedHashMap; -//Main windows class controls and creates the 3D virtual world , please do not change this class but edit the other classes to complete the assignment. -// Main window is built upon the standard Helloworld LWJGL class which I have heavily modified to use as your standard openGL environment. +//main.Main windows class controls and creates the 3D virtual world , please do not change this class but edit the other classes to complete the assignment. +// main.Main window is built upon the standard Helloworld LWJGL class which I have heavily modified to use as your standard openGL environment. // // Do not touch this class, I will be making a version of it for your 3rd Assignment @@ -94,10 +100,14 @@ public class MainWindow { private boolean Earth = false; //mouse right button click record - private int secMouseX = 700; - private int secMouseY = 0; + private int secMouseX = 339; + private int secMouseY = 155; //if mouse right button click private Boolean secMousePressed = false; + private SceneManager sceneManager = new SceneManager(); + + private Human human; + public static void main(String[] argv) { MainWindow hello = new MainWindow(); @@ -127,6 +137,8 @@ public class MainWindow { //move camera away OrthoNumber = 1440; + initScene(); + while (!Display.isCloseRequested()) { int delta = getDelta(); @@ -164,14 +176,9 @@ public class MainWindow { //scene rotation if (MouseButonPressed && !MouseOnepressed) { MouseOnepressed = true; -// System.out.println("Mouse drag mode"); MyArcball.startBall(MouseX, MouseY, 1200, 800); -// System.out.println(MouseX + " " + MouseY); - System.out.println(OrthoNumber); dragMode = true; } else if (!MouseButonPressed) { -// if(MouseX != LastMouseX) -// System.out.println(MouseX + " " + MouseY); MouseOnepressed = false; dragMode = false; } @@ -202,15 +209,15 @@ public class MainWindow { /* bad animation can be turn on or off using A key)*/ - if (Keyboard.isKeyDown(Keyboard.KEY_A)) - BadAnimation = !BadAnimation; - if (Keyboard.isKeyDown(Keyboard.KEY_D)) - x += 0.35f * delta; - - if (Keyboard.isKeyDown(Keyboard.KEY_W)) - y += 0.35f * delta; - if (Keyboard.isKeyDown(Keyboard.KEY_S)) - y -= 0.35f * delta; +// if (Keyboard.isKeyDown(Keyboard.KEY_A)) +// BadAnimation = !BadAnimation; +// if (Keyboard.isKeyDown(Keyboard.KEY_D)) +// x += 0.35f * delta; +// +// if (Keyboard.isKeyDown(Keyboard.KEY_W)) +// y += 0.35f * delta; +// if (Keyboard.isKeyDown(Keyboard.KEY_S)) +// y -= 0.35f * delta; if (Keyboard.isKeyDown(Keyboard.KEY_Q)) rotation += 0.35f * delta; @@ -361,7 +368,9 @@ public class MainWindow { GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); - GL11.glOrtho(1200 - OrthoNumber, OrthoNumber, (800 - (OrthoNumber * 0.66f)), (OrthoNumber * 0.66f), 100000, -100000); + GL11.glOrtho(1200/2 - OrthoNumber, OrthoNumber/2, (800/2 - (OrthoNumber * 0.66f)), (OrthoNumber/2 * 0.66f), 100000, -100000); +// GL11.glOrtho(1200 - OrthoNumber, OrthoNumber, (800 - (OrthoNumber * 0.66f)), (OrthoNumber * 0.66f), 100000, -100000); +// GL11.glOrtho(-600, 600, -400, 400, 100000, -100000); GL11.glMatrixMode(GL11.GL_MODELVIEW); FloatBuffer CurrentMatrix = BufferUtils.createFloatBuffer(16); @@ -371,7 +380,7 @@ public class MainWindow { // { MyArcball.getMatrix(CurrentMatrix); - // } +// } GL11.glLoadMatrix(CurrentMatrix); @@ -399,282 +408,149 @@ public class MainWindow { float posn_y = (float) Math.sin(theta); // OrthoNumber = (int) (1240 + posn_x * 200); //letting the OrthoNumber change when the scene change - - if (!BadAnimation) { -// secMouseX = 600; -// secMouseY = 100; - GL11.glTranslatef(secMouseX, secMouseY, 0); - GLU.gluLookAt(2f, -1f, -1f, 0f, 0f, 0f, 0f, 1f, 0f); - -// Vector4f v = new Vector4f(-posn_x, -0.5f, -posn_y, 0f); -// GL11.glTranslatef(secMouseX, secMouseY, 0); +// GL11.glTranslatef(secMouseX, secMouseY, 0); +// System.out.println(secMouseX + " " + secMouseY); +// Vector4f v1 = new Vector4f(human.getPosition().x, 0f, human.getPosition().z,0f); +// Vector4f v2 = new Vector4f(0f, 1f, 0f,0f); +// Vector4f v3 = v1.cross(v2); +// v3 = new Vector4f(v3.x, v3.y - 1f, v3.z, 0f).Normal(); + +// GLU.gluLookAt( +// v3.x, +// v3.y, +// v3.z, +// +// 0, +// 0, +// 0, +// +// 0f, +// 1f, +// 0f); //change the look at position +// GLU.gluLookAt( +// 0, +// -50, +// 200, +// +// 0, +// 0, +// 0, // +// 0f, +// 1f, +// 0f); //change the look at position +// if (!BadAnimation) { +//// secMouseX = 600; +//// secMouseY = 100; +// +// +//// Vector4f v = new Vector4f(-posn_x, -0.5f, -posn_y, 0f); +//// GL11.glTranslatef(secMouseX, secMouseY, 0); +//// // Vector4f v1 = new Vector4f(posn_x, 0f, posn_y,0f); // Vector4f v2 = new Vector4f(0f, 1f, 0f,0f); // Vector4f v3 = v1.cross(v2); // v3 = new Vector4f(v3.x, v3.y + 0.3f, v3.z, 0f).Normal(); // // GLU.gluLookAt(-v3.x, -v3.y, -v3.z, 0f, 0f, 0f, 0f, 1f, 0f); //change the look at position - } else { - - GL11.glTranslatef(secMouseX, secMouseY, 0); - GLU.gluLookAt(2f, -1f, -1f, 0f, 0f, 0f, 0f, 1f, 0f); - } - - - //Draw a big plain - GL11.glPushMatrix(); - TexCube MyGrid = new TexCube(); - GL11.glScalef(8000f, 1f, 8000f); - GL11.glTexParameteri( - GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, - GL11.GL_REPEAT); - GL11.glTexParameteri( - GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, - GL11.GL_REPEAT); - Color.white.bind(); - //bind texture - textures.get("default_dirt").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - MyGrid.DrawTexCube(30f); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - //human obj - Human MyHuman = new Human(textures); //init human with textures -// GL11.glTranslatef(secMouseX,secMouseY,0); - GL11.glTranslatef(0, 130, 0); - GL11.glScalef(90f, 90f, 90f); - - - if (!BadAnimation) { - // insert your animation code to correct the postion for the human rotating - GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f); - float angle = -(float) (180 * (theta) / Math.PI); - GL11.glRotatef(180 + angle, 0, 1, 0); -// System.out.println(theta); - - } else { - //bad animation version -// GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f); - GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f); - float angle = -(float) (180 * (theta) / Math.PI); - GL11.glRotatef(180 + angle, 0, 1, 0); - } - - MyHuman.DrawHuman(delta, true); // give a delta for the Human object ot be animated - - GL11.glPopMatrix(); - +// } else { +// +// GL11.glTranslatef(secMouseX, secMouseY, 0); +// GLU.gluLookAt(2f, -1f, -1f, 0f, 0f, 0f, 0f, 1f, 0f); +// } - // Draw TNTs - GL11.glPushMatrix(); - TexCube cube1 = new TexCube(); -// GL11.glTranslatef(secMouseX,secMouseY,0); - GL11.glTranslatef(0, 50f, 0); - GL11.glScalef(50f, 50f, 50f); - Color.white.bind(); - textures.get("tnt_side").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - cube1.DrawTexCube(); - //TNT - GL11.glPushMatrix(); - { - //go up - GL11.glTranslatef(0, 2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0, 2f, 0); - cube1.DrawTexCube(); + sceneManager.drawAll(new IDrawListener() { + @Override + public void beforeEachDraw(SceneObject object) { GL11.glPushMatrix(); - { - GL11.glTranslatef(0, 2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0, 2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - //right(top TNTs) - GL11.glTranslatef(2f, 0f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(2f, 0f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(2f, 0f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(2f, 0f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - //go down - GL11.glTranslatef(0f, -2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube1.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube1.DrawTexCube(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } + if (object instanceof Human) { + Human human = (Human) object; + Integer speed = 10; + float speedX = speed/human.getScale().x; + float speedY = speed/human.getScale().y; + float speedZ = speed/human.getScale().z; + if((Keyboard.isKeyDown(Keyboard.KEY_W))){ + human.move(new Vector4f(0,0,speedZ,0)); } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - - - //Draw lava - GL11.glPushMatrix(); - TexCube cube2 = new TexCube(); -// GL11.glTranslatef(secMouseX,secMouseY,0); - GL11.glTranslatef(0, 50f, 0); -// GL11.glTranslatef(0, -2f, 0); - GL11.glScalef(50f, 50f, 50f); - Color.white.bind(); - textures.get("default_lava").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - GL11.glTranslatef(-2f, 0f, 0); - cube2.DrawTexCube(); - //LAVA - GL11.glPushMatrix(); - { - //Go UP - GL11.glTranslatef(0f, 2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, 2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, 2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, 2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - //go left (TOP lava) - GL11.glTranslatef(-2f, 0f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(-2f, 0f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(-2f, 0f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - //Go DOWN - GL11.glTranslatef(0f, -2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube2.DrawTexCube(); - GL11.glPushMatrix(); - { - GL11.glTranslatef(0f, -2f, 0); - cube2.DrawTexCube(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); + if((Keyboard.isKeyDown(Keyboard.KEY_A))){ + human.move(new Vector4f(-speedX,0,0,0)); + } + if((Keyboard.isKeyDown(Keyboard.KEY_S))){ + human.move(new Vector4f(0,0,-speedZ,0)); + } + if((Keyboard.isKeyDown(Keyboard.KEY_D))){ + human.move(new Vector4f(speedX,0,0,0)); } - GL11.glPopMatrix(); +// human.setPosition(new Point4f(posn_x * 3.0f, 0.0f, posn_y * 3.0f, 0)); + human.setDelta(delta); } - GL11.glPopMatrix(); + } + @Override + public void afterEachDraw(SceneObject object) { + GL11.glPopMatrix(); } - GL11.glPopMatrix(); + }); + - } - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); /* * This code puts the earth code in which is larger than the human so it appears to change the scene */ - if (Earth) { - //Globe in the centre of the scene - GL11.glPushMatrix(); -// TexSphere MyGlobe = new TexSphere(); - TexCube MyGlobe = new TexCube(); - GL11.glTranslatef(500, 500, 500); - GL11.glScalef(140f, 140f, 140f); - - GL11.glTexParameteri( - GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, - GL11.GL_CLAMP); - - Color.white.bind(); - texture.bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - -// MyGlobe.DrawTexSphere(8f, 100, 100, texture); - MyGlobe.DrawTexCube(); - GL11.glPopMatrix(); - } +// if (Earth) { +// //Globe in the centre of the scene +// GL11.glPushMatrix(); +//// TexSphere MyGlobe = new TexSphere(); +// TexCube MyGlobe = new TexCube(); +// GL11.glTranslatef(500, 500, 500); +// GL11.glScalef(140f, 140f, 140f); +// +// GL11.glTexParameteri( +// GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, +// GL11.GL_CLAMP); +// +// Color.white.bind(); +// texture.bind(); +// GL11.glEnable(GL11.GL_TEXTURE_2D); +// GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); +// GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); +// +//// MyGlobe.DrawTexSphere(8f, 100, 100, texture); +// MyGlobe.DrawTexCube(); +// GL11.glPopMatrix(); +// } + + } + private void initScene() { + human = new Human( + new Point4f(0, 130, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(90, 90, 90, 0), + textures + ); + sceneManager.addSceneObject(human); + sceneManager.addSceneObject(new Ground( + new Point4f(0, 0, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(8000f, 1f, 8000f, 0), + textures + )); + + sceneManager.addSceneObject(new TNT_Door( + new Point4f(0, 50f, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(50f, 50f, 50f, 0), + textures + )); + + sceneManager.addSceneObject(new LAVA_Door( + new Point4f(0, 50f, 0, 0), + new Point4f(0, 0, 0, 0), + new Vector4f(50f, 50f, 50f, 0), + textures + )); } /* diff --git a/src/main/Util.java b/src/main/Util.java new file mode 100644 index 0000000..0fd14d6 --- /dev/null +++ b/src/main/Util.java @@ -0,0 +1,23 @@ +package main; + +import base.GraphicsObjects.Vector4f; + +/** + * @Author: WangYuyang + * @Date: 2021/11/4-18:00 + * @Project: Assignment3 + * @Package: main + * @Description: + **/ +public class Util { + public static float angle(Vector4f a, Vector4f b) { + float dls = a.dot(b) / (a.length() * b.length()); + if (dls < -1.0F) { + dls = -1.0F; + } else if (dls > 1.0F) { + dls = 1.0F; + } + + return (float)Math.acos((double)dls); + } +}