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 0000000000..7bec0f5301 --- /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 zcmWFvc6Md}0RaYvb-WA=kJuO(7#SEE7#SEF*b*2RcobN<0uqz6Q&WPIQ}a?4cpsQD zFt8}tCB!rEDRA%=r55Lx7A2?Z=OyN*GH@ygvd1Tt=B4DMrX zuq!Ar1Sg0xGDs_MDcEya>Fehw6{i-Jr4~J4;9$~APf5^a;8IXx$;nSn%u!HbGGKV7 z!0W*9fc>IFF9VZ;1cQ_UvqL-ss{%U%n*y`LWTs*UB?V3f9R+5GISl>_G7{$Sd1vOO z<|dY8COhS)R5I`?DDlQ;<`(1^mBbe$mSivpJzx^xDk)0LD^ANV%4HB%5alY%EY3{I z%*iaN)KB1I%t=iUobP!_@Q_yV?<4aB~C@C#UjnB`EPbo@F zPdLm~oRL_N8lRkBnpcvrojoV9GPS6fK}5lXFF8LaCo?5AzC5!eL%+DhVJRbn_ycxv zhU^0e66zkX7_k&(re~%+;51}Q&PXguOfFGmU=Tdu!&RJ_pQoRjSd^Zbmnhn}`rsx< z6ZZJ{+|-i9`1pjy49<$rnTrw`xE1W!3X1ZxQj<#*>=_uGgqhOv%MvS@^HLLw8Uz&B z9aphur=}LfCl(hdXfrZ!D44S(mlhSJDtuz#SKwY~&k(=hmxCUAYF=4pQGQ;ogOWoX zTSk0-T3T^x0}n&l0UjqwcK_VGOrOm3j0P`;0)<;FxyAaad5)C~DTzV{gjiBCOY(~p zs~B@C6TUAH<48)(PL0paPf1PqzCc7-k*O%XGGVr208f5Vv3^QsT3TswDuaN+x&=ZG zrx{Cg6z(}QDIR4`$u9>bi}(gEPW_a`qU_YX%)Imjs|6wqRR<0*h${F!U=U_1&dFEe zWGGg8(PX?pf;+W1H$JyCrzEo=CsT2=Q}qH#j-;H@qWFTu;$o!-j$8}78S{%0jTC$s zixM4p9Of^$!CI7hOT7AFBl24;o1&S4JXj<1=M z^Yii+tz=+UkaA!+AjOcU==gw1%0bRS%5fKGSz=LUVqQrxgPekav%fR{0S2c=76yg} zdxi%r3=c&4ou4{Pb6|I1aL93BaA0>3cWP(J7izYWP!Mt8cj09Sej=0WV(sASu!})b z!Im*Tevv6tK~AZ%6hpjoGh=G8GRp&IjR#C|4q^^d9qb)F4n1)Qc3?Ol-m2Fq=&;a1 z{HYj+gOYnlPj_xwA7onszv6M#mus0|(}WD2E!S6bAtZZU*Cq4(BxvLe9sTQ&Q7% zoI6?Li}Fk2D-(j4YHlhdlshOfRJm|Fq%$)x{Bj0qa4~RTXJ%k9adHrLNMbI_Of7e9 zYE*ELb&POKcTjXV#F&z)*u|8WoSGoRd}3d{ql1L&TZRgU>I6}ycR{KNl@6i|l@Az1 znXHT_Cx|+@sC-lUtsLaI>0q1l14o4?%nc6m4h#+{4$mFr)fCw>^3(J45_2A~$T_TG zEXZ#;%m0J3JK2ge^2_7Xi!@xFnGbk6e@>8O$oEKO$a}yd?R1!->N&$- z=Cfzc*gAN7h98*8TwIi%lwjn*;2`51q#%>9(Rl@9d_}Swla*UxLc8m+rwkp8MWw2( zOsOR$>H$aF9cDVXIZS0sE-fy}&yCkO!BCta>~NSxH%CFGIO~gpsq0m9v!PP<7 zVTl8~gQtVEtAT^GTc?Ax!!HMUM-c~hH){uWM+*mb$0ZKd4#^JIj?*2iA22hx#5yoL zbUWxfm^&~y+w7Zl! zus>jCaMyHTc4&6+f56}Du-hS-K}NyGL772Tf!!h7qupUPgS-O2!(+#Mhs%tL3=Ql) z+79Xr$_o4r)eI^M?2h6LstW85{0wRe><*V1)D_qr>=`r^*c~=AXezKfgfnOFM9OMkD^#HTcB`W{` literal 0 HcmV?d00001 diff --git a/demos/misc/window_management/observer/observer_hud.gd b/demos/misc/window_management/observer/observer_hud.gd new file mode 100644 index 0000000000..24e81b02ba --- /dev/null +++ b/demos/misc/window_management/observer/observer_hud.gd @@ -0,0 +1,98 @@ +var parent + +func printdebug(): + + var s + + if(parent.state == parent.STATE_GAME): + s = str( "TIME_FPS: ", Performance.get_monitor(Performance.TIME_FPS), "\n") + s += str("OBJECT_COUNT: ", Performance.get_monitor(Performance.OBJECT_COUNT), "\n") + s += str("OBJECT_RESOURCE_COUNT : ", Performance.get_monitor(Performance.OBJECT_RESOURCE_COUNT), "\n") + s += str("OBJECT_NODE_COUNT : ", Performance.get_monitor(Performance.OBJECT_NODE_COUNT), "\n") + s += str("RENDER_OBJECTS_IN_FRAME : ", Performance.get_monitor(Performance.RENDER_OBJECTS_IN_FRAME), "\n") + s += str("RENDER_VERTICES_IN_FRAME : ", Performance.get_monitor(Performance.RENDER_VERTICES_IN_FRAME), "\n") + s += str("RENDER_DRAW_CALLS_IN_FRAME : ", Performance.get_monitor(Performance.RENDER_DRAW_CALLS_IN_FRAME), "\n") + s += str("RENDER_VERTICES_IN_FRAME : ", Performance.get_monitor(Performance.RENDER_VERTICES_IN_FRAME), "\n") + # s += str("RENDER_USAGE_VIDEO_MEM_TOTAL : ", Performance.get_monitor(Performance.RENDER_USAGE_VIDEO_MEM_TOTAL), "\n") + # s += str("RENDER_VIDEO_MEM_USED : ", Performance.get_monitor(Performance.RENDER_VIDEO_MEM_USED), "\n") + # s += str("RENDER_TEXTURE_MEM_USED : ", Performance.get_monitor(Performance.RENDER_TEXTURE_MEM_USED), "\n") + # s += str("RENDER_VERTEX_MEM_USED : ", Performance.get_monitor(Performance.RENDER_VERTEX_MEM_USED), "\n") + s += str("CUBES: ", get_node("/root/World").world.size(), "\n") + else: + s = "" + + get_node("Label_Debug").set_text(s) + + +func _fixed_process(delta): + parent = get_parent() + + printdebug() + + if( parent.state == parent.STATE_MENU ): + get_node("Menu").show() + else: + get_node("Menu").hide() + + + +func _ready(): + set_fixed_process(true) + + +func _on_Fullscreen_toggled( pressed ): + if( pressed ): + OS.set_fullscreen(true) + else: + OS.set_fullscreen(false) + + +func _on_DebugInfo_toggled( pressed ): + if( pressed ): + get_node("Label_Debug").show() + else: + get_node("Label_Debug").hide() + + +func _on_Save_pressed(): + var file_dialog = get_node("Menu/SaveDialog") + file_dialog.clear_filters() + file_dialog.add_filter("*.json") + file_dialog.set_mode(3) + file_dialog.show() + file_dialog._update_file_list() + + +func _on_SaveDialog_file_selected( path ): + get_node("/root/World").save_world( path ) + + +func _on_Load_pressed(): + var file_dialog = get_node("Menu/LoadDialog") + file_dialog.clear_filters() + file_dialog.add_filter("*.json") + file_dialog.set_mode(0) + file_dialog.show() + file_dialog._update_file_list() + + +func _on_LoadDialog_file_selected( path ): + get_node("/root/World").load_world( path ) + + +func _on_Server_toggled( pressed ): + if pressed: + get_node("/root/World/Server").start() + get_node("Menu/Client").hide() + else: + get_node("/root/World/Server").stop() + get_node("Menu/Client").show() + + +func _on_Client_toggled( pressed ): + if pressed: + get_node("/root/World/Client").start() + get_node("Menu/Server").hide() + else: + get_node("/root/World/Client").stop() + get_node("Menu/Server").show() \ No newline at end of file