From 2204914abfc939e16cc595a6b175ff74b6552a6c Mon Sep 17 00:00:00 2001 From: hurikhan Date: Thu, 22 Jan 2015 01:54:17 +0900 Subject: [PATCH] * observer scene for the demo --- .../window_management/observer/observer.gd | 78 ++++++++++++++ .../window_management/observer/observer.scn | Bin 0 -> 1786 bytes .../observer/observer_hud.gd | 98 ++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 demos/misc/window_management/observer/observer.gd create mode 100644 demos/misc/window_management/observer/observer.scn create mode 100644 demos/misc/window_management/observer/observer_hud.gd diff --git a/demos/misc/window_management/observer/observer.gd b/demos/misc/window_management/observer/observer.gd new file mode 100644 index 00000000000..7bec0f53015 --- /dev/null +++ b/demos/misc/window_management/observer/observer.gd @@ -0,0 +1,78 @@ + +extends Spatial + +var r_pos = Vector2() +var state + +const STATE_MENU=0 +const STATE_GRAB=1 + +func direction(vector): + var v = get_node("Camera").get_global_transform().basis * vector + v = v.normalized() + + return v + + +func impulse(event, action): + if(event.is_action(action) && event.is_pressed() && !event.is_echo()): + return true + else: + return false + + +func _fixed_process(delta): + + if(state != STATE_GRAB): + return + + if(Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + + var dir = Vector3() + var cam = get_global_transform() + var org = get_translation() + + if (Input.is_action_pressed("move_forward")): + dir += direction(Vector3(0,0,-1)) + if (Input.is_action_pressed("move_backwards")): + dir += direction(Vector3(0,0,1)) + if (Input.is_action_pressed("move_left")): + dir += direction(Vector3(-1,0,0)) + if (Input.is_action_pressed("move_right")): + dir += direction(Vector3(1,0,0)) + + dir = dir.normalized() + + move(dir * 10 * delta) + var d = delta * 0.1 + + var yaw = get_transform().rotated(Vector3(0,1,0), d * r_pos.x) + set_transform(yaw) + + var cam = get_node("Camera") + var pitch = cam.get_transform().rotated(Vector3(1,0,0), d * r_pos.y) + cam.set_transform(pitch) + + r_pos.x = 0.0 + r_pos.y = 0.0 + + +func _input( event ): + if(event.type == InputEvent.MOUSE_MOTION): + r_pos = event.relative_pos + + if(impulse(event, "ui_cancel")): + if(state == STATE_GRAB): + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + state = STATE_MENU + else: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + state = STATE_GRAB + + +func _ready(): + set_fixed_process(true) + set_process_input(true) + + state = STATE_MENU diff --git a/demos/misc/window_management/observer/observer.scn b/demos/misc/window_management/observer/observer.scn new file mode 100644 index 0000000000000000000000000000000000000000..da29ad62b8d0d7033ef8c40af78e0fd7b4602ad3 GIT binary patch literal 1786 zcmW+%du-dr8UIMiqAfq<*p}sYPI8>2%R`>yAcfsVA4U0*HdrznScVQ8Ns(unHAN~U zWk+_9DREmT4GI(pnk`L-DP0F_U6En!iUBP!uray@TldFMU~d#$mMjDI$j}vAk)g=W zJ>Y)deIIzg`(C`8o0nzS8tnkrTLErG0XTpf2V5QcPtoe)35%TRZ-_>ky!EsB_NfNPT z(=!XEW%|{O8sjXgcDI>!x#DMBt*VqweM!S^=qCGW-EF#7_A4$`99uD5t*CCsyhW`{ z72T=WzWNi<(yG+;po@&R>5gTY231x}e=+0v_+1W?p_qiFAW+YQk+Fzt7EL2;`g~Mh z)Lc#XQvln7qcP8P>`X~>i>9q5&i>$?*QIe$QA*U;6h-|G$f>)6t3fk494))flT`Of z79iKjFF4CuRj{e%*4l|Ey(%tIT2?f#O!jclNDf8xitAGH5yVOJwJa$0`?z1E_Oj_Z zb_vsXCc3CN3kx2twZL-FlIsfuuXo@txQazSl=;-Vg5j)e zwS`iPHDwIVU81&W7uAV+7pw*WB*+&+=;S@iNjHI){_D8|^`2(xm6TG&^3AekrryY{ z)q5KYR>ftt^}KW_#jaiC99J77M>$u+7W{Vow+*glm=#Zz>)RSM-=}sZ{X{B|$E2&n zPvzP<5XiUWFJV&po1i;;BpY&GKvgVqa?RzjpM&)C2Jb>KU z2>U^@5Jn(O#N|798ASxN*c36D+lV+F>k~bs3*-4#n7=(x%1`1Hz6HJHQBF}_KFF7? z%5Wbj@;XPo;YcX#4*9QPH@<*bY4*l#oM%oXpWc6V8(zcYo$f|fqG@g{uTpG7LAu;j zHcwGY@ocTEo@QtEp&+a}PDzUkYwO3e*e*SvelKj=r;WqHxfu~|UEZ|5dHx2DqM$y3 zr*j6jV>2A6otIz34*5O7pbM6Kp+RvSU#Y5d{OR8jbp_L~ns3IU0B~R4+K?YbktyRj z?8JhwY|@pfb7u(-N?(?Wn8F*JVWyttZJnwE!p)z4UBaHJf50hRQxp6@=SI{jCZHNZ zf}c2WNljpW$A8lQ8=jM1f9DxFl*nzNhTB;v2HwT(J5$j`r|8(46-I{eHLmPDwb?9< zFJ-%~{Wy!4TC!nRz&xoTeg$6*xqxLW@tMFx*vK^O33EXxK=^48dV%!Esh@8SKJ%vh z?2Wf^aCjZGoqIvi&lg?{24}x0Xr+R=Ypymp^242fP?N%oS9%X`k&m3gCHX?sTXa^G zqPu%a7J?)4ztvuFW;L+GNPlhyc)kmtyN`Xl*! zoN`K^<|n34svA>3y94Jrw=(iHPkn#a@pm`y3Qpq-QN7~%PD$B)6FjvOHzWJl<>x*5 zF^(Nepg;5^C{;5&y zpT59s_i?+_h2r!iiqgYuzJime