diff options
34 files changed, 118 insertions, 44 deletions
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 diff --git a/core/globals.cpp b/core/globals.cpp index ffd4cf5d5e..aee708d0cd 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; @@ -339,7 +340,16 @@ 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"); + found=true; + + + } + break; + } 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"); diff --git a/core/io/resource_format_xml.cpp b/core/io/resource_format_xml.cpp index 66ae014dbc..48917a19ea 100644 --- a/core/io/resource_format_xml.cpp +++ b/core/io/resource_format_xml.cpp @@ -1955,7 +1955,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"); 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()); 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<PropertyInfo> *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/demos/2d/area_input/icon.png b/demos/2d/area_input/icon.png Binary files differindex d9bb881693..2f412ecf68 100644 --- a/demos/2d/area_input/icon.png +++ b/demos/2d/area_input/icon.png diff --git a/demos/2d/dynamic_collision_shapes/icon.png b/demos/2d/dynamic_collision_shapes/icon.png Binary files differindex ac01d401ba..b47506d7c8 100644 --- a/demos/2d/dynamic_collision_shapes/icon.png +++ b/demos/2d/dynamic_collision_shapes/icon.png diff --git a/demos/2d/hdr/icon.png b/demos/2d/hdr/icon.png Binary files differindex 2df0ec38e9..461cd4638a 100644 --- a/demos/2d/hdr/icon.png +++ b/demos/2d/hdr/icon.png diff --git a/demos/2d/isometric_light/icon.png b/demos/2d/isometric_light/icon.png Binary files differindex 3de9749729..0801f78ea5 100644 --- a/demos/2d/isometric_light/icon.png +++ b/demos/2d/isometric_light/icon.png diff --git a/demos/2d/light_mask/icon.png b/demos/2d/light_mask/icon.png Binary files differindex c12b045e62..34a6b709f6 100644 --- a/demos/2d/light_mask/icon.png +++ b/demos/2d/light_mask/icon.png diff --git a/demos/2d/lights_shadows/icon.png b/demos/2d/lights_shadows/icon.png Binary files differindex c7f9e13bae..554f01bb46 100644 --- a/demos/2d/lights_shadows/icon.png +++ b/demos/2d/lights_shadows/icon.png diff --git a/demos/2d/navpoly/icon.png b/demos/2d/navpoly/icon.png Binary files differindex df7fb43633..7a28a367c6 100644 --- a/demos/2d/navpoly/icon.png +++ b/demos/2d/navpoly/icon.png diff --git a/demos/2d/normalmaps/icon.png b/demos/2d/normalmaps/icon.png Binary files differindex 4e5d835005..11ff5de829 100644 --- a/demos/2d/normalmaps/icon.png +++ b/demos/2d/normalmaps/icon.png diff --git a/demos/2d/screen_space_shaders/icon.png b/demos/2d/screen_space_shaders/icon.png Binary files differindex 65247f9ae7..e3cc049081 100644 --- a/demos/2d/screen_space_shaders/icon.png +++ b/demos/2d/screen_space_shaders/icon.png diff --git a/demos/2d/sdf_font/icon.png b/demos/2d/sdf_font/icon.png Binary files differindex be9fefa8b0..0c700ad77c 100644 --- a/demos/2d/sdf_font/icon.png +++ b/demos/2d/sdf_font/icon.png diff --git a/demos/2d/splash/icon.png b/demos/2d/splash/icon.png Binary files differindex 88620eb35b..b8e24f209e 100644 --- a/demos/2d/splash/icon.png +++ b/demos/2d/splash/icon.png diff --git a/demos/2d/sprite_shaders/icon.png b/demos/2d/sprite_shaders/icon.png Binary files differindex b044b31f93..8b13ef6bb4 100644 --- a/demos/2d/sprite_shaders/icon.png +++ b/demos/2d/sprite_shaders/icon.png diff --git a/demos/3d/navmesh/icon.png b/demos/3d/navmesh/icon.png Binary files differindex 5b354f931c..51fef7b2df 100644 --- a/demos/3d/navmesh/icon.png +++ b/demos/3d/navmesh/icon.png diff --git a/demos/3d/sat_test/icon.png b/demos/3d/sat_test/icon.png Binary files differindex b89c5a7467..194456e10f 100644 --- a/demos/3d/sat_test/icon.png +++ b/demos/3d/sat_test/icon.png diff --git a/demos/gui/rich_text_bbcode/icon.png b/demos/gui/rich_text_bbcode/icon.png Binary files differindex 78358ba71b..6db48a3a9b 100644 --- a/demos/gui/rich_text_bbcode/icon.png +++ b/demos/gui/rich_text_bbcode/icon.png diff --git a/demos/misc/instancing/icon.png b/demos/misc/instancing/icon.png Binary files differindex 7a6de677c5..79a4283de7 100644 --- a/demos/misc/instancing/icon.png +++ b/demos/misc/instancing/icon.png diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 44a7cccfe5..12f9062888 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -4371,7 +4371,7 @@ Stop a given voice. </description> </method> - <method name="free"> + <method name="free_rid"> <argument index="0" name="rid" type="RID"> </argument> <description> @@ -12551,7 +12551,7 @@ This approximation makes straight segments between each point, then subdivides t <description> 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. </description> </method> @@ -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 </argument> <description> 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" </description> </method> @@ -16735,11 +16735,11 @@ returns:= "username=user&password=pass" </method> </methods> <members> - <member name="x" type="float"> + <member name="x" type="Vector2"> </member> - <member name="y" type="float"> + <member name="y" type="Vector2"> </member> - <member name="o" type="float"> + <member name="o" type="Vector2"> </member> </members> <constants> @@ -26372,12 +26372,14 @@ This method controls whether the position between two cached points is interpola <return type="String"> </return> <description> + 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). </description> </method> <method name="get_string_from_utf8"> <return type="String"> </return> <description> + 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. </description> </method> <method name="push_back"> @@ -33134,9 +33136,10 @@ This method controls whether the position between two cached points is interpola </description> </method> <method name="to_ascii"> - <return type="String"> + <return type="RawArray"> </return> <description> + 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. </description> </method> <method name="to_float"> @@ -33168,9 +33171,10 @@ This method controls whether the position between two cached points is interpola </description> </method> <method name="to_utf8"> - <return type="String"> + <return type="RawArray"> </return> <description> + 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(). </description> </method> <method name="xml_escape"> @@ -37623,7 +37627,7 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="vec" type="Vector2"> </argument> <description> - Reflects/mirrors the vector around another vector. + Like "slide", but reflects the Vector instead of continuing along the wall. </description> </method> <method name="rotated"> @@ -37687,10 +37691,10 @@ This method controls whether the position between two cached points is interpola </class> <class name="Vector2Array" category="Built-In Types"> <brief_description> - An Array of Vector2's. + An Array of Vector2. </brief_description> <description> - An Array specifically designed to hold Vector2's. + An Array specifically designed to hold Vector2. </description> <methods> <method name="get"> @@ -37699,21 +37703,21 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="idx" type="int"> </argument> <description> - Get the Vector2 at the given index. + Returns the Vector2 at the given index. </description> </method> <method name="push_back"> <argument index="0" name="vector2" type="Vector2"> </argument> <description> - Insert a new Vector2. + Inserts a Vector2 at the end. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - 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. </description> </method> <method name="set"> @@ -37722,7 +37726,7 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="vector2" type="Vector2"> </argument> <description> - Set the Vector2 at the given index. + Changes the Vector2 at the given index. </description> </method> <method name="size"> @@ -37757,12 +37761,14 @@ This method controls whether the position between two cached points is interpola <return type="Vector3"> </return> <description> + Returns a new vector with all components in absolute values (e.g. positive). </description> </method> <method name="ceil"> <return type="Vector3"> </return> <description> + Returns a new vector with all components rounded up. </description> </method> <method name="cross"> @@ -37786,7 +37792,7 @@ This method controls whether the position between two cached points is interpola <argument index="3" name="t" type="float"> </argument> <description> - 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). </description> </method> <method name="distance_squared_to"> @@ -37795,7 +37801,7 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="b" type="Vector3"> </argument> <description> - 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. </description> </method> <method name="distance_to"> @@ -37820,13 +37826,14 @@ This method controls whether the position between two cached points is interpola <return type="Vector3"> </return> <description> + Returns a new vector with all components rounded down. </description> </method> <method name="inverse"> <return type="Vector3"> </return> <description> - 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 ) </description> </method> <method name="length"> @@ -37840,7 +37847,7 @@ This method controls whether the position between two cached points is interpola <return type="float"> </return> <description> - 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. </description> </method> <method name="linear_interpolate"> @@ -37851,26 +37858,28 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="t" type="float"> </argument> <description> - 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). </description> </method> <method name="max_axis"> <return type="int"> </return> <description> + Returns AXIS_X, AXIS_Y or AXIS_Z depending on which axis is the largest. </description> </method> <method name="min_axis"> <return type="int"> </return> <description> + Returns AXIS_X, AXIS_Y or AXIS_Z depending on which axis is the smallest. </description> </method> <method name="normalized"> <return type="Vector3"> </return> <description> - 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(). </description> </method> <method name="reflect"> @@ -37879,6 +37888,7 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="by" type="Vector3"> </argument> <description> + Like "slide", but reflects the Vector instead of continuing along the wall. </description> </method> <method name="rotated"> @@ -37889,6 +37899,7 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="phi" type="float"> </argument> <description> + Rotates the vector around some axis by phi radians. </description> </method> <method name="slide"> @@ -37897,6 +37908,7 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="by" type="Vector3"> </argument> <description> + Slides the vector along a wall. </description> </method> <method name="snapped"> @@ -37918,6 +37930,7 @@ This method controls whether the position between two cached points is interpola <argument index="2" name="z" type="float"> </argument> <description> + Returns a Vector3 with the given components. </description> </method> </methods> @@ -37931,17 +37944,22 @@ This method controls whether the position between two cached points is interpola </members> <constants> <constant name="AXIS_X" value="0"> + Enumerated value for the X axis. Returned by functions like max_axis or min_axis. </constant> <constant name="AXIS_Y" value="1"> + Enumerated value for the Y axis. </constant> <constant name="AXIS_Z" value="2"> + Enumerated value for the Z axis. </constant> </constants> </class> <class name="Vector3Array" category="Built-In Types"> <brief_description> + An Array of Vector3. </brief_description> <description> + An Array specifically designed to hold Vector3. </description> <methods> <method name="get"> @@ -37950,18 +37968,21 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="idx" type="int"> </argument> <description> + Returns the Vector3 at the given index. </description> </method> <method name="push_back"> <argument index="0" name="vector3" type="Vector3"> </argument> <description> + Inserts a Vector3 at the end. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> + 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. </description> </method> <method name="set"> @@ -37970,12 +37991,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="vector3" type="Vector3"> </argument> <description> + Changes the Vector3 at the given index. </description> </method> <method name="size"> <return type="int"> </return> <description> + Returns the size of the array. </description> </method> <method name="Vector3Array"> @@ -37984,6 +38007,7 @@ This method controls whether the position between two cached points is interpola <argument index="0" name="from" type="Array"> </argument> <description> + Constructs a new Vector3Array. Optionally, you can pass in an Array that will be converted. </description> </method> </methods> 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. </brief_description> <description> - </description> 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). + </description> <methods> <method name="invert"> <description> @@ -937,8 +937,8 @@ Vector used for 2D Math. </brief_description> <description> - </description> Vector class, which performs basic 2D vector math operations. + </description> <methods> <method name="operator+"> <argument index="0" name="b" type="Vector2"> 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 @@ <description> </description> </method> - <method name="free"> + <method name="free_rid"> <argument index="0" name="rid" type="RID"> </argument> <description> diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index b473e8493f..39b448d6e0 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -4641,6 +4641,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 c8f59ce22b..f981529ee3 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -221,6 +221,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) { @@ -783,13 +787,14 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { replace_table["texscreen"]= "texscreen"; replace_table["texpos"]= "texpos"; - mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["POSITION"] = "gl_Position"; + mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_VERTEX"] = "vertex_in.xyz"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_NORMAL"] = "normal_in"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_TANGENT"]="tangent_in"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_BINORMALF"]="binormalf"; - + + mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["POSITION"] = "gl_Position"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["VERTEX"]="vertex_interp"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["NORMAL"]="normal_interp"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["TANGENT"]="tangent_interp"; @@ -858,6 +863,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["LIGHT"]="light"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["POINT_COORD"]="gl_PointCoord"; mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["TIME"]="time"; + mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SHADOW"]="shadow_color"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["SRC_VERTEX"]="src_vtx"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["VERTEX"]="outvec.xy"; 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/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") ); + } 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<StyleBox> 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<PopupMenu>(); diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp index d5204f45d5..7b67eaeda8 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/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 ); diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 6532c3f0ac..6c5f64edd9 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -1113,7 +1113,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}, 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) 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.. |