From 8789118ca721295ca7d9cee91749ce66f7edc95f Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Thu, 29 Aug 2019 15:56:59 -0400 Subject: [PATCH] Renderer optimization (occlusion) --- .../bz/bronze/pixels/engine/Renderer.class | Bin 1690 -> 1993 bytes .../bz/bronze/pixels/game/GameManager.class | Bin 1400 -> 1522 bytes .../src/bz/bronze/pixels/engine/Renderer.java | 33 ++++++++++++++++-- .../bz/bronze/pixels/game/GameManager.java | 6 +++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/pixels/bin/bz/bronze/pixels/engine/Renderer.class b/pixels/bin/bz/bronze/pixels/engine/Renderer.class index b7e4630b945c9dc7e068d19676412808c196b377..350710500ccef9201116bb240bc9c9bd1339cc8a 100644 GIT binary patch delta 601 zcmXw0%W4!s6g@TFU5~a!5>gVOd*Md&Kog@@e1sTHl!?YXd?m)sEPBkum0*jyaX{ii zapz9ljGF;h4$6QJT)0#47yJ+r$5S&-UF!BZr*3gi-F~(E`=0p6-%nowOygE7j)PNW zfpDu@tP2Dqql+;Xa52Fp{FlpKxSU`alfAmt7y_#aPGjcfaxgog9-htb+`m@{s7HOY z>%n$j)cP!`RkyclMUTFJ9?X^M;u{oVn)nj9FmTa$8}m*wFFKWaQoKRf%Dm7;>DUJh zHM~Ty&x7%QPB$@SLuZ=U zKW0r@u{x`;@sc%Gdn>id;Wk!wjG!PJonJdzSZ!6K^RvYV1USmPiM`AR$PPkc1PMkl zh;gJiM0J931SeQIgJU>{={hcuE^&tIl&Uy`yO_gc%;PDi{Q~FF(A1vc81Pf0%)7V*mgE delta 297 zcmXwzy-EW?6otRpnOSjMwVFmuVUxrJM2N1aVGU@J_!HxA+HFK1z}_ZrU}u*qbr4br zTG^Oq@JS>X?{1KRd(S=Ro^$7G`DM|Kf8RcU9lAs3^xmez+}}NR97nVwjyahTU4<^M zw;YPIh<)nW!g)mJf1&x@*2(L;PJ$;snIn|YhK|jEnvU&&wTic^sW*kRI^xh>jW1*X diff --git a/pixels/bin/bz/bronze/pixels/game/GameManager.class b/pixels/bin/bz/bronze/pixels/game/GameManager.class index 026ee46af165a7b77a4753c54450300e43be5a78..746565e4c87f34e9cfd7b62982f5a7c3ea97bb91 100644 GIT binary patch delta 634 zcmYk3T~8BH5Qd+#+mGyaiv?4uAC-a@+oG(3ii+PKNTG;YEUj0rvT4wQBrQe~6E3|r z>y7>a<0aY@BMFJO{t$nFS6&&XTTnB}%$zyzyzk68zs#Qz^ZW0w+rSu=4fCyv8z>H2 z1PK|W7zop^NPFM3#G6;qpv4i6dc9gMVlqf3%rQl>efcQAyt3M`$dXe87wgmRnj(dEl92=6wzYCdGc(=S($Sl z*Ie&|8Z8epW^s=5iqO*Y)w)|2WZtBUaf^#w5{|0dm{;hTY~GLouUK6Dhpx1d*DY@B zA}395aXZX}x2>i1N%Gzg?R7N8T?>PIifpFfFFtEU#kwTS_54VSMP2wG?CTDZab>b~91ZxYswaaZli)&J9akD*w=8s_d{f8JP z`JcS~SKeldX;CvMFtejNC7UW?NNka+Y@sTf+}ULIGf7cvabMU+cIZ1BrsP@rMQ*^C QusY2=pd=)Ud4HJlABOp3jQ{`u delta 494 zcmYL^$ua|B6otRPJ5#qND5T92F$IZvo`*byJ6Ib|-j?Yf^_e7pHsbIijkRgTVVE=Sip?CMBUCoHa zXo;P1nd24{f6SE06f=IN6>ZMDZaV|Isn0U!%<30`D619*N#{+E`=X>Q(pR3FY&jlr zsUnCiSuB)bHT5*euV|!6uuSSvd79h1D-O$?smdE@|8Z u_A}AUGb;1Q@*^t`gr{X)p0$#F1-cNMBziL;xwRDE7Ml&3DK-T)wtfH%kwH}e diff --git a/pixels/src/bz/bronze/pixels/engine/Renderer.java b/pixels/src/bz/bronze/pixels/engine/Renderer.java index acbfa5b..637dded 100644 --- a/pixels/src/bz/bronze/pixels/engine/Renderer.java +++ b/pixels/src/bz/bronze/pixels/engine/Renderer.java @@ -35,8 +35,37 @@ public class Renderer { } public void drawImage(Image image, int offX, int offY) { - for (int y = 0; y < image.getH(); y++) { - for (int x = 0; x < image.getW(); x++) { + int xAdjust = 0; + int yAdjust = 0; + int widthAdjust = image.getW(); + int heightAdjust = image.getH(); + + if (offX < -image.getW()) { return; } + + if (offY < -image.getH()) { return; } + + if (offX >= pW) { return; } + + if (offY >= pH) { return; } + + if (offX < 0) { + xAdjust -= offX; + } + + if (offY < 0) { + yAdjust -= offY; + } + + if (widthAdjust + offX >= pW) { + widthAdjust -= widthAdjust + offX - pW; + } + + if (heightAdjust + offY >= pH) { + heightAdjust -= heightAdjust + offY - pH; + } + + for (int y = yAdjust; y < heightAdjust; y++) { + for (int x = xAdjust; x < widthAdjust; x++) { setPixel(x + offX, y + offY, image.getP()[x + y * image.getW()]); } } diff --git a/pixels/src/bz/bronze/pixels/game/GameManager.java b/pixels/src/bz/bronze/pixels/game/GameManager.java index bb59da3..df6dffe 100644 --- a/pixels/src/bz/bronze/pixels/game/GameManager.java +++ b/pixels/src/bz/bronze/pixels/game/GameManager.java @@ -1,5 +1,7 @@ package bz.bronze.pixels.game; +import java.awt.event.KeyEvent; + import bz.bronze.pixels.engine.AbstractGame; import bz.bronze.pixels.engine.GameContainer; import bz.bronze.pixels.engine.Renderer; @@ -16,7 +18,9 @@ public class GameManager extends AbstractGame { @Override public void update(float dt) { - + if (gc.input.isKey(KeyEvent.VK_ESCAPE)) { + System.exit(0); + } } @Override