From 9e479065f5ecc3017868d01380e024f11070baf2 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Thu, 11 Jun 2015 09:55:38 -0300 Subject: [PATCH] new space shooter demo ortho camera sort fix, closes #2063 --- demos/2d/space_shooter/asteroid.gd | 49 +++++++++++++ demos/2d/space_shooter/asteroid.scn | Bin 0 -> 4516 bytes demos/2d/space_shooter/bg_gradient.png | Bin 0 -> 1572 bytes demos/2d/space_shooter/big_star.png | Bin 0 -> 275 bytes demos/2d/space_shooter/enemy1.gd | 37 ++++++++++ demos/2d/space_shooter/enemy1.png | Bin 0 -> 7048 bytes demos/2d/space_shooter/enemy1.scn | Bin 0 -> 3759 bytes demos/2d/space_shooter/enemy2.gd | 56 +++++++++++++++ demos/2d/space_shooter/enemy2.png | Bin 0 -> 5676 bytes demos/2d/space_shooter/enemy2.scn | Bin 0 -> 3801 bytes demos/2d/space_shooter/enemy_shot.gd | 32 +++++++++ demos/2d/space_shooter/enemy_shot.png | Bin 0 -> 330 bytes demos/2d/space_shooter/enemy_shot.scn | Bin 0 -> 3944 bytes demos/2d/space_shooter/engine.cfg | 21 ++++++ demos/2d/space_shooter/explosion.scn | Bin 0 -> 1497 bytes demos/2d/space_shooter/fire.png | Bin 0 -> 357 bytes demos/2d/space_shooter/game_state.gd | 24 +++++++ demos/2d/space_shooter/level.scn | Bin 0 -> 9185 bytes demos/2d/space_shooter/level_tiles.res | Bin 0 -> 720 bytes demos/2d/space_shooter/level_tiles.scn | Bin 0 -> 2148 bytes demos/2d/space_shooter/main_menu.gd | 20 ++++++ demos/2d/space_shooter/main_menu.scn | Bin 0 -> 2402 bytes demos/2d/space_shooter/meteorite.png | Bin 0 -> 6072 bytes demos/2d/space_shooter/parallax.scn | Bin 0 -> 3307 bytes demos/2d/space_shooter/rail.gd | 26 +++++++ demos/2d/space_shooter/ship.gd | 88 +++++++++++++++++++++++ demos/2d/space_shooter/ship.png | Bin 0 -> 2815 bytes demos/2d/space_shooter/ship.scn | Bin 0 -> 6752 bytes demos/2d/space_shooter/shoot.png | Bin 0 -> 222 bytes demos/2d/space_shooter/shot.gd | 47 ++++++++++++ demos/2d/space_shooter/shot.scn | Bin 0 -> 3990 bytes demos/2d/space_shooter/small_star.png | Bin 0 -> 90 bytes demos/2d/space_shooter/sound_explode.wav | Bin 0 -> 75832 bytes demos/2d/space_shooter/sound_shoot.wav | Bin 0 -> 78888 bytes demos/2d/space_shooter/tile.png | Bin 0 -> 810 bytes drivers/gles2/rasterizer_gles2.cpp | 11 ++- drivers/gles2/rasterizer_gles2.h | 3 +- makerel.bat | 1 + scene/2d/camera_2d.cpp | 68 ++++++++++-------- scene/2d/camera_2d.h | 14 +++- servers/visual/rasterizer.h | 2 +- servers/visual/rasterizer_dummy.cpp | 2 +- servers/visual/rasterizer_dummy.h | 2 +- servers/visual/visual_server_raster.cpp | 9 ++- 44 files changed, 468 insertions(+), 44 deletions(-) create mode 100644 demos/2d/space_shooter/asteroid.gd create mode 100644 demos/2d/space_shooter/asteroid.scn create mode 100644 demos/2d/space_shooter/bg_gradient.png create mode 100644 demos/2d/space_shooter/big_star.png create mode 100644 demos/2d/space_shooter/enemy1.gd create mode 100644 demos/2d/space_shooter/enemy1.png create mode 100644 demos/2d/space_shooter/enemy1.scn create mode 100644 demos/2d/space_shooter/enemy2.gd create mode 100644 demos/2d/space_shooter/enemy2.png create mode 100644 demos/2d/space_shooter/enemy2.scn create mode 100644 demos/2d/space_shooter/enemy_shot.gd create mode 100644 demos/2d/space_shooter/enemy_shot.png create mode 100644 demos/2d/space_shooter/enemy_shot.scn create mode 100644 demos/2d/space_shooter/engine.cfg create mode 100644 demos/2d/space_shooter/explosion.scn create mode 100644 demos/2d/space_shooter/fire.png create mode 100644 demos/2d/space_shooter/game_state.gd create mode 100644 demos/2d/space_shooter/level.scn create mode 100644 demos/2d/space_shooter/level_tiles.res create mode 100644 demos/2d/space_shooter/level_tiles.scn create mode 100644 demos/2d/space_shooter/main_menu.gd create mode 100644 demos/2d/space_shooter/main_menu.scn create mode 100644 demos/2d/space_shooter/meteorite.png create mode 100644 demos/2d/space_shooter/parallax.scn create mode 100644 demos/2d/space_shooter/rail.gd create mode 100644 demos/2d/space_shooter/ship.gd create mode 100644 demos/2d/space_shooter/ship.png create mode 100644 demos/2d/space_shooter/ship.scn create mode 100644 demos/2d/space_shooter/shoot.png create mode 100644 demos/2d/space_shooter/shot.gd create mode 100644 demos/2d/space_shooter/shot.scn create mode 100644 demos/2d/space_shooter/small_star.png create mode 100644 demos/2d/space_shooter/sound_explode.wav create mode 100644 demos/2d/space_shooter/sound_shoot.wav create mode 100644 demos/2d/space_shooter/tile.png create mode 100644 makerel.bat diff --git a/demos/2d/space_shooter/asteroid.gd b/demos/2d/space_shooter/asteroid.gd new file mode 100644 index 00000000000..f21b9777bb6 --- /dev/null +++ b/demos/2d/space_shooter/asteroid.gd @@ -0,0 +1,49 @@ + +extends Area2D + +# member variables here, example: +# var a=2 +# var b="textvar" + +const SPEED=-200 +const Y_RANDOM=10 + +var points=1 + + +var speed_y=0.0 + +func _process(delta): + + translate( Vector2(SPEED,speed_y) * delta ) + +func _ready(): + # Initialization here + speed_y=rand_range(-Y_RANDOM,Y_RANDOM) + pass + +var destroyed=false + +func destroy(): + if (destroyed): + return + destroyed=true + get_node("anim").play("explode") + set_process(false) + get_node("sfx").play("sound_explode") + #accum points + get_node("/root/game_state").points+=1 + +func is_enemy(): + return not destroyed + + +func _on_visibility_enter_screen(): + set_process(true) + #make it spin! + get_node("anim").play("spin") + + +func _on_visibility_exit_screen(): + queue_free() + pass # replace with function body diff --git a/demos/2d/space_shooter/asteroid.scn b/demos/2d/space_shooter/asteroid.scn new file mode 100644 index 0000000000000000000000000000000000000000..b881725ea4227eb4d483439b9a637f3e330f6b27 GIT binary patch literal 4516 zcmYLN3z!pCmOfRLq`Cui`bp?cL*JyEZXVhJ8f~SqIhE=cG=s=PbWo})NhMv|=~Spn zng)CX@By+qxauglY6Km1Wkv;eaCXKq;A2$O{oGk)cV^tJD2lAk=Q27^QTBvkzU?pP z*1hMRd+xb)?>+xty=t{AL;0^7;HnV7IT4^h@-YWMzdQ#V^PqqLlbLJEN-Z|3$5+Sn zv<_DXS+%nOpoR6Q>p@@@LT4w4%p=+v%gE|b#k^HnOH11c(;5p~W){4x#+%WstPxA; zHdM1I)iE=jFp^1t<9EN5rUF~v4haa&s4$k}R_$BtP>CL7Ls)MhcIr<2(caI>q0lxb$v z3c=3m8MTugu857=;d$Zg=8OZc=4-f·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 LRq`tO|IGgZHUV5g literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/bg_gradient.png b/demos/2d/space_shooter/bg_gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..3e71976dc6f99e40c86327034feff89b56b41440 GIT binary patch literal 1572 zcmV+<2HW|GP)|G&&Wpa_V4neE=m>~vlx2~iP?0PZ$ za~`}B6d+aX%C2zZ+SAN@#xi7aGR(;=kBaUyi7ai5V7brlApN6&yWr@Y5)qf>;=lz6 z_eBFZmySLxwNY~#L_M2OS8(*pHJ+eN2A{nMwez{hah>R&IFB%RHM?r&Ca6)BTKJ5m zrx?6i?49ItTWZwO+XvLWmLU6JCIX8eIh9H7{ByFt%%XM|-NWH3fgxx5_812D7|Td} zM%`Bn!a~u_PZAhHQlR%`*0)gd4t3urs66*buZ~5LwgCP^mx#w2nRAj@#gPRr8-tjo zKqcS~At)~4wc;`{SX?D}o8ft%R=JD%%og>;ow|OC@LS|Wr)~dSKh0g4YR{}-;c9nU z+!5?mH5jPN&?0`r`^k{sDex{d63BGkHCu3g8|bx2Llto1_^u#*#LsPv+=vP7Pfzd% z2)uvzSxP$d$^{|pE^^HYexHDQ$-=f%jWaKo$?!suY#>B9a(9`?7ikc>ynKZPZK3xR z%w(PDA-{KNKr8S(=3$Fn7oBqc=x6S~kQ7qgN4KJLt=68G9MjrcweTX7`C!+m4~dTb zdL&Zr3x(s70cv|NK#LJF=5HP54FUEt1b=xRzeey-ULw8nD9tRlSN8@lU6UR@_G*Da zHc)8`GAd>V>njKL!01~ag}R}`%PiE}1=+s0j%#kw>uqkgOS~X0FVRMT;tU~E*2L{q z=rXNFj-3s~9TY5Faqx-lk#b0-63wf36UkON;@Bl7NCy_HMKbKLnvZHsEuL5R6@nEY zi(r2$2+3)T+uNnxpO4uRlzn7-o4ZQE>pb{_f+EZC8Sz@$h;_HL1sHPgWnS_nb%UUA z^)_|&(SAgO-G*{n!MCXUups-npJ(4E&HZ3RFDYBRHT}p=)e@ZSi_!;!*^}B|^uebE zrKg48Kn4zMhqEHtyYe&N$p^NZVC*u4BE_>soYl?T9_jsPp)o^c0#Mk5#MnYnWduQK z96PF!)e;l}!j=~>jS-Xky#??cKYR+>?NeX&18~I z>f}zZzT0nBo$20kiQ|uS>chzxyIX#x&w{?rRw=XCFJSO1Ds>d2NB~?z9OuvE4-8$(=&cOOaU44^~cqPhzHZbw9C64Z3siT@kAQ;SP%v zHR$eTQ0MQOh1>|PAsVE$*4#5 zgX%slD9mLL^Ly@nP$P+NK~ z#yAfCML}5e%!s~)E!472S()&hSar2ydbHTjcc5n9-xl-u7lKT$vl=Q(Hdj#etx80L z7me1m>@TDMoujJi@E`!#1Tx*2mVpVR6ZS(O!T9GCrjSZtx_pQqei>It-Gaz5;`{;D WzD56S@#_iz0000kLc) literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/big_star.png b/demos/2d/space_shooter/big_star.png new file mode 100644 index 0000000000000000000000000000000000000000..7726a7aa12aa0ebf5f7bf43779fbc5cc29cce796 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^{2&r;w`oB#Aw3Kq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAUhe7Q7@~20>%@(`2Mjn^6i;cGoOxJk(|7%&jERZQqmaHe z8V5PM_B%fMYW0y}O_1i&%74#ho{>?X9oZ9;o%^^(cHZ4vTkQqkmuafXe81s&hR4NZ z=}N5*jwf>jZH)vQSIxUOl_xGS?V6qVx9&sr@1C|CR@(GN%YvcU&|0uK;FCDWZJw@v JF6*2UngCl)S^EG0 literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/enemy1.gd b/demos/2d/space_shooter/enemy1.gd new file mode 100644 index 00000000000..051798742a9 --- /dev/null +++ b/demos/2d/space_shooter/enemy1.gd @@ -0,0 +1,37 @@ + +extends Area2D + +# member variables here, example: +# var a=2 +# var b="textvar" + +const SPEED=-200 + +func _process(delta): + get_parent().translate(Vector2(SPEED*delta,0)) + + +var destroyed=false + +func is_enemy(): + return not destroyed + + +func destroy(): + if (destroyed): + return + destroyed=true + get_node("anim").play("explode") + set_process(false) + get_node("sfx").play("sound_explode") + #accum points + get_node("/root/game_state").points+=5 + +func _on_visibility_enter_screen(): + set_process(true) + get_node("anim").play("zigzag") + get_node("anim").seek(randf()*2.0) #make it start from any pos + +func _on_visibility_exit_screen(): + queue_free() + diff --git a/demos/2d/space_shooter/enemy1.png b/demos/2d/space_shooter/enemy1.png new file mode 100644 index 0000000000000000000000000000000000000000..242d8f0055dc65d3327ec486a635433e822576e4 GIT binary patch literal 7048 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 P>FqE&HX0dae^vh%#wLbp literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/enemy2.gd b/demos/2d/space_shooter/enemy2.gd new file mode 100644 index 00000000000..4f632a053d8 --- /dev/null +++ b/demos/2d/space_shooter/enemy2.gd @@ -0,0 +1,56 @@ + +extends Area2D + +# member variables here, example: +# var a=2 +# var b="textvar" +const SPEED=-220 +const SHOOT_INTERVAL=1 +var shoot_timeout=0 + +func _process(delta): + translate( Vector2(SPEED*delta,0) ) + shoot_timeout-=delta + + if (shoot_timeout<0): + + shoot_timeout=SHOOT_INTERVAL + + #instance a shot + var shot = preload("res://enemy_shot.scn").instance() + #set pos as "shoot_from" Position2D node + shot.set_pos( get_node("shoot_from").get_global_pos() ) + #add it to parent, so it has world coordinates + get_parent().add_child(shot) + +var destroyed=false + +func is_enemy(): + return not destroyed + +func destroy(): + if (destroyed): + return + destroyed=true + get_node("anim").play("explode") + set_process(false) + get_node("sfx").play("sound_explode") + #accum points + get_node("/root/game_state").points+=10 + +func _ready(): + set_fixed_process(true) + # Initialization here + pass + + + + +func _on_visibility_enter_screen(): + set_process(true) + pass # replace with function body + + +func _on_visibility_exit_screen(): + queue_free() + pass # replace with function body diff --git a/demos/2d/space_shooter/enemy2.png b/demos/2d/space_shooter/enemy2.png new file mode 100644 index 0000000000000000000000000000000000000000..5b63033696d1355913de58c05d460954911477b7 GIT binary patch literal 5676 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 literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/enemy_shot.gd b/demos/2d/space_shooter/enemy_shot.gd new file mode 100644 index 00000000000..238d24e4a2c --- /dev/null +++ b/demos/2d/space_shooter/enemy_shot.gd @@ -0,0 +1,32 @@ + +extends Area2D + +# member variables here, example: +# var a=2 +# var b="textvar" + +const SPEED = -800 + +func _process(delta): + translate(Vector2(delta*SPEED,0)) + +func _ready(): + # Initialization here + set_process(true) + + +var hit=false + +func is_enemy(): + return true + +func _hit_something(): + if (hit): + return + hit=true + set_process(false) + get_node("anim").play("splash") + +func _on_visibility_exit_screen(): + queue_free() + diff --git a/demos/2d/space_shooter/enemy_shot.png b/demos/2d/space_shooter/enemy_shot.png new file mode 100644 index 0000000000000000000000000000000000000000..04287211a93947faf9848be7985ded18e0650b51 GIT binary patch literal 330 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 LlN0I$AL{=CdQ`nN literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/fire.png b/demos/2d/space_shooter/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..1c68c362133b2601579263b7d6ae147e2fbe882c GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!K$F%0*PMH?6bMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`+YV}CUahcW80$zk>uMRFK5zeEqo=YLmax_points): + max_points=points + #save high score + var f = File.new() + f.open("user://highscore",File.WRITE) + f.store_var(max_points) + \ No newline at end of file diff --git a/demos/2d/space_shooter/level.scn b/demos/2d/space_shooter/level.scn new file mode 100644 index 0000000000000000000000000000000000000000..12a679f8b66fbb3217340c8290e41807b304f598 GIT binary patch literal 9185 zcmds733wCLzCV-6)}}2jT|!&hOw*MDEi^!pttZQbvM&W>HIt@knl?>Jk`_u?!e$W{ zL>2)7i+T|dWl?dtDzOFRsc;n)c!Dy3HoYu*FDf9&NkJsvU*~{P{ zFCB#nxD0I)3TMj14wuF3V7?UfL0fQF2A!9!zzImiC{YqaBN;%#&|0;2q{xHROe88} zXq+e;>ngJr7*He=r7+p6Yg}%xsmAQB;9d-`vwQ5Nc8A?tpU;IOhwnX3;Y*-hHD(Kw zN}+DdFkX}(_E;U|CV#SaB`-=2bJ%SaUQ@N%Q)NC9;dPsxo^qGFI={x{;iWNRx66y7 znQ1(gjy%jw%8GPZ;(7V=kb+5;&&zjP9cHh+?m4y8RBiQ|O{NPdLNvx)!`(sEOrX@D z3!_XPwOTtuX0bXP`5yZ`-)SzAo?UA$W7be!6PJMB;S!{lT94ONZQ{{N^ENJ#sxad# zRCzfr(H`L9IIGy@w%hDW#&U6@dXp#3WbQ>U+b}&s_g1M%pqhk*YQ-c zxZG{Gc$o~}gFGq_m%3`5mL=&t6(@0+>#c52>2cuZa@@wPqRY%)vpIrxo9zyBnr;WO zt7G)Dnpc%3&|0_EtWLm#{7Tf97e}H3l4wZMk0kv`GJqt7BpFDO2h8Vqv;g(tB~fq= zBn2eVkfa|;`jcb;NeW3a5E5Rpj@0^{2{gHm()2Z-&|XIMyeJ%+pyHt;DjYh3q(4ap zkfe|#14;701vD1br|o1P@i}31A_bfTiH0QoNYbAq14vRxl7W!$qB&`g@@P)l3Z8=c zrC)Qar~-x;ElXR)QyJv<5uQ?#-=*!p3wWeVn+LU_khDGLUP5X5b32Y$$`ok)_8O$i zwo*2C`VCZO@nZ|BOaIQ0jOa`W`#pP+jgeSfPN&JjVl5vv$ z4qaz<+cSO=c~B}7hh{Of;b%WGj>M%%%th0_A{zO+7*hSnm+X(Fd_^D=*%%og#tQ5} ziA=P@WU`joy)L(@#!;J@CN+7yX0O$g`8rSM7`LDj+c)r3F2zOome^A3c3XMrIjmgK z$Jc`Q;QSpUv-1o;QF*q-7(bqI4!g7(oP%Xy9;dm+RAZlOb#N|>aMJMCxTLJrncI;I z@1v|W+%@{C@P~(CHKyr#E>|@?%HBuc;Nr9@u8_;aku*Y#76zJ!H*zVh=zV+<8cD&u zxfGbE%r!inh~gPFm&l{Xw=Z~q2_9B_lFOhy6|Oman7+6Vm)bN4SNjnjhDVBAc{d71MH_>%=>zv|ki+P->J*dmZX}ZHynO!|{crxw|m3$a? zE53>5;)bSpUmlK!hf^Mp4cQxzH={Rlb6++aiyMdUl3AT~cDKt}ty_4WUW)@*mCZ{k zTsD`}d_khctBQGT0#74;nja&rgumnGKlE$Q>esiVAXDWf{mSM);*|8IVsov-YqG2; zeaoMM;?!xhxw_P@{?wO}l_qky+?VuUgb~L zJ4N%H*606BAN%;@p?K8jI{!x6dXim~y##O2t>Af$tvj`dqmS0)19bY<|CgFi}v)A1*81m0o@p-W60 zF2rc`T#S5rgv$59#GHjET7%ICUmzupU=V&C`uY|l!zzqWGKSN_y2F{|UkaiS!W2p+ zrAWmMN_sYxEC3&%19o+Hm53(8{yo#*d6?}pN;%1` z_`OrwF@{7WCS&+#x4v_K|LTr)G?|Pfq)GA=b(~HPJq1_;SPNJOSPys_umP|UunF)C zU^CzkfbD=60XqOY0lNS%0d@mk2D}2;1K11L2Y?3w1psaEbdIEachM-wj0TJWjD@FU zGm?^Vb=3V9idz94=ZvO&g&lQ8n~@BUWybk}&338^N90Uzod4@1P#VT$;_P54e2FZdMKD`<{p(Js5Q*S2_gBhXRHHI+o7A^XfZ~>p|#aDqtF5 zI$#E1CSVqz^O!rv3$rDR*+nfLcfWYkLr^Rk|NphIcbac1hgw{OdcZ~G0`6DK?Y(!x z@ZW-4l1=%#pd6^uQMDV>Ys>^=b$F-kwN(-c+iBPncWi!pTtlc*T+D&7Rwz3gYn$EK zZmdlvUYt`LDJc=Q+FZiu7jV(=A0>jfc7C`4_72kE2HlgZ^KHWU#@BpLM3X&Po~;b@ z6v3+kp#rG^CBd(P5jMnFrnu+0k%;LE_9qF&GIA~{3U;ipCv}nTtu;u@B;0Sk>5L&@ zx}rg;m|wf^6e3=W(}h5pASuJUq^)yvI;E@#5h zmvh59j5vz$-!tN0wj1%QyH>WG`ZTKr6C>W#07e|qjP9Nlmw^=*w&3{pxpCO(Tj!9S zKiLK;i6w_7cG%Q7Emp3(2qB+&xmXHwcfT`74#q%3%ml1CqMGthG$V^5 z+vyI2ZgqM&6}5kv>fA)AhyI@@%ysT!gamVaf`B_`O!cXH}vpqBmZ zPF?>4ml)jkFH5@Lt-nDl zSQ=a)=8P#a67L}qB5tv4<6hn%um4PE5MvgP;Uk<`US##3^ye6^w=WD{d==iWuh3*& zq#fgO;lduoN=a~OEFX$@VI}Mm806+9TPa%^mxwEvQ+V_6B-{(j$|nVSskL5iXd2i{ zE)t;t6NwiD&_klI^H)l#KzF!=+JJnx&g5Ga7^s$A+`ppbtBbESzUL*lo+S9OmC&=!x;gs zIuI!}YRZ-c!Uyv5lL3h&5T^|+QX95zf634yt19`#@YuKwdaRHRe&(j(_R6m~g>2vh zYWAk%|T)Om!!$;YiL3=rcbjQsLYa*>o!MnCh;cGb@ocrN75I1ij6lX9pv(*&BbBHvzu+e zR-2^8x4sAiwr`op7~cFOrxdSwEW+52>8mG6JHvGqd(R+CD<{j(X ziuQ_P!E_=)5${t!m?aW;kT5b71=8u^)D)Y>L^GJyfTS~0As{jJS8A4sr-P3DBQ=9pfe*qA?Q&M}t3bm&IeY3i<*ZDbP2@}( zj5#=XaVi${j62S^haK+eS$j;R)CL`sn27GFkX-B9Nbn?81i_QC0lKF;$4UwyT4C*w z!4?{)Fyn*q3T|@g1wX_q7*>c^q$m1P{*erFi}arg0gL-&@Bj%~G+hb?E&g5x&&y%& z$o&uuSp22{Ze$CHDG_S7813@9`SDWR2W_2TSqwgRDd2g~MglpR)2t zXOYD|Kv5uPz%Fc&XH&}Xf*EtsFY=`Pgt_Ii*jd$T_UBh*@Cf5b* zqav{}WAZ^xK|irQ(&(=epGb)?E@&Dq)#Sw)qv}6{MR$Id(l|G*5(ZIgN;D=mM;o+D zw0t@Z_5ZPED%F1s9A-#_Zl zIWMZfMem;j1$PJvu0D95fl*{{S4QNhEXgQ=MTPrS@FlO_?w zR!JXlGHNdA1BUsiO`5Cyii5}>CZaC7q2JA=v?UgcN*W7nIatRPw9U0)(iT%bSJcBh2=T`UR62ee6s!BaY9N(<*^|3B!8}jx ze~T46tAVv~GUKp2K4ASzWX6c?`++TCWybj%E&$uqCC>O{!%$8kIqHcwVyf{yX?CvC zc>3qZ;0B)G9B({yxCQP+_m5(Y@AN#U4|F+cJk$6<=u?XAG&^^AhOQ{k?c)!Y<30hy zWZhdfaUii!wBqO&m0E2TR}hF;@x7>A1fDN~n7*JpLt+y9kuXv)d33lSjKsx(=0$>J zB?`7JvE8<%3Ys+u7yF53m9^Wpn^FIzUHafEctL@1W^hx;hY+)uS;vdLAYLi|Kg6p& z^4pwhGVS;VWn|6OF6zVEiYH{BuY_ zcP3gZ!_WGA`U|lIE3`H&gD)1b@EeO?g5Z z0AXV7H4qS%^9qeNo$sR2SqK{kj7md%q(<8S6sh?rjrK*t(h2*FunfZP5|#-}mrPg| zVWb(9O^#kBEQhe~3F|?QstC*NU{p_ZAyO7B?A1|-dWTqEh~ft}7yQ zuhG5%*GpkxDhWkeI9Dh{x)9Tcm?6a25Hki@ga(!-k`ITZAAn|PL@_i*NXm$zLmD1d z8Vw*N!VrpudrEqa(U6a3a9fdfYDKkI|nPRae-McX8>7EY-U0(?*3Y{$*?3@#C8{ zcRl5SUe4<3_cQbt$MU;IOCEbhwbM6S6W_$Tm=TbT97mu`ldFjh7nOQU6 zp3qk{x^biar=c%?zlbki8X=LywiTl^~?N;cUOHJ@$lox zvjY0_@9fHoNnU^P?2^jTH#Zf_zf^tKdSOe^<3GQBrt(0EVTVDtV$asX$M&YpG)43s zB#KWrswx`x{PfaSSG&CPBtQP@JKt14y*8eYpK~H($Nq$#v$x9Usa&y?p+H=}b>}W^ z{FRrUE6=W~+h5|j^Ih|nZwJMGz3DTRtD*Yx(!RzG@69hN_B5uiRjJi@%=|O!j;Tbv z){GdHXm{e(Y5PuoQQH5p9hD2v@~uf}@AO%<>deaxJqxM#>33Ck_BO0dcyZ6ehM)8q zrKQrmEelnW4Oc(@rG8v- zC9r)>FN>b59lPP}jlG8q8fX4SHO4T&x8u9rst;d1)_7|5o#&??=@z}^lf}&8uJriZ zr~i0dH9Mo1@mlki7Y<)NIzgBE{F<{dy37Rgto3ke6|2f+xcq4KkG(Q!-A#FB~niSVC${sxiG BB|ZQE literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/level_tiles.res b/demos/2d/space_shooter/level_tiles.res new file mode 100644 index 0000000000000000000000000000000000000000..8712b8c7990c2fecb7b59159baf17a46a9d14ef5 GIT binary patch literal 720 zcmbtSOHRZv3^j=VS9}(%I07v!*&#SVXZBSlcuGavjFNQ3l2dUhE`guhh{A>imfY0O z@5PRjVpcrTXdAM^VSD29y5Si|jsNpG74eC<=iqv8IqOWzbRmfCLv(E!T(f3hE@~6B zFuz6aVo*`AzFx&_SZG&7`Jg}0-zePPGaaX>bjxLsrVkZpO=Mr2hW0h|T-C0la}Aue zP5&%)e<%`4mrCl)x~@zVRiX`*zH!3w@+`cV6(`P6O`)J8)p3rkf-j@E&$1{3zFBn@ zZ3=|*G|rkv5;=X07coU|>2pNSgj=wUrmN(NQ2FjjH$i?&9F{gEdVhdVuN2b(Z(Dpv zd?A%zHM)`ryZq5HMCdIUE(THqF9Tq4Du4~3-v&04f*b;jBaZRQ#b~G0+8mWs3D%{POsf(g zh0LRCus&Uv3@xEYrGP5NB*-FpSeD#=NadQ3?*4LUo;i0X3O z4D_eiAdM8dgh)bdRisw>6qZ8^2{;nE1R11&M8{PH0;a4;<#Dwg>|`Ri3FlC>sHl)B z_6nFpcUaDB`%GvY&V~sjH={|4nxfjSNX;E$T&fJyFgAdL6fhYaabOF_l<~-2bud14n2G--nSdzCljEI*}3+mS}Rf*PtrYt9E)qZDa1vyL(F$~$%Y(}71`_! zP&X(8mDJOp!)b9bN~YRi3Rz&;a~y`GvIWBZqHaB$9x%RF$-9Kle7dnPL zd<%8cWn4^aO^|IM(Ya1tYL_)N@=?FrCg{FDiL$NPB*z`mpw`;!yBM71meqK|48-MV zr^rkEc`*2IokCPgs3!H(49*Bt1Zb-GDow+QSAj&TAJsu_Z2;Z==W^W%k%ikg!Ks}JbtULs)#5_>_ zXDoYOs2KC`C9X@!F38 z!+hM&cnWa_E#%sDxz%#yLN@W!Tnn}zob!G$F5o3PjWas5ZYwPmxrDcet1y-XT!0Jh zTAM*9yW$tljoiOiGlG*X+sOlImSZ2k5@rpoM2ZzSWNVd*J_yIjY@5(a*Kiv?BQ-en zQF?9SqgDcZ8)E5gu(xSl)Wyu%LCnHou1l7>YYR5kV=;d^{5bl89ky24cPIEaEMOY? z#lhe$=)v{F+5P314ZT)sHinB{E9ove!S4ue!L_w^Pr{G{N$rw#O^r?a4fQgeUc8Ck z;#1BJtzA>aYfc__)~?}mEDo&IN#-B69we=EN&Zr3&uAeCr2ta&rz5AZuxOKAOel3L zihdG#Cs_!S{60>MMP&bl5{(oVpRp^NPA7A}*q6H?$utyqV`pf~7tWSsWAGBq1+C=o zAaBk~=7&`1s~d~Dxev$2s&P@nz2rX5(Ay*Q=WO$WP!lQW-xaQc9y-rnRrf3%YPfqH zzP9O!;$2S3G-b8@y6Y?4eUx&d-fqyRanvzGA=8Yq4eXnn5c(H}ud;>$4&E5o}9-@#<^5|;8Z zzQw|qvAn-S&RRBF`(IoS`9#5&p@6vfC!mnH@JeFe3-G{}EVZP<5!8?0CST|acS^Jm$$8Ud{c1(VLy7%GfPPt}yuHluJ@VB(xY&6-6x6a#+xUueY51ozbE8gCM{m;$g$OXq?Kz&58L2p8y+T0 z97`We%N%)lrRBp{a=EwO^X^9X%`P*(Irpkq8Q)i`LB+NoO!@7-%}Zn6t*@2+sycPWj?uS!4u1Kg zL-x(f4tx}N^G0tv4ps%)>fDp}&Z)~Bai)&~tnD8EinwpzJP3-^Te*~Mf)c^nh literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/main_menu.gd b/demos/2d/space_shooter/main_menu.gd new file mode 100644 index 00000000000..52221aba1b8 --- /dev/null +++ b/demos/2d/space_shooter/main_menu.gd @@ -0,0 +1,20 @@ + +extends Control + +# member variables here, example: +# var a=2 +# var b="textvar" + +func _ready(): + + get_node("score").set_text( "HIGH SCORE: "+str( get_node("/root/game_state").max_points ) ) + # Initialization here + pass + + + + +func _on_play_pressed(): + get_node("/root/game_state").points=0 + get_tree().change_scene("res://level.scn") + pass # replace with function body diff --git a/demos/2d/space_shooter/main_menu.scn b/demos/2d/space_shooter/main_menu.scn new file mode 100644 index 0000000000000000000000000000000000000000..b87cc5d3a8b1c1313558b4d4f81e2d02e3f066c9 GIT binary patch literal 2402 zcmXw536K=k8UDL_c6)dBWMOyMV|L%n9)JtXvVaGWC>E9SC{rkj5%aJrUH$$2 zA7B6Pe@DO9<8fJrD_1?hr5OPCivTZh0PJ=-;7BPfxV z58xxq=|-p}6}6UTn|Uj#MGQ5oK_!_XDv7+2%4jLtUT!BXJ?BK+a=H{m5{5W!(yxHAC9?KKMJSLGZ*^aR=~ZHnb1{Z-O!+LOIhO z;B5$#N?6SFrIeB#K20;Ag3PRtO~bLw4AhXSDn-xcOv_PnsxwI+@)vYlPv{xl*&3mK zE~9y3lVIl5Bx&bhHW{E{cY)8=G80Ov6`H)V*2;{Yo^+I~YEMx|RE^}MX+RB3UR_r=558$SpO2CWO*c`O*k;i^UvlTGe@(Y*ynD7fahOS)FhWKsg3Aq z!?ZLdYvyeYW|S6j5u4mvoP}@rZGBo(CNgT;j*w%VJ{^j2YKHFd_-0>0vm8D22M(Ia zkjDqAZO77_I&1)%zc7dJPEjZd1hrS4Em;)nmkOa|>pNneVF*jRk zj_xYY=W?2rR72b3{a7VvhNC2u{S};@3_U?_6ml7LD;?va`EZ{*CZu#*CG#LfpYb_n zI-QZua4C(R7Ia(5b!NaO?RZQ~X7uEgVjAu&I?m}yGAu_!=fI&4k}fW%&{DL4E+7TB zp9Mxral8iWLf>$N}iikuM=1 zE|e>_qdJ-$-scH(J^n^)!rO7BR4pX)mK8cd;|Qg|j(+#AxEBNR1EI&dK1)4ysv28x z57!@~-lDCpYep&Pe-gx%3#bUucnXFCsr(|r*%+QwKe;_TR`um$fZHo6P35w?02jTnOr ziOqQnEcz~R#f7nf?pH)bGYYz88sXJ!X>_m-rSN0y=(*^dG}ETh{qzTdgirH1(^i{2 z0lZsEj8gQzDS5Azq_gr*PX_01>Um85@rk1t?A-2C^BG4;-j{f!6dbuMsM&-bKH~;^ zuH`ePMFYYkdz%MJth}B&oRaVVuxx#4RQ?xjp8HDod!A2|4Sw3t9={;Ge){zHaP_L* z(q6%~(h1tn+H8}@NgMsG{3NGrNe=PLhHj@jhqj-GHJp|2eyB`y9NkF2G$!ALL-_E# zi&ycW%)PMlXL!=LAVa$BxwSk0D__FcIatAx4Vp2?y&*HH_1>2=29=C zn~()O!E@LYmWOF}=B93C~;64O&Z1VXd{ zS4W@2o1$eHj~z#G^lDUaJ0^#Jfk`%j!=dQg_|(XGj4=A$7-zwmxR#|H#@10k9$NiA z9*QRLkn|fo#3Jy2c*0RsJn?Ah$lxc~J6gca&_-6E2*IL=PhkgikUD%^+KwU@f^C5{ zci~3pWG)f9h{(d-MG<<4C`DKeQWeZ0_2+u4BwMP&xSJ_2k{7nolC zonFJ(K89Kbj-igBjG>-!M3_ND;F)z5v*tiAt9Cxa0)`OFXTw4kXD2O0SUduK%pYbR z;YxmX`j(T5@}y}PSLUx0YncB^4gJIiix?x%I1f|63Vg}$Oy;u*L)9~EzyffA2<7*$ zyMDOF--2zvn$eNiIB6(juL7w+xnse%7yiQZXGdew`kQxr^46l-lcYX&L(@jzaOj2FJiq1e)zCHbh&KZt~0w%ullyMp{0YY5f13?l9~svzOz() z_TA@Szb?J&)$4@xak>0Q^~b(?re>*kK9s^$mA@~%`T1s~y&b1}*H2}inQ_C)hBF_3 z{eBVMsi%tQbH literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/meteorite.png b/demos/2d/space_shooter/meteorite.png new file mode 100644 index 0000000000000000000000000000000000000000..92fb4387df9a3b54b55d6180570511f954f49c5a GIT binary patch literal 6072 zcmV;p7f0xcP)`LsaBo#ZdmMTYdtVH41DJ?8g zmV{+2fs050#4>|@u+0A6%-grSb?3uSCMb(B9pzM=d#i8N?e70Q=XBq5{tY00R`sUJ zXC^VGKyE(Qf1^`ONsX2oEvJ~0OlkSdB*uwDm@sMZsy0CKwf+tfZ@m3;M8AGHazq?Ba@6?L0_FoXjCcciF+~6VY);OX#%1oMPLhi^ zkT+z-<~O6kkO#+3)>i?RdE+zx7XpU=~nELA~8czHI<{ z3ULHD$`p(r5ljM11GAbZ$Hl|Pf7k7?t_&wK#%MJ(?rjODzf$uOXtm9>Ot$Qze zWo#%l`q0kw#QXPWjFAzC^F^CKdG2=b!iC~7&(~iviH@&L9r7lR%xI=zY<3gKk)vps z5}Ok{`nJHm$%UrJ5pw|f3Bd${BTtGcrWszq`O^1|cUBai*go9#?ma{4t=sz3Nv)LJ zD3loL?~(OL@}t*Qf62?c`rz)I9PbW9&e$LkO15Y6+&3hxrB&mX7dO0}z9pW?e&zJ{ zSB`P%H{MIVRzjDKp^tzXXHL&DrvINTF!>B}dKSSEEqMNU`I%!MFb`Dvw|@Hv8^7up z`s43?c-yYW9>_41^h8Yi2xZdlNJ{IH7cLg~(S;iKk9Kij#AG1l)7xbcb9~xXjvHm0 zON#-g&X;)QM#b9*jKxR?r(!bv;c#4?+UK$M{2IX=lM#$*-lhfK90OAbCZ;44Mb*m@M9l2;M(urBS?xe7A>?gXn8IRMaA{o1}D!J!HV(G!+qR0=#zF^ z2or=7L{bt8fySoTN-=W@{@ZicnJ=}qFwJ_i?Y(4}@~^6qIv$KXe1k9lUYo;*qqhS< zzNvK-NDT^DwNmf--y>(vt1sT$m-+ZVc~77H_^3@vRWOuKq~dr%meqn{VX4LJVnDMk z*}Ef4f5yN~36KgAg$UIFLIfdpRHw&i&=>dVauxk?L+s4E>0N#9<6V~cy&lcesri?G z$NJzC<0npFOuhbbPaMLy_zc!luVQlIknxr=FbQJ%UoY$2p6{5>xwF5vyD$Ce!#iAS zi@ypj0~`rR!qB8p@L4K&tdu&;FSgh{*u&0jNL*G43<=647HsYoXak`gT7lrq&2hm=W8XNGFZvKttU< zXX9=c%1)_8}GC5Hv&A*!i~jng{D!cv$z~EUy1SBl20;~ z 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 MGoyy9A^+z52c#MzVgLXD literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/rail.gd b/demos/2d/space_shooter/rail.gd new file mode 100644 index 00000000000..803a09fe846 --- /dev/null +++ b/demos/2d/space_shooter/rail.gd @@ -0,0 +1,26 @@ + +extends Node2D + + +const SPEED=200 +# member variables here, example: +# var a=2 +# var b="textvar" + +func stop(): + set_process(false) + +var offset=0 + + +func _process(delta): + + offset+=delta*SPEED + set_pos(Vector2(offset,0)) + +func _ready(): + set_process(true) + # Initialization here + + + diff --git a/demos/2d/space_shooter/ship.gd b/demos/2d/space_shooter/ship.gd new file mode 100644 index 00000000000..fa444868a43 --- /dev/null +++ b/demos/2d/space_shooter/ship.gd @@ -0,0 +1,88 @@ + +extends Area2D + +# member variables here, example: +# var a=2 +# var b="textvar" + +const SPEED = 200 + +var screen_size + +var prev_shooting=false + +func _process(delta): + + var motion = Vector2() + if Input.is_action_pressed("move_up"): + motion+=Vector2(0,-1) + if Input.is_action_pressed("move_down"): + motion+=Vector2(0,1) + if Input.is_action_pressed("move_left"): + motion+=Vector2(-1,0) + if Input.is_action_pressed("move_right"): + motion+=Vector2(1,0) + var shooting = Input.is_action_pressed("shoot") + + var pos = get_pos() + + pos+=motion*delta*SPEED + if (pos.x<0): + pos.x=0 + if (pos.x>screen_size.x): + pos.x=screen_size.x + if (pos.y<0): + pos.y=0 + if (pos.y>screen_size.y): + pos.y=screen_size.y + + set_pos(pos) + + if (shooting and not prev_shooting): + # just pressed + var shot = preload("res://shot.scn").instance() + #use the position3d as reference + shot.set_pos( get_node("shootfrom").get_global_pos() ) + #put it two parents above, so it is not moved by us + get_node("../..").add_child(shot) + #play sound + get_node("sfx").play("shoot") + + + prev_shooting = shooting + + #update points counter + get_node("../hud/score_points").set_text( str(get_node("/root/game_state").points) ) + +func _ready(): + # Initialization here + screen_size = get_viewport().get_rect().size + set_process(true) + pass + +var killed=false + +func _hit_something(): + if (killed): + return + killed=true + get_node("anim").play("explode") + get_node("sfx").play("sound_explode") + get_node("../hud/game_over").show() + get_node("/root/game_state").game_over() + get_parent().stop() + set_process(false) + + +func _on_ship_body_enter( body ): + _hit_something() + + +func _on_ship_area_enter( area ): + if (area.has_method("is_enemy") and area.is_enemy()): + _hit_something() + + +func _on_back_to_menu_pressed(): + get_tree().change_scene("res://main_menu.scn") + pass # replace with function body diff --git a/demos/2d/space_shooter/ship.png b/demos/2d/space_shooter/ship.png new file mode 100644 index 0000000000000000000000000000000000000000..a36b833903250083a2c58bc4855ee7b999277445 GIT binary patch literal 2815 zcmV00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-yo3k)_4{!LQB0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#HbxA})RA}DqnQLqu*LBB#=gwni_DwFA)XU3;8ek|Cd09_Uu^hwpqAPi@*JVz^eB`$))by{(!*dfUUrFKpEH% zlz<6fF0zPuKNhzCm#x_f{3dX>zklzpn+j{=>#pf)lq;3#z4dIZZpB7`7l6lrkt?zC z3a;?3D5YOgH0ZSBfF(3r|$R!&q{O>N{PdC2#)YdybeV^po3(*cVB7jjK z(47krV>oc=2oD`;909%y{Nt6l_Y%;{0$vI{25bPX2ets+KpPMMDd17yiJ?6^^hFMB z7w}iT`+vCe?$7@bu|yhKSYAwXIb$#go^8k_4A*zqjGUa{i$6R48t?!xe3k6IEMN<8 zffnFK;8VbD$G-i!f}P3wZYr--x>dkpV({6<=5IdrHQs=>cl&|ec(09#Yr5?!f{;en2Q*B*XF+@ujc7FRzM*u zBy7#_@Gsc+vwfW2_XAtHw`~_Eb{lXDuqMh5#mHC}m9eKET{aK50FS-?)1TgMQaQwg zsJEU+&y``rCam@icr7_%ejGJ(3Tynxh(_%XLcOaxHPN2mvQu)sn{iVuh#0C9qZE(4 zjvhTqn{Uz8-N(i)J6W@?lT@Y^-}f;hSeA`tIq0y47oI~;pXB)$UgVh-*F0f6?hqV1$YanElov>!{A~p{owH5fAc$L(;c=}7S{AA zdgL|mIuJjNWLq)895Qtrqb$hxLb4rkJZ#@3kxr3qX(5qGHUZhRg>1_1!qFYY`_&sa#@wY@Dg_Nx~pNf*MjT zVkX~iZ2R2@M}eP5-uBeu+F&KX3bIZ zL#_u<7y+>@L^){NLb*OxJb~wXcwP+8_lS8ejxsdnrjRhe1a<1g3Bu|uw(DUhTTsbX z;<og9G^Q~RwF=a$m|79a z=P}hO3>qhy#qa6IcDKv$AMS41`j>mXMR??b&BLOb9|gXVzIJO%ar_)XFb{SLon8aV zfCwh6VkQqGVl_WwFj_-cZ@ya==m3H`+UREf6@^hT0s%1^O$cHm$_C|vmjpWwMk6{v zEDyp4I;bFGn(Q4kz%($9hn>vfcYT;l?}y0rY{JWTV5ZM-^yo`%5uqJhsXbgc3A_H| z@5O>zK=^JRk*4L0LfU=><7W`ZL);j~@etQXTpJTMkf{mG+B}k-htyK2}=`9 z5B)o(qeE2B9XCK6aQX)ZePDK__VE0P1H+YSVr|@*g&;Rz#jw)tXcfbB^g=d|j(MQ0 zru9T)S7+eV5ISZ-*X{T%9mF$9Tt7w_1k9Wpr*Z5cGB<|uJ*3e8M4kYeFHj7ClBdauBT2*E+hhM^&kkrmka?LHj&ULrl zO83rR<(eC|QRwR>ZKgmncuv27%tLcAnO2UxXPJkMf% zcY(H!cEq+ZCd7mdW{)3a`rshtxiYior}Pbf^Wxi!2?bXg* zBKb~&z+jKPi8=cYCYiysbwa!q9I!QHU2oW1em zKL?(V3Xd{yVDZ3UfrwYi!;2*jbOMQ})$0Phs9CV1ez*(R{)>n1@6(ef-8ePo=jSB| zL;QFg%Tkm|rRE?j-%g`ZXSQ5Jl6mCXo6%kUXe)+9eK7{4G=X{XA5dNfx33>JmBpMs zMBfA7E=Ltr9C#+0iWFCxid+uhOKCpb2=p%ChG;mj`Sq{tTrVOmA~GF@;YmP=lAJLn zE_N)YymX9~f+Chs_}OO5S)T_xhS(PB_~5u#FNTd!SMBxJ*?nJq9+T6ihAD;)%U z;7=YF9frK$Yg};ZztUXyVx!utcw!*$C)njId|8`(uYs@1s;tVYtjemue*;<%X1XO| RSq=aI002ovPDHLkV1k!(LyrIe literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/ship.scn b/demos/2d/space_shooter/ship.scn new file mode 100644 index 0000000000000000000000000000000000000000..82c710eda78d1adb3a22b8bc1442e0290cbb7571 GIT binary patch literal 6752 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 noRs$q-^=q$esPGe@p)jkm4N_ literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/shoot.png b/demos/2d/space_shooter/shoot.png new file mode 100644 index 0000000000000000000000000000000000000000..6e80ddab93576f507bb48a99652f9d6f258f7a33 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ej!3HD~56t}lq}Y2GsH05I~HwV2o&Kg z@Q5r1suBiaMuu5)B!GhKC7!;n?DyF?nJh#un=;J+3dv@MM3gw^=jNv7l>oU649-QV zi6yBi3gww484B*6z5ywEsq8>;Cr=m05R22v2@yR# zkIubw@408rz4x4dhK55SnEjOj>}mwKv;bg{3?KmH1Q3`HB?OqmJaY&2=!6j)jv6Tg z9%x`?d^upZwiP56mX<7mV&*FzH#4e}PUy}!l(CYssFfNs!bVd&Wp*9BqZqiP~m5)0y*W4IXQ3%rRI4W;{_VVcEGNIbo#YnQ`#49w}j2 zX{|tVGDceK6*9KJ&F6G3?aWN2b9*?H3u&EQgs+q4F;f}C=Dt zb0Fk;LIpw#!?k?y3SMWhV8EX{B_(QjUjEK6no1vX0z7 znizb-{ZN2XCSkSo@~Knnf?c>0e5}GVsVB0AHUsn7+)xOYDJ3wEm7PeLVY zMnA5XlSXFTia`~dmwyUf8dnMuE5IwDn#uSSmf{*-d>Gp)4u`P`zsUKPrKkq}A`+Y1?&J|vhHL`{}W*de!k9%Lm5t?WT3n15n4VoiB4J*f|Y2gi6gV&Q* z0d=g2R{0YdmuBj3#Y<>{jZ5)iEtPwomU@%SH=;8mT#pS1%BpvyN3j~}*#g{)gZb6H zEusU>tOl|a$Ev^y3QDu2*oGch8@yju&1BlLGivPlplYPw@$Tfl`I42^qpf!VC@Z+Q z*y9+9F*RSOtl?r^VZw}$XVj$bOvJiIf8ran>||%!dIzf9aljF=Xf9@UDxV+k{@j&q?1CbiY#)QYqL zF=@s8H63N>h_(@DpXlYeB2cvhy>D>%Qg3QKx2x%eCLGaU)h3^PO)=jWf25cNgSwqD zqY1-dpZ6XMoPx2ABZ8hB4F&(fE%zkMF(cDjX&i7Xu=JqNd(^EeO4~--wxWjPKyRm8 z1xCl`pyE=&%5u-;SZ&VZ;&u1+adDk6t_KYNq(2GH=nL+ac>02IQI8t>tL}WSu|1uz zoInSp@MbPvdEXDXTn>{52emJreUpn{!gy=H{%bB)z+}E6=+36PCduiHnTo6Y0(G~t zIV>7_EZXgsA1a~K!2UU)YLC0Ml9M)5Tv!kua2JS{J?cje%X^QwHHXFn`}5a^4{~3< z=w$5O?<*s2on-4V)4$H6N25l9OI?Ap5cgAf>q1GlD|9^c)5xdpJTL=KXbac7TvGE3 zM9185BXgIEV`hp?YE@i}zq862`<;=_LRKT-@XHqLnOiA-^^e#Yl+s^ntBOyT{Jr+5*Yfg|`1 z7n^204{_hxnSw_mPjGSVvyXD$>1S8%`Zf1i`Fj0<;4~KpX2d-A4b6C;OO5hn9z84}#jdEq5D-8aZZ+>Dfd^ZQm-UVruwtV>{T3%G!V4{_rg?QiMMJ$FIWm z9J)bokq;l?P%-+P_FFED?73Cavl$E9qTQgf7uP@PRY$GZlp5I09_^)fDG5E#p^av# zTx_Fe@J(!cSNNl|kyrRg^nxQOegs z%HPAq+Q^9sz3sWIiCPj;c_75dOUz2JQqaSGg~?quo4iMMC3q{htC&t;sHe^ z!~_0XGS3&tT2@Z(N#G^aFsWKqjo56?P}7NQ+)SxXM$Z_Is&Y>U7r%u)xCeWPDD?QE zS=%P2pbaDBs|)^0EvUG#O1uNBdEs8H!o9-suyzF$vqd-$s6Z?sG+=>&Yc+0EcLt@%;^!Z!@er29UxcsX;|4m+bBlLq44IY*9 zuMxfV_>I1Z#1kf%moY&}SH) zflJ6@_q%hBdZNT7Qf)_(h5x5*0}jc-56<=Ezx?6TSS;T<@O;m$1HC4CQ24AAgEeM4VRI@Owflym_}SdmkdpCvgJmsds{og3=81 ziGiOG^&21uR^diGLk>*SuruV$89a*5(El^}UyktfK{~0#niqVR#RJrHPl{9+BUp9xF6P$KkcpiG`Xc|^pJqC>xP!7K27^0 zqY5E1_9TSQ%U;MdsJOke%SqekcJ4_fM zY$04mxSVhW;Yz}{30n!@AzVecnxML}ph0dM=+qb`{24fThgGtI4 zA&0gJAkI9&lQ2#zo&=Ky?S#K0IU!Ea;oVPZL#DHmq@HO=k?fq^@X&xnpO2}V8~!Lg z4r$g57R7YktZ|!+U&Ew)welA-onanun8f93jRi{zGUM6gXi7H|+7b9CR^!_}cxm6< zqFSt%=Ju}-E4Kv$LRA5VJX7m$co~?lsXwfYtl#~guPrOeEiDVbvirMlc@sltx8L=~ zGs8ctG%NqUuJVFC^RLd2#|r-AgX(vyf3{~?$Cb}F{`Z}pNBZGz^fYb#NXVYsmHP9+ z>8C${J*RI@emwoP{`=vVgkNosc<Z2YeBcxAsjP(PcCF+FyLWUaIrrt oUunDfFw-r*b#Esf`16@z?{Cf-tG4hg1S)3mboFyt=akR{0EKrMmH+?% literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/sound_explode.wav b/demos/2d/space_shooter/sound_explode.wav new file mode 100644 index 0000000000000000000000000000000000000000..229c85399c6d936b0fa24803053ec0674c721b3e GIT binary patch literal 75832 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%0AcS4SOW_eL?;vC(AT9ns5$`O&u$aQyGGzxa@> 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 XvThvv~NS$dIm2Yu{_~?QJw- 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 KJOCY1lKdaKnrjaL literal 0 HcmV?d00001 diff --git a/demos/2d/space_shooter/tile.png b/demos/2d/space_shooter/tile.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f41d16f662fdc6d08bdb1b5b9a74764e8025dc GIT binary patch literal 810 zcmV+_1J(SAP)WFU8GbZ8()Nlj2>E@cM*00NFlL_t(o!@XC%ZsI@? z{)}i4h{7pOYh(&KgcL$BmlFgC++_>Pimd` zYG~c#`X=ZSfa&x*Wt%4@koNy}4gl*c$8hiiVW8l>zC097sl2vCi_aqit89mH&~KdY ztED21(P~=B-z9CH7fF8o9BKdG7O~S{7$_~*r2m!wb_3vwBoo!CC`#vCU?j)B8scN| z4ghG;P?5xj`Wixkv^ZV1H2h1ukxkR~I?Le?Mrf_FU5SX(OY2QVI?rvIsnZys7BrEX z5xDm1idkX@0KDhNX~6;Th@|y87S7R$=F4Lj_-a@gK;xkAG)NI}YDq_uanQ#)%Mk`j zW2x;z*uw#<%(mMV!S!$`fssS0g~LE0NjGi)X5myT`5-!?v$mPR*F^vm)e+}GoxzFf zV4_B6&673&d@SBeBgg7SC0CqQX)O#C-WKs$lTsT*O4XbRY--euGlWu;oxC*Rk{-gO4{$NzS4Y}bxx{%nBobwq_H#@WO5W)Lr_KQqBKylzX$=o8o?YhgG)IsN)4_rsgt-Cw&TZo5rV?5rHtHKlh529EX-V zO45xEpvjkz3ye#b*xmo7o}L5R-iSQIkQBwf?Ez*(>Y}2^>jf4K_)nu%jvPTz5 oxgeometry_cmp=p_geometry_cmp; e->material=m; e->instance=p_instance; - //e->depth=camera_plane.distance_to(p_world->origin); - e->depth=camera_transform.origin.distance_to(p_instance->transform.origin); + if (camera_ortho) { + e->depth=camera_plane.distance_to(p_instance->transform.origin); + } else { + e->depth=camera_transform.origin.distance_to(p_instance->transform.origin); + } e->owner=p_owner; e->light_type=0; e->additive=false; @@ -10796,6 +10800,7 @@ void RasterizerGLES2::init() { current_rt=NULL; current_vd=NULL; current_debug=VS::SCENARIO_DEBUG_DISABLED; + camera_ortho=false; glGenBuffers(1,&gui_quad_buffer); glBindBuffer(GL_ARRAY_BUFFER,gui_quad_buffer); diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h index e83bd39caa1..d337ecfb640 100644 --- a/drivers/gles2/rasterizer_gles2.h +++ b/drivers/gles2/rasterizer_gles2.h @@ -1052,6 +1052,7 @@ class RasterizerGLES2 : public Rasterizer { float camera_z_near; float camera_z_far; Size2 camera_vp_size; + bool camera_ortho; Set extensions; bool texscreen_copied; bool texscreen_used; @@ -1589,7 +1590,7 @@ public: virtual void begin_shadow_map( RID p_light_instance, int p_shadow_pass ); - virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection); + virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection,bool p_ortho_hint); virtual void add_light( RID p_light_instance ); ///< all "add_light" calls happen before add_geometry calls diff --git a/makerel.bat b/makerel.bat new file mode 100644 index 00000000000..7db76e1dd77 --- /dev/null +++ b/makerel.bat @@ -0,0 +1 @@ +"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" && c:\python27\scons p=windows target=debug_release tools=no diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index 70b88a66117..49683da2265 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -81,43 +81,47 @@ Matrix32 Camera2D::get_camera_transform() { if (!first) { - if (centered) { + if (anchor_mode==ANCHOR_MODE_DRAG_CENTER) { - if (h_drag_enabled) { - camera_pos.x = MIN( camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT])); - camera_pos.x = MAX( camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_LEFT])); - } else { + if (h_drag_enabled) { + camera_pos.x = MIN( camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT])); + camera_pos.x = MAX( camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_LEFT])); + } else { - if (h_ofs<0) { - camera_pos.x = new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT] * h_ofs; - } else { - camera_pos.x = new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_LEFT] * h_ofs; - } - } + if (h_ofs<0) { + camera_pos.x = new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT] * h_ofs; + } else { + camera_pos.x = new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_LEFT] * h_ofs; + } + } - if (v_drag_enabled) { + if (v_drag_enabled) { - camera_pos.y = MIN( camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM])); - camera_pos.y = MAX( camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP])); + camera_pos.y = MIN( camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM])); + camera_pos.y = MAX( camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP])); - } else { + } else { - if (v_ofs<0) { - camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP] * v_ofs; - } else { - camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM] * v_ofs; - } - } + if (v_ofs<0) { + camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP] * v_ofs; + } else { + camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM] * v_ofs; + } + } + } else if (anchor_mode==ANCHOR_MODE_FIXED_TOP_LEFT){ + + camera_pos=new_camera_pos; } + if (smoothing>0.0) { float c = smoothing*get_fixed_process_delta_time(); smoothed_camera_pos = ((new_camera_pos-smoothed_camera_pos)*c)+smoothed_camera_pos; ret_camera_pos=smoothed_camera_pos; -// camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing; + // camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing; } else { ret_camera_pos=smoothed_camera_pos=camera_pos; @@ -132,7 +136,7 @@ Matrix32 Camera2D::get_camera_transform() { } - Point2 screen_offset = (centered ? (screen_size * 0.5 * zoom) : Point2()); + Point2 screen_offset = (anchor_mode==ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5 * zoom) : Point2()); float angle = get_global_transform().get_rotation(); if(rotating){ @@ -267,15 +271,15 @@ Vector2 Camera2D::get_offset() const{ return offset; } -void Camera2D::set_centered(bool p_centered){ +void Camera2D::set_anchor_mode(AnchorMode p_anchor_mode){ - centered=p_centered; + anchor_mode=p_anchor_mode; _update_scroll(); } -bool Camera2D::is_centered() const { +Camera2D::AnchorMode Camera2D::get_anchor_mode() const { - return centered; + return anchor_mode; } void Camera2D::set_rotating(bool p_rotating){ @@ -439,8 +443,8 @@ void Camera2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_offset","offset"),&Camera2D::set_offset); ObjectTypeDB::bind_method(_MD("get_offset"),&Camera2D::get_offset); - ObjectTypeDB::bind_method(_MD("set_centered","centered"),&Camera2D::set_centered); - ObjectTypeDB::bind_method(_MD("is_centered"),&Camera2D::is_centered); + ObjectTypeDB::bind_method(_MD("set_anchor_mode","anchor_mode"),&Camera2D::set_anchor_mode); + ObjectTypeDB::bind_method(_MD("get_anchor_mode"),&Camera2D::get_anchor_mode); ObjectTypeDB::bind_method(_MD("set_rotating","rotating"),&Camera2D::set_rotating); ObjectTypeDB::bind_method(_MD("is_rotating"),&Camera2D::is_rotating); @@ -487,7 +491,7 @@ void Camera2D::_bind_methods() { ADD_PROPERTYNZ( PropertyInfo(Variant::VECTOR2,"offset"),_SCS("set_offset"),_SCS("get_offset")); - ADD_PROPERTY( PropertyInfo(Variant::BOOL,"centered"),_SCS("set_centered"),_SCS("is_centered")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"anchor_mode",PROPERTY_HINT_ENUM,"Fixed TopLeft,Drag Center"),_SCS("set_anchor_mode"),_SCS("get_anchor_mode")); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"rotating"),_SCS("set_rotating"),_SCS("is_rotating")); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"current"),_SCS("_set_current"),_SCS("is_current")); ADD_PROPERTY( PropertyInfo(Variant::REAL,"smoothing"),_SCS("set_follow_smoothing"),_SCS("get_follow_smoothing") ); @@ -507,6 +511,8 @@ void Camera2D::_bind_methods() { ADD_PROPERTYI( PropertyInfo(Variant::REAL,"drag_margin/bottom",PROPERTY_HINT_RANGE,"0,1,0.01"),_SCS("set_drag_margin"),_SCS("get_drag_margin"),MARGIN_BOTTOM); + BIND_CONSTANT( ANCHOR_MODE_DRAG_CENTER ); + BIND_CONSTANT( ANCHOR_MODE_FIXED_TOP_LEFT ); } @@ -514,7 +520,7 @@ Camera2D::Camera2D() { - centered=true; + anchor_mode=ANCHOR_MODE_DRAG_CENTER; rotating=false; current=false; limit[MARGIN_LEFT]=-10000000; diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h index 8975a2584b8..79d84f48d0c 100644 --- a/scene/2d/camera_2d.h +++ b/scene/2d/camera_2d.h @@ -36,6 +36,12 @@ class Camera2D : public Node2D { OBJ_TYPE( Camera2D, Node2D ); +public: + + enum AnchorMode { + ANCHOR_MODE_FIXED_TOP_LEFT, + ANCHOR_MODE_DRAG_CENTER + }; protected: Point2 camera_pos; @@ -49,7 +55,7 @@ protected: RID canvas; Vector2 offset; Vector2 zoom; - bool centered; + AnchorMode anchor_mode; bool rotating; bool current; float smoothing; @@ -77,8 +83,8 @@ public: void set_offset(const Vector2& p_offset); Vector2 get_offset() const; - void set_centered(bool p_centered); - bool is_centered() const; + void set_anchor_mode(AnchorMode p_anchor_mode); + AnchorMode get_anchor_mode() const; void set_rotating(bool p_rotating); bool is_rotating() const; @@ -120,4 +126,6 @@ public: Camera2D(); }; +VARIANT_ENUM_CAST(Camera2D::AnchorMode); + #endif // CAMERA_2D_H diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 79365f7db6e..50336e07f4b 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -502,7 +502,7 @@ public: virtual void begin_scene(RID p_viewport_data,RID p_env,VS::ScenarioDebugMode p_debug)=0; virtual void begin_shadow_map( RID p_light_instance, int p_shadow_pass )=0; - virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection)=0; + virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection,bool p_ortho_hint)=0; virtual void add_light( RID p_light_instance )=0; ///< all "add_light" calls happen before add_geometry calls diff --git a/servers/visual/rasterizer_dummy.cpp b/servers/visual/rasterizer_dummy.cpp index 8db1cbf6e50..e32f47b3d8e 100644 --- a/servers/visual/rasterizer_dummy.cpp +++ b/servers/visual/rasterizer_dummy.cpp @@ -1497,7 +1497,7 @@ void RasterizerDummy::begin_shadow_map( RID p_light_instance, int p_shadow_pass } -void RasterizerDummy::set_camera(const Transform& p_world,const CameraMatrix& p_projection) { +void RasterizerDummy::set_camera(const Transform& p_world, const CameraMatrix& p_projection, bool p_ortho_hint) { } diff --git a/servers/visual/rasterizer_dummy.h b/servers/visual/rasterizer_dummy.h index 318cf6ff993..cc3c1724a4a 100644 --- a/servers/visual/rasterizer_dummy.h +++ b/servers/visual/rasterizer_dummy.h @@ -679,7 +679,7 @@ public: virtual void begin_scene(RID p_viewport_data,RID p_env,VS::ScenarioDebugMode p_debug); virtual void begin_shadow_map( RID p_light_instance, int p_shadow_pass ); - virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection); + virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection,bool p_ortho_hint); virtual void add_light( RID p_light_instance ); ///< all "add_light" calls happen before add_geometry calls diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 52e5c21272f..3fc90fd46d5 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -6302,7 +6302,7 @@ void VisualServerRaster::_render_no_camera(Viewport *p_viewport,Camera *p_camera else environment=p_scenario->fallback_environment; - rasterizer->set_camera(Transform(),CameraMatrix()); + rasterizer->set_camera(Transform(),CameraMatrix(),false); rasterizer->begin_scene(p_viewport->viewport_data,environment,p_scenario->debug); rasterizer->set_viewport(viewport_rect); rasterizer->end_scene(); @@ -6318,7 +6318,8 @@ void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, S /* STEP 1 - SETUP CAMERA */ CameraMatrix camera_matrix; - + bool ortho=false; + switch(p_camera->type) { case Camera::ORTHOGONAL: { @@ -6330,6 +6331,7 @@ void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, S p_camera->vaspect ); + ortho=true; } break; case Camera::PERSPECTIVE: { @@ -6341,12 +6343,13 @@ void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, S p_camera->vaspect ); + ortho=false; } break; } - rasterizer->set_camera(p_camera->transform, camera_matrix); + rasterizer->set_camera(p_camera->transform, camera_matrix,ortho); Vector planes = camera_matrix.get_projection_planes(p_camera->transform);