From f44241ce1bc412168b74a3f009f98f4e981671e3 Mon Sep 17 00:00:00 2001 From: orbitcowboy Date: Thu, 18 Dec 2014 10:02:57 +0100 Subject: [PATCH 01/32] sprite_3d.cpp: fixed buffer access out of bounds. --- scene/3d/sprite_3d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index 77f2cf5cc1..1d2bce5a91 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -292,7 +292,7 @@ SpriteBase3D::SpriteBase3D() { parent_sprite=NULL; pI=NULL; - for(int i=0;i<4;i++) + for(int i=0;i Date: Tue, 5 May 2015 14:16:59 -0300 Subject: [PATCH 02/32] Remove duplicated filter, Fix #1795 --- core/io/resource_format_xml.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/core/io/resource_format_xml.cpp b/core/io/resource_format_xml.cpp index 9de33e7ef3..4f3b98fbfd 100644 --- a/core/io/resource_format_xml.cpp +++ b/core/io/resource_format_xml.cpp @@ -1761,7 +1761,6 @@ void ResourceFormatLoaderXML::get_recognized_extensions_for_type(const String& p if (ext=="res") continue; p_extensions->push_back("x"+ext); - p_extensions->push_back(ext); } p_extensions->push_back("xml"); From 203f0693296094400db06f826b03cc1d63929223 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Mon, 2 Nov 2015 17:54:33 +0100 Subject: [PATCH 03/32] Expose AudioServer::free(RID rid) as AudioServer::free_rid(RID rid) to avoid script error due to collision with Object method free --- doc/engine_classes.xml | 2 +- servers/audio_server.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/engine_classes.xml b/doc/engine_classes.xml index af153a16ef..43602e26e9 100644 --- a/doc/engine_classes.xml +++ b/doc/engine_classes.xml @@ -1502,7 +1502,7 @@ - + diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index c155f5204a..6c5a2de97b 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -132,7 +132,7 @@ void AudioServer::_bind_methods() { ObjectTypeDB::bind_method(_MD("voice_stop","voice"), &AudioServer::voice_stop ); - ObjectTypeDB::bind_method(_MD("free","rid"), &AudioServer::free ); + ObjectTypeDB::bind_method(_MD("free_rid","rid"), &AudioServer::free ); ObjectTypeDB::bind_method(_MD("set_stream_global_volume_scale","scale"), &AudioServer::set_stream_global_volume_scale ); ObjectTypeDB::bind_method(_MD("get_stream_global_volume_scale"), &AudioServer::get_stream_global_volume_scale ); From c1d19ad258139c73e7aa81cf6e1fbd99e1bfe38b Mon Sep 17 00:00:00 2001 From: Saracen Date: Sun, 8 Nov 2015 03:21:06 +0000 Subject: [PATCH 04/32] New shader feature: change the colour of shadows on a per-material basis. Conflicts: drivers/gles2/shader_compiler_gles2.cpp --- drivers/gles2/rasterizer_gles2.cpp | 3 +++ drivers/gles2/shader_compiler_gles2.cpp | 6 ++++++ drivers/gles2/shaders/material.glsl | 8 ++++++++ scene/resources/shader_graph.cpp | 1 + servers/visual/shader_language.cpp | 3 ++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index d84ee5a758..891fe49afa 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -4637,6 +4637,9 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { if (light_flags.uses_light) { enablers.push_back("#define USE_LIGHT_SHADER_CODE\n"); } + if (light_flags.uses_shadow_color) { + enablers.push_back("#define USE_LIGHT_SHADOW_COLOR\n"); + } if (light_flags.uses_time || fragment_flags.uses_time || vertex_flags.uses_time) { enablers.push_back("#define USE_TIME\n"); uses_time=true; diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index d57512c936..7501223fcc 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -218,6 +218,10 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a uses_light=true; } + if (vnode->name==vname_shadow) { + uses_shadow_color=true; + } + } if (type==ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX) { @@ -838,6 +842,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { ////////////// + mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["TIME"]="time"; mode_replace_table[2]["NORMAL"]="normal"; //mode_replace_table[2]["POSITION"]="IN_POSITION"; mode_replace_table[2]["LIGHT_DIR"]="light_dir"; @@ -849,6 +854,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { mode_replace_table[2]["SPECULAR_EXP"]="specular_exp"; mode_replace_table[2]["SHADE_PARAM"]="shade_param"; mode_replace_table[2]["LIGHT"]="light"; + mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SHADOW"]="shadow_color"; mode_replace_table[2]["POINT_COORD"]="gl_PointCoord"; mode_replace_table[2]["TIME"]="time"; diff --git a/drivers/gles2/shaders/material.glsl b/drivers/gles2/shaders/material.glsl index 38fb03ab5c..ccd80bf2f0 100644 --- a/drivers/gles2/shaders/material.glsl +++ b/drivers/gles2/shaders/material.glsl @@ -1175,6 +1175,10 @@ FRAGMENT_SHADER_CODE vec3 mdiffuse = diffuse.rgb; vec3 light; +#if defined(USE_LIGHT_SHADOW_COLOR) + vec3 shadow_color=vec3(0.0,0.0,0.0); +#endif + #if defined(USE_LIGHT_SHADER_CODE) //light is written by the light shader { @@ -1195,6 +1199,10 @@ LIGHT_SHADER_CODE #endif diffuse.rgb = const_light_mult * ambient_light *diffuse.rgb + light * attenuation * shadow_attenuation; +#if defined(USE_LIGHT_SHADOW_COLOR) + diffuse.rgb += light * shadow_color * attenuation * (1.0 - shadow_attenuation); +#endif + #ifdef USE_FOG diffuse.rgb = mix(diffuse.rgb,fog_interp.rgb,fog_interp.a); diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp index 49a1bdccb1..da4857ccca 100644 --- a/scene/resources/shader_graph.cpp +++ b/scene/resources/shader_graph.cpp @@ -1435,6 +1435,7 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={ {MODE_MATERIAL,SHADER_TYPE_LIGHT,"ShadeParam","SHADE_PARAM","",SLOT_TYPE_SCALAR,SLOT_IN}, //light out {MODE_MATERIAL,SHADER_TYPE_LIGHT,"Light","LIGHT","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_MATERIAL,SHADER_TYPE_LIGHT,"Shadow", "SHADOW", "",SLOT_TYPE_VEC, SLOT_OUT }, //canvas item vertex in {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Vertex","vec3(SRC_VERTEX,0)","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"UV","SRC_UV","",SLOT_TYPE_VEC,SLOT_IN}, diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index ea56306241..6b1dae433c 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -1112,7 +1112,8 @@ const ShaderLanguage::BuiltinsDef ShaderLanguage::light_builtins_defs[]={ { "SPECULAR_EXP", TYPE_FLOAT}, { "SHADE_PARAM", TYPE_FLOAT}, { "LIGHT", TYPE_VEC3}, - { "POINT_COORD", TYPE_VEC2}, + { "SHADOW", TYPE_VEC3 }, + { "POINT_COORD", TYPE_VEC2 }, // { "SCREEN_POS", TYPE_VEC2}, // { "SCREEN_TEXEL_SIZE", TYPE_VEC2}, { "TIME", TYPE_FLOAT}, From 6d20ded6d7d776a0397ba8bd3f9e8250d2c4d9ff Mon Sep 17 00:00:00 2001 From: Julian Murgia - StraToN Date: Thu, 19 Nov 2015 14:15:17 +0100 Subject: [PATCH 05/32] Ask confirmation on closing a scene tab --- tools/editor/editor_node.cpp | 36 ++++++++++++++++++++++++++---------- tools/editor/editor_node.h | 2 ++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 5b9489992a..b8b2a5262c 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -2011,6 +2011,11 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { + } break; + case SCENE_TAB_CLOSE: { + _remove_scene(tab_closing); + _update_scene_tabs(); + current_option = -1; } break; case FILE_SAVE_SCENE: { @@ -2023,7 +2028,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { return; }; // fallthrough to save_as - }; + } break; case FILE_SAVE_AS_SCENE: { Node *scene = editor_data.get_edited_scene_root(); @@ -2957,23 +2962,23 @@ void EditorNode::_remove_edited_scene() { _update_title(); _update_scene_tabs(); - if (editor_data.get_edited_scene_count()==1) { - //make new scene appear saved - set_current_version(editor_data.get_undo_redo().get_version()); - unsaved_cache=false; - } +// if (editor_data.get_edited_scene_count()==1) { +// //make new scene appear saved +// set_current_version(editor_data.get_undo_redo().get_version()); +// unsaved_cache=false; +// } } void EditorNode::_remove_scene(int index) { // printf("Attempting to remove scene %d (current is %d)\n", index, editor_data.get_edited_scene()); + if (editor_data.get_edited_scene() == index) { //Scene to remove is current scene _remove_edited_scene(); } else { - // Scene to remove is not active scene."); + // Scene to remove is not active scene editor_data.remove_scene(index); - editor_data.get_undo_redo().clear_history(); } } @@ -4469,8 +4474,19 @@ void EditorNode::_scene_tab_script_edited(int p_tab) { } void EditorNode::_scene_tab_closed(int p_tab) { - _remove_scene(p_tab); - _update_scene_tabs(); + current_option = SCENE_TAB_CLOSE; + tab_closing = p_tab; + if (unsaved_cache) { + confirmation->get_ok()->set_text("Yes"); + //confirmation->get_cancel()->show(); + confirmation->set_text("Close scene? (Unsaved changes will be lost)"); + confirmation->popup_centered_minsize(); + } + else { + _remove_scene(p_tab); + //_update_scene_tabs(); + } + } diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index bd88e1a4b9..002df0f3ea 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -173,6 +173,7 @@ class EditorNode : public Node { SOURCES_REIMPORT, DEPENDENCY_LOAD_CHANGED_IMAGES, DEPENDENCY_UPDATE_IMPORTED, + SCENE_TAB_CLOSE, IMPORT_PLUGIN_BASE=100, @@ -217,6 +218,7 @@ class EditorNode : public Node { //main tabs Tabs *scene_tabs; + int tab_closing; int old_split_ofs; From e393e66a94d88335f9c4011d1c6c85aa83da4bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 19 Nov 2015 22:46:32 +0100 Subject: [PATCH 06/32] Rename polygon_path_finder demo and add icon --- demos/2d/polygon_path_finder/engine.cfg | 5 +++++ demos/2d/polygon_path_finder/icon.png | Bin 0 -> 712 bytes demos/2d/polygon_path_finder/poly_with_holes.scn | Bin 0 -> 2974 bytes .../polygonpathfinder.gd | 0 demos/2d/polygon_path_finder_demo/engine.cfg | 5 ----- demos/2d/polygon_path_finder_demo/icon.png | Bin 3639 -> 0 bytes demos/2d/polygon_path_finder_demo/icon.png.flags | 1 - .../new_scene_poly_with_holes.scn | Bin 2609 -> 0 bytes 8 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 demos/2d/polygon_path_finder/engine.cfg create mode 100644 demos/2d/polygon_path_finder/icon.png create mode 100644 demos/2d/polygon_path_finder/poly_with_holes.scn rename demos/2d/{polygon_path_finder_demo => polygon_path_finder}/polygonpathfinder.gd (100%) delete mode 100644 demos/2d/polygon_path_finder_demo/engine.cfg delete mode 100644 demos/2d/polygon_path_finder_demo/icon.png delete mode 100644 demos/2d/polygon_path_finder_demo/icon.png.flags delete mode 100644 demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn diff --git a/demos/2d/polygon_path_finder/engine.cfg b/demos/2d/polygon_path_finder/engine.cfg new file mode 100644 index 0000000000..47450408af --- /dev/null +++ b/demos/2d/polygon_path_finder/engine.cfg @@ -0,0 +1,5 @@ +[application] + +name="Polygon Pathfinder" +main_scene="res://poly_with_holes.scn" +icon="res://icon.png" diff --git a/demos/2d/polygon_path_finder/icon.png b/demos/2d/polygon_path_finder/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..643f5595ee6aaf2512d96a3061b6fc7aeb8d75b1 GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NY)RhkE)4%caKYZ?lNlHo zI14-?iy0XBj({-ZRBb+K1_lQ95>H=O_WRtzqS^)lEr}@%3{0V(E{-7?_uk&x?|s-o z_a=1kr(Z{M8P zSxjLs)>%qhxiL3PKWD;VVDf;euT0uJ|EGq7tXV|beMh;Bm;<@Ree>n!x4C5>Gvj=< zw1uOflaFEA#r`jOk1O0N*ZcJ|s~s@j#w9QCF+$Cev7O^aWY+v^T}*m2G#&^rJ`@rY zE7-#5e8@sSE|9@p`h)w73kwhLXQF4gB46JLT#*i77jLv8V{P7lN5X8ELMpM`Aeu4Xz$D`aENKSXu^~6uTg@N zJE!8E&+AXZ$4ci;YcyEL;K`B9KcU@V8pBNvXLb({iK^BVWgc+_^~4T_OwPqz6XtJN z!0?ijn`6TK4Gj!GIX`m;G#Tt?Q03r`P(!qz09S;yT8SFO(mxRlWb1fq{X+)78&qol`;+07aq~ AtpET3 literal 0 HcmV?d00001 diff --git a/demos/2d/polygon_path_finder/poly_with_holes.scn b/demos/2d/polygon_path_finder/poly_with_holes.scn new file mode 100644 index 0000000000000000000000000000000000000000..6b340377b7b2c0fa0ced7c3b08fb82de929279f6 GIT binary patch literal 2974 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 GEpq_pa-ur` literal 0 HcmV?d00001 diff --git a/demos/2d/polygon_path_finder_demo/polygonpathfinder.gd b/demos/2d/polygon_path_finder/polygonpathfinder.gd similarity index 100% rename from demos/2d/polygon_path_finder_demo/polygonpathfinder.gd rename to demos/2d/polygon_path_finder/polygonpathfinder.gd diff --git a/demos/2d/polygon_path_finder_demo/engine.cfg b/demos/2d/polygon_path_finder_demo/engine.cfg deleted file mode 100644 index de5593c417..0000000000 --- a/demos/2d/polygon_path_finder_demo/engine.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[application] - -name="polygon_path_finder_demo" -main_scene="res://new_scene_poly_with_holes.scn" -icon="res://icon.png" diff --git a/demos/2d/polygon_path_finder_demo/icon.png b/demos/2d/polygon_path_finder_demo/icon.png deleted file mode 100644 index 0c422e37b0ea9e6ad2901c8d425cb12f4d37694f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3639 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE|9QGNhE&XXIy*XF+OzC< zedt|Zv-e9}VspKxrDQ+(*z>j`ZL|0rCPtwrxeYbVZ^S(&^c(a$%1zdv@Rz6Z#&rfx zwb_xkXH3+MPd&Y>TSzr<&*uE8?Rh~#c{Cw7uyl3A@_gEnOc)2lO;b){rEQ0 zwM65=y-SDdS^qt3=G0@+C_SpD;-&c@>#u{i;QwuZKAp5TTc3GWUp}USL9s*4U2^uU z#Zj7zY|1wrUvliq86l3&t1CVzwy>`-e>LObiSz24f*0@n^X|RkhK2)g{{MC6$e&?2 zX=b6@rAW2MC$D|IUOoGXSv>z0_q3#G`e}Jv>)wZZ$;_20D%#Q?svSG?_yM81-G4rv zd_RjTLR+LiKW=I8;hw_R*QPHyq}Fz&YTM8E$NzT*-D^Gk$lU&Sw$0KBi!Qs~T<3jr zTSV=4r@ci*qGg`y#_y-c+s(Y(wEh3>s>O9L&$V3nakV*K_)>|9VnBmH>_1W4d5i@lp@qTKM}l{1Gy>D9}^2^RQSE@N{ibF5w_vLD`1f5uC z&ijv0AV6 zy6U2@-(=GtR>(2DdbRoRmUE%Xdm7qTB@18e<(~aINV)Eqr&Q4E*A~?aAMOm7V`6k- zzH!U-gXGGH-qq!%3a_@kz5JKK$|9bTxhG$+C*0iNbU))#kyD=qiWvSEH}X8!a=6T9 z@N&XQ@%VpTCo6>BAD;2F^@LmUo&Eo_dkVfB+IEZeaM0`%ezmu?*-rGF|M2vYZHwgc zl1c0#)6I_O>lEex;|o;2VqEZZT=9EjOaAhwnn(ZK z5K->rIUoK{;0#ySlNTcK=k8{1{hO23mbKL5r^WTF(|2tD60nussZH{!c>F)1+r@@U z+LnvV3wjYWX?RU)3!$E7sjRYoY4N6$ZRSeiU%>-E{TyMw$ECD?W?Og7hv z*}i>|iEr|!TN3MDe|)?+T}I~FgjsA}8#iq_6drG%qB7gY;BAJ)qsA99|bZ-4ZH^V&Ik6I&{Ff17pptjyFPQQy~&P7RWr8!O8DTF<9N z{P>fW-TgqvDY1ERb8_7JJ&zw4w6Bx4(_N{!^vOke`9#y4DM2Z2!7pw-IK;o6VQGh| z-{pY(xP3V^6Vg3c&S_2S*jiS{6RR%5_w`Bi<-dvB_Wk7B>t5yU z)w|Vv_S$`CJStXb)>yDEi1G|*DB60Zn49OoroTFc`+wiP9ryRPrQiRRp&X7|gLZD1 zUnk+k=){qA_41!Yt$FWWKA93U;~~cb{VnU5ju&1i^|be2IYnur&z3s#SG^0vwm54# zczNy&$>ZExk+V}O%bL$mvpZb6M|=6{+|%(}&z`?`sL+aeX4=CecOLODT=nX0 zOXU?+-O6WDwhiXJv!(dbN!?JyzaLVI=XjLldQZ~MjU(n_%3^EvUP}; zY2N+0kB@!v)!E(ndZ)#@-esA89!uoj_24Ug(Y6b_q#Vr;n6O z+duc8^rxN5HcKVu%djStXV0%%+i3HerM+d!q@aywK0f4}Zy)jGoA_s$x8fYFyhe*P z5AYv1zxVb>@XHB~*Ow|eYO4O;U8(g{YUV|ijV?VGI|XBoKh=nT@M3|()+p!8Tk_gO z6kdE#Wtf)wy*F*C+Rd8%hffxE`j{QP@kGPPVehpCF>4B@=wDb7Jw52#QjvyF%u}ki zp3B>M&+-`)r^!v{AKT2H2DNTApM69)kjwq(=k~5ozgJIL72>Ok2?lE3U7w z zz`r-p=FY-`4JRirj(zm9@ZI_QFL#PRU_0XSnU_bpg+EENc3!qwKG&PiuGhajuaM(9 z`Z)dm|^-u+%f?w!MIrX>Pv-o0NiMQN_b zM2?vmK|Fi5+xx7_6=<#UO03k|_Bv>*lt|a{lpy7`uS{aSik=FUE%r)Ene_6cWNTq*&|Z(-1A=Z&U?M#dX1jUQG>-TPJ&7sSx0F>eWL;I7y#4*wy(a&EJ$j>*wjqJLRmmjz z_%x=N=Zp_tG!$)Ib&Al*6N>se$Vq_zF~W3Y0Vtx zS8e(gwus((R_Yype7VQucr(&2W2hXUi0xGx?b>vx5>hr}y?R%v{@b zX+qT#@I{@V1v%N$l+<}cxvatTRaC(2*0A@^>9 zq@q$M&&x9w=5EKL`l@vI-#>VMB~wd6`D0P;HcDvo_5y(C*UvcozONH%zyI0QBa?qSoRJn8Wxl3Pk(gn?(j$B@RCS{ZD z&1*~A1iKQGZHsp9d(ETGt-BAF^9#g& zJbmn=VsF;Q#pm_(i#F^%RgpGlOJ>=b|7ZECU893Ilx7`^zxP*C^!T#8+a@{PZC4j0 zUd_C+I-*x=U9vFm-1uoTdel!!D>_ZINHlh{kWrNB65x|;`6{q1Z_Awfk#c^OuX#F_ z2#Bm@d%fDe?BZ*!iJ6aHx7V8%JbmVxQ6JpQX3@M&mWB8F!;7EF_c`Z0Ub@+739plf z-2V^pb6Bn>JLgWGdvN84tOXt)uAB;KKN>qN@8q_MPj9Mij=zhHzZ1;pRjF}4_2Y4+=b&Xf@UbZ}4{{Qku={v6cFYXy+AO7{K z-{yAAQbC$Cf{jl$g!* zLc{rY@S?pv{#*xdJ+!O7z1m{!iEnqrw=I4=fA#K4LB->%Hh=zSxm$Yuj>^|^mrtIV zA5&pbI;HxlQvUrv5Bk3z{1`F&grDn~f+z3U?2HyKDA;lO+dr|;r3I~Sd)96_r@t}t zS`Od*GL+Ypuz9d`ID>PE&L6|4)p3zMXwr54rp?aldbJ zzHZv3xKFpF>vr7!_s4Om&%1)@k1opP$)C65nAN^)R^x^3FH@dPI{r-LRH>#+PN2n& zN2UUOs-5cYo=1XRoDz9_k6$n`QM|~cf4?u-wc>`?!z!-Zr5j?W@4CAn#BO1X&7wHH zE%OAO;#?~}_#dCQPOWZI^JK=B2_ARth(~Q|LLxZdBQr~_BBUu z-MqZm{_Vw^^8{r7M+L;j+gY5mwc?&|`u)E;CF`&Ec--Y?JoNabmCk9ex@5BCnSv*_ tAN)`2&;L{Wd+$EIU+16x`17CfrBCa>O@Dv-F)%PNc)I$ztaD0e0st}18>9dL diff --git a/demos/2d/polygon_path_finder_demo/icon.png.flags b/demos/2d/polygon_path_finder_demo/icon.png.flags deleted file mode 100644 index dbef2209e8..0000000000 --- a/demos/2d/polygon_path_finder_demo/icon.png.flags +++ /dev/null @@ -1 +0,0 @@ -gen_mipmaps=true diff --git a/demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn b/demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn deleted file mode 100644 index 07838be41e7fe99e105e6f5b4d6490ecafa276d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2609 zcmWFvc6Md}0RaYv_o568vg`~DKbRO87#SEE7#SEF*b*2RcobN<0uqz6Q&WPIQ}a?4 zcpsQDFz6}RCB!rEDRA%z8E~XC~#OG6*XuHwZGN zrlh7kU=ria%qvSRDv3`^OinFk;D5lN%Tk(GoRR3D$-w)7L5Mv+FTNzd zfI;j5g8)ZPW_m_RZel^af+S06nGu8d0|rUK z#N1+ig%-BFl=$5Il+*{zqMRwI1tl5rDMg9pAYM*pUTS=KW=cs$Lm5kEMQTcX!#S?f z;?(%WoPvx*1{sCu2kepx4NUn(@d?e04AKv{rlo~Q5m0?UzD4eqwqV?Xu(b9l+3g=1$jmW0R`g)LM+7vsmY~^+z*(A zIa6~pi;FY!^B6=PaH=!Mr&bg^WM<$@Ni9jt%!$vUI> zzQgth>>^C@CCLeoA25n1>`cmdz$WaV<;4GhLF^%e3WMka=G+6K4>?ZDtN z?*O;M(gWNsCl7EtZaBd0c+qJ;GXq0|{R3uZrwI+>511Jk8|+=}9mLsY+<0N9a$EKR zgRz6K!)zuE28P6^4zn2;6!e{{9K;kmXT$SDXM5ND8A;65PEsKD@mQJg^$#AZ-Z;69+w zpbTcKfJs#_sRkz1L8PPb0dWS+2TbBl#s|b1v>z~uJ8pmUHI{)v@gb9mfce6&3=NOG zV;Srpy^nR#eaT$sJd;tEp}Eqf)n%c}Oolv72ZrKgW@mYq$qd1&UM{a)l3C(2a|`k{ z)fI#oGSc=Q5MU`OO3W)x*LKm$EMv*c$teeV31==DxlHj%iQ172@mbxeoDUf69xzET#H+7oiqA|*e9aKx zc+l|&gR|lX#-hYD*@p~A81&QC({kAgit@8klS@2TxGrEy%P&i?W6Vp{Jewe(!0r^y znw^?j5TEF=mZ2oclr6cms3q^ za}a0bW>D~A%FoNwI>k_`;LE_Qz~{hlK#Czx+x`KQl*0rEDR(=@vP2~&ro58kL?1VQ zx5)<>9QYX+RCr-2$=%vvn(J-{c1N2RvbAn^9d2L=Zz2WEyUrRKyO=1Xpp_6`D$1x~FGICLE+GUcZg zXB=T)w%z>5kuC2JI~X`HC+IlTcsz6vaNuSzZs>4Qb`bJ7z?71jmULa|7ek4%sY4J` z%}s@bat9@bDyJp~5oQL4U(O)qPRkwGnHd;NoE(H5l9}>xad7# zC`vRv*ydT|sPKsS`$OhXhvyFRsxgci`C9vwYacMnIjmtU$ZxiKz|8PK&L!5PcwZz=6R*?}6e0rjm?&_VoO`#2f}Dh6V-(Rs}W&76oROg8X6z9tHLX z%nS@t3Oo$#3d|1544ew=>?xVW5QiFo3KRzi2@W;}28N3GqWqEtq78arhjNHQ9Lb!T zms<3IrIA5E!Hf@7Ex}SvYF^0$7I_B#1@bKUMI{;e59|&we|~k!@qzpS=G*)y?H#lq zq#tl7X5dr!%>oLm0);6v*CSfm}_uvF!xCKe?zF`qqi#@3;lfmgx%z)WUPrJP{oz~CU`ctJrXVWX28 zV|+z|HItQFVM05Dgo3(Qe0*w3W=Vcgd{Jp$d~s??NoHPpaeREzRHwZTZVpqql1qzA z@^j-8i_(h|gdGmE>gFh@6elaCB?vlhb#QseVB^5xV8R$yn?@4(M}OS;10pRJl>_3>2>4dILhP7dsjUf?8o!pR|?>HmNJ zgm?!Ahk1?_40%d|OvMZe3PKEZ3d{`u7ceMrB``SfIcPfcIxsk_b>MdJb>Mc0b>MbT zcHn-%%;5aXA<@Cvd4Yqu1A~LP12+gWa43j4*gK{<@H;j*m@{xIh&%8*E^%OY5^xB1 zy5PX>#Oz@05beP3sO!MaAf#aKz|J7NfZgecL-Ye?1_yfvQ3Zhq+Or+zKM0=9Af_jU9rRtx9JLvw71SNI8DtdL9pf2f71$lc m8RQh$9jzJUL8JqNgS=xgb8>!OUK1}nsC^g|9OMjYECK*5${QvC From 9d225016304f14ed0391622d96a32d2ff9ead724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 19 Nov 2015 23:45:19 +0100 Subject: [PATCH 07/32] Add icons to all demos that can have a meaningful one --- demos/2d/fog_of_war/icon.png.flags | 1 - demos/2d/lookat/engine.cfg | 1 + demos/2d/lookat/icon.png | Bin 0 -> 1495 bytes demos/2d/motion/engine.cfg | 1 + demos/2d/motion/icon.png | Bin 0 -> 2621 bytes demos/2d/texscreen/engine.cfg | 1 + demos/2d/texscreen/icon.png | Bin 0 -> 9245 bytes demos/3d/truck_town/engine.cfg | 1 + demos/3d/truck_town/icon.png | Bin 0 -> 6878 bytes demos/gui/drag_and_drop/engine.cfg | 1 + demos/gui/drag_and_drop/icon.png | Bin 0 -> 806 bytes demos/gui/input_mapping/engine.cfg | 1 + demos/gui/input_mapping/icon.png | Bin 0 -> 1503 bytes demos/gui/translation/engine.cfg | 1 + demos/gui/translation/icon.png | Bin 0 -> 2557 bytes demos/misc/regex/engine.cfg | 1 + demos/misc/regex/icon.png | Bin 0 -> 2215 bytes demos/misc/tween/icon.png | Bin 3621 -> 2831 bytes demos/misc/window_management/icon.png | Bin 3639 -> 4210 bytes demos/misc/window_management/icon.png.flags | 1 - demos/viewport/3d_in_2d/engine.cfg | 1 + demos/viewport/3d_in_2d/icon.png | Bin 0 -> 3758 bytes demos/viewport/gui_in_3d/engine.cfg | 1 + demos/viewport/gui_in_3d/icon.png | Bin 0 -> 3770 bytes demos/viewport/screen_capture/engine.cfg | 1 + demos/viewport/screen_capture/icon.png | Bin 0 -> 7350 bytes 26 files changed, 11 insertions(+), 2 deletions(-) delete mode 100644 demos/2d/fog_of_war/icon.png.flags create mode 100644 demos/2d/lookat/icon.png create mode 100644 demos/2d/motion/icon.png create mode 100644 demos/2d/texscreen/icon.png create mode 100644 demos/3d/truck_town/icon.png create mode 100644 demos/gui/drag_and_drop/icon.png create mode 100644 demos/gui/input_mapping/icon.png create mode 100644 demos/gui/translation/icon.png create mode 100644 demos/misc/regex/icon.png delete mode 100644 demos/misc/window_management/icon.png.flags create mode 100644 demos/viewport/3d_in_2d/icon.png create mode 100644 demos/viewport/gui_in_3d/icon.png create mode 100644 demos/viewport/screen_capture/icon.png diff --git a/demos/2d/fog_of_war/icon.png.flags b/demos/2d/fog_of_war/icon.png.flags deleted file mode 100644 index dbef2209e8..0000000000 --- a/demos/2d/fog_of_war/icon.png.flags +++ /dev/null @@ -1 +0,0 @@ -gen_mipmaps=true diff --git a/demos/2d/lookat/engine.cfg b/demos/2d/lookat/engine.cfg index 56917a39ec..81df107f0e 100644 --- a/demos/2d/lookat/engine.cfg +++ b/demos/2d/lookat/engine.cfg @@ -2,3 +2,4 @@ name="Look At Pointer" main_scene="res://lookat.scn" +icon="res://icon.png" diff --git a/demos/2d/lookat/icon.png b/demos/2d/lookat/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..442cc1799f81f2e6abd3f448f0e1400a3135d99a GIT binary patch literal 1495 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NoCO|{#S9F5M?jcysy3fA z0|NtliKnkC`+aU5nFg+ z65B>6Q2|qz&Q5LvLmh>S88H(786IEy?;NgoM`Cedqla^nQ^)}>)1)R3r>Fo)@A?au zW>)Th*Z(*vW95ZITc*4;nYp`0|NYatcR%NSwta4EQSw3{@@)5{(0#8MN*k;kWEb!S z7&EZ(I>t<8IJeVjVZuu0hO6ui9fcyNw_5F9);J-QBVmoFV(rtr*K1x)2#I#8Stu=M zYn3v`Hs$-VBX*X*KHgSZJSk|A!!;L{ImMZiCW%Qs*_1iwK&xc+a4NV@dq z7g@*HTLc^hG}fN0{d@V!jVS>!8Vi{;r-%d%?|32;L(74hu-29ZoxE#YgzQhSOC&oAa46=*O7Fj5-@v_vvx8;glx1CWKF@mH z+9EL1$4$$!qUOP`rw@N7yK*R5J>K}L_rhVuQ%;wnn%m{~Tg2{(oukgg!kJ_v8|0PE z*C61esmq;Nlkw%y$@z0jKMPJ!@mY1>J>(X5;kjmo2Xp>kv!5ZqtFS*r;G*^W-t~7Y zAFP`o^Yh>4e=1$?S2{ANXtg*jaASNIrlNVg-HqLE&gN_9cpasdPq}bw>V-8EjAr(5 zefgPxuJ2#z=X%Qr7u}X!b3YZS=(+Bfy{(+s;h7=_RJ`_l-pUuS&SR!e8@Jup^G^xMmgKP4SmJ{3xtpTQJCbvQe0ci*R=wKueV>Uem!6i- zk|3jfi(fnZ7S><#(&$UQx5@vaew8JAZrEG=`o5y~5|^~1SEj&{a({=_ZLcs7@6m4_b@Cy6M60Cz1w%DoHosuoqZyjXSHnOr?4i4 z2|;d;AD(zx^HlGcgm&xX7J+lFuXpwR-FtjiY4{|St9=fU{0t77xg49igEot0TU(cT zFSK~-v})Tmy$@FQWv(5r{v!QWO&Ux0eDA(x%fNX>ih+TFNx^~fg6v&=Q}btaJHLod zZDU&7){@qGL?Zf%a^|dUCV3kCE1sHj=uNpGn|qu8-Cu{pRmnbI8K!NRbR;M9eQHVG zhekt1*9)7{{;vLg@Aic~+I^E}u^#wVx;HBQow=RYOaZM6y}!%%?%e#jK_yvhGdpWT%dieNiO1SJ3=WGd?(BS8aDJQkR33}x{ACGVnoH*x-`luwxrMB+PrSI( z8kL648Qd`xb1y7NuWO zzVU8&s45FXklnrgX!70g!{K?UE`=>Lpy)iL^xe&=i$7#J8lUHx3vIVCg! E0KPP|EdT%j literal 0 HcmV?d00001 diff --git a/demos/2d/motion/engine.cfg b/demos/2d/motion/engine.cfg index 261111904c..6e660572d6 100644 --- a/demos/2d/motion/engine.cfg +++ b/demos/2d/motion/engine.cfg @@ -2,6 +2,7 @@ name="Motion Test" main_scene="res://motion.scn" +icon="res://icon.png" [display] diff --git a/demos/2d/motion/icon.png b/demos/2d/motion/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e64961d3c9f6d5608251487b343f64a03f682e6 GIT binary patch literal 2621 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 literal 0 HcmV?d00001 diff --git a/demos/2d/texscreen/engine.cfg b/demos/2d/texscreen/engine.cfg index fb683dfc1d..92d0e98d5b 100644 --- a/demos/2d/texscreen/engine.cfg +++ b/demos/2d/texscreen/engine.cfg @@ -2,6 +2,7 @@ name="Glass Bubbles (Texscreen)" main_scene="res://bubbles.scn" +icon="res://icon.png" [display] diff --git a/demos/2d/texscreen/icon.png b/demos/2d/texscreen/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d74d025cedfbdfa7c2408b88ce6847e81e7079d0 GIT binary patch literal 9245 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 RXJBAp@O1TaS?83{1OOybIa2@t literal 0 HcmV?d00001 diff --git a/demos/gui/drag_and_drop/engine.cfg b/demos/gui/drag_and_drop/engine.cfg index 448939c61d..49b9b93512 100644 --- a/demos/gui/drag_and_drop/engine.cfg +++ b/demos/gui/drag_and_drop/engine.cfg @@ -2,3 +2,4 @@ name="Drag & Drop (GUI)" main_scene="res://drag_and_drop.scn" +icon="res://icon.png" diff --git a/demos/gui/drag_and_drop/icon.png b/demos/gui/drag_and_drop/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f900d8d4a3749779f033682cb850254a82f9fd3f GIT binary patch literal 806 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NoCO|{#S9F5M?jcysy3fA z0|NtliKnkC`+aU~CANfk= zFDlvSvw(NWhM=2H|HYD-1oG;xMEXy1zQH*6f9sPn=|yiFrk%6iV9CI6_rykVuH0z> zqFq)8=YHA7oT4t_<8OU7F(9MC%ELrzK@f9}eb+ZvMKAXBi1ktueiC;-a0HxgGc*l& zZk*`Gu;TK9Z=F+C>{(I#uVGVQZJ>a4&#yT>3%@Ncv+Y$fNy&7q;CKFVyD+L=`R;!IP+|>{k|(_6q1=9tv5_d@|_nSvc!R9 zUdNqj9Cx&3W--t3QHyQQVz?HSt$Sggn9$3@(uouQrQdwPk-%cWB*ECj;KrcbAb5Zy zAz=0Ol3kOl7HD)W;Ah}id&1?2<@D6ZNU`1DO>TcmSRXGRV5YLp=U?KB`zsoJTXQzm zn9lWUHb{vqt0~!BG`suSuAN*fD>4>q|NQv(xv1Rw|B>03O++;>-xQ2wFHhg0+3&u5&Q*WSp>*!^ zo%ip@H$#_$Of=4 zJn{TM7_%48$K|0Hnrar$W8S}fuF1-PT9KaQ>B-Tqs~hu*7RLYI(W|gWoK=T`fq}u( L)z4*}Q$iB};_z9( literal 0 HcmV?d00001 diff --git a/demos/gui/input_mapping/engine.cfg b/demos/gui/input_mapping/engine.cfg index 6470ec6cd8..811635ce25 100644 --- a/demos/gui/input_mapping/engine.cfg +++ b/demos/gui/input_mapping/engine.cfg @@ -2,6 +2,7 @@ name="Input Mapping GUI" main_scene="res://controls.scn" +icon="res://icon.png" [display] diff --git a/demos/gui/input_mapping/icon.png b/demos/gui/input_mapping/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1abf4f58138ac74ff4e8980c0c3a7cfb4b06d7 GIT binary patch literal 1503 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NoCO|{#S9F5M?jcysy3fA z0|NtliKnkC`+aU}P0UZ031WZ1%cXB>V3=wG& zSh!)s+S|uB-QM)prcCbpk7TdLT=TMJx5FOI$tjyWbLaDWpLaaJ^VcXMJe=L`Xld+q zMpvx|bA%ZgCVUqT5fEe$Xf&L*v6@wo#Zlr}gyDf27Z#N-U%v_UW!!a+aMIB1IU)N` zKrBa1>Cpkj`-d8T^DdJpP*qF&E7Mi-WrBb*=lUiUqYnAUpYN=H-V_nM4v z+ZP{saF6L!)YGnCyEKDOTYR)XKhM7I&6LMh+fr8xUfq`C8tP-bc$L?&GYU$Ag^M~? z@m+gaE}8To;_!mp1D5tBA5J`-_F^0Vwm$_=j+fuB_P+e(#njdPIyDuat)t89KEC|b zc71!^{Tk)FtG{LzKRbZ5_Z1_lGh;Fa&zaBwII zyU5f@rXCdTu&KW*#Bix}@q!0-k<%`{EU7$da!exm&6AV!!`DY%-BJAh7w>DoxqnzY zB$DI43G!ZJOcrE3u6X>U-r{wS_2NFIL}tG1J3m{%@ZP*mT0hUhn|J+#B28_8c^pRM&3(6yzrA8lvPgX-VLn zBOM-b+RcBY9US)k5!%3|s3Z`$kC#Ddf1s?Ryn@4mn)Ua;PiW9=@t9csPW8P>S7X|~ zU}XUXC8M^C-YPD`V=6OKjilU}RFq!)|907zeOJZ*z*&rpMlO+IlF5tZ7$c{pM#}YS znYg)k9{Bt;R^rZ6At?c=5B25=E}<{-bQim%+}@TcHRtkK&%K*%zHQ(1aOQj4o(|@e z4#SYE9V(uO%Y6lyEuK3Z`pcR+r}(|gboLFd4IMp(hhIIM)6aUtYk9TP2GORq34$+< z`_F0nCor?kb4qRPrzM@;(``(jti5etcQEXO-GtXS*1SG;?d|N`+u!CH@*LizbJ!qk zeeBldng5UZ^6pyp`>Lf|LiU4snQ1mJf((;?ZAzcswdl&8?+%$Sm+(r*&x{X_wO#+} z($dpA|BL+I+{jv1ua_@4;kseDh=MoJIXttUthMV3XQgo4-|PX_BIZY#N)k@IU!;@{KJ z_v)hqr(9nC-+=e7bHObu%n=-XI6u$semPnt(0+J&OUof+}he|es$f= zt*bYt7?u7mIRCThK+RtBS^gVb9a4k6%=5A$HauAP;%fG^RPm`IN0V}Ut;=V(X?i^} zkC(Tq`l5b%Q_;h2C-0{z?H-`xBEqq^MMRkN5GUY5L{vU2Gr9d{+c_pZ9@9iJYG ze$2D2qrvc+RJJj1u)xufP1bVx{w1;NSI!NO2&s5;qx0N3J*8a}{mM(@jiT>C+T>8DwuhGMx*W?&TSh06%+Gbeo_C=a3ZUJR-Bk}6$1kU NgQu&X%Q~loCIDH>&ZPhV literal 0 HcmV?d00001 diff --git a/demos/gui/translation/engine.cfg b/demos/gui/translation/engine.cfg index 169b65e154..dcd3d1983d 100644 --- a/demos/gui/translation/engine.cfg +++ b/demos/gui/translation/engine.cfg @@ -2,6 +2,7 @@ name="Translation Demo" main_scene="res://main.scn" +icon="res://icon.png" [locale] diff --git a/demos/gui/translation/icon.png b/demos/gui/translation/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4be5ac1127fddaa226ee0f32b02e3e7858cb624a GIT binary patch literal 2557 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NY)RhkE)4%caKYZ?lNlHo zI14-?iy0XBj({-ZRBb+K1_lQ95>H=O_WRtzVye39-REU7FmQHxx;Tbp+cH;%rtIdCjEOD+6ApD0sXn<;!JjK zMOkgp#->(5`}qf8MeC;h{rKEiD#~0x37`^6xc0d$zu~c=^+3&p4X+6jL7^G3k4JHmx}ASxEE2 z217nxUQPY~H;x}q|M0*)|IUug?YD)6g(Ih}Tw(F#m$SJ zrwKa6#G5!}JUGyid%LT0Uj56Z;T(!nf;bkgk~@0zcKG_Z+js8FnD9a6*o;Jpy>a;l z5?4AOK74q;=JVS5@$+}=hzM;xbeMgPUF`E!;rkgDlwW*Va(UU`rK?_jzHwv5&(GqY zY~Hhc{`@&Re?J>TL77$S^UBGZ9Ev8TS>I+DF6Lo-e6YFQ%d3pL$${hJw{M%G)=E4s zeQkE*?YF|m$KKou&DwnPT{@?IA~Pf7zmq2)hp@ga`&07n&due1bI+ZgEh%ejp`;|k zaAAM_hPd_0EkAz!;*k<*75Mb++bcVB?bns{_5aVEI~Te6-@M6_t*c6c!mfSRvOHFC zq~jq+;_kcmmix;`PWxJQw^_O{C&wr0QL?SwqA5?FKlhzEiCNKP_F1dBa>+)uReoNl zSQr|vX6fqaeE9fLQ|s2Pqd6RkX0vnO+~Ax#HI%`D`6&&0!|7oQ!Yhr{`C7R z_o{X4W?7e)IW+vAov-({^`SaLRMfgYdHZuIT$5Bf1s*+p`t{9bWdSFK2F>72d@>d* zw6<$_H8wH^22NbLQrOG;v_#v^($i7F!QBE~Jv~1D{<3CoW_nIGnl#BR$V;;A=KlYa zrOop+x(cz$GDxOsW z(iY|G3NJ1?ntgp8AK$y@1sdD)?q+3W+130oW;k%5QE+$J)D`m*FE2YAy)7pzcWaN_ z+%unT6qjuL_~+#0-saT0<+d{Tg5EmsyO4!iSvvM|2`ZJU82#{7w(-sCBW73i0dQa zBx|cY`|r!QES`UTRqCYQoX38wTrRx-|G%R5hu^8o>|Jd;x@Kx5+9 zbZL7%`yG!DuRXbVzOlsnDMwTSyW~E-*u1!H@7Mlv8=Jd|DK<8DG?sECdacyCJ@+4j z@}8VZ$I#TTGmUv=j;~aWZayd=Z~x^;rxnM--MgdHmvb-_l$Qq!yxMcu(nRf7miOwj zY0L}~y~l2E&tL6o*t1dRzNPrQ=d6wIpSfuUNH5*8?3wqxWZkv7TTPGix*eXXt*di9 z$Sd@GN{O*vbX$`i=Q|1}gz1#EW>+CRAmLJSq3Jq*~@14yEk=FlEU-PW9__fc+l-(Kfbdu_h%R_vzy=Y5;R#m~%|WBKxKsPwh9H`kcI*uDRnpz^$R z_P1AvaWXRa`oHO?z)2F?g>^d`1a^CZ4y0I&@6wVj#{w@~G^2m5qPla)-B;_*S=Z%YfezPdHQtmvHL|`_7(5<^4>0+{_b(bynBT=Pdp5`^6dHZ z@~2+hPBR2vt#T>2a>7KkRbb8a*UdhS!a>JszTbTsssHC|&12X5?lrt@f4@EA&tA2k zg`uT|O<%93^6aZ#zV=Til=tQ39aEm_esxBI5$m~mldtPry!d+b^!~r!f~M~>QA}}& zIB|OYIqT9*dAIkMaWp;P5m&A5I^wtS&*CnB{@P=Od$L_-*{bVXRZZY}{PyX|qMY>Q zJC;0HYv%pCKQ80SiID5{Tt=*X(*H`54_5|Giasm0`l^(usHCuUO8rmAw#JqT{}c~) z`l}S^-2Qm~_S!V>zc-7|WmU)Axo~;;`Bz_UBUq1b)YqG_H@SM{(M#7X?_wfUqO7&yE4`H#+w)x@^&W{^axZzyIF-{rhgO@#HgS@(Ya5rX5USTfcPa+ILcFEOPzF zSMP4)Y+SLsp>t7Yg3dC(tLIOiK6mnTS?m)duNynLBP}a$I<5}uE3ai?;9zk&)92yr zJZsWlInKKqp1KvTyp)je;M0;Pe-CCieN%hK74h%-uU%|ED{^9{Y}|O!!&|e8nR&W0 z!-m4kyVk9Xx3b=CF#G)Te6HyFXEDcS7E21=HWTJx$@#bIYyE90L9+psn>)40=UKfKfB*67>gp4!?Zwgz zt1P#RCck;)^sk<+&qZ+VhdUvJNl zP*xjz_+PDOZm$3BTl4PaKa%n{XKK*46n{H&o38HKwQFRtOPh*P z?$sQ>b*t*9$(g*&%-TOMI2k0Qr8mmFS#7zUA>sSFdJ}VdwuYvr*YD)I+b8eUb3b@x zN?xMjXSc%4lf6dz`Tc$0_$GRM+0v_SU(PcrSul$*DcAXHX>rBb? zialkn`R>*1iX|rd~ zo@w;rlYy!wms-i>o-b?u{rh+4&T0nd#V%e;H;L=VU3#hJqIB_KW95_Ai+Aq)xvpDG ztJ3kGzRDY6CWcn0gE^K5vzu<+zJ0mwL`YPuhR7!ERd?>*4LKFK;@O>3XHT*>EYIEZ z-fxbS?T+os!=v4I@855)R<%4pV^7UX`{|q3YgERYI$Tm^Y38!qabi ztN#mgx%SOJQyZ++w%1sr>(%Svinp@KRf2w3b*rnRcRF8WYgiDfExvnaQqlQ)72Mp# zK4Sa+-9EY`=*Dit+qb;5rryhc)c4YL-80c0HP6;8b!A|1m1bC^lpO58Eb;Q6n*A$Q z=N@?Sb&<5svb!d)OjK8je9POhbLX>XPrOwo8SeE+P7aRE{d;OZ3sb`)TeX^hpHu%a z{>j_twerYEVa;Sa?wfzBKCS(4ar@M($HnRTt9n8{J<3@V$-?w-^@+7B)i3YbRTsGB z{<21*>fZ~q#}T|4e#N%@W>koA1@oM9!5JgD_sl$O%656z7cNPeeqQX>&D)DKeuX|Uvzxy^wb&&v z@#3|P0wK@kd-fc1jWgFZ-t;z!8$>5@?bX{p0Vl-?z8B-dnZLw>Eiw z(T>JFdsgq=TgxwJlara5Y9JvdW-Q5bd2{;tZkI)m9tkxldV8O)F8_b~_T|$_hKvdC zV#IbY3d-EMV@Irg+!;9uiGmLXu~#Y>l*;^Y7S`Psd9Z>_26R$19o>wjw5o%c`?VrooCNN70xuy4MFRn0z) zDF+Wan(e-H@nYlYrCSWKxNU50Guljkig7n7Ff%i=^T|YQJ9Gbjy=U>~ z#c$;G8TV*CI&iR-L11_C@|aa;G^Tp8Hpy+QIO6_HaKCGNueYkPSh{W-AHyYMKgI@7+EMUipWNxPX!q{uk~8 zeB2n%R`dODVSWAnDN~ZWt~W>M`2Bo#Ov_$^UZikMJM-A-6nG#MH>>%ZCzu4V^y@ti97e)~d|Q zwXOdBZS7LkRNk-U_5qHMpT_Dfye~TWUvJJO^M?A5d)z@;(6gS+gm;CsFY_z6%MH6O gnk>je@~ literal 0 HcmV?d00001 diff --git a/demos/misc/tween/icon.png b/demos/misc/tween/icon.png index 3e991fcc291bf1ab2860b60b083f48a3bc536da7..ed55c24140f79351c111cdc8f2e3afb9f7b45463 100644 GIT binary patch literal 2831 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 diff --git a/demos/misc/window_management/icon.png b/demos/misc/window_management/icon.png index 0c422e37b0ea9e6ad2901c8d425cb12f4d37694f..ec5c7891f996965a793df65d0a75d8b844de9253 100644 GIT binary patch literal 4210 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 GgeCy{ZqFkC literal 3639 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE|9QGNhE&XXIy*XF+OzC< zedt|Zv-e9}VspKxrDQ+(*z>j`ZL|0rCPtwrxeYbVZ^S(&^c(a$%1zdv@Rz6Z#&rfx zwb_xkXH3+MPd&Y>TSzr<&*uE8?Rh~#c{Cw7uyl3A@_gEnOc)2lO;b){rEQ0 zwM65=y-SDdS^qt3=G0@+C_SpD;-&c@>#u{i;QwuZKAp5TTc3GWUp}USL9s*4U2^uU z#Zj7zY|1wrUvliq86l3&t1CVzwy>`-e>LObiSz24f*0@n^X|RkhK2)g{{MC6$e&?2 zX=b6@rAW2MC$D|IUOoGXSv>z0_q3#G`e}Jv>)wZZ$;_20D%#Q?svSG?_yM81-G4rv zd_RjTLR+LiKW=I8;hw_R*QPHyq}Fz&YTM8E$NzT*-D^Gk$lU&Sw$0KBi!Qs~T<3jr zTSV=4r@ci*qGg`y#_y-c+s(Y(wEh3>s>O9L&$V3nakV*K_)>|9VnBmH>_1W4d5i@lp@qTKM}l{1Gy>D9}^2^RQSE@N{ibF5w_vLD`1f5uC z&ijv0AV6 zy6U2@-(=GtR>(2DdbRoRmUE%Xdm7qTB@18e<(~aINV)Eqr&Q4E*A~?aAMOm7V`6k- zzH!U-gXGGH-qq!%3a_@kz5JKK$|9bTxhG$+C*0iNbU))#kyD=qiWvSEH}X8!a=6T9 z@N&XQ@%VpTCo6>BAD;2F^@LmUo&Eo_dkVfB+IEZeaM0`%ezmu?*-rGF|M2vYZHwgc zl1c0#)6I_O>lEex;|o;2VqEZZT=9EjOaAhwnn(ZK z5K->rIUoK{;0#ySlNTcK=k8{1{hO23mbKL5r^WTF(|2tD60nussZH{!c>F)1+r@@U z+LnvV3wjYWX?RU)3!$E7sjRYoY4N6$ZRSeiU%>-E{TyMw$ECD?W?Og7hv z*}i>|iEr|!TN3MDe|)?+T}I~FgjsA}8#iq_6drG%qB7gY;BAJ)qsA99|bZ-4ZH^V&Ik6I&{Ff17pptjyFPQQy~&P7RWr8!O8DTF<9N z{P>fW-TgqvDY1ERb8_7JJ&zw4w6Bx4(_N{!^vOke`9#y4DM2Z2!7pw-IK;o6VQGh| z-{pY(xP3V^6Vg3c&S_2S*jiS{6RR%5_w`Bi<-dvB_Wk7B>t5yU z)w|Vv_S$`CJStXb)>yDEi1G|*DB60Zn49OoroTFc`+wiP9ryRPrQiRRp&X7|gLZD1 zUnk+k=){qA_41!Yt$FWWKA93U;~~cb{VnU5ju&1i^|be2IYnur&z3s#SG^0vwm54# zczNy&$>ZExk+V}O%bL$mvpZb6M|=6{+|%(}&z`?`sL+aeX4=CecOLODT=nX0 zOXU?+-O6WDwhiXJv!(dbN!?JyzaLVI=XjLldQZ~MjU(n_%3^EvUP}; zY2N+0kB@!v)!E(ndZ)#@-esA89!uoj_24Ug(Y6b_q#Vr;n6O z+duc8^rxN5HcKVu%djStXV0%%+i3HerM+d!q@aywK0f4}Zy)jGoA_s$x8fYFyhe*P z5AYv1zxVb>@XHB~*Ow|eYO4O;U8(g{YUV|ijV?VGI|XBoKh=nT@M3|()+p!8Tk_gO z6kdE#Wtf)wy*F*C+Rd8%hffxE`j{QP@kGPPVehpCF>4B@=wDb7Jw52#QjvyF%u}ki zp3B>M&+-`)r^!v{AKT2H2DNTApM69)kjwq(=k~5ozgJIL72>Ok2?lE3U7w z zz`r-p=FY-`4JRirj(zm9@ZI_QFL#PRU_0XSnU_bpg+EENc3!qwKG&PiuGhajuaM(9 z`Z)dm|^-u+%f?w!MIrX>Pv-o0NiMQN_b zM2?vmK|Fi5+xx7_6=<#UO03k|_Bv>*lt|a{lpy7`uS{aSik=FUE%r)Ene_6cWNTq*&|Z(-1A=Z&U?M#dX1jUQG>-TPJ&7sSx0F>eWL;I7y#4*wy(a&EJ$j>*wjqJLRmmjz z_%x=N=Zp_tG!$)Ib&Al*6N>se$Vq_zF~W3Y0Vtx zS8e(gwus((R_Yype7VQucr(&2W2hXUi0xGx?b>vx5>hr}y?R%v{@b zX+qT#@I{@V1v%N$l+<}cxvatTRaC(2*0A@^>9 zq@q$M&&x9w=5EKL`l@vI-#>VMB~wd6`D0P;HcDvo_5y(C*UvcozONH%zyI0QBa?qSoRJn8Wxl3Pk(gn?(j$B@RCS{ZD z&1*~A1iKQGZHsp9d(ETGt-BAF^9#g& zJbmn=VsF;Q#pm_(i#F^%RgpGlOJ>=b|7ZECU893Ilx7`^zxP*C^!T#8+a@{PZC4j0 zUd_C+I-*x=U9vFm-1uoTdel!!D>_ZINHlh{kWrNB65x|;`6{q1Z_Awfk#c^OuX#F_ z2#Bm@d%fDe?BZ*!iJ6aHx7V8%JbmVxQ6JpQX3@M&mWB8F!;7EF_c`Z0Ub@+739plf z-2V^pb6Bn>JLgWGdvN84tOXt)uAB;KKN>qN@8q_MPj9Mij=zhHzZ1;pRjF}4_2Y4+=b&Xf@UbZ}4{{Qku={v6cFYXy+AO7{K z-{yAAQbC$Cf{jl$g!* zLc{rY@S?pv{#*xdJ+!O7z1m{!iEnqrw=I4=fA#K4LB->%Hh=zSxm$Yuj>^|^mrtIV zA5&pbI;HxlQvUrv5Bk3z{1`F&grDn~f+z3U?2HyKDA;lO+dr|;r3I~Sd)96_r@t}t zS`Od*GL+Ypuz9d`ID>PE&L6|4)p3zMXwr54rp?aldbJ zzHZv3xKFpF>vr7!_s4Om&%1)@k1opP$)C65nAN^)R^x^3FH@dPI{r-LRH>#+PN2n& zN2UUOs-5cYo=1XRoDz9_k6$n`QM|~cf4?u-wc>`?!z!-Zr5j?W@4CAn#BO1X&7wHH zE%OAO;#?~}_#dCQPOWZI^JK=B2_ARth(~Q|LLxZdBQr~_BBUu z-MqZm{_Vw^^8{r7M+L;j+gY5mwc?&|`u)E;CF`&Ec--Y?JoNabmCk9ex@5BCnSv*_ tAN)`2&;L{Wd+$EIU+16x`17CfrBCa>O@Dv-F)%PNc)I$ztaD0e0st}18>9dL diff --git a/demos/misc/window_management/icon.png.flags b/demos/misc/window_management/icon.png.flags deleted file mode 100644 index 5130fd1aab..0000000000 --- a/demos/misc/window_management/icon.png.flags +++ /dev/null @@ -1 +0,0 @@ -gen_mipmaps=false diff --git a/demos/viewport/3d_in_2d/engine.cfg b/demos/viewport/3d_in_2d/engine.cfg index cc893361b5..6d456d7bd4 100644 --- a/demos/viewport/3d_in_2d/engine.cfg +++ b/demos/viewport/3d_in_2d/engine.cfg @@ -2,3 +2,4 @@ name="3D in 2D" main_scene="res://main.scn" +icon="res://icon.png" diff --git a/demos/viewport/3d_in_2d/icon.png b/demos/viewport/3d_in_2d/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a332c18f783d1a92f4d7119f624298ef17ca0b GIT binary patch literal 3758 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 literal 0 HcmV?d00001 diff --git a/demos/viewport/gui_in_3d/engine.cfg b/demos/viewport/gui_in_3d/engine.cfg index 25a6636132..252e53ca33 100644 --- a/demos/viewport/gui_in_3d/engine.cfg +++ b/demos/viewport/gui_in_3d/engine.cfg @@ -2,3 +2,4 @@ name="GUI in 3D" main_scene="res://gui_3d.scn" +icon="res://icon.png" diff --git a/demos/viewport/gui_in_3d/icon.png b/demos/viewport/gui_in_3d/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..22bdd791bbd10155e412e0e752f4e8ad9cfccb6b GIT binary patch literal 3770 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 GgeCxfZ%FI_ literal 0 HcmV?d00001 From 6f718228d4798352cef3c4a55ee10a811e4fa187 Mon Sep 17 00:00:00 2001 From: masoud bh Date: Sun, 15 Nov 2015 01:13:14 +0330 Subject: [PATCH 08/32] Load binaryname.pck if not found data.pck search for binaryname.pck in linux and windows --- core/globals.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/globals.cpp b/core/globals.cpp index ffd4cf5d5e..a4a5245f0b 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -332,6 +332,7 @@ Error Globals::setup(const String& p_path,const String & p_main_pack) { String candidate = d->get_current_dir(); String current_dir = d->get_current_dir(); + String exec_name = OS::get_singleton()->get_executable_path().get_file().basename(); bool found = false; bool first_time=true; @@ -346,6 +347,15 @@ Error Globals::setup(const String& p_path,const String & p_main_pack) { found=true; + } + break; + } else if (first_time && (_load_resource_pack(current_dir+"/"+exec_name+".pck") || _load_resource_pack(current_dir+"/"+exec_name+".pcz") )) { + if (_load_settings("res://engine.cfg")==OK || _load_settings_binary("res://engine.cfb")==OK) { + + _load_settings("res://override.cfg"); + found=true; + + } break; } else if (_load_settings(current_dir+"/engine.cfg")==OK || _load_settings_binary(current_dir+"/engine.cfb")==OK) { From 6277fe3078eac6456968ca66d2abecf870d502b0 Mon Sep 17 00:00:00 2001 From: masoud bh Date: Sun, 15 Nov 2015 01:22:53 +0330 Subject: [PATCH 09/32] add priority to load binaryname.pck --- core/globals.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/globals.cpp b/core/globals.cpp index a4a5245f0b..aee708d0cd 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -340,7 +340,7 @@ Error Globals::setup(const String& p_path,const String & p_main_pack) { //try to load settings in ascending through dirs shape! //tries to open pack, but only first time - if (first_time && (_load_resource_pack(current_dir+"/data.pck") || _load_resource_pack(current_dir+"/data.pcz") )) { + if (first_time && (_load_resource_pack(current_dir+"/"+exec_name+".pck") || _load_resource_pack(current_dir+"/"+exec_name+".pcz") )) { if (_load_settings("res://engine.cfg")==OK || _load_settings_binary("res://engine.cfb")==OK) { _load_settings("res://override.cfg"); @@ -349,7 +349,7 @@ Error Globals::setup(const String& p_path,const String & p_main_pack) { } break; - } else if (first_time && (_load_resource_pack(current_dir+"/"+exec_name+".pck") || _load_resource_pack(current_dir+"/"+exec_name+".pcz") )) { + } else if (first_time && (_load_resource_pack(current_dir+"/data.pck") || _load_resource_pack(current_dir+"/data.pcz") )) { if (_load_settings("res://engine.cfg")==OK || _load_settings_binary("res://engine.cfb")==OK) { _load_settings("res://override.cfg"); From 73a80e5509e8715b7ac4a85913c056edda6bc5ea Mon Sep 17 00:00:00 2001 From: Ovnuniarchos Date: Wed, 18 Nov 2015 16:56:26 +0100 Subject: [PATCH 10/32] Added definition of bias solver. --- doc/base/classes.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index da53cb90a5..83c14231ea 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -30608,6 +30608,7 @@ This method controls whether the position between two cached points is interpola Use a custom solver bias. No need to change this unless you really know what you are doing. + The solver bias is a factor controlling how much two colliding objects "rebound" off each other, to avoid them getting into each other, because of numerical imprecision. @@ -30646,6 +30647,8 @@ This method controls whether the position between two cached points is interpola + + @@ -30656,6 +30659,8 @@ This method controls whether the position between two cached points is interpola + + From 1155ac884c9b9a045de6a5d5ccd9a01fbfe95453 Mon Sep 17 00:00:00 2001 From: Ovnuniarchos Date: Thu, 19 Nov 2015 01:06:50 +0100 Subject: [PATCH 11/32] ConvexPolygonShape2D.set_point_cloud documented to do nothing. --- doc/base/classes.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 83c14231ea..e7cc9f4c01 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -6628,7 +6628,7 @@ - Radius of the [CapsuleShape2D]. + Set the radius of the [CapsuleShape2D]. @@ -6642,7 +6642,7 @@ - Height of the [CapsuleShape2D]. + Set the height of the [CapsuleShape2D]. @@ -7666,7 +7666,7 @@ Concave polygon shape. - Concave polygon shape resource, which can be set into a [PhysicsBody] or area. This shape is created by feeding a list of triangles. + Concave polygon shape resource, which can be set into a [PhysicsBody] or area. This shape is created by feeding a list of triangles. @@ -8590,7 +8590,7 @@ - Create the point set from a point cloud. The resulting convex hull will be set as the shape. + Currently, this method does nothing. From 68a0f713b8da43587c3b027abf73f0c891dab2bc Mon Sep 17 00:00:00 2001 From: Ovnuniarchos Date: Thu, 19 Nov 2015 10:35:48 +0100 Subject: [PATCH 12/32] Differences between ConvexPolygon2D and ConcavePolygon2D? --- doc/base/classes.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index e7cc9f4c01..d1be39fe43 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -8583,7 +8583,8 @@ Convex Polygon Shape for 2D physics. - Convex Polygon Shape for 2D physics. + Convex Polygon Shape for 2D physics. A convex polygon + Concave polygon 2D shape resource for physics. It is made out of segments and is very optimal for complex polygonal concave collisions. It is really not advised to use for RigidBody nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions. From 8c0c46c2ae4b55c3ce966e218ca8b1e8d78159f1 Mon Sep 17 00:00:00 2001 From: Ovnuniarchos Date: Fri, 20 Nov 2015 18:09:01 +0100 Subject: [PATCH 13/32] Inserted explanation about the behaviour of CollsionPolygon2D.set_polygon. --- doc/base/classes.xml | 55 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index d1be39fe43..32ff75efbd 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -6947,7 +6947,7 @@ Base node for 2D collisionables. - CollisionObject2D is the base class for 2D physics collisionables. They can hold any number of 2D collision shapes. Usually, they are edited by placing CollisionBody2D and CollisionPolygon2D nodes as children. Such nodes are for reference ant not present outside the editor, so code should use the regular shape API. + CollisionObject2D is the base class for 2D physics collisionables. They can hold any number of 2D collision shapes. Usually, they are edited by placing [CollisionBody2D] and [CollisionPolygon2D] nodes as children. Such nodes are for reference and not present outside the editor, so code should use the regular shape API. @@ -7143,58 +7143,69 @@ - Editor-Only class. + Editor-only class for easy editing of collision polygons. - Editor-Only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. This class is for editing custom shape polygons. + Editor-only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. This class is for editing custom shape polygons. + Set the array of points forming the polygon. + When editing the point list via the editor, depending on [method get_build_mode], it has to be a list of points (for [code]build_mode[/code]=0), or a list of lines (for [code]build_mode[/code]=1). In the second case, the even elements of the array define the start point of the line, and the odd elements the end point. + Return the list of points that define the polygon. - + + Set whether the polygon is to be a [ConvexPolygon2D] ([code]build_mode[/code]=0), or a [ConcavePolygon2D] ([code]build_mode[/code]=1). + Return whether the polygon is a [ConvexPolygon2D] ([code]build_mode[/code]=0), or a [ConcavePolygon2D] ([code]build_mode[/code]=1). - + + Set whether this polygon is a trigger. A trigger polygon detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). + Return whether this polygon is a trigger. + Return the index of the first shape generated by the editor. + When [code]build_mode[/code] is set to generate convex polygons, the shape shown in the editor may be decomopsed into many convex polygons. In that case, a range of indexes is needed to directly access the [Shape2D]s. + When [code]build_mode[/code] is set to generate concave polygons, there is only one [Shape2D] generated, so the start index and the end index are the same. + Return the index of the last shape generated by the editor. @@ -7253,40 +7264,45 @@ - Editor-Only class. + Editor-only class for easy editing of shapes. - Editor-Only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. + Editor-only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. + Set this shape's [Shape2D]. This will not appear as a node, but can be directly edited as a property. + Return this shape's [Shape2D]. + Set whether this shape is a trigger. A trigger shape detects collisions, but is otherwise unaffected by physics (i.e. will not block movement of colliding objects). + Return whether this shape is a trigger. + Return the index of this shape inside its container [CollisionObject2D]. This can be used to directly access the underlying [Shape2D]. @@ -7693,6 +7709,7 @@ Concave polygon 2D shape resource for physics. It is made out of segments and is very optimal for complex polygonal concave collisions. It is really not advised to use for RigidBody nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions. + The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection. @@ -8583,8 +8600,8 @@ Convex Polygon Shape for 2D physics. - Convex Polygon Shape for 2D physics. A convex polygon - Concave polygon 2D shape resource for physics. It is made out of segments and is very optimal for complex polygonal concave collisions. It is really not advised to use for RigidBody nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions. + Convex Polygon Shape for 2D physics. A convex polygon, whatever its shape, is internally decomposed into as many convex polygons as needed to ensure all collision checks against it are always done on convex polygons (which are faster to check). + The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection. @@ -26585,19 +26602,21 @@ This method controls whether the position between two cached points is interpola Ray 2D shape resource for physics. - Ray 2D shape resource for physics. A ray is not really a collision body, isntead it tries to separate itself from whatever is touching its far endpoint. It's often useful for ccharacters. + Ray 2D shape resource for physics. A ray is not really a collision body, isntead it tries to separate itself from whatever is touching its far endpoint. It's often useful for characters. + Set the length of the ray. + Return the length of the ray. @@ -29544,24 +29563,28 @@ This method controls whether the position between two cached points is interpola + Set the first point's position. + Return the first point's position. + Set the second point's position. + Return the second point's position. @@ -30609,14 +30632,14 @@ This method controls whether the position between two cached points is interpola Use a custom solver bias. No need to change this unless you really know what you are doing. - The solver bias is a factor controlling how much two colliding objects "rebound" off each other, to avoid them getting into each other, because of numerical imprecision. + The solver bias is a factor controlling how much two objects "rebound" off each other, when colliding, to avoid them getting into each other because of numerical imprecision. - Return the custom solver bias. No need to change this unless you really know what you are doing. + Return the custom solver bias. @@ -30629,6 +30652,8 @@ This method controls whether the position between two cached points is interpola + Return whether this shape is colliding with another. + This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]). @@ -30645,6 +30670,8 @@ This method controls whether the position between two cached points is interpola + Return whether this shape would collide with another, if a given movemen was applied. + This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test ont the other object ([code]shape_motion[/code]). @@ -30657,6 +30684,8 @@ This method controls whether the position between two cached points is interpola + Return a list of the points where this shape touches another. If there are no collisions, the list is empty. + This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]). @@ -30673,6 +30702,8 @@ This method controls whether the position between two cached points is interpola + Return a list of the points where this shape would touch another, if a given movement was applied. If there are no collisions, the list is empty. + This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test ont the other object ([code]shape_motion[/code]). From 497efa720cb53f4ddaef661739493069c102db0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 20 Nov 2015 18:39:23 +0100 Subject: [PATCH 14/32] Sync doc template with code --- doc/base/classes.xml | 221 +++++++++++++++++++++++++++---------------- 1 file changed, 138 insertions(+), 83 deletions(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 32ff75efbd..d0ea373f5c 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -3197,6 +3197,24 @@ + + + + + + + + + + + + + + + + + + @@ -5477,7 +5495,7 @@ - + Group of Buttons. @@ -5523,6 +5541,10 @@ + + + + @@ -7165,7 +7187,7 @@ - + Set whether the polygon is to be a [ConvexPolygon2D] ([code]build_mode[/code]=0), or a [ConcavePolygon2D] ([code]build_mode[/code]=1). @@ -7179,7 +7201,7 @@ - + Set whether this polygon is a trigger. A trigger polygon detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). @@ -7314,7 +7336,7 @@ Color in RGBA format. - A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency. Values are in floating point and usually range from 0 to 1. Some methods (such as set_modulate() ) may accept values > 1. + A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency. Values are in floating point and usually range from 0 to 1. Some methods (such as set_modulate() ) may accept values > 1. @@ -8608,7 +8630,7 @@ - Currently, this method does nothing. + Currently, this method does nothing. @@ -8889,12 +8911,12 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and + + - - Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts. This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough. @@ -8902,16 +8924,6 @@ This approximation makes straight segments between each point, then subdivides t "tolerance_degrees" controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided. - - - - - - - - - - @@ -9096,12 +9108,12 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and + + - - Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts. This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough. @@ -9109,16 +9121,6 @@ This approximation makes straight segments between each point, then subdivides t "tolerance_degrees" controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided. - - - - - - - - - - @@ -10779,6 +10781,14 @@ This approximation makes straight segments between each point, then subdivides t + + + + + + + + @@ -12539,7 +12549,7 @@ This approximation makes straight segments between each point, then subdivides t - Connect to a host. This needs to be done before any requests are sent. + Connect to a host. This needs to be done before any requests are sent. The host should not have http:// prepended but will strip the protocol identifier if provided. verify_host will check the SSL identity of the host if set to true. @@ -12563,10 +12573,9 @@ verify_host will check the SSL identity of the host if set to true. - Sends a request to the connected host. The url is the what is normally behind the hostname, -i.e; + Sends a request to the connected host. The url is the what is normally behind the hostname, i.e: http://somehost.com/index.php -url would be "index.php" +url would be "index.php" Headers are HTTP request headers @@ -12584,8 +12593,8 @@ var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, qu - - Stub function + + Stub function @@ -12594,7 +12603,7 @@ var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, qu - Stub function + Stub function @@ -12647,14 +12656,14 @@ var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, qu - Sets the size of the buffer used and maximum bytes to read per iteration + Sets the size of the buffer used and maximum bytes to read per iteration - If set to true, execute will wait until all data is read from the response. + If set to true, execute will wait until all data is read from the response. @@ -12667,30 +12676,30 @@ var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, qu - Returns a status string like STATUS_REQUESTING. Need to call [method poll] in order to get status updates. + Returns a status string like STATUS_REQUESTING. Need to call [method poll] in order to get status updates. - - This needs to be called in order to have any request processed. Check results with [method get_status] + + This needs to be called in order to have any request processed. Check results with [method get_status] - - - - - - - Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary. + + + + + + + Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary. var fields = {"username": "user", "password": "pass"} String queryString = httpClient.query_string_from_dict(fields) returns:= "username=user&password=pass" - - + + @@ -14471,6 +14480,12 @@ returns:= "username=user&password=pass" + + + + + + @@ -15920,6 +15935,18 @@ returns:= "username=user&password=pass" LineEdit provides a single line string editor, used for text fields. + + + + + + + + + + + + Clear the [LineEdit] text. @@ -16033,6 +16060,14 @@ returns:= "username=user&password=pass" + + + + + + + + @@ -16700,11 +16735,11 @@ returns:= "username=user&password=pass" - + - + - + @@ -16751,6 +16786,8 @@ returns:= "username=user&password=pass" + + @@ -18602,6 +18639,18 @@ returns:= "username=user&password=pass" Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. + + + + + + + + + + + + @@ -21591,16 +21640,16 @@ This method controls whether the position between two cached points is interpola - Forbids the PathFollow to rotate. + Forbids the PathFollow to rotate. - Allows the PathFollow to rotate in the Y axis only. + Allows the PathFollow to rotate in the Y axis only. - Allows the PathFollow to rotate in both the X, and Y axes. + Allows the PathFollow to rotate in both the X, and Y axes. - Allows the PathFollow to rotate in any axis. + Allows the PathFollow to rotate in any axis. @@ -21715,10 +21764,6 @@ This method controls whether the position between two cached points is interpola - - - - @@ -26075,6 +26120,14 @@ This method controls whether the position between two cached points is interpola + + + + + + + + @@ -26886,27 +26939,22 @@ This method controls whether the position between two cached points is interpola - [OK] if the regular expression was valid. [FAIL] otherwise. - The string to be converted into a regular expression. + + - Once created, a RegEx object needs a regular expression to be assigned to it. This method tries to convert the string given to an usable regular expression. - The position within the string (starting with 0) where the pattern was found. It will return -1 if the pattern was not found, it was invalid, or the start or end positions were beyond the string's end. - The text to search the pattern in. - The position in the string (starting with 0) to start searching from. - The position in the string (starting with 0) to stop searching. A value less than the start position means "end of the string". This method tries to find the pattern within the string, and returns the position where it was found. It also stores any capturing group (see [method get_capture]) for further retrieval. @@ -26935,7 +26983,6 @@ This method controls whether the position between two cached points is interpola - The number of the captured group, starting with 0. Like other regular expression engines, Godot's engine takes 0 as the full expression, and 1 as the first pair of capturing parentheses. Returns a captured group. A captured group is the part of a string that matches a part of the pattern delimited by parentheses (unless they are non-capturing parentheses [i](?:)[/i]). @@ -26943,7 +26990,6 @@ This method controls whether the position between two cached points is interpola - A list contining all the strings captured by the regular expression. Return a list of all the captures made by the regular expression. @@ -30675,8 +30721,6 @@ This method controls whether the position between two cached points is interpola - - @@ -30689,8 +30733,6 @@ This method controls whether the position between two cached points is interpola - - @@ -34025,15 +34067,17 @@ This method controls whether the position between two cached points is interpola + + - Set the current column of the text editor. + + - Set the current line of the text editor. @@ -36289,6 +36333,18 @@ This method controls whether the position between two cached points is interpola + + + + + + + + + + + + @@ -37441,6 +37497,12 @@ This method controls whether the position between two cached points is interpola + + + + + + @@ -37459,13 +37521,6 @@ This method controls whether the position between two cached points is interpola Returns the angle in radians between the line connecting the two points and the x coordinate. - - - - - Returns the result of atan2 when called with the Vector's x and y as parameters. - - From 0c8dda80ff23859ca9faf6ed1033427c22acb4d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 20 Nov 2015 18:47:18 +0100 Subject: [PATCH 15/32] Update Vector2.angle() description --- doc/base/classes.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index d0ea373f5c..44a7cccfe5 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -37501,6 +37501,8 @@ This method controls whether the position between two cached points is interpola + Returns the result of atan2 when called with the Vector's x and y as parameters (Math::atan2(x,y)). + Be aware that it therefore returns an angle oriented clockwise with regard to the (0, 1) unit vector, and not an angle oriented counter-clockwise with regard to the (1, 0) unit vector (which would be the typical trigonometric representation of the angle when calling Math::atan2(y,x)). From 5ef23812ac8833c6456d8d7183373f1507804129 Mon Sep 17 00:00:00 2001 From: Franklin Sobrinho Date: Fri, 20 Nov 2015 18:25:01 -0300 Subject: [PATCH 16/32] Add more properties to AcceptDialog --- scene/gui/dialogs.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 0c0f924f52..efda8a66e1 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -308,7 +308,9 @@ void AcceptDialog::_bind_methods() { ADD_SIGNAL( MethodInfo("confirmed") ); ADD_SIGNAL( MethodInfo("custom_action",PropertyInfo(Variant::STRING,"action")) ); - + ADD_PROPERTYNZ( PropertyInfo(Variant::STRING,"dialog/text",PROPERTY_HINT_MULTILINE_TEXT,"",PROPERTY_USAGE_DEFAULT_INTL),_SCS("set_text"),_SCS("get_text")); + ADD_PROPERTY( PropertyInfo(Variant::BOOL, "dialog/hide_on_ok"),_SCS("set_hide_on_ok"),_SCS("get_hide_on_ok") ); + } From 82c8190013a179e33085df7d1677c7c47934247e Mon Sep 17 00:00:00 2001 From: Franklin Sobrinho Date: Sat, 21 Nov 2015 13:42:15 -0300 Subject: [PATCH 17/32] Implement name filter to PropertyEditor - Add search bar to Inspector tab and to Project and Editor settings dialog --- tools/editor/editor_node.cpp | 49 ++++++++ tools/editor/editor_node.h | 7 ++ tools/editor/project_settings.cpp | 156 +++++++++++++++--------- tools/editor/project_settings.h | 9 ++ tools/editor/property_editor.cpp | 48 ++++++-- tools/editor/property_editor.h | 10 +- tools/editor/settings_config_dialog.cpp | 45 ++++++- tools/editor/settings_config_dialog.h | 4 + 8 files changed, 255 insertions(+), 73 deletions(-) diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 7d837f3211..4e22592880 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -4024,6 +4024,8 @@ void EditorNode::_bind_methods() { ObjectTypeDB::bind_method("_prepare_history",&EditorNode::_prepare_history); ObjectTypeDB::bind_method("_select_history",&EditorNode::_select_history); + ObjectTypeDB::bind_method("_toggle_search_bar",&EditorNode::_toggle_search_bar); + ObjectTypeDB::bind_method("_clear_search_box",&EditorNode::_clear_search_box); ObjectTypeDB::bind_method(_MD("add_editor_import_plugin", "plugin"), &EditorNode::add_editor_import_plugin); ObjectTypeDB::bind_method(_MD("remove_editor_import_plugin", "plugin"), &EditorNode::remove_editor_import_plugin); @@ -4517,6 +4519,30 @@ void EditorNode::_scene_tab_changed(int p_tab) { } +void EditorNode::_toggle_search_bar(bool p_pressed) { + + property_editor->set_use_filter(p_pressed); + + if (p_pressed) { + + search_bar->show(); + search_box->grab_focus(); + search_box->select_all(); + } else { + + search_bar->hide(); + } +} + +void EditorNode::_clear_search_box() { + + if (search_box->get_text()=="") + return; + + search_box->clear(); + property_editor->update_tree(); +} + EditorNode::EditorNode() { EditorHelp::generate_doc(); //before any editor classes are crated @@ -5322,6 +5348,12 @@ EditorNode::EditorNode() { editor_path->set_h_size_flags(Control::SIZE_EXPAND_FILL); prop_editor_hb->add_child(editor_path); + search_button = memnew( ToolButton ); + search_button->set_toggle_mode(true); + search_button->set_pressed(false); + search_button->set_icon(gui_base->get_icon("Zoom","EditorIcons")); + prop_editor_hb->add_child(search_button); + search_button->connect("toggled",this,"_toggle_search_bar"); object_menu = memnew( MenuButton ); object_menu->set_icon(gui_base->get_icon("Tools","EditorIcons")); @@ -5333,6 +5365,22 @@ EditorNode::EditorNode() { create_dialog->set_base_type("Resource"); create_dialog->connect("create",this,"_resource_created"); + search_bar = memnew( HBoxContainer ); + search_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + prop_editor_base->add_child(search_bar); + search_bar->hide(); + + l = memnew( Label("Search: ") ); + search_bar->add_child(l); + + search_box = memnew( LineEdit ); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + search_bar->add_child(search_box); + + ToolButton *clear_button = memnew( ToolButton ); + clear_button->set_icon(gui_base->get_icon("Close","EditorIcons")); + search_bar->add_child(clear_button); + clear_button->connect("pressed",this,"_clear_search_box"); property_editor = memnew( PropertyEditor ); property_editor->set_autoclear(true); @@ -5341,6 +5389,7 @@ EditorNode::EditorNode() { property_editor->set_use_doc_hints(true); property_editor->hide_top_label(); + property_editor->register_text_enter(search_box); prop_editor_base->add_child( property_editor ); property_editor->set_undo_redo(&editor_data.get_undo_redo()); diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index 002df0f3ea..7d8b97688e 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -250,6 +250,7 @@ class EditorNode : public Node { ToolButton *play_scene_button; ToolButton *play_custom_scene_button; MenuButton *debug_button; + ToolButton *search_button; TextureProgress *audio_vu; //MenuButton *fileserver_menu; @@ -268,6 +269,9 @@ class EditorNode : public Node { ScenesDock *scenes_dock; EditorRunNative *run_native; + HBoxContainer *search_bar; + LineEdit *search_box; + CreateDialog *create_dialog; CallDialog *call_dialog; @@ -517,6 +521,9 @@ class EditorNode : public Node { void _save_docks(); void _load_docks(); + void _toggle_search_bar(bool p_pressed); + void _clear_search_box(); + protected: void _notification(int p_what); static void _bind_methods(); diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp index 25a2750166..2fd8b37753 100644 --- a/tools/editor/project_settings.cpp +++ b/tools/editor/project_settings.cpp @@ -59,6 +59,9 @@ void ProjectSettings::_notification(int p_what) { if (p_what==NOTIFICATION_ENTER_TREE) { + search_button->set_icon(get_icon("Zoom","EditorIcons")); + clear_button->set_icon(get_icon("Close","EditorIcons")); + translation_list->connect("button_pressed",this,"_translation_delete"); _update_actions(); popup_add->add_icon_item(get_icon("Keyboard","EditorIcons"),"Key",InputEvent::KEY); @@ -1171,6 +1174,31 @@ void ProjectSettings::_update_autoload() { } +void ProjectSettings::_toggle_search_bar(bool p_pressed) { + + globals_editor->set_use_filter(p_pressed); + + if (p_pressed) { + + search_bar->show(); + add_prop_bar->hide(); + search_box->grab_focus(); + search_box->select_all(); + } else { + + search_bar->hide(); + add_prop_bar->show(); + } +} + +void ProjectSettings::_clear_search_box() { + + if (search_box->get_text()=="") + return; + + search_box->clear(); + globals_editor->update_tree(); +} void ProjectSettings::_bind_methods() { @@ -1212,6 +1240,9 @@ void ProjectSettings::_bind_methods() { ObjectTypeDB::bind_method(_MD("_update_autoload"),&ProjectSettings::_update_autoload); ObjectTypeDB::bind_method(_MD("_autoload_delete"),&ProjectSettings::_autoload_delete); + ObjectTypeDB::bind_method(_MD("_clear_search_box"),&ProjectSettings::_clear_search_box); + ObjectTypeDB::bind_method(_MD("_toggle_search_bar"),&ProjectSettings::_toggle_search_bar); + } ProjectSettings::ProjectSettings(EditorData *p_data) { @@ -1232,87 +1263,93 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { //tab_container->set_anchor_and_margin(MARGIN_TOP,ANCHOR_BEGIN, 15 ); //tab_container->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END, 35 ); - Control *props_base = memnew( Control ); + VBoxContainer *props_base = memnew( VBoxContainer ); + props_base->set_alignment(BoxContainer::ALIGN_BEGIN); + props_base->set_v_size_flags(Control::SIZE_EXPAND_FILL); tab_container->add_child(props_base); props_base->set_name("General"); - globals_editor = memnew( PropertyEditor ); - props_base->add_child(globals_editor); - globals_editor->set_area_as_parent_rect(); - globals_editor->hide_top_label(); - globals_editor->set_anchor_and_margin(MARGIN_TOP,ANCHOR_BEGIN, 55 ); - globals_editor->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END, 35 ); - globals_editor->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN, 5 ); - globals_editor->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END, 5 ); - globals_editor->set_capitalize_paths(false); - globals_editor->get_scene_tree()->connect("cell_selected",this,"_item_selected"); - globals_editor->connect("property_toggled",this,"_item_checked"); - globals_editor->connect("property_edited",this,"_settings_prop_edited"); + HBoxContainer *hbc = memnew( HBoxContainer ); + hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); + props_base->add_child(hbc); + + search_button = memnew( ToolButton ); + search_button->set_toggle_mode(true); + search_button->set_pressed(false); + search_button->set_text("Search"); + hbc->add_child(search_button); + search_button->connect("toggled",this,"_toggle_search_bar"); + + hbc->add_child( memnew( VSeparator ) ); + + add_prop_bar = memnew( HBoxContainer ); + add_prop_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + hbc->add_child(add_prop_bar); Label *l = memnew( Label ); - props_base->add_child(l); - l->set_pos(Point2(6,5)); + add_prop_bar->add_child(l); l->set_text("Category:"); - - l = memnew( Label ); - l->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - props_base->add_child(l); - l->set_begin(Point2(0.21,5)); - l->set_text("Property:"); - - l = memnew( Label ); - l->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - props_base->add_child(l); - l->set_begin(Point2(0.51,5)); - l->set_text("Type:"); - category = memnew( LineEdit ); - props_base->add_child(category); - category->set_anchor(MARGIN_RIGHT,ANCHOR_RATIO); - category->set_begin( Point2(5,25) ); - category->set_end( Point2(0.20,26) ); + category->set_h_size_flags(Control::SIZE_EXPAND_FILL); + add_prop_bar->add_child(category); category->connect("text_entered",this,"_item_adds"); + l = memnew( Label ); + add_prop_bar->add_child(l); + l->set_text("Property:"); + property = memnew( LineEdit ); - props_base->add_child(property); - property->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - property->set_anchor(MARGIN_RIGHT,ANCHOR_RATIO); - property->set_begin( Point2(0.21,25) ); - property->set_end( Point2(0.50,26) ); + property->set_h_size_flags(Control::SIZE_EXPAND_FILL); + add_prop_bar->add_child(property); property->connect("text_entered",this,"_item_adds"); + l = memnew( Label ); + add_prop_bar->add_child(l); + l->set_text("Type:"); type = memnew( OptionButton ); - props_base->add_child(type); - type->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - type->set_anchor(MARGIN_RIGHT,ANCHOR_RATIO); - type->set_begin( Point2(0.51,25) ); - type->set_end( Point2(0.70,26) ); + type->set_h_size_flags(Control::SIZE_EXPAND_FILL); + add_prop_bar->add_child(type); type->add_item("bool"); type->add_item("int"); type->add_item("float"); type->add_item("string"); Button *add = memnew( Button ); - props_base->add_child(add); - add->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - add->set_anchor(MARGIN_RIGHT,ANCHOR_RATIO); - add->set_begin( Point2(0.71,25) ); - add->set_end( Point2(0.85,26) ); + add_prop_bar->add_child(add); add->set_text("Add"); add->connect("pressed",this,"_item_add"); Button *del = memnew( Button ); - props_base->add_child(del); - del->set_anchor(MARGIN_LEFT,ANCHOR_RATIO); - del->set_anchor(MARGIN_RIGHT,ANCHOR_END); - del->set_begin( Point2(0.86,25) ); - del->set_end( Point2(5,26) ); + add_prop_bar->add_child(del); del->set_text("Del"); del->connect("pressed",this,"_item_del"); - /* + search_bar = memnew( HBoxContainer ); + search_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + hbc->add_child(search_bar); + search_bar->hide(); + + search_box = memnew( LineEdit ); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + search_bar->add_child(search_box); + + clear_button = memnew( ToolButton ); + search_bar->add_child(clear_button); + clear_button->connect("pressed",this,"_clear_search_box"); + + globals_editor = memnew( PropertyEditor ); + props_base->add_child(globals_editor); + globals_editor->hide_top_label(); + globals_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL); + globals_editor->register_text_enter(search_box); + globals_editor->set_capitalize_paths(false); + globals_editor->get_scene_tree()->connect("cell_selected",this,"_item_selected"); + globals_editor->connect("property_toggled",this,"_item_checked"); + globals_editor->connect("property_edited",this,"_settings_prop_edited"); + +/* Button *save = memnew( Button ); props_base->add_child(save); @@ -1325,17 +1362,16 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { save->set_text("Save"); save->connect("pressed",this,"_save"); */ + + hbc = memnew( HBoxContainer ); + props_base->add_child(hbc); + popup_platform = memnew( MenuButton ); popup_platform->set_text("Copy To Platform.."); popup_platform->set_disabled(true); - props_base->add_child(popup_platform); + hbc->add_child(popup_platform); - popup_platform->set_anchor(MARGIN_LEFT,ANCHOR_BEGIN); - popup_platform->set_anchor(MARGIN_RIGHT,ANCHOR_BEGIN); - popup_platform->set_anchor(MARGIN_TOP,ANCHOR_END); - popup_platform->set_anchor(MARGIN_BOTTOM,ANCHOR_END); - popup_platform->set_begin( Point2(10,28) ); - popup_platform->set_end( Point2(150,20) ); + hbc->add_spacer(); List ep; EditorImportExport::get_singleton()->get_export_platforms(&ep); diff --git a/tools/editor/project_settings.h b/tools/editor/project_settings.h index 7c91254764..b122609e52 100644 --- a/tools/editor/project_settings.h +++ b/tools/editor/project_settings.h @@ -47,6 +47,12 @@ class ProjectSettings : public AcceptDialog { UndoRedo *undo_redo; PropertyEditor *globals_editor; + HBoxContainer *search_bar; + ToolButton *search_button; + LineEdit *search_box; + ToolButton *clear_button; + + HBoxContainer *add_prop_bar; ConfirmationDialog *message; LineEdit *category; LineEdit *property; @@ -130,6 +136,9 @@ class ProjectSettings : public AcceptDialog { void _translation_res_option_changed(); void _translation_res_option_delete(Object *p_item,int p_column, int p_button); + void _toggle_search_bar(bool p_pressed); + void _clear_search_box(); + ProjectSettings(); diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index d6eae51fbd..7687791ca2 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -2363,6 +2363,8 @@ void PropertyEditor::update_tree() { TreeItem * current_category=NULL; + String filter = search_box ? search_box->get_text() : ""; + for (List::Element *I=plist.front() ; I ; I=I->next()) { PropertyInfo& p = I->get(); @@ -2426,6 +2428,14 @@ void PropertyEditor::update_tree() { } else if ( ! (p.usage&PROPERTY_USAGE_EDITOR ) ) continue; + String name = (p.name.find("/")!=-1)?p.name.right( p.name.find_last("/")+1 ):p.name; + + if (capitalize_paths) + name = name.camelcase_to_underscore().capitalize(); + + if (use_filter && filter!="" && name.findn(filter)==-1) + continue; + String path=p.name.left( p.name.find_last("/") ) ; //printf("property %s\n",p.name.ascii().get_data()); TreeItem * parent = get_parent_node(path,item_path,current_category?current_category:root ); @@ -2448,8 +2458,6 @@ void PropertyEditor::update_tree() { TreeItem * item = tree->create_item( parent ); - String name = (p.name.find("/")!=-1)?p.name.right( p.name.find_last("/")+1 ):p.name; - if (level>0) { item->set_custom_bg_color(0,col); //item->set_custom_bg_color(1,col); @@ -2465,11 +2473,7 @@ void PropertyEditor::update_tree() { item->set_checked(0,p.usage&PROPERTY_USAGE_CHECKED); } - if (capitalize_paths) - item->set_text( 0, name.camelcase_to_underscore().capitalize() ); - else - item->set_text( 0, name ); - + item->set_text(0, name); item->set_tooltip(0, p.name); if (use_doc_hints) { @@ -3403,6 +3407,11 @@ void PropertyEditor::_draw_flags(Object *t,const Rect2& p_rect) { } +void PropertyEditor::_filter_changed(const String& p_text) { + + update_tree(); +} + void PropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_item_edited",&PropertyEditor::_item_edited); @@ -3415,6 +3424,7 @@ void PropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_changed_callback",&PropertyEditor::_changed_callbacks); ObjectTypeDB::bind_method( "_draw_flags",&PropertyEditor::_draw_flags); ObjectTypeDB::bind_method( "_set_range_def",&PropertyEditor::_set_range_def); + ObjectTypeDB::bind_method( "_filter_changed",&PropertyEditor::_filter_changed); ADD_SIGNAL( MethodInfo("property_toggled",PropertyInfo( Variant::STRING, "property"),PropertyInfo( Variant::BOOL, "value"))); ADD_SIGNAL( MethodInfo("resource_selected", PropertyInfo( Variant::OBJECT, "res"),PropertyInfo( Variant::STRING, "prop") ) ); @@ -3469,12 +3479,32 @@ void PropertyEditor::set_show_categories(bool p_show) { update_tree(); } +void PropertyEditor::set_use_filter(bool p_use) { + + if (p_use==use_filter) + return; + + use_filter=p_use; + update_tree(); +} + +void PropertyEditor::register_text_enter(Node* p_line_edit) { + + ERR_FAIL_NULL(p_line_edit); + search_box=p_line_edit->cast_to(); + + if (search_box) + search_box->connect("text_changed",this,"_filter_changed"); + +} + PropertyEditor::PropertyEditor() { _prop_edited="property_edited"; _prop_edited_name.push_back(String()); undo_redo=NULL; obj=NULL; + search_box=NULL; changing=false; update_tree_pending=false; @@ -3527,7 +3557,9 @@ PropertyEditor::PropertyEditor() { show_categories=false; refresh_countdown=0; use_doc_hints=false; - + + use_filter=false; + } diff --git a/tools/editor/property_editor.h b/tools/editor/property_editor.h index dcb7b66abd..5fb8386b1b 100644 --- a/tools/editor/property_editor.h +++ b/tools/editor/property_editor.h @@ -147,6 +147,7 @@ class PropertyEditor : public Control { Tree *tree; Label *top_label; //Object *object; + LineEdit *search_box; Object* obj; @@ -163,6 +164,8 @@ class PropertyEditor : public Control { float refresh_countdown; bool use_doc_hints; + bool use_filter; + HashMap pending; String selected_property; @@ -201,6 +204,8 @@ class PropertyEditor : public Control { void _refresh_item(TreeItem *p_item); void _set_range_def(Object *p_item, String prop, float p_frame); + void _filter_changed(const String& p_text); + UndoRedo *undo_redo; protected: @@ -230,7 +235,10 @@ public: void set_show_categories(bool p_show); void set_use_doc_hints(bool p_enable) { use_doc_hints=p_enable; } - + + void set_use_filter(bool p_use); + void register_text_enter(Node *p_line_edit); + PropertyEditor(); ~PropertyEditor(); diff --git a/tools/editor/settings_config_dialog.cpp b/tools/editor/settings_config_dialog.cpp index f73de26eec..6d8f849427 100644 --- a/tools/editor/settings_config_dialog.cpp +++ b/tools/editor/settings_config_dialog.cpp @@ -72,6 +72,10 @@ void EditorSettingsDialog::popup_edit_settings() { property_editor->edit(EditorSettings::get_singleton()); property_editor->update_tree(); + + search_box->select_all(); + search_box->grab_focus(); + popup_centered_ratio(0.7); } @@ -244,11 +248,21 @@ void EditorSettingsDialog::_update_plugins() { } +void EditorSettingsDialog::_clear_search_box() { + + if (search_box->get_text()=="") + return; + + search_box->clear(); + property_editor->update_tree(); +} + void EditorSettingsDialog::_notification(int p_what) { if (p_what==NOTIFICATION_ENTER_TREE) { rescan_plugins->set_icon(get_icon("Reload","EditorIcons")); + clear_button->set_icon(get_icon("Close","EditorIcons")); _update_plugins(); } } @@ -261,6 +275,7 @@ void EditorSettingsDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_plugin_settings"),&EditorSettingsDialog::_plugin_settings); ObjectTypeDB::bind_method(_MD("_plugin_edited"),&EditorSettingsDialog::_plugin_edited); ObjectTypeDB::bind_method(_MD("_plugin_install"),&EditorSettingsDialog::_plugin_install); + ObjectTypeDB::bind_method(_MD("_clear_search_box"),&EditorSettingsDialog::_clear_search_box); } EditorSettingsDialog::EditorSettingsDialog() { @@ -271,16 +286,38 @@ EditorSettingsDialog::EditorSettingsDialog() { add_child(tabs); set_child_rect(tabs); + VBoxContainer *vbc = memnew( VBoxContainer ); + tabs->add_child(vbc); + vbc->set_name("General"); + + HBoxContainer *hbc = memnew( HBoxContainer ); + hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); + vbc->add_child(hbc); + + Label *l = memnew( Label ); + l->set_text("Search: "); + hbc->add_child(l); + + search_box = memnew( LineEdit ); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + hbc->add_child(search_box); + + clear_button = memnew( ToolButton ); + hbc->add_child(clear_button); + clear_button->connect("pressed",this,"_clear_search_box"); + property_editor = memnew( PropertyEditor ); property_editor->hide_top_label(); - tabs->add_child(property_editor); - property_editor->set_name("General"); + property_editor->set_use_filter(true); + property_editor->register_text_enter(search_box); + property_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL); + vbc->add_child(property_editor); - VBoxContainer *vbc = memnew( VBoxContainer ); + vbc = memnew( VBoxContainer ); tabs->add_child(vbc); vbc->set_name("Plugins"); - HBoxContainer *hbc = memnew( HBoxContainer ); + hbc = memnew( HBoxContainer ); vbc->add_child(hbc); hbc->add_child( memnew( Label("Plugin List: "))); hbc->add_spacer(); diff --git a/tools/editor/settings_config_dialog.h b/tools/editor/settings_config_dialog.h index cca1ef33d5..50159cf488 100644 --- a/tools/editor/settings_config_dialog.h +++ b/tools/editor/settings_config_dialog.h @@ -51,6 +51,8 @@ class EditorSettingsDialog : public AcceptDialog { Button *rescan_plugins; Tree *plugins; + LineEdit *search_box; + ToolButton *clear_button; PropertyEditor *property_editor; Timer *timer; @@ -71,6 +73,8 @@ class EditorSettingsDialog : public AcceptDialog { void _rescan_plugins(); void _update_plugins(); + void _clear_search_box(); + protected: static void _bind_methods(); From d6b317a2c1d6560323d37831ab1d40f3b2674adc Mon Sep 17 00:00:00 2001 From: mikica1986vee Date: Sat, 21 Nov 2015 23:21:36 +0100 Subject: [PATCH 18/32] tegra 3 fix --- .../java/src/com/android/godot/GodotView.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/platform/android/java/src/com/android/godot/GodotView.java b/platform/android/java/src/com/android/godot/GodotView.java index ad0354e624..1a84923065 100644 --- a/platform/android/java/src/com/android/godot/GodotView.java +++ b/platform/android/java/src/com/android/godot/GodotView.java @@ -371,8 +371,8 @@ public class GodotView extends GLSurfaceView { if (use_32) { setEGLConfigChooser( translucent ? - new ConfigChooser(8, 8, 8, 8, 24, stencil) : - new ConfigChooser(8, 8, 8, 8, 24, stencil) ); + new FallbackConfigChooser(8, 8, 8, 8, 24, stencil, new ConfigChooser(8, 8, 8, 8, 16, stencil)) : + new FallbackConfigChooser(8, 8, 8, 8, 24, stencil, new ConfigChooser(5, 6, 5, 0, 16, stencil)) ); } else { setEGLConfigChooser( translucent ? @@ -410,6 +410,25 @@ public class GodotView extends GLSurfaceView { Log.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error)); } } + /* Fallback if 32bit View is not supported*/ + private static class FallbackConfigChooser extends ConfigChooser { + private ConfigChooser fallback; + + public FallbackConfigChooser(int r, int g, int b, int a, int depth, int stencil, ConfigChooser fallback) { + super(r, g, b, a, depth, stencil); + this.fallback = fallback; + } + + @Override + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, EGLConfig[] configs) { + EGLConfig ec = super.chooseConfig(egl, display, configs); + if (ec == null) { + Log.w(TAG, "Trying ConfigChooser fallback"); + ec = fallback.chooseConfig(egl, display, configs); + } + return ec; + } + } private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser { From 9797b6374bff3845130e31029eeaa544ca546653 Mon Sep 17 00:00:00 2001 From: neikeq Date: Sun, 22 Nov 2015 15:53:22 +0100 Subject: [PATCH 19/32] Popup submenu position enhancement --- scene/gui/popup_menu.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 99663fb2e2..20f28ecf10 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -170,7 +170,14 @@ void PopupMenu::_activate_submenu(int over) { Point2 p = get_global_pos(); Rect2 pr(p,get_size()); Ref style = get_stylebox("panel"); - pm->set_pos(p+Point2(get_size().width,items[over]._ofs_cache-style->get_offset().y)); + + Point2 pos = p+Point2(get_size().width,items[over]._ofs_cache-style->get_offset().y); + Size2 size = pm->get_size(); + // fix pos + if (pos.x+size.width > get_viewport_rect().size.width) + pos.x=p.x-size.width; + + pm->set_pos(pos); pm->popup(); PopupMenu *pum = pm->cast_to(); From e956677f442f2d427602d5dec76c33c7739f5680 Mon Sep 17 00:00:00 2001 From: Franklin Sobrinho Date: Sun, 22 Nov 2015 13:05:55 -0300 Subject: [PATCH 20/32] Better PropertyEditor search --- tools/editor/property_editor.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index 7687791ca2..31393ebcbc 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -2433,10 +2433,19 @@ void PropertyEditor::update_tree() { if (capitalize_paths) name = name.camelcase_to_underscore().capitalize(); - if (use_filter && filter!="" && name.findn(filter)==-1) - continue; - String path=p.name.left( p.name.find_last("/") ) ; + + if (use_filter && filter!="") { + + String cat = path; + + if (capitalize_paths) + cat = cat.capitalize(); + + if (cat.findn(filter)==-1 && name.findn(filter)==-1) + continue; + } + //printf("property %s\n",p.name.ascii().get_data()); TreeItem * parent = get_parent_node(path,item_path,current_category?current_category:root ); //if (parent->get_parent()==root) From f99b630993166725e91ccf2868cc4cefe2008286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sun, 22 Nov 2015 16:55:07 +0100 Subject: [PATCH 21/32] Load main scene if defined when running editor from the command line If no main scene is defined, or if it's an empty string, the previous behaviour will still be used, i.e. launch the project manager. A small fix was also added not to maximize the window when opening the project manager via -editor (i.e. "godot" and "godot -e" will behave the same when no project is in the path). Fixes #2869. --- main/main.cpp | 4 ++-- tools/editor/project_manager.cpp | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index b6bc10cee7..3ea9128e13 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -432,7 +432,6 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas } else if (I->get()=="-e" || I->get()=="-editor") { // fonud editor editor=true; - init_maximized=true; } else if (I->get()=="-nowindow") { // fullscreen OS::get_singleton()->set_no_window_mode(true); @@ -649,6 +648,7 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas if (editor) { main_args.push_back("-editor"); + init_maximized=true; use_custom_res=false; } @@ -1093,7 +1093,7 @@ bool Main::start() { #endif - if(script=="" && game_path=="" && !editor && String(GLOBAL_DEF("application/main_scene",""))!="") { + if(script=="" && game_path=="" && String(GLOBAL_DEF("application/main_scene",""))!="") { game_path=GLOBAL_DEF("application/main_scene",""); } diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index 893df04709..04705017d2 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -624,11 +624,6 @@ void ProjectManager::_open_project_confirm() { args.push_back("-editor"); - const String &selected_main = E->get(); - if (selected_main!="") { - args.push_back(selected_main); - } - String exec = OS::get_singleton()->get_executable_path(); OS::ProcessID pid=0; From b6c6e2f5e5daa1203807aef6be1b2e44af7f5392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 23 Nov 2015 00:19:00 +0100 Subject: [PATCH 22/32] Make all demo icons 8-bit/color RGB(A) Godot does not seem to like 8-bit colormaps. Fixes #2874. --- demos/2d/area_input/icon.png | Bin 1684 -> 3416 bytes demos/2d/dynamic_collision_shapes/icon.png | Bin 844 -> 1563 bytes demos/2d/hdr/icon.png | Bin 2670 -> 3962 bytes demos/2d/isometric_light/icon.png | Bin 3638 -> 7675 bytes demos/2d/light_mask/icon.png | Bin 3344 -> 6285 bytes demos/2d/lights_shadows/icon.png | Bin 2733 -> 3988 bytes demos/2d/navpoly/icon.png | Bin 2420 -> 3642 bytes demos/2d/normalmaps/icon.png | Bin 4876 -> 10402 bytes demos/2d/screen_space_shaders/icon.png | Bin 3341 -> 7479 bytes demos/2d/sdf_font/icon.png | Bin 1534 -> 3560 bytes demos/2d/splash/icon.png | Bin 3408 -> 7041 bytes demos/2d/sprite_shaders/icon.png | Bin 3934 -> 8209 bytes demos/3d/navmesh/icon.png | Bin 2803 -> 4902 bytes demos/3d/sat_test/icon.png | Bin 2699 -> 4628 bytes demos/gui/rich_text_bbcode/icon.png | Bin 2293 -> 4304 bytes demos/misc/instancing/icon.png | Bin 2185 -> 3396 bytes 16 files changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/2d/area_input/icon.png b/demos/2d/area_input/icon.png index d9bb88169321f8d5af74c5f0b30d7f1e24b454bd..2f412ecf6813ad88c2d6a0abf4c8ecbf6299286a 100644 GIT binary patch literal 3416 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hElojP^u{#~D)3)>%L zH(qbZeR*%{2UCWq&YLWYxhi&U+Vts(21A=)t$o7MU*XMlvky$D`2IBE{P`oZ#o3(| zb(q(iGYSg74iaCb-gxmw=hepwQ@zA3%r^X9X4Y}rZ=YJ|A@2Ccoelp~cYeu_X!zZJ z`r{_0jHL{`R+Yb;n#G*!m&#N{DG8Y!TdB4vK1Ti5$yBAYdp&f6I6HWA)~#7%lgab< z@z$AK`Zc}^CVy3DetB2baOCj!h0bD1AM!Zg{9Zi&@|}+}`IjBJ9pLl*nb5BIJ6)0Y zotCVc_apxm$M;nFuyi8|B z?xyt3S+)3eboi04^WPlQKI60Mscpn2{l+b_MRwNxSMT}0f9$>E!>jN_soxWW1^2ye zW#9R6d;h|<7dE8t7hi7wesXZjFX10)9Ms|VBY`Ysvq$aZiJLBG`pJxic zb(zi8qOf`0#DeVS0^85e`>@m9-d+3X(k}NGk(&erGuXagPpaE1BWt$v&*Jr${8W#yN<;VeN5 zrXKpcesRS88w_3z4GDfT4yINf;fr^$`gg{}fxEzK(~duPk8|?L9G`2<-q5yuf7@iq z<@t$<&BeuO*V$MWm_~W-`R*@tYu~Ix&RZp7IkyC*n8YaFx_@+Qem-k?8^a2@*~{u{ zC*3($_GFdP9CLfOA9km{G8nMs9%=Ah^U^9_D(GyaA*<$x)#sGFKM5Fiua5uA%(XgO zv-0)!C*kuM6qMgx`gdg(r*C2nL(KeX;c~7#RvnJ*XAUx+(O>@{Xny0(d#>;Qa(_4^ zcKX{s=OsIP_Xww_c`~#7a?+OI+PSCT#LJx}>mq#e3mLD=YpPeRo!WPGX^H*zzJIMV zFEcoB{0cj-DkHD3`JvINvVdkYqoky;HH&{H$?u(6ED;gl@p_l2PTk|{bAEnaeyrzf zux`zTTg~+k*f)+Zzh9mk=WzReu0NZVR8J#IoQ+k} z@2!)5xJwBvYt+&9Y&(?M!@DKO;`geJ^KRCJ^X}ZqzS#cYv+40mpKaZL(40r?%^%4& z(OD79Hi8#EpScwsI8VW|xST`%55v|(L5&%_QdE@9!i|)^Aa~GZrbv^Oab;o-dXYHA64^{8&KF*mN&8KMj zvNpD=$hz~7{>AMZ7#^~JvH!2&xZjqMVV(c^$=Z(ocFV*X-OiprSXCo>ZuZs(teUo! z`+vz471}9Tp9?XXYkj#$-}=;nUx#)xKWG(Y?$?of7^}YbW=H4O-l8{ux4u~SZ;9=> z39p-ruOA3GA?m96QGaiIbf3qL$IK7b%xLdxNfTK*^Zu=-@4G+$2*0)by?Bd4#yh2q z9QWLaDYMoDXS1E=`lw@R#&GC*NxsIcNx%Bjg^u-oeW5MOvRvQ)w0?&p`}+ryJ?qza zWuB5vao@=OtmneHhj&@`^=~fwx8+LxmcKt&w0m82Z1{fgrDp4iC{MQfN~YI0byu!8 z=WtBQ=6qykZ_3jkZ}>qxW%-u2^eIynu8Tb0S6mXLkg>Gj-kPJgBInJU;gmh6^(M=9 z*1*FII|P|^d#C(gaO(V#U#GI>{Qo17xLdfW_Qk~1gk|&m@~;W+UF35lLhZryXUs1( z3p2G_zMd^&yKgrwrNi*$I=z*KmBp84xMl6xBjI>P#+iAOjzVv$o~Gga+g;(e9WLB4 zebcc;ge85JKp}TwecUbYT&uK)tyd)&p11`+Vo?9W?Z4)z{q>&mH%w70RqkHhu5emx z+28MzUHL4VX69W?IOKcn_vN`4f7%^O))rjWSpLBH&#cc9*4NI*wMKHa6t=T*#4k2F zv^o6hC+3u!PEFExJ1j3o?hcXkn~_(1%;;qcOVNRug+Hv8Uip^ZzOgL#$c-Hwzn{xD zK0hz?D=A0#0%v|$*59bsg8P+L z6Ef{9_y5w#%H>qjHk+h4?`BhYso4IN%4@f>zWkw4-s2H4Z~w%9Rrh8tODPMVW4*2T z&c=BQ7P9_-(Yob|7(>c$hD&nFLMFT3?sm&E_H&7<{&3!Ov02ajJbq&ro1XYmv!|(L zYgL}Tk3L}H#w=jO(th! zT@a*E!}0q#`^I_qjJ{ekubs^E@z3EK`)%e4wFO+S-VpWcIQs#q4+eT$mz{ZB{a(&@ z+QweVjH%aVRGU4N`@^(}!v# zMDJJs*KYP7zn}N>(QkxDV)#aZ**S0e0T?UGi77owe0No7U;nLbN-x{^YWg1C*Hn&_nnVr=PHh!t2<^Rd?d*Iv_hjx+j=`n^&Q!|(UA4PNK< zEZhA{?3&zK#XI-TUiyE-ezk4$<7WatXQt?AsXQ+4ojgl_#+8jT*Zw{8|Mho+T|&+! z;t&4(3VwI}?wtB%O?&+Pg1=ufPru68w_QozJm^pOd*5G^%0I2$#L*RhgFo)T1AqQx zyYB*S;qsk-WbS0JJY<#l%Xw(+T$iX@m!hspo|jMETiA7|{>KD`D!`@JPxm?z(q<8jp9#6c^Z%OOo znN(aFJd5|rM1h<6^AGO1;Q4$0w8uK3{gM#r#plmnq^GKb}fv`B-4Y=oMZW%durj#Bu$}-~VPE%I%!#H|ej9s&lY; z!M9{zCYi&6Xhb+U_o*|MYru7u-fcOGs(IBiwK+Er`T z)O<;+eUTbuVxgHVHgUD>k$vSe95~-h$`R@=+HhUu(bJ@fSX zqeZVwA^(ezUFFmWXZ1}>#YN37da3NRH9d6O*=TuvNf`Hpd2Z~CQP~@KN<0K-aGn1= zVOb;3By+P%AM?NdXul*D+9x-6FKORtfBrN56IpVTxnKYs35fS7Z5#SZ%@9E{~<>;#Ze~a$( z`5G_gX*`~-e|x6>jp@dZrm5eYqJC+j-mzZGtKG(jx>ff!S+1(LT3T(ku)<ARUK5A!stS+>hZ*NoG)u_6?&Uk61%BuP@o7trv8?tSylf9QDx#h%!_xXi& z`TE(rnyqUvUSDrMqu6Xlk@ciP%l$B>A_OQ)BI-*(_RuuymJolSG+PH0g{ zaa8EOJE4Btlt{DGX`$b=X209}{m%(izJnWUpYPlEYQD|w<@Y_8Pga_GGAOR_;+OuS zjf?iI(U`7ZI6W}yz>boiIlsBjobR6ba^vBHd-;DSKh|WQUA!>n-u#9B;`{9Q7&weEHCEW-d!qxEu2RQ8H5=gYXCI;nnc+5sVzZ?RVuPo37f zqAzpbT9HjgaUY}ZqD4NU`&X1Z968{SkZ@&DU)s!9h3gm@ool6)_@6Cas$U%;-L6Wy`$Ocy)Kw1|-n_awX-k87QogT+pijxpS+{@0 zO}LhoP$xF?#Y@>GSq)zfh;r?E?R@a-%x#i-4CbLi47;2hrAz!)F}(cv=I@(rp**|K z=I-YRum71i@9rFqR;#LgD;WAr73<`g8*H{t%(ee6#-nH{ad5$B_di!7I2-!v6%~FJ z{+kfBYv)Rax31m{AO3%fHs(r547GfA*1co#`%cZ(^Nu#Zn9MYzMU_1^`n<}5vh6Eu zo(kJ-h+y$B?>u#N!+{(7H$}aclGA7MOPa-IVvX z=1SJ`Ng5p2J9JGk`y-Q1@w#ubRG25tc~W@mZtLfaM|aP@{%rKX_>tOwF197RX3vg2 zWGcC#f2Zl2Jnl7_?ti#SquKVT|6#gv_r0OUq#s#w4&ON*2*2U)&5AkLy1Yg@Q7>%j z=a0G?JL*47%x>IykGG+C1=oi~1w~u|L5&j|w|?rMBdHVl=~ROVd&BBz4?~F@eQRAK z1?3Hlr=L%k4BfuT%#k^S?Sk&Ied|>kmK<}IXm}E7YvG_%!#8bL@KoU$;(=^S&h#+I zWQr6-i1$bz?Rs)moaM&4Xuj9xSMnw}MzP2!t^GT7>zXt5JKDKsu}=7Wt1@!F@D|23 zA-T)A*fO{Ep6D-~#^exxz413!%Jc=I)+`@8JvN)>Uno3T|2WrC^nm(=@}IF~g*UEW z>scUq-BXp}rLN}3uN+cK(k-lQ61Vp5X)9j!PeC|p~cv8`sX(_+o6Zwm!4)#bYMMty-#6+;6-&f3MPWYwWC$>HJ3bR`eA6JDlt(m}GQo zkEvzD`l{tToTo%Dl&-qSAn-=HH~7W+U)K3E*5+C1${ZAb()uF5N0_;EOZr2T+b_@P zz40hMtLsi0(?O_WI5+6&|Gkg~}dAzvn ziJ|4Z-2%^2nAYrGD|=UK%0h3)o_h>DEP`cfUz4ME+I-7QE&TLMsNu;RCxK6;a?5lw z|K2z*X|q`D_?H)FcP)MGw_M`0`5PXa`LRpXu01#@U%NP@$mMx@@b$FkzLQcO_3k_M l;jH-Mhrjn9|8MWm{_?-mlhsEU7#J8hJYD@<);T3K0RUE`4FLcE diff --git a/demos/2d/dynamic_collision_shapes/icon.png b/demos/2d/dynamic_collision_shapes/icon.png index ac01d401ba3d67a101279daf54aba35db9515b65..b47506d7c8711740aedd19c7423a0e23d6753544 100644 GIT binary patch delta 1557 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 C9wEB` diff --git a/demos/2d/isometric_light/icon.png b/demos/2d/isometric_light/icon.png index 3de9749729eda77c7adbfcbc83404eff7fba310b..0801f78ea55b82121f2e408cfa33f6343c771d93 100644 GIT binary patch literal 7675 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 Y=i^^pGTN!mz`(%Z>FVdQ&MBb@0DLyNu>b%7 literal 3638 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 diff --git a/demos/2d/lights_shadows/icon.png b/demos/2d/lights_shadows/icon.png index c7f9e13bae9bf2213703973448987e3ba078cc8e..554f01bb468a7f733d5efbd16e968b3b7d06d7cd 100644 GIT binary patch literal 3988 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 literal 2733 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 diff --git a/demos/2d/navpoly/icon.png b/demos/2d/navpoly/icon.png index df7fb43633f292c0a881d426962211ae9907f4b2..7a28a367c6c161edf5dd5d10f4c543828d75b582 100644 GIT binary patch delta 3634 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 diff --git a/demos/2d/normalmaps/icon.png b/demos/2d/normalmaps/icon.png index 4e5d835005653fb24498adf8a4fb82baf6791067..11ff5de82931a5407a304500264f9f62dcbc09b1 100644 GIT binary patch literal 10402 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NoCO|{#S9GG!XV7ZFl&wk z0|NtliKnkC`+aUPael@lFP1D}U{GN2ba4#HxK}#k_ua{Ip7$>E+lJ$lWX#$HJiMkX6#Lb@WxgD)0+4-Oq$_AmExnQEiK0tXYjU*%wKsmi{+@>M*XR;PsLc;+wwLE z9K6VLvM_Sq(-mcl|9m-`*>*M{qs6fDzTx?G`t0H9`Fnq!T|0Zb-QPFeuV3exX&>N7 zj=8?4c*EZ>Pgl#=eBa%cDboGa%d_g=qoWJ#4{9!pIB|R0znAC#e|+%o@4KI>s?Tcd zbGBQ3%Bd_Yj6IQ_dpcy<<%=mE1}sbyzMef-WMs3WG(gAGMt_OKH0_jfzHP!RI@8VC zmbFGz8%8sUNb<8w_=%q~b-g^9I{?|=nzg7Qb{A_a^3dwUw>+B-c4pX zZXn^fpy>$j@8Sjl>FVmj7wz+^>&l*3**O;-E4p;&hE|HDd51@wRprktBdNulE3Otz zc=Gh8Obegig1_$!T`bRk%01j{QTOFd>fWn5DIPr!A7sC;eSQ6Ytt|TqeY^U?=Lee) zKMtQazvkbUqu=*^UH6*pYf@jDQT^}B`)#dk-te*QtXX;U#fmPsr5{r)3`=ZXC-XQ@ z_1b!N@7a?X>$0oN!gb7xwk7GMdtVMRJ-p0=>4?KAPnCHkR6LXRmetxkS(^<(TWh#h_!)BV`OYh&PhuFi`&es^wU{G3qt^NZ(;TMC_u z2RpAf-+cBg>XqB&lQWb$HZPtY*R$qI*WQbdp3QBZ|L2D~$Km=9=l;I!z3R5sWsyyRbo*u3<+tX2ri)osbLhCH?dpGZI3ffbBwYB$KmB{jC zFWEMp4&dy1d{k!tjGjLIYJT}Uvo*U`ozh-wcGN(qf9@WuPJ^1A5jVCi(%mX^K5LoT zY@gX{Kb2^0b~?w)bpLCd+&m5&+xZ!<&CAQmx81AQuwIW>y&+Jh_PhE1x!U69-^;ge zxAO55V$Dl0Pc{sHwbe~z_PV#Of*o@;STfrdN7yVY%-MP6>C;7FlLSl@Jx+NiNHmF` zkAIW9cCiLq_S#$-_o%6-P9FWbclPh|eEK<;XZxmEN9WpeeJeL(-y63uV&=D9tK<%d z>@VD~ZHBMc)mt@2^_3-`t{wi~);v%CDAVzEWl`?y<(^l3>-M+*`)2a_9Xh77{RCK2 zD*`p9u%*}DEvmk*Y|nG;nsxf|>6ugVa@X#&v6<7`*0*}vDIxdGhaLG3AHHzu^imo??k3R%zP$q+g|SzzDKv;508Yfcp8x_Rc{xp(3Hau;Qa zH|%$3NHLJQp8Zr^zc1Cb{_VZP`~STDADd^YzS#1JVdH5(bz>IKUyDDUyEku7K!8l_ z{fO!6pVH-PS82^k)H%#?^TwV)O^^86uQp!7hUcGg{rPrH%E75^8RMicznPobu4Wy+ z*7Ukt(SylP;E@2&dUuOyF8lhEEKU|J6Mnw=sK%E9rm0U`_f4t2-r2MwQgg~@lT|ZM z8?=6nSr&FeexB^~?4>U&oGvpMx#-RRoO3qhsYPed8QUB8_wBL~u27q=d#q3)H9|z0 zwXN#U>f_I+hpQY5&bYN^YV7@>DXveBFPd@RdWYaKMc>P3y&6XujrJID;K@mqLFA(7dEBq>8F$7>(xFrJzWvC@@N14 zKOBcUlfq7kude?$-TvO4y$6%tWayPgt-V?Faqs(j>(dXOhhM*ZkjFJyf79u$Q%{sG zU(D$-(ZrMI_`{4ki>L;Th;z>mC))Gb&Rggk>RZcy^x@0T>&w1<=VIEob??$$7cXuW z-?g$kXx+6J6I5I$OnCg`!Zg{#xmSxFaC%+~sRo3~GuOi!RN4U)9n$LuKWZ1N*+de$UHhE2N$%w8Zn* z&Gh}dzJL3@-tNDSTVQmsx!LujGT|o*PX&dG+V&{BN8f5Z&+Vi({kT9*?beq!q8iV~ z#FtOc5>N}=cuS7w$yL8vwbLe?(=Q(^sgQMlSYjm2Q=KSrJ?#3E)`!3P-XHti$|LNN zW|3wxQBvxX$uj+~EDei1>i<3Y`RrMn&1@q{DPJZIfvy7?LVBTZo8Rx9K7CVL<`?$A zCX9I!LMkyUpE=Bu+4JvL_V>L1H~;@weYM$l)}pfS+d@*;Y1Q?xWUpQITG~;fV%h$H z>60%`abY~UNWJ~;6qQv=KYe{#=_hpTvgGMUlcpG+IdEy~Z1ZwXtKjS_p}ww;R zJsrC7@|!Pg#&aH8ZnTj1W$cJry_(7YF^l=Duf{RQingfmW%b@lvU;j|(s-(hk?-kw zr%&I^QRH%3eD%)Vdoy)P>^q))=5+q(?fNi-EAP!+S^nMYUZ=7&p8N22(ua@g^WUyB zE4keL_UY=w(`C*t;XD+)VvUdVRks(jHt%#2c#?48^JJEWB@rwA(qFCpJGaR1lCO32 znwWi7E|OQe|9EXJ`1Iwf)79mR^ES@#Z9WhpGEK2Gw@=t->$R8h^Bg!L`nLF<-8AQL z`uXmqkA8lvY)gOcJ$K2=#mm#5I$h;;3f}nVKxAzEXXX0rWKjiA8AS`OgoXE96gUIt zoDYy-x_&*ppHIK^_WuXg_OI+-$M>Fl`ZMUvbK!=qQgcNbB^u47*S?N3-*Pv}(0;a` z+Tpszan^QrHDwh+`l-)17w!u>ap_Qr4aXvlXpL=FxnXDe*e~BJInl-BVQ4qsfAW+A z!k!70^DbUVwbRxWU3)D`clzhX&0n0Jtk$2u%+sZN=C@~DlM_>JHi@(w?^ri0I$GA= z;rsWfqglL0dnPD&zPRZqlv?3-szCkvVW-8t!52QJNFAS&IsaUk*VI`Dj2tC8clP9E zZvHqSVMo?h52lipulsT@s${SJEYYgOtiJhR#x{<*435I*%@sSuo8``Ne2zQ6>FzJD zyFn(t8}}TLDyueWY@3$0^X19Ymvih+Kgy7BTfSay<~DA}N&2D_G>US!-qTp|S<~B* z!aVI7?L4?oUc%t~E8?K6XrTG~d+7<=P`&Ku6;7@642SMpHd z)&3f_GsHc~$YD;1A*zn9~=i=XB`dg7>!-_x%5`_uf@jZO`red2zCK=FI!| zUXs#N`?)71J~Q^a`pukkJcnK#JNN$ozj_U^RqtzGv+ol>uP$7vW*oEaYL?ZqiTYRE z4sU#Iv9m~#S0*<0RrkWDJLgO}FUrkwc9V>=gVNVzJLLr$aw_}8Ral$?L|7lK*tzXd zT}v{yZYwQ#&vt|* zv%L0i_j3I(si%)87yAaA_#Wh_QCscmxvO}?->Zwy>#x^S^f~80KfbT(?!T!ocO3qi z^Z(pimd-$#$S>31uJ!GByzc!%&W@z=y?ZN5D_=>7`K3p_-IZ<4a+u`-5SAA`{;KdlBD0@8g>nT+J`C^Y^XvQ@1()g)P}Pb`wwY0}Y>y8(yitM@-#L2uqCR3MJw!L9l;gyYk{`yCYrYQz=Y!3h1XgIw%Xxptb%nVOD zxib!xl{O}G{p^}>c9DR#N6f~ke@~D1FL-UGxum30Xqo1;Wm6Zeh!FE=T(;__j~x4j zUfYJin@N?mrJ>i)Rzbrd2vZfPBlDD?p zJ#b0=?>>2}9qFgK_nAq){A3cI&pqcvfClTulS}e{&s#VvP$tD9&1T-IU`eGGm4J0m zv!;1Zc)7#=#HO9w@9*0lbh>kA&738B55C!C{xm|UZJoL7S78QCKNk)*^}@!)M=ZuX z*)Ml&fB()zYN|#-)%5VoA77k&sOXk-`l3gmh~I;rr!`uuZH}vOu3G(>MNNZC%~;ZP z!^e!SOG!`I9a$!se0X!9mipn&eiZ! zU@4p=vF&k$UfYuWA0M`_y}IoA?{MMLg4$S3(Z2KSJiUS}eIH_uaXK|U)MRom)cF+4 z0P5WD6CchD(_Y3{~OGS5=d2zRG4-7jM1)R(aBa_Cy)=m)Ez|7uKEq^>uOl zbsKNSmOsBveU?4mX=wBFSBIlYS1{A@W&@W0I*QuM_PI~Ia=kKO%7aK5h6g|87!G`_ zVQ>&xF5&V=fphVX_@4hxO$;`Z59Z(7&-=0Gz{AfEmqe`RS+3^X#&Wusz1!f!1Rmu_ z5z7s867@Th9ow!sXQ913cs%H~}jAJs7 zYLLnjO(Py=28OPrq_(e3CLGEP3{5VH5(_k@sR%M0;1^;z@L!t2nUjIRGjJmR<11_o z4s8xj{wKN`A2ZEToM7T1$k6cI<->0IKhk|?^q;VH1u)J^P*7CpT9`45iNRsg5)KB> zNy{>&+&G&QG`d<6->@%~Kf*C-fk)FpmPH;Si#(fLJSV7VdR!Dy+3IKfEvCW2o`dH! zuk!qb2@YSdF7!(v53wb7){M+?iqQ&CKQm1Fu_y2!;^=sJ-ZT)A$LW?xG zYWQ0mWp*~cZ*!Dc9yf`N@y{`SJA(@ks`vkW*u49@%Cc3NWlxrCI3;TMKH%^)(s1Bp zTF`L7V8Sv6S3w2=7Dok_CIh~v3!fVvR~8B>GA!b75#(TC(A1L7o6=;`X2Dj#qvVkl zQ758QIB9`K(-MoOWef}r4jAYspGAI2x_x`V5=Z_$}>u+Nh>9jjreG=pm zvhZURaaWYwt1TI;eO~6O=emYd z91Q0iNWT90uz_2kiLU~K0_(%;rhSe*Cm0yCw4JJJb2slz`I#xY#v>Sv4FNSrhUuU85kxk$?RIB(8tK&xA26J$okdC9;fS{Kku)< z{FPI&eSKAk*7MuDcSqm;8ejM8#s5EF(r-@MvbA_a`D4CKpTB)Cw$bmJ`LSfjy_-9% ztXoui6AEnR)jq%de%;pS!Y8$#o_d=z@W0PD;@Q7>=evr77dNN(PJQ*Vd*VyhKI6Wm zo}QJDpQn4*?|GRu%uD0;|JzkTduC3FuExOjo@3)zj+x+2eJyX9E zgM(0TVb*d57lw0%TNEyG_|5X0vff1JZpPX*+(P?z?JO=U$=Pvw?cBfiKPTJ&JtqBK zzV35u?8MJc*$$QGaV@%%8OF+ITT|M%V8Hk|dcD|&l&EpH!7{U`hSZCi5N zp02to~d7rA=|Nio~{QV@BiDxfN-ngmw^Rs5_-}e7*9=HFydjF3P?)yLg zc-|i$J9ql3O3z7teCN+9ta)Z6(^vmx`+tFBhI|V{M55NVsZ7)1ov8kK`tf)%u9;=a zc^D#QUA%g;`|IA>5@*FfEfQ=vnxeva=+eh!hd+ib@4PJ0*|2r5^n|HhnNM~rR{VVz zYtr*->#q!}lWE+AGCI#UsT4G?o-DpRn1xrP>uSm3K)v`m^JM4F+dg~l$$}rx|Nma! z*SC9~e8swt*X@6|pWk0~Pea@??$_)6|88!t{~R5WGvn2hESvSyHZRWmesuGC2It~A zCpdH(IL`{y9({3MEynWuL-~Kl?#=z}t{>l~@Qvw6#0j3cGc}C57#*ivvM?>N?Q@o? zxL@;Iar(o<2TpQ4y8rjC{=@aP-?zJX<~-YZ`d`GP8C9y{i>E9-)v-%Q`1gNS z^ZU%7ms_cKVnT%4;fQ5&KfkTGzSQG}#?@Va4<;xrmWb06OZ$BEar*j4Cu)CuxaYqA zSCP?+Zkzijgp9Ao`aIhn|NB^qkzSbBLTNXKNT26AD#fi`t8^}j+`N&uyurfSChqN( z>)U1pO6BI?6=I$CXh%%kp4#8niZYi>yq{+}>BRph-Ov5)|DOqe9?;*((;FOfY}=a0 z-E~b9=Y}m0*8aN7_ITOu9gCl zCCxt_-`tv9JyD)vLQCPA6Q_T(v)ljwU2pUDtAE?3g}O^?Hb&_+uuPJ;BpWNt&?@3; z(2^>la>UQSf7#}r_pWu#I32h#Th-7rEu%BNb&-OXfcO7@)8psK$?p4l_Pb8#zduh! z4Za4g{I!?AUi^_x{JM~w(_S$fu7vtt=hU&hvF3tAmF>(;JlCata?kJHxclqn_!=pO zAIJXgeRXQqQt9J&Z>AVBdk86N_ysPlX;hgRwpi&jS6`C*^Ym51Vye5sazE-67CfJp zzbnUX`s5o+bEMkZCNX$FD6w&v&?34tZSNW#@!z}6L(KoYJpYgH!JN#O-L1=Bzf#}- zqy6I3E3pzTLUwhZo}N58Q}O(_yt{eZ!u5aK-nhBf^lg0Kb1yd`9est&ZI|;RF5?I+9q9Z)H3Dvikn7 zGLcG8DZX>R7vF3W_wKW@zj5d9!}m2m{_@uc+>0p}T(s*_m(r77_U&9-(>jvU-Isgh zy*?PVc;l66pA+LXrWH>*vf;_$zgtiLdvUYyJo^o4{&%JN>u$Y$_O*2X?e|U{Z{EBO zviLJsevkRP*o2ueX3qa_`r9!w{JFUQcX-Z%INqt359>29+-?0Az5na&`aj42-{qbB zut12-(eKG??YRfaIYefxTDHopPm!U4r8DOK)8eT-=fzH4o&5Z~t^0Y;GpD}Qy>XxR z{99YmgWr9RRrZCS@tkdK?H?~|ti!I@V&Uh>+L4x$wQxNyG}h(4V>h1cEhi~_ezYEBKnRnsCaBt*r0MeWog!8Uq&M*C0Fx` zg%&U8DyAGWwz*trdsoag&u;#W?##6zD@?*Ym}2#&o&I@dtIv;X<#i^z-c>QI7CWtZ zq=@OZ?D4-aDx7;b`W_W89-u6l%v z{dAhh(D9sYv*-P-YutA0ikwzI?!Ne;LHG$HonA*Bp2N%6pL@90{NB7%Y)wmk70Lac zC%k;ETe8*s=w+3arL_gg-%l=|Z(IBA%b!)RclEtxTfJ86_$2r9``^UJED$;Esj8@a zqPx=Xf#3RHi$A6q$auHv2(bmuQR7fc<7Tcb`~1%@y*9W0|FTUR7@O9tTbq6)=E3iY z&$WKZv`$EqxNf3p(`xA9biCB|bgA^!s#yz`)|9<};McThEBOpD%P!-d{JQ8 z!E3+5WSl~SgXTC1FUUUqJAd!x95bflf1g>e|GJLtY1L+huB%atW6szA`rI#PTX(K- zi%RPE_wU}m$_oSI;boFbTJ~NdhbpH*frY z_4MI}>%79}H|1Wv;3{*xMQ4^9gKI)!?);|~uGbysh;d2!ma|OUUgA4ZJaCfTj_Tj5 z)&1jTuy}&M>TXuPvo|@+isj5f2d3b$%OJnX& zNbk!$khAt~WbE8?siEO6n%CEe+5h_!xHCqU=l9Q=#-$gMHg22oWsgFP&Q%Rx=JO}T zvSz=YyIjAokSE!dbEECq0H@NP6=Q}UQZNDua7}J(&-2HRXl8&1>T!pVz zS-B!19^F1~@KYuWldFmf;+dU~lpg3JT+=8pgVk57tvWNHe03KCi8(qxe?{1VW3_17l%g>uLpZ^qeU}X4OH8c6> z$(*u+2c91YP`+6GEHdar(U{O%R})TGbH_hWL((l|q3V|}iL$ur|(PCl=0-nVAO zyoD8gkEOXz7d}f0T4fs9^<(z_ztUFPMkdvzRWBs0ygn9+D6r^tS~9fAtzUJNKBT-=)JxAN;($yiVfg zI^J4`ABHc!>(|_$-^;d5KK#^Cje^^6&rV;y{PD>vMYSTX@Aj8H-*uZk@4-^e4(GeP znq0af-6F1&O)ksx=$?L?vo5@A>*B|UTldV#oVHZ2^za;?WtUqw-OCbS=~MCK3Sv>8 z#3Hdv>W5sXA_o`K^_gc=Q!jo0vUKfgPmx~?iY_ayr5$CCYCNp6k@S7mC46%7#w4jk ziT7{cvQC>TxM@OC>xF9pZaU&eH8}Pd94ly2eR;HInf7Ltu0<+aWxuboPKj(2H7X80 zKkaqk93J<}NgJb9hcn-PWpY~5ZvQ2n4|_ITijgd-W;n7=e#+^mQA;a+KQmKVv3PN^ z>%^rohMs$_y~^7;;q&8^t(TuIwK-CF|Fdo7x#FKO3t1SXe&s!|T$X5^mm{?+Uvff< zZm3@PsYMz^l4WM`DJ^fFUX|Qb{64qR@bjM+ua_!$8t;4kV9kcDJ4IXTzP~c^O!6pP zJGJfgFUxuM*7m6^p3~Ev_HCIWZs91z(wAt_!F;^`-Tgb+*G~U^_~ql|;|iXimKwDy zOPpTF!K0IIvdb^+hLJ|mecx$ovpKq!DzvJw7C+VE`uMP-=<~6I88=)71=oEKGinl<_^mlQu|(|yLll%6^3$i6Q&m>zE~RgVy4#Ni#*N|ZJ8GP z#I1HIsVB}*^AJ$I$@AL!+U@*3${(GUZril!l4iI!M_Z%G$3qob(vSa@rkC2zKN~l1 zE>D{?i_qC~vu2zX z4hGh5*?CP(v*^bA)!nR$VnX-575a`P&QMV~%fR3; zuVDMfSI5N8d#iYwzFxcLgxRdp%LY$QHau#%V7UAG^{!P~ySg@)Y>cwBvT5U(bXt5# zjH0>`OI!7}sYe{Q-fNP0_?~;m}fq?47bk@R2XP+iym)BcK zdtl}gRjB&4Ry5L3??1vw)BiX<8%C}MBjmx60QM43IYoySKXIa z5GaoAKer)~Ymv$k&pF~h9{SkX*>xTI@NRANPZ{;p)zZC1J8xa!bvB>#d39ZNYHEJ@ z_NX;sr(3gDzNq%=S`gIc9$?}d6em>TyWO|Ay14oI=7l+iLhKGgzZg{l`cAVprp}a# z$;?&s+;PQ}iMf#Hkww>I78geuwxoTN(r*}i@;R+&pfz1T^!3)GISV7Fag{BMDM!66f_n8OCESu=~%<3)<6i@Wcw6IU-d&23tFY7iq?sJk@Lr1zr<57ZocxgT6(-uXBFD+LWN;*u)}sbV2ZHnOJ`PU4IX5ct68!_0FQ#=VW!9 zGMJn%S1eqyYuQ2%DYwq-tW23_t6U=|22XlYvF+X~9k;_vU%v2LpwVSDJFVMQq|^8G zw`K-kW;NxfE`pkQca9kBnIk@Zlhm<55zu^CvCX99+WUtEQmo=trU|t=)}_Xtc`oC6 ze|K^9z1N!CWL+1&Y@3?p8-I>L#enCum(!bS6~E4-d(5T>Pm1ExpTqK5_i*sCn2lVT ze9l4luQ&=Nsl2`AxA>->*UgwX3%mVx`)w9y&QX$Vo4!cHr66j0x`iJD!zB}@z>xLf mN!R%oNiaP4VaIgnKlirCkPRIxA8ZCqOnAEbxvX0m^wAwR9m_Dh$-pV_=M?Mx$B$SDHz(Q=$OcBnTV+wNULglMkFifSSlM>a0!S- zq@;($C)xT$J9vjV1%!&Ln}{i>i;D<{CFRAYX1e(WXj!{ym^t#uXe8!W$LE!X$7lFN zCwqs*Y1#Qo>e&cunDZ$a1jnQYMkG20#TdJXn7f8JxcOK+yPG+<^NPy}iAk3=PpoX~ z&Z=rIt!v6DtIIDdkIgEMNGl3XEp!P>kTr4?*S6BqHCNTtlTlKYmzHH=<0x+EF08IL zbMR4A*W?se6cLgT72@xhF+Vl0JgvAmCATO!Gdn0L+buNOJ2cYPBf!|yM$^z*LEl77 zL_tJazNvqjS5RU|bc}CMh?RG+j#H4mZ-BY8r@n)Ssim8&zO|vLnSz$Sl(=Z`ycKnw z6ACIDl8fu()AIczVqCl<&FunweEp4Gd{itw6wO@CtnIW-EX7pxgcQ`I6yznvB;}>V z1VqHjn%crM%c3&#;@AfLpq6_S~+C(_+$!A`^>(;_}?1GxUx16_m796*Q#9m8UFSUe`UnuB|<- zvMna7I=iSmuP8qtGQ&A6JtZy0FD5o1BG}EzK}p51d-~Lh?kTy&t>u;Fv9W1pJ~1A_ zAuc{XHZ~p#igFwxG7C5Fp1o#M^Tc^glcxuU#Kpu#+B*d~d3ae`8fvI3Enc^=bIOWo z^A{K7Cb_x=+t}I2O6h9qXzn<4XyM9bEnPkBT}@RDHK{4FwkCn=cI}xyW2Tp{`>G8a ztE#&LebZyYg7=<0w{y$txl88Fn%-8BTbGtxuBl*Ss;lwz?W>l>GKU!$_>X(KIEF+V z=DGCRUx<-`;Y0K`LnrR`w>)cgbp-4gc3Llxibyzkw{go->2UeJc8^+%C0ni?J6)0* zEziNRsp8wFUiYQUC94$|?hOmmHkX?=dzR_-H-@*P?!WqO{)ZuLMZsjJm-pVOOq~BT zhkN(@=*!EuJ1%@Q|B=e#iBcC{ZhF7y*upr`uJA)iZJtc(@zoAf#fzG-s3kKur( zb!yksFLQPltNP7zUE%)jL*Lcbt3npxS|0;zq(YwE5mf#*;k~(lhx_6OPpi9UJl>YP ze($1LrcE~)=G>XzVjMNe`{lQ-f=@ZtuGMwjFo(roQ2p@y6g^Qnp6uKgUpC~_b$BSx zl0Dv@Y?H-P|FR%*hx(LNc@9t9zTXNuSNo8U{mO-a(&ZO)rWVwmTA36X9d>Sg1bYGd z%(##UotSgdmrkzQ|2?s%>RrqJ^u&9ub{X6G7)-i8Y5K?33-0mSGS4m0gon+L(|--e z+UH`13$NVBF4)oBS+Y*)wAxzs&e+xUkQp@Q-bKKXb`~^#-LMBwZIb>Iv9S zH{fIH>fl(?7&iUj)gPA+YWLan@%YuuvbleU4l=2)?82@jon z>36~}yS2~WEPP?)=2kwDnG%+99v08+I;^HJz|Gd0S9t zxED)^q8i)JQ*Ul=Tqv>bn&cg|oe6(_rXL77{k%GQ)fYLzeNPz}2(y?BA) z#-g>wj~=+J&6S-iz4Ock&dpISj5kXaUN{&pvHxp+w#ww(@e;PW;W6 zTk3FJjc%4sX8o^vL>5Zi(;-U%BJ=MWhzl zYxJ_F9B`}5=H9(Aug1Ck#*u}yESJrRJzJ8s>+}7h`hDL{eh!>&zCPXCMJG1k#W|LL z*Zn@H7#mJaczEYT!SfS-39EOm^1T1J^vc#TR8Awd!h2b-di_HzqqMi*ian3I{(?d=vO<}U95V&A|y`vUAocx z`+nHA-X$}GjKVjt$6b2emf7%A1;PCBt%Ky8`|x8^3bBPX3R?plq}qx4oOV;~1O()` zOYZHyZRR8(;jHd`PW-?b4=*oo3;o$X!K^bYLS9s~-+ys`*RxX$noc?k^(oHANdXT){$3Ts-}-8R!(o3d@5{_M!+ zh6S8rV&Bd;&pcfgJZom~-31J#X651{D%_>zdNnScr6r|O8Vo7s6Yoa&rgL7tpvxww z&S`!rO-q7TKr7EKzvA9T{b&x|7oXnLraJ|P?8!KCp25PPlRt&Cfw!`QJIcU0f5Q}M zO^JCfN@`k-=?%?$daEkz?rmx`Xs?*&;(Ym3*slA}x;et`-`^9`{bFOm)Z=fR8A5q; zx?J*$OBBn>xOvRI?2?j~cW_UYNSjvgbn?`{e^tFpn2D>o~!q-3bC$O zarFVmo_9};d|4Y+Zy1$HSG9_Q!&CTLX~&Cl8`KXef+w=hSZ#5-5uQ$N0{&Iuc_Tv z`8jQ4#6}Cl1z8iEEg~ANBe9n_is#oc5iR>=FR4t zj~V&g%*(XDxp>*NzvqA3F1#Dwc&=A8Su{CC^zz-=YhP_k{QWY=Y~u|rH$JnlFa@#G z=kAq$`tz`Vf7tJsAF}cnr>s47p(^8}l=1X)ONIBx+kb!hed_-6|LyGemgh%&dp2*w z_xkT$_UCMW+3Z%=;af3(Dsu+YR-KpzQ24 z_3ooZ7tg`N8ghxSej%-xo*C zJ0|u~?kWR=0L%N|3^sv_PN*<5EiF{bU;QRiLAKC--;Fr%EJEw+@<(mwqNit}uY4NC?SzB=YNki~a5#h4TSu>-!P4{iv-F)ZS?E>{l z{hFJ6lKEE(F$D3L^OOhF9p;tiI`Q^S&Bxk#m)?A|`?f4gz@eQR)K)^dsZ#toIh zavgFqm0GLyznv^l^A%4tWHDVJxH~w3fk}#|NxMAt&G9T|hT^v^rmt2dnX9SiUrH0! zcj3$mD6lg~oMxKTD7QS=EtJ<_*=y4rfn~fUIj5iRRaI5xwB=ziRAgcgYFm4FzAdL@ zR*Q=jd#!l?=jM$`^(FewiBD7WH3bsAM6!wn%7R1XDs{vo6L+&nhg{hD@a&XD%2R#) zl^LuZ`B=)?3(w~>2TpMGbJS)CFn{&t%ugky4?jLWd2;fVvw))8c zZJuycrihD$I)h+$$H@DmkG} z8{1_(%<5C^NKp~xEs;pqW(X(}WMB!L5*QdXN0Y(E>X@g;vXx8@O6=*D z?1rhF%u*5lx%>AwWty2eWpqbJyLHd%%gM>uJ;N-eX`wW~47VhMh@jsRW@F<(%Zsg3 zs@<6b4b=~qiMBa1A3V6wL(|XJeRg~;xF;ZmKVVJ@`eZ6DQ1jCC(i><7S_M7-I1fH#~S7ovZJT~1jKx@im zzthYuiN19S9tkqh%ekHH)r&A5*Yeyi@7e zgo_8~T+wlD3t+bw>2z495hW?e*A_V0-)T*ro1%ogoQ_*`XlTdsP`8yU!^6XMryb0` z9Kdi)Uf;iIedeVdY`)2}mUIgF23+DvpX?DF6C$wNv}%G>{^gx{9jo(F*;`*m)X>;;gnBU2#>PSNs!}dvoypua5`Ie|=;w4a{%3TH0Wnzc~6;`0Kp8 zrCi7NuiUcVBW?0ItEndGp}A?be||mOJ6(?b@Wog4Wj6Ew7YSGF;xf!z;xMhe^gJWm zqQG_R>{gG8uetSqF`jhu&Y~N=oZf3R#mnmL_9we+4`2W6`SkGnBHgwJCPnjS*FBD# zDVMYFdVb2j11sfhx8Ahh#B-yQxz)5tYh}TVh~H0y=jP1G)YM*nzqbC*?^A1=SDuTS zyrn_*RLPTHKl#^1%h$Y(7h7`Y(U&W>`vdMATClM1*T$13%A0hg7f<^0;(u)LYMa?> zG^VLsnz@ND;K4e>xLAFY!ie>J%Zlt*JzW0%=v;ZfIkMrd%}d^$H((6>x#i_~pQoL< zpY!L-L~~daHyR3GS+taSf=Qsr!4t2y8J7H=lV?(JxOi^R*|TrXobb&qG7JrqF!@rK zV1GaI@9*rNZ+A}paw2ciQx~PH!VOOO{l*>7-@Xyv{-kvYZ?;~6hvbf(?SIufmTAlv zV)A=@^>DjioZpXY-EY(V?03)TJI>IebCXTm<#R_;QBBHaGZUx2$0-swmzJ$ewSH|L z8o{`3;iBY8H!BSc?}ip`vo9{Xp8Kf8Xjy5T{Eg|XMIOQWlAK00M-*?r4tu#~n&=Uo z;FS*UPXzio|DApH>iFTAoiA4{{4S7Vzc=uj%DjnU%hmPXu$$!_{IOJ{&i5ws#9k#1 zUOwkJi#kr2N$mZT`1$3;Jz*1b4ezhzi(q%ODv9WNQlTc@6vd&`qRiow_U6TsMO#%l zZ@MsW#&n-Or<8P#K~<(}rS)z7{N=VUD&?HGBM+V8I5tlqA!>^vQzu7TL$mgTrxiNg zOBSp&Z#}#@CGCF2^6!N?O|orgGj2pxGZ@Z|UbIs|Quyc`QC5wHIh?v1j!fODC|IGJ znsM4NSd67A^JP=o#Gn7Zlx);(-uU;|;@X~v6K6*s4Hhw+?z4_jIrxY2%oR(wMJb~ zIgSVg#VAWUglIY*oAgbgSIH;1_ub7!aUY6*+iXAf=GM+#*1Q`fZY2aNfBvqvcGqFm z_cNX~nXso!m@p$PEYzopr0Qa^z0RR91 diff --git a/demos/2d/screen_space_shaders/icon.png b/demos/2d/screen_space_shaders/icon.png index 65247f9ae7588542738d4ad6b33b178cf932969b..e3cc049081ae3dde8a28f4371bb8dcd4cbeeebc7 100644 GIT binary patch literal 7479 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 QU|?YIboFyt=akR{04wAlkN^Mx literal 3341 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 diff --git a/demos/2d/sdf_font/icon.png b/demos/2d/sdf_font/icon.png index be9fefa8b0692ff7c8cb7a926e84e358cc2ab358..0c700ad77c2338fd008c515d7515dde64ff1d6c6 100644 GIT binary patch literal 3560 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 diff --git a/demos/2d/splash/icon.png b/demos/2d/splash/icon.png index 88620eb35bc308b46f11b91c4c0e8978acbe6a66..b8e24f209ee1e22ede05c84693878220a477ac3a 100644 GIT binary patch literal 7041 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 literal 3408 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 Dp<-_H diff --git a/demos/2d/sprite_shaders/icon.png b/demos/2d/sprite_shaders/icon.png index b044b31f931ff49ad301567bb69b942fce247b96..8b13ef6bb4e7bbad71c766820080e1ceafcb85bf 100644 GIT binary patch literal 8209 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 diff --git a/demos/3d/navmesh/icon.png b/demos/3d/navmesh/icon.png index 5b354f931cf6dbd6582c4c880fad25a7f0feb5d7..51fef7b2dfbf57f0f55cdbbd0941091a964da3e9 100644 GIT binary patch literal 4902 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 W$NSmjYa#;!1B0ilpUXO@geCys<9 z^noLF^Clia6*viJ@QWF!n>U#`7xDV>eFLH@m;2yhJ!?H!gyu~?kzDL{= z`_MT~5%WCbmvRfJcqJ@%44=zr3}#4#9n z`6jP2b&N5#kBrRSVHYyXz^^P4(GCO5uHsCyP$bRfEL zZ&dy+9s7w^t_dOeX9BX18M;o>vT3(=PiEy7kaTyZiabEBT)6jjq2MS~(Hlc2BTBA>7G8)iIb`WO&%|Sfk=t}tvwC)`n5eRwX*K79a!(|b9r4dRWD~H^%xjLC zd852eCcAk=YRiX|s?)}9GaP+$MD5eeTvE-QV>o!^;%lE|)n763oNXW2s%%tY;g)IY zl)%auWelfLq==k5v##5}fB%vj z-^AD43(DN+m9W|=Y?*uPQjfUBcEO8%6Bk(pP0{sfvGOWaa4qF^NR!o0mQszBPzn^5 zb`%gd6A&|e{PcBr#!9<{#ZD1(93rNfhfFXC>TwP05cV#Ub}A4v&EYYQC9`R|RG(?kux@QZSwEY_FMlkigf2 zE30QNvz@VJrlDC__lDeF+cPt`Po3Se^7YD3VYX8{)kN;DcloZ=#iiA;qCKu_!TtaL z@2l>ryU+4}{@-)|W%{o7wS(`isT7@AkZz_S~}J z`A^r+o9*|9?0cK2-!gOa)39t;R@Vg$3k7=mW6O%?-@l)}t-j1{6GN1P`5^Bv>w>1Sik|wab?Mi`6&?-Mz5=^+%DlrjeamdUnszx`ohOi&xi9a+ z%DtT~TXzW?uC_81Hqx5vHP!3pIp!7pA*Mo%s^=}Va;mCqFE8g=)OOfCWbTe?B@wH_ z>#MKjD!eS2`>MCI!eh0|W2KoF?%j1^xl+K!{Kc^B-Jf%b(P|HwAxF_ z#N5Q(e&emAr>QG^doDT9XRKg-^#e+_i2&Fy_I)Z7+oF<*Xo2# z)6z{{zq0SQUbOGzRB4_>R*qTcq)ldt2*y2$Wzd>EODa&O%(V5fR?GCWwUgIO^J2WP zi6!iZ#DZdWpJkmI`rGnXtvbYZ>FR3Dsu)jBzvL4=Cs{PLy?NP~3(s6&yzui;^R1q? ze!oybM$^*Ck59$OoXS9SWWbDgqdjjP)vF~$Y1%7>E=>3fE=+9)T!pHr^)(P46C zwlY)4=^q(BDoG3{uFtE~^@ylscBxU3;X6Nd$1Q~mw||j!u?>2d+Mw(OO#2$8= z{KtjUH(RsEgq_H^lHky&anoLB;+j)aCm%b;%y?a7uET_XZ*DL0;?t05dwAW})zy`i z)%Zi7+Ok#G$`-Hum;Gb61H%v9!z&d%3kwCgjamK_|Jt=`fBn~nfF1Ih!T(quoG!Q< z7aZclq`)wNcgcEwkEKiv@f-~GK6mW*EUP#x#r0s%qhCkUe>^)`S!K$~dLX__>K^Yz zP9etrS^G+U%@k?)@cHXMc89O)7S5A%l(4A#c)43!f8EIq3pzpr82%Uww13y=m)-s0 z#nL9mh){!n>>Ypp*3LGUw<`Jd;9zpP=<33KGh%p7Y1yu>3yJ%`Ak(Fg;kdEslqmu` z7JpT6o#0_v5NLGgSwWHWd$ZoTdyF3_bv#&-)P5^isQpL!3dJn~i`5o(e~e$S{sN=U$J*KFTO0nYuJ-@*^Twew#TEOmayj&0WbDf^n^(>{XI|@#>2ud_ zywP<0WzN<$D?a8~9cVn9xc#FY%aib;+eWjdGjHCUcH&m@I@VP>Pd0pJyt#ST?zz$Y zG3RzGDC|1+^?+rz0mB22n@_~w7wuddYV&^ftWS)LZOd$Sv#mI2!#3q}{QL5-ZMJ@q zd+L^2E|h5~yvO#@#w|v7^Ukeqf{n8lGJ7~NF}B-R z&hK~s9P9Mw^X;5_rM%8HBMzf^H$%DP*5P1@H? zxcArMQ{UzJu1(zJe8XZ>z_K@YX0b9pd2T$RQP+L3xQx1q*8D!nX{HA@KDuPUIa7ma z!m-2C8-%*tCW{B^Z7lr5%g8p%?X<^HO*0MSTd6=;Fd52Ur6qP1v)I3dgl_+9`p>h&ym(+O(5db;|#taD0e0sw#}+IIi| diff --git a/demos/3d/sat_test/icon.png b/demos/3d/sat_test/icon.png index b89c5a7467de41aaa96e179c1886d83c5343e501..194456e10f00f2b9a49d0673051f1ef631dee4e7 100644 GIT binary patch literal 4628 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 literal 2699 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#R{R;32arFTM1_lNrHa0aL z3twMfb9Qzs4t8IE|9c9uj$E7^3=9T*Zfpz;&LYVU930$?i~=kYrtEC~0seEuMD_Vx zdPIagI61w1eI=QhXNid<$o7WvaJzAE=&`Z6`}+EMdwY9%ZIlw9BqB6bR5*&4hmV=t zmz&F(lf&D~*VDs8Q(fbMysWL1lrk%8qFld&jPyE5@g?G-^Tb8U1O*ED`Rq73_4U}| zWxH-E$XZEB^@|9{@bUz3b45wF`AHPHy1Dr{I%)GddfM2iaG5D_8#<{dUzC?^X%cc5 z7OE8BPvhrH;N@jwV{sKtbN2W5^7Ath@N>7f_tMhxkdRJuA=x@QSQ2;-1f~9LV|)OT-=&$tijTiMh1ooTzZO%ilXfD zHgaHa7cHj^fV@{Tv;vtshEE4N&85!^9=HlX# z?(FR0P-APW&1Y+2X4!0E?xdx8OkMS~vf_(pa;oxjvaF)5!h#-doc4AcG8`P0 zsvE;3>wH{-${Za-9UQEzt^5SdT}(`jjZBsq>TlB3(bm%5uB9%^p{Apv+$AHuTUye9 zSJF~Mq^?GYhgpb^moFrc%bT0ahMmLOoLz*Q&08nIRW{yMC_L1~zedF?+`}W--6P7; z$wk1Sz`;Jj+S<~@#LLLgNJl$LOVeFYb+xLpuY$r$Mfp>5(ywHt!+0g+MTE?R1g!-4 z)l^w!q?tRk&b8_6$yS;ZFJ1TZdqI>$roFkRrHV(Wu!pg-ZDqN2kA?YEGm|`HBPT<{ z6-)JN_4WGobxxhsPEOXEIZdNdLv6o?>Lhv9n^)xb@0Iix7n?U*#6dtrkVRz5L}6Ec zAzyBx^iJ2O}-FH9^Z*fZSC(eunH4_hObXOA5Mb!>fn zEW10+C!3k385@0ir#)LwyQEmt*;%qJStv1qms9lBA_fKq#*!ev;M;-EFIzD%u-kjO zIEF+VzI&~-B&bk?z2N6TX2$s&3>_PN1t+YW?8(#K5_{l^@AErv-bLKF3kR{!e{erI zYxUrx{r-86E%$tWm%hLHzOBus4NbjT|MT_PxdT{_>7V)^&Jb$(S>1E)Hks#_C)P7h z`7uFVJ=lI(;`+X$ZYD2fY!-Nh$Dev^?>jf_0Gch^|9 zZeM83XvG&VCUQaM#HCA1B%^lUy~if6@c+>pm2=vT46)A{Cgd1DIV=5a+w$v8Uj-ss zPHTt7r1G!?tXjsPdN{%0iLa0R+vw-#x)W=cZ?tk&SWr>iaM-W8p~m^pi#tDx)|N_# zmqu;6xbTh$$BN4W6Ha_Sv}NUmG!ZecGZH2lr=~deCNVKoG^kib%(tqDJCnMnd#`f= z+f63EiBj_J424=EJiBHT)fOE-7S%H0#w`|>E_0QyQM2!4c$g+PXjw>4->$JYr{sW` z%Gt?@wJqMdQ@wIOxfnAt2zi;^{H^jq?b*6Vk2*`6b2r54mY(07xWL@xw8eMZTfZ$7 z9M+n)uZ#^6iS}8d8gse6)XzeKV@h9duk60}l?n-GWP4-ut}pmiu<=6b$1m}*GgT`! zM7WOr{KRX$i^pF0)b#kqb%%uxKQTzuD;M&0mteW`C9vK4`?6MxUti8{{SX$a80r3# z;hErxo*i~)mUs&?6<>Mrjx*TuTvzjv74y>OpY3|LDppa(Rc-aGsSG}U=cMd5={b_o zmyy#Wb#<#~#G(L;;yYe`etw+u1BCB}F)l75gQ)o&ilg?@M_t1Ic}T1haY}ebE=U+ z=gfnm)VwdetF!nX-8vkyK5*}ezvn0U=uXi%%^{dHVf(9RX8D_bGWgleDqFI?(Se`g zmbjv%(dvUA|HL^kH7{dUKJ?Y<^{HE1Biw7;Gt|T`e`3nupUqVD{ldbxw|Hf(O5V+E ze!r(7E67o1Z`}MPA{&l6O-Oq?Q@T#}u=0`Phxwv7j+XrQ`r*xgL{xIqZns`m=e9fc zpKnz&c@{tDzjvZ7`m}DkE$92?eA9V4`_J-O3vhic%~o3A5WVY!9K*LWb4|bBe%md? z6R`KOM1q06>l~&fU)Kt2Z`26uw=9%hym+?BY4v4OOLspxVlOInjiEuW=>4&`W#S38 zEGw9JXZ||2cDu&SH^ObpbBgR%bJ8cI26}Y}oa#Vf#_t8DBqXy>Ogp zJA-A$jK!}qb(rQI%X)i%se5!q<7LIDg#jfN1y^FkeOq0>&R|}DEu;M71NVS-hEgNb z1^Kd~S7&L@kPp6J6&WND$MNzir<{V-uEPs?ikMbSQQ&NNb@kMId4v5dY$0oBRNdO! zdj9!o7cp6xq{0e@Kc|;@ny}2%e64p}cgl`+#~qp(AF@a=XVe$vu4QkW@w4f|+ONBN zI%mhuY7VlxxAKL7*`_?zYx#{W0qg9WUUC=|vf5mJ;x*YR!BEiR=3HrIb>Riott$En zo(j5WQhpzvx=1YQv&-jL+hTd;`uPH?@7w09u79<4=aD#tN?plEFFD)_77I_gePR3i zHk&o#dyP1Qg;uXSs2m`=B$Fv->Fl(l4&U8)7G%pFeSW=Nf3i)%z4aD8dGl7Y>i=w% zx_T-;TOmgOphM#{o&>{1%03ErgO30CdiGtO($_UiYg>|-cm(-X7)<*Zm4p-pOlRKF z$qYTlzQy4CX%>!$N@r(je`DsfmOK#5_w7Re8lUT}+fPj}nZ35}6Ju^`(u{B1nf3=3 z8GRM7l;v&I$-UfusOH`hiS1Wa96q+bux-6>!eh`UnVhUF|Lud^T!q(HV)m(gUY6gS zA35dL;Rnx`EK&LLKSX}PsVmJp?L_>ZxH-g^tg34>xOe%Pa5Ns>5t? zYNF(WW<%{+U1<&s^YnQfR1IujM1TG%9B3=GuKu)g&%fmX9lwnm`V1yZHi?`Ua5bIG z=p$U?@bEt4mCR-AseAvOKDkFl*V(zY;S0-ae+IFTUWr8QI2RjN`vYaAzm*-fZBu1F z@o|0dpQo2KrnH1V3+vU^y1WM;w$cMnxL{p*IR5|u diff --git a/demos/gui/rich_text_bbcode/icon.png b/demos/gui/rich_text_bbcode/icon.png index 78358ba71b27b9de3d800aa1cec1cacb61519481..6db48a3a9b5961744e1c6458b6c483aa3b3333db 100644 GIT binary patch literal 4304 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 O1_n=8KbLh*2~7admsHOH literal 2293 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#Rtq<@CaaC2-QdZXZ|Nnnu zV~c`#pUIykr(7?{3%`QrTf3jqPauU@^fwRJQzvtGDxv6_NvM@N^3hqscswThO$ zq@=vCu;isnmx_u?V`38A+`JT=+*H+d)MS;OJbAKd)8;vI=1%CJ*xlV56cp^|7ieN) zsj8&T@aNC-=g-fcJ-cDU#>B)F8*2x3X~n;P|Ni{>^WD35^XAQ;HEYg{88b7|vr|&i zlakUbENmJ6|Nr{+EAzYeuU@@;{P^+Bn>VjtzkcY@;eGq|ZQZ(U%9Lr+(FxJfalygi zK0X01uAUkqQon!yW_|kf>eZ{um#=7PX|1nstf;8Y%F0Pg%S=c}aB*?Bva++bwhzk;H%N##;eAlks z>(;GbvSjJRiIem5i^9S}y}f-+Ow1U+e`mdSpLhMnnwt93(uySua+>Pn@^YhO14ES! zOsf)gzJLG5^yw4F`3syUPaipQl&^0;|Ee_t3l`6xzficRfA!K#(Zr0h;+V+Dn3$NT zFSqbIg@69^=~Je}2bIS6<*YB+wmoOReuMqe zg)GxuMW_tkSH$OyQ5_Dx{~Dc1x=0lRTarmTN3@9B6keS8pmetx<^H|7L!R)57g?KINAR zHiieQ6{yT<*O^=~{TvW<7&mgnTnz?OaRe&8=TJO%uji-GUi7t3@y8M%`;5SvVe=5zf@4txVGnN(S z8&CzU`a}Ia~f0D%pPvy>&k0?sdIK z@{E5ZKeNQkq&zvI$uadbd-FNwQ%g&79B%ALZna21<-hoo&PSWF0^c~J?dJQK>^fI; z^tS{)VG&%?{&O-%)S6t^HKva``;<>usR=e6I{(p)XxPAuR^}wi4eLn)7!U^*WuOYTYuM2ee37{Suu`DV}|A~ zhLS=iUJtpzEqmDxNNGqHY+qBX_v7uBvK5Z2x17HBgYAHLf8W$})`)Jgd8`lf#It^X zu!@?|s{YgI_In1QWkzcbMof_n6JvN|I(6C>mKB?;=d^H&KRr>(+Gb?%by*@;%Zp$S zjuHm9XAvhKPpiB*_uW87P;&2ejecn%-{j38!@KzmuYpBP zHlxL}99{wciNS)0(;E6`CNA_nlA@yM#3JydTXw;1hGXx|d@ap|jdseOW-{!PlAq2{ zQrcaT%>3!!*{g+J*PZ?>me35@BGGm9^|QSl zkB?bdkMa2*sYlHdV&(_tNc#8s)DSv@M>te(J`c9NpbBlCvTv8K!Ztr8Dzh z=-U)(7_Qg(;M=9ZZ%)Pu+jg<-7Yk&|FgBPnV|9YWf>ecLZd(|+B6w!JRXHstr>*XB zp2?HLE`-waftA9UC%iP%Mz`W$6OsrK{%DSi|*ZWM4cS&ifa*iX50HY(PwqfL60TH&hcOn`k4<|4%c%5-A+|BI! Rhk=2C!PC{xWt~$(69As#Ajkj! diff --git a/demos/misc/instancing/icon.png b/demos/misc/instancing/icon.png index 7a6de677c5f07f5779df9b8d0050863e40bb61da..79a4283de7882f35b64f7f8c1dea7c05899c6fdf 100644 GIT binary patch literal 3396 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 QFfcH9y85}Sb4q9e018fmzW@LL literal 2185 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#Rbp-f?xcd0`yvon#cALy? z*v#cMo!e<5SIiRbsKwk73%P^ma(hhW3Yo{{GlM&6C71s!u7KHGq4T-J7jXH`FMqDY6&>=z3HqO{CT39*S z+9lG*+uOs-+t=GOqkUUc<@(^#H9Rp3^&;jNh0W3ooX+dm&t~7xY1zYP*2-^NC2v(M zXq<2B8YV0smK5Oc>h9}Uvd%GorFis0o|t)NQFC}gXDbEHQV*KR?m1oEd$NqjBwn9B zS(iR3$6gVKULng)KFkdAb7DMM|VcRAl%LY-?+M~&Z*D`a?W@QO!Bnqj;n>of= zI7Pa6c;xo(jBnf=TEEFGXO(yE3bVAO3W-Zq6PE~u&sPeYtsOF3DR8Ec&vYgCiSmw} z($?*K?rj2=ZKk$$?#{LDjx`g*%GSq~d?+p!FfZN`S8z8sPu@KDaCY|M)lJ%Sfwo%3z}sRJcBQIihx}kmtl>DRi%SNMY?BswSSp_W!cM;lGEu$ z6GMwm6&7{|KRtbk3>%GqI{7%QxcaB+f3mI4(^*H{_fA%wQE*SuM(fS? zUut4{4>lU^^vqp+sW$w0{+26WPkny1MPhccU5WTjle&z`nm&odE(?`sDkfU1J`}3g z-gp)=ZQ8YyPc>$zi|O91PDy)xp`nk5_0Uq?1x3LVd{>@Z$ZxKx8G6sma+Uho8W~F? z$2+RBUh)z8t6dhb8gmBEkXf>+fO~=V?n}$;bPJQ5&S}h9y?V}sNwO9q3Obhq^0xlg z5xDJleqL_(R3omIkO^%KjGtJP^bW1MvstIu!=Wyts#1kJ@sp*K&+d0mXW69go$~O} zN)r~I3F#t+g40Y>A8{R@P@KWIS}TQ1Haw+8?9S58hpn5B8OHdSE^K8i_~En8PcYIj zb8GUQ3Dyi@a;6=B#a?~V$hubH_D8Z;=I8=BwgX)zQ$(AO#XHN$Z{NICJ>b@>h}j{! zavL7-+?QK&i{ri7!g~w_HyR?gtw~|c_^G=4&Wtr{)|@%>>xRw*ld}n5qbIEP{TZ}! z%ly_u3>kYvr_C}EP5Jw$SBjfq##Xbl$sb%8KWs>u+OzcWBe$UbU8Z;X{@l4U&CM>e zjq%pnO;es^G93A5!IC+fd5NyayiFB>l~bMAWRCt`y@2&j_CXn`gUvTPvkR;o!me&S zs?C_O=cbhS|G&TaHY`xdoa&<%c0*8wd5Q0=DK^Ye0uyG4PG4}Sxmf6#U%e2gc|z5y zDRG6=DhNnpnySFr-qn+ z%&b!5a}94iXBfq%eORKRzTC2b`;_(L#lh+_!8b}{)`k0RGThVrkc+#!xVKbH?b{+d z2Jb!lcZeNP_|B)GGwqO+=H#U^zUxo6S{I$38oRH$%|CC+(-lWbY#;iE@!nZ7w$~2wPD;P{_(8Lq_ysUd3`TB=u#^@!rn`x!C)vzfqs0=<5r)KBnaN1DAJkv$i&Y|?-wuDN;$`Q?~d0`F<%ZEJ;ub$*6Ok5ywOl*?O<^#96 zCP{NJCZFTpb5oZm{+{hkH%-yRf4o}^&>)O+^@9z!Ja}4b9os{mZ(4dxMx!q;;qA6mk zRiFO8wXU7N|IMwft2Yy=@hEIu% lhlMi_#9!lhu%D@h)lb_wd@q}d3IhWJgQu&X%Q~loCIAgusuBPI From 00ddb532fbfc10b016aa193e2443830341e3fec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 23 Nov 2015 00:38:12 +0100 Subject: [PATCH 23/32] Silence too verbose boot splash debug info --- main/main.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index b6bc10cee7..e52b87913b 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -870,19 +870,18 @@ Error Main::setup2() { String boot_logo_path=GLOBAL_DEF("application/boot_splash",String()); bool boot_logo_scale=GLOBAL_DEF("application/boot_splash_fullsize",true); Globals::get_singleton()->set_custom_property_info("application/boot_splash",PropertyInfo(Variant::STRING,"application/boot_splash",PROPERTY_HINT_FILE,"*.png")); - print_line("BOOT SPLASH: "+boot_logo_path); Image boot_logo; boot_logo_path = boot_logo_path.strip_edges(); - print_line("BOOT SPLASH IS : "+boot_logo_path); if (boot_logo_path!=String() /*&& FileAccess::exists(boot_logo_path)*/) { + print_line("Boot splash path: "+boot_logo_path); Error err = boot_logo.load(boot_logo_path); if (err!=OK) { - print_line("ËRROR LOADING BOOT LOGO SPLASH :"+boot_logo_path); + print_line("Error loading boot logo splash!); } else { - print_line("BOOT SPLASH OK!"); + print_line("Boot splash OK!"); } } @@ -901,7 +900,7 @@ Error Main::setup2() { } else { #ifndef NO_DEFAULT_BOOT_LOGO - MAIN_PRINT("Main: Create botsplash"); + MAIN_PRINT("Main: Create bootsplash"); Image splash(boot_splash_png); MAIN_PRINT("Main: ClearColor"); From 18dfb16e262578da84ed8e21529bf52c01e92a08 Mon Sep 17 00:00:00 2001 From: zvodd Date: Mon, 23 Nov 2015 12:52:43 +1100 Subject: [PATCH 24/32] fix poorly formed documentation xml, text outside of tags --- doc/core_classes.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/core_classes.xml b/doc/core_classes.xml index 02b46ac4b9..c37b50f122 100644 --- a/doc/core_classes.xml +++ b/doc/core_classes.xml @@ -575,8 +575,8 @@ 3x3 Matrix. - Matrix represent a 3x3 (3 rows by 3 columns) transformation matrix. it is used mainly to represent and accumulate transformations such as rotation or scale when used as an OCS (oriented coordinate system). + @@ -937,8 +937,8 @@ Vector used for 2D Math. - Vector class, which performs basic 2D vector math operations. + From ca750fb7bca0211b02bdbf292d98c958ea00631e Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Mon, 23 Nov 2015 13:57:57 +0200 Subject: [PATCH 25/32] Update doc with -doctool. --- doc/base/classes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 44a7cccfe5..2e7bde6549 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -4371,7 +4371,7 @@ Stop a given voice. - + From 4359a90ccab188675aa00f62dcf67411a6d1ff1e Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Mon, 23 Nov 2015 14:18:13 +0200 Subject: [PATCH 26/32] Document Vector3 and Vector3Array. Fix documentation of Vector2 and Vector2Array. --- doc/base/classes.xml | 46 +++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 2e7bde6549..a26458a14f 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -37623,7 +37623,7 @@ This method controls whether the position between two cached points is interpola - Reflects/mirrors the vector around another vector. + Like "slide", but reflects the Vector instead of continuing along the wall. @@ -37687,10 +37687,10 @@ This method controls whether the position between two cached points is interpola - An Array of Vector2's. + An Array of Vector2. - An Array specifically designed to hold Vector2's. + An Array specifically designed to hold Vector2. @@ -37699,21 +37699,21 @@ This method controls whether the position between two cached points is interpola - Get the Vector2 at the given index. + Returns the Vector2 at the given index. - Insert a new Vector2. + Inserts a Vector2 at the end. - Set the size of the Vector2Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. + Sets the size of the Vector2Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. @@ -37722,7 +37722,7 @@ This method controls whether the position between two cached points is interpola - Set the Vector2 at the given index. + Changes the Vector2 at the given index. @@ -37757,12 +37757,14 @@ This method controls whether the position between two cached points is interpola + Returns a new vector with all components in absolute values (e.g. positive). + Returns a new vector with all components rounded up. @@ -37786,7 +37788,7 @@ This method controls whether the position between two cached points is interpola - Perform a cubic interpolation between vectors a,b,c,d (b is current), by the given amount (i). + Perform a cubic interpolation between vectors pre_a, a, b, post_b (a is current), by the given amount (t). @@ -37795,7 +37797,7 @@ This method controls whether the position between two cached points is interpola - Return the squared distance (distance minus the last square root) to b. + Return the squared distance (distance minus the last square root) to b. Prefer this function over distance_to if you need to sort vectors or need the squared distance for some formula. @@ -37820,13 +37822,14 @@ This method controls whether the position between two cached points is interpola + Returns a new vector with all components rounded down. - Returns the inverse of the vector. this is the same as Vector3( 1.0 / v.x, 1.0 / v.y, 1.0 / v.z ) + Returns the inverse of the vector. This is the same as Vector3( 1.0 / v.x, 1.0 / v.y, 1.0 / v.z ) @@ -37840,7 +37843,7 @@ This method controls whether the position between two cached points is interpola - Return the length of the vector, squared. + Return the length of the vector, squared. Prefer this function over "length" if you need to sort vectors or need the squared length for some formula. @@ -37851,26 +37854,28 @@ This method controls whether the position between two cached points is interpola - Linearly interpolates the vector to a given one (b), by the given amount (i). + Linearly interpolates the vector to a given one (b), by the given amount (t). + Returns AXIS_X, AXIS_Y or AXIS_Z depending on which axis is the largest. + Returns AXIS_X, AXIS_Y or AXIS_Z depending on which axis is the smallest. - Return a copy of the normalized vector to unit length. This is the same as v / v.length() + Return a copy of the normalized vector to unit length. This is the same as v / v.length(). @@ -37879,6 +37884,7 @@ This method controls whether the position between two cached points is interpola + Like "slide", but reflects the Vector instead of continuing along the wall. @@ -37889,6 +37895,7 @@ This method controls whether the position between two cached points is interpola + Rotates the vector around some axis by phi radians. @@ -37897,6 +37904,7 @@ This method controls whether the position between two cached points is interpola + Slides the vector along a wall. @@ -37918,6 +37926,7 @@ This method controls whether the position between two cached points is interpola + Returns a Vector3 with the given components. @@ -37931,17 +37940,22 @@ This method controls whether the position between two cached points is interpola + Enumerated value for the X axis. Returned by functions like max_axis or min_axis. + Enumerated value for the Y axis. + Enumerated value for the Z axis. + An Array of Vector3. + An Array specifically designed to hold Vector3. @@ -37950,18 +37964,21 @@ This method controls whether the position between two cached points is interpola + Returns the Vector3 at the given index. + Inserts a Vector3 at the end. + Sets the size of the Vector3Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. @@ -37970,12 +37987,14 @@ This method controls whether the position between two cached points is interpola + Changes the Vector3 at the given index. + Returns the size of the array. @@ -37984,6 +38003,7 @@ This method controls whether the position between two cached points is interpola + Constructs a new Vector3Array. Optionally, you can pass in an Array that will be converted. From f7b090f94a26b590f494c441344832ec417ba03d Mon Sep 17 00:00:00 2001 From: Brickcaster Date: Mon, 23 Nov 2015 08:00:52 -0500 Subject: [PATCH 27/32] Added windows specific file godot_res.res is showing up as a changed file when compiling for windows. Need to ignore it. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a7ac2d2fc7..f24d91a7ee 100644 --- a/.gitignore +++ b/.gitignore @@ -296,3 +296,4 @@ cscope.po.out godot.creator.* projects/ +platform/windows/godot_res.res From a961347d8c9e1808e80da5b996cd7ab929f5eabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 23 Nov 2015 19:07:32 +0100 Subject: [PATCH 28/32] Fix return type of Matrix32 member vars Thanks to @bojidar-bg for localising the issue. --- core/variant_op.cpp | 6 +++--- doc/base/classes.xml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/variant_op.cpp b/core/variant_op.cpp index eabd647837..1bcfa7d2ae 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -2818,9 +2818,9 @@ void Variant::get_property_list(List *p_list) const { } break; case MATRIX32: { - p_list->push_back( PropertyInfo(Variant::REAL,"x")); - p_list->push_back( PropertyInfo(Variant::REAL,"y")); - p_list->push_back( PropertyInfo(Variant::REAL,"o")); + p_list->push_back( PropertyInfo(Variant::VECTOR2,"x")); + p_list->push_back( PropertyInfo(Variant::VECTOR2,"y")); + p_list->push_back( PropertyInfo(Variant::VECTOR2,"o")); } break; case PLANE: { diff --git a/doc/base/classes.xml b/doc/base/classes.xml index a26458a14f..aa310b15c9 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -16735,11 +16735,11 @@ returns:= "username=user&password=pass" - + - + - + From 62b9659c4164cdc9b80aa7f1ce83065efde1c025 Mon Sep 17 00:00:00 2001 From: neikeq Date: Mon, 23 Nov 2015 20:06:37 +0100 Subject: [PATCH 29/32] Import Sub-Scene as root's child if no node is selected --- tools/editor/scene_tree_dock.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 0cafe7459b..8b5bf8c1e1 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -1264,7 +1264,10 @@ void SceneTreeDock::import_subscene() { void SceneTreeDock::_import_subscene() { Node* parent = scene_tree->get_selected(); - ERR_FAIL_COND(!parent); + if (!parent) { + parent = editor_data->get_edited_scene_root(); + ERR_FAIL_COND(!parent); + } import_subscene_dialog->move(parent,edited_scene); editor_data->get_undo_redo().clear_history(); //no undo for now.. From a23e29ab36244214cc9f2c8eb28521a3c9a4a651 Mon Sep 17 00:00:00 2001 From: est31 Date: Tue, 24 Nov 2015 05:06:45 +0100 Subject: [PATCH 30/32] Correct retvals of String::to_ascii() and String::to_utf8() Both return RawArray, not String. My fault from commit f83f96cb44a5c4f65c6271d0a98606b489adc488. --- core/variant_call.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 51d683f1fe..48c38f05f9 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -1291,8 +1291,8 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC1(STRING,STRING,String,pad_decimals,INT,"digits",varray()); ADDFUNC1(STRING,STRING,String,pad_zeros,INT,"digits",varray()); - ADDFUNC0(STRING,STRING,String,to_ascii,varray()); - ADDFUNC0(STRING,STRING,String,to_utf8,varray()); + ADDFUNC0(STRING,RAW_ARRAY,String,to_ascii,varray()); + ADDFUNC0(STRING,RAW_ARRAY,String,to_utf8,varray()); ADDFUNC0(VECTOR2,VECTOR2,Vector2,normalized,varray()); From 323938cc28cede46092bf5adecbd28206ee71481 Mon Sep 17 00:00:00 2001 From: est31 Date: Tue, 24 Nov 2015 05:46:00 +0100 Subject: [PATCH 31/32] Document byte conversion methods for Strings --- doc/base/classes.xml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/base/classes.xml b/doc/base/classes.xml index aa310b15c9..12f9062888 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -12551,7 +12551,7 @@ This approximation makes straight segments between each point, then subdivides t Connect to a host. This needs to be done before any requests are sent. The host should not have http:// prepended but will strip the protocol identifier if provided. - + verify_host will check the SSL identity of the host if set to true. @@ -12576,9 +12576,9 @@ verify_host will check the SSL identity of the host if set to true. Sends a request to the connected host. The url is the what is normally behind the hostname, i.e: http://somehost.com/index.php url would be "index.php" - + Headers are HTTP request headers - + To create a POST request with query strings to push to the server, do: var fields = {"username" : "user", "password" : "pass"} @@ -12693,10 +12693,10 @@ var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, qu Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary. - + var fields = {"username": "user", "password": "pass"} String queryString = httpClient.query_string_from_dict(fields) - + returns:= "username=user&password=pass" @@ -26372,12 +26372,14 @@ This method controls whether the position between two cached points is interpola + Returns a copy of the array's contents formatted as String. Fast alternative to get_string_from_utf8(), assuming the content is ASCII-only (unlike the UTF-8 function, this function maps every byte to a character in the string, so any multibyte sequence will be torn apart). + Returns a copy of the array's contents formatted as String, assuming the array is formatted as UTF-8. Slower than get_string_from_ascii(), but works for UTF-8. Usually you should prefer this function over get_string_from_ascii() to support international input. @@ -33134,9 +33136,10 @@ This method controls whether the position between two cached points is interpola - + + Convert the String (which is a character array) to RawArray (which is an array of bytes). The conversion is speeded up in comparison to to_utf8() with the assumption that all the characters the String contains are only ASCII characters. @@ -33168,9 +33171,10 @@ This method controls whether the position between two cached points is interpola - + + Convert the String (which is an array of characters) to RawArray (which is an array of bytes). The conversion is a bit slower than to_ascii(), but supports all UTF-8 characters. Therefore, you should prefer this function over to_ascii(). From b01546f91c498bb230c267a2f21654d7b3565d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 24 Nov 2015 10:14:06 +0100 Subject: [PATCH 32/32] Fix typo, missing quote --- main/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/main.cpp b/main/main.cpp index 9f551d62be..9a9a2d4e4f 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -879,7 +879,7 @@ Error Main::setup2() { print_line("Boot splash path: "+boot_logo_path); Error err = boot_logo.load(boot_logo_path); if (err!=OK) { - print_line("Error loading boot logo splash!); + print_line("Error loading boot logo splash!"); } else { print_line("Boot splash OK!");