diff options
-rw-r--r-- | bin/tests/test_string.cpp | 2 | ||||
-rw-r--r-- | core/globals.cpp | 8 | ||||
-rw-r--r-- | core/os/os.h | 2 | ||||
-rw-r--r-- | core/variant_parser.cpp | 5 | ||||
-rw-r--r-- | drivers/gles2/rasterizer_gles2.cpp | 12 | ||||
-rw-r--r-- | platform/x11/joystick_linux.cpp | 7 | ||||
-rw-r--r-- | scene/gui/color_picker.cpp | 33 | ||||
-rw-r--r-- | scene/gui/color_picker.h | 3 | ||||
-rw-r--r-- | scene/gui/control.cpp | 4 | ||||
-rw-r--r-- | scene/resources/default_theme/default_theme.cpp | 4 | ||||
-rw-r--r-- | tools/editor/animation_editor.cpp | 3 | ||||
-rw-r--r-- | tools/editor/plugins/animation_player_editor_plugin.cpp | 2 | ||||
-rw-r--r-- | tools/editor/project_settings.cpp | 35 |
13 files changed, 93 insertions, 27 deletions
diff --git a/bin/tests/test_string.cpp b/bin/tests/test_string.cpp index fe7bf4d9cf..60ef1da540 100644 --- a/bin/tests/test_string.cpp +++ b/bin/tests/test_string.cpp @@ -904,7 +904,7 @@ MainLoop* test() { OS::get_singleton()->print("***TOTALS!***\n"); OS::get_singleton()->print("*************\n"); - OS::get_singleton()->print("Passed %i of %i tests\n",count,passed); + OS::get_singleton()->print("Passed %i of %i tests\n", passed, count); return NULL; } diff --git a/core/globals.cpp b/core/globals.cpp index 5f52420735..d63f9c1bb4 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -916,6 +916,14 @@ static String _encode_variant(const Variant& p_variant) { float val = p_variant; return rtos(val)+(val==int(val)?".0":""); } break; + case Variant::VECTOR2: { + Vector2 val = p_variant; + return String("Vector2(")+rtos(val.x)+String(", ")+rtos(val.y)+String(")"); + } break; + case Variant::VECTOR3: { + Vector3 val = p_variant; + return String("Vector3(")+rtos(val.x)+ String(", ") +rtos(val.y)+ String(", ") +rtos(val.z)+String(")"); + } break; case Variant::STRING: { String val = p_variant; return "\""+val.xml_escape()+"\""; diff --git a/core/os/os.h b/core/os/os.h index e53980a8fe..cc001972b8 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -173,6 +173,8 @@ public: virtual bool is_window_maximized() const { return true; } + + virtual void set_iterations_per_second(int p_ips); virtual int get_iterations_per_second() const; diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index 4976891e2b..a3775156ac 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -338,6 +338,8 @@ Error VariantParser::get_token(Stream *p_stream, Token& r_token, int &line, Stri exp_beg=true; } else if ((c=='-' || c=='+') && !exp_sign && !exp_beg) { + if (c=='-') + is_float=true; exp_sign=true; } else { @@ -358,6 +360,7 @@ Error VariantParser::get_token(Stream *p_stream, Token& r_token, int &line, Stri r_token.type=TK_NUMBER; + if (is_float) r_token.value=num.to_double(); else @@ -542,7 +545,7 @@ Error VariantParser::parse_value(Token& token,Variant &value,Stream *p_stream,in value=true; else if (id=="false") value=false; - else if (id=="null") + else if (id=="null" || id=="nil") value=Variant(); else if (id=="Vector2"){ diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index e3a3e7def3..4b976c5b06 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -7088,11 +7088,13 @@ void RasterizerGLES2::_draw_tex_bg() { copy_shader.set_uniform(CopyShaderGLES2::ENERGY,nrg); copy_shader.set_uniform(CopyShaderGLES2::CUSTOM_ALPHA,float(current_env->bg_param[VS::ENV_BG_PARAM_GLOW])); + float flip_sign = (current_env->bg_mode==VS::ENV_BG_TEXTURE && current_rt && current_rt_vflip)?-1:1; + Vector3 vertices[4]={ - Vector3(-1,-1,1), - Vector3( 1,-1,1), - Vector3( 1, 1,1), - Vector3(-1, 1,1) + Vector3(-1,-1*flip_sign,1), + Vector3( 1,-1*flip_sign,1), + Vector3( 1, 1*flip_sign,1), + Vector3(-1, 1*flip_sign,1) }; @@ -7238,7 +7240,7 @@ void RasterizerGLES2::end_scene() { bgcolor = current_env->bg_param[VS::ENV_BG_PARAM_COLOR]; else bgcolor = Globals::get_singleton()->get("render/default_clear_color"); - bgcolor = _convert_color(bgcolor); + bgcolor = _convert_color(bgcolor); float a = use_fb ? float(current_env->bg_param[VS::ENV_BG_PARAM_GLOW]) : 1.0; glClearColor(bgcolor.r,bgcolor.g,bgcolor.b,a); _glClearDepth(1.0); diff --git a/platform/x11/joystick_linux.cpp b/platform/x11/joystick_linux.cpp index 208bb2a2b7..1a11876d5d 100644 --- a/platform/x11/joystick_linux.cpp +++ b/platform/x11/joystick_linux.cpp @@ -38,8 +38,9 @@ #include <fcntl.h> #include <errno.h> -#define test_bit(nr, addr) (((1UL << ((nr) % (sizeof(long) * 8))) & ((addr)[(nr) / (sizeof(long) * 8)])) != 0) -#define NBITS(x) ((((x)-1)/(sizeof(long) * 8))+1) +#define LONG_BITS (sizeof(long) * 8) +#define test_bit(nr, addr) (((1UL << ((nr) % LONG_BITS)) & ((addr)[(nr) / LONG_BITS])) != 0) +#define NBITS(x) ((((x)-1)/LONG_BITS)+1) static const char* ignore_str = "/dev/input/js"; @@ -311,7 +312,7 @@ void joystick_linux::open_joystick(const char *p_path) { //check if the device supports basic gamepad events, prevents certain keyboards from //being detected as joysticks if (!(test_bit(EV_KEY, evbit) && test_bit(EV_ABS, evbit) && - ((test_bit(ABS_X, absbit) || test_bit(ABS_Y, absbit)) || + ((test_bit(ABS_X, absbit) || test_bit(ABS_Y, absbit) || test_bit(ABS_HAT0X, absbit)) && (test_bit(BTN_A, keybit) || test_bit(BTN_THUMBL, keybit))))) { close(fd); return; diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 862a5d6bcb..7b553543b6 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -64,7 +64,18 @@ void ColorPicker::_notification(int p_what) { case NOTIFICATION_ENTER_TREE: { btn_pick->set_icon(get_icon("screen_picker", "ColorPicker")); + update_material(uv_material, color); + update_material(w_material, color); + + uv_edit->get_child(0)->cast_to<Control>()->update(); + w_edit->get_child(0)->cast_to<Control>()->update(); + _update_color(); } + + case NOTIFICATION_VISIBILITY_CHANGED: { + c_text->call_deferred("grab_focus"); + c_text->call_deferred("select"); + } break; } } @@ -88,8 +99,13 @@ void ColorPicker::set_color(const Color& p_color) { h=color.get_h(); s=color.get_s(); v=color.get_v(); + + if (!is_inside_tree()) + return; + update_material(uv_material, color); update_material(w_material, color); + uv_edit->get_child(0)->cast_to<Control>()->update(); w_edit->get_child(0)->cast_to<Control>()->update(); _update_color(); @@ -100,6 +116,10 @@ void ColorPicker::set_edit_alpha(bool p_show) { edit_alpha=p_show; _update_controls(); + + if (!is_inside_tree()) + return; + _update_color(); sample->update(); } @@ -136,6 +156,10 @@ void ColorPicker::_html_entered(const String& p_html) { return; color = Color::html(p_html); + + if (!is_inside_tree()) + return; + _update_color(); emit_signal("color_changed",color); } @@ -163,8 +187,6 @@ void ColorPicker::_update_color() { } else { c_text->set_text(color.to_html(edit_alpha && color.a<1)); } - c_text->grab_focus(); - c_text->select(); sample->update(); updating=false; @@ -225,6 +247,9 @@ void ColorPicker::set_raw_mode(bool p_enabled) { if (btn_mode->is_pressed()!=p_enabled) btn_mode->set_pressed(p_enabled); + if (!is_inside_tree()) + return; + _update_controls(); _update_color(); } @@ -531,7 +556,7 @@ ColorPicker::ColorPicker() : _update_controls(); - _update_color(); + //_update_color(); updating=false; uv_material.instance(); @@ -594,6 +619,8 @@ void ColorPickerButton::pressed() { popup->set_pos(get_global_pos()-Size2(0,ms.height)); popup->set_size(ms); popup->popup(); + + } void ColorPickerButton::_notification(int p_what) { diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h index 59668ebac1..35f4ae7a99 100644 --- a/scene/gui/color_picker.h +++ b/scene/gui/color_picker.h @@ -89,6 +89,9 @@ private: void _screen_input(const InputEvent& p_input); void _add_preset_pressed(); void _screen_pick_pressed(); + +friend class ColorPicker; + protected: void _notification(int); diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 71a0f50240..c319e306e0 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -1597,7 +1597,9 @@ bool Control::has_focus() const { void Control::grab_focus() { - ERR_FAIL_COND(!is_inside_tree()); + if (!is_inside_tree()){ + ERR_FAIL_COND(!is_inside_tree()); + } if (data.focus_mode==FOCUS_NONE) return; diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index f713b9e979..2c22c81455 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -264,8 +264,8 @@ void make_default_theme() { // ToolButton Ref<StyleBox> tb_empty = memnew( StyleBoxEmpty ); - tb_empty->set_default_margin(MARGIN_LEFT,8); - tb_empty->set_default_margin(MARGIN_RIGHT,8); + tb_empty->set_default_margin(MARGIN_LEFT,6); + tb_empty->set_default_margin(MARGIN_RIGHT,6); tb_empty->set_default_margin(MARGIN_TOP,4); tb_empty->set_default_margin(MARGIN_BOTTOM,4); diff --git a/tools/editor/animation_editor.cpp b/tools/editor/animation_editor.cpp index 79a9677edd..dfb09e38fc 100644 --- a/tools/editor/animation_editor.cpp +++ b/tools/editor/animation_editor.cpp @@ -262,6 +262,9 @@ public: NodePath np=value; + if (np==NodePath()) + return; + Node* root = EditorNode::get_singleton()->get_tree()->get_root(); Node* np_node = root->get_node(np); diff --git a/tools/editor/plugins/animation_player_editor_plugin.cpp b/tools/editor/plugins/animation_player_editor_plugin.cpp index 0e2977c5a1..32afd86970 100644 --- a/tools/editor/plugins/animation_player_editor_plugin.cpp +++ b/tools/editor/plugins/animation_player_editor_plugin.cpp @@ -1298,7 +1298,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) { frame = memnew( SpinBox ); hb->add_child(frame); - frame->set_custom_minimum_size(Size2(80,0)); + frame->set_custom_minimum_size(Size2(60,0)); frame->set_stretch_ratio(2); frame->set_tooltip("Animation position (in seconds)."); diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp index f889cc7748..fab2d9ce5c 100644 --- a/tools/editor/project_settings.cpp +++ b/tools/editor/project_settings.cpp @@ -38,18 +38,18 @@ ProjectSettings *ProjectSettings::singleton=NULL; static const char* _button_names[JOY_BUTTON_MAX]={ -"PS X, XBox A, NDS B", -"PS Circle, XBox B, NDS A", -"PS Square, XBox X, NDS Y", -"PS Triangle, XBox Y, NDS X", -"L, L1, Wii C", +"PS X, XBox A, Nintendo B", +"PS Circle, XBox B, Nintendo A", +"PS Square, XBox X, Nintendo Y", +"PS Triangle, XBox Y, Nintendo X", +"L, L1", "R, R1", -"L2, Wii Z", +"L2", "R2", "L3", "R3", -"Select, Wii -", -"Start, Wii +", +"Select, Nintendo -", +"Start, Nintendo +", "D-Pad Up", "D-Pad Down", "D-Pad Left", @@ -301,8 +301,20 @@ void ProjectSettings::_add_item(int p_item){ device_index->clear(); for(int i=0;i<24;i++) { + String desc; - device_index->add_item("Axis "+itos(i/2)+" "+(i&1?"+":"-")); + int ax=i/2; + if (ax==0) + desc=" (Left Stick)"; + else if (ax==1) + desc=" (Right Stick)"; + else if (ax==4) + desc=" (L2)"; + else if (ax==5) + desc=" (R2)"; + + + device_index->add_item("Axis "+itos(i/2)+" "+(i&1?"+":"-")+desc); } device_input->popup_centered(Size2(350,95)); @@ -315,7 +327,7 @@ void ProjectSettings::_add_item(int p_item){ for(int i=0;i<JOY_BUTTON_MAX;i++) { - device_index->add_item(String(_button_names[i])); + device_index->add_item(itos(i)+": "+String(_button_names[i])); } device_input->popup_centered(Size2(350,95)); @@ -823,6 +835,7 @@ void ProjectSettings::_autoload_edited() { String base="autoload/"+ti->get_text(0); String path = Globals::get_singleton()->get(base); + int order = Globals::get_singleton()->get_order(base); if (path.begins_with("*")) path=path.substr(1,path.length()); @@ -833,6 +846,8 @@ void ProjectSettings::_autoload_edited() { undo_redo->create_action("Toggle Autoload GlobalVar"); undo_redo->add_do_property(Globals::get_singleton(),base,path); undo_redo->add_undo_property(Globals::get_singleton(),base,Globals::get_singleton()->get(base)); + undo_redo->add_do_method(Globals::get_singleton(),"set_order",base,order); // keep order, as config order matters for these + undo_redo->add_undo_method(Globals::get_singleton(),"set_order",base,order); undo_redo->add_do_method(this,"_update_autoload"); undo_redo->add_undo_method(this,"_update_autoload"); undo_redo->add_do_method(this,"_settings_changed"); |