From fa004d5c0fb79e59f81d53ab8f53906a930a8453 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Wed, 17 Sep 2014 11:53:29 -0300 Subject: [PATCH] Small Fixes ----------- -Added Ability for centering on top left for centercontainer -Added ability to bind more than 5 parameters (must include an extra file) --- core/SCsub | 2 +- core/make_binders.py | 29 ++++++++---- core/object_type_db.cpp | 82 ++++++++++++++++++++++++++++++++++ core/object_type_db.h | 17 ++++++- scene/animation/tween.cpp | 1 + scene/animation/tween.h | 8 ++-- scene/gui/center_container.cpp | 32 +++++++++++-- scene/gui/center_container.h | 5 +++ scene/gui/control.cpp | 6 +-- scene/gui/control.h | 2 +- 10 files changed, 161 insertions(+), 23 deletions(-) diff --git a/core/SCsub b/core/SCsub index 7eace22b732..2b195fa750c 100644 --- a/core/SCsub +++ b/core/SCsub @@ -53,7 +53,7 @@ env.add_source_files(env.core_sources,"*.cpp") Export('env') import make_binders -env.Command('method_bind.inc', 'make_binders.py', make_binders.run) +env.Command(['method_bind.inc','method_bind_ext.inc'], 'make_binders.py', make_binders.run) SConscript('os/SCsub'); SConscript('math/SCsub'); diff --git a/core/make_binders.py b/core/make_binders.py index 5d35dd93376..ebd48777b67 100644 --- a/core/make_binders.py +++ b/core/make_binders.py @@ -214,25 +214,36 @@ def make_version(template,nargs,argmax,const,ret): def run(target, source, env): - versions=5 + versions=10 + versions_ext=6 text="" + text_ext="" for i in range(0,versions+1): - text+=make_version(template,i,5,False,False) - text+=make_version(template_typed,i,5,False,False) - text+=make_version(template,i,5,False,True) - text+=make_version(template_typed,i,5,False,True) - text+=make_version(template,i,5,True,False) - text+=make_version(template_typed,i,5,True,False) - text+=make_version(template,i,5,True,True) - text+=make_version(template_typed,i,5,True,True) + t="" + t+=make_version(template,i,versions,False,False) + t+=make_version(template_typed,i,versions,False,False) + t+=make_version(template,i,versions,False,True) + t+=make_version(template_typed,i,versions,False,True) + t+=make_version(template,i,versions,True,False) + t+=make_version(template_typed,i,versions,True,False) + t+=make_version(template,i,versions,True,True) + t+=make_version(template_typed,i,versions,True,True) + if (i>=versions_ext): + text_ext+=t + else: + text+=t f=open(target[0].path,"w") f.write(text) f.close() + f=open(target[1].path,"w") + f.write(text_ext) + f.close() + diff --git a/core/object_type_db.cpp b/core/object_type_db.cpp index 18878007a66..61b46da9be8 100644 --- a/core/object_type_db.cpp +++ b/core/object_type_db.cpp @@ -105,6 +105,88 @@ MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,co return md; } + +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6) { + + MethodDefinition md; + md.name=StaticCString::create(p_name); + md.args.resize(6); + md.args[0]=StaticCString::create(p_arg1); + md.args[1]=StaticCString::create(p_arg2); + md.args[2]=StaticCString::create(p_arg3); + md.args[3]=StaticCString::create(p_arg4); + md.args[4]=StaticCString::create(p_arg5); + md.args[5]=StaticCString::create(p_arg6); + return md; +} + +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7) { + + MethodDefinition md; + md.name=StaticCString::create(p_name); + md.args.resize(6); + md.args[0]=StaticCString::create(p_arg1); + md.args[1]=StaticCString::create(p_arg2); + md.args[2]=StaticCString::create(p_arg3); + md.args[3]=StaticCString::create(p_arg4); + md.args[4]=StaticCString::create(p_arg5); + md.args[5]=StaticCString::create(p_arg6); + md.args[6]=StaticCString::create(p_arg7); + return md; +} + +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8) { + + MethodDefinition md; + md.name=StaticCString::create(p_name); + md.args.resize(6); + md.args[0]=StaticCString::create(p_arg1); + md.args[1]=StaticCString::create(p_arg2); + md.args[2]=StaticCString::create(p_arg3); + md.args[3]=StaticCString::create(p_arg4); + md.args[4]=StaticCString::create(p_arg5); + md.args[5]=StaticCString::create(p_arg6); + md.args[6]=StaticCString::create(p_arg7); + md.args[7]=StaticCString::create(p_arg8); + return md; +} + +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8,const char *p_arg9) { + + MethodDefinition md; + md.name=StaticCString::create(p_name); + md.args.resize(6); + md.args[0]=StaticCString::create(p_arg1); + md.args[1]=StaticCString::create(p_arg2); + md.args[2]=StaticCString::create(p_arg3); + md.args[3]=StaticCString::create(p_arg4); + md.args[4]=StaticCString::create(p_arg5); + md.args[5]=StaticCString::create(p_arg6); + md.args[6]=StaticCString::create(p_arg7); + md.args[7]=StaticCString::create(p_arg8); + md.args[8]=StaticCString::create(p_arg9); + return md; +} + +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8,const char *p_arg9,const char *p_arg10) { + + MethodDefinition md; + md.name=StaticCString::create(p_name); + md.args.resize(6); + md.args[0]=StaticCString::create(p_arg1); + md.args[1]=StaticCString::create(p_arg2); + md.args[2]=StaticCString::create(p_arg3); + md.args[3]=StaticCString::create(p_arg4); + md.args[4]=StaticCString::create(p_arg5); + md.args[5]=StaticCString::create(p_arg6); + md.args[6]=StaticCString::create(p_arg7); + md.args[7]=StaticCString::create(p_arg8); + md.args[8]=StaticCString::create(p_arg9); + md.args[9]=StaticCString::create(p_arg10); + return md; +} + + #endif HashMap ObjectTypeDB::types; diff --git a/core/object_type_db.h b/core/object_type_db.h index 9eaec6171ea..ae0644f9b32 100644 --- a/core/object_type_db.h +++ b/core/object_type_db.h @@ -86,6 +86,11 @@ MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2); MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3); MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4); MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5); +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6); +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7); +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8); +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8,const char *p_arg9); +MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,const char *p_arg3,const char *p_arg4,const char *p_arg5,const char *p_arg6,const char *p_arg7,const char *p_arg8,const char *p_arg9,const char *p_arg10); #else @@ -369,7 +374,7 @@ public: return bind_methodfi(METHOD_FLAGS_DEFAULT,bind,p_method_name,ptr,4); } - template + template static MethodBind* bind_method(N p_method_name, M p_method,const Variant& p_def1,const Variant& p_def2,const Variant& p_def3,const Variant& p_def4,const Variant& p_def5) { MethodBind *bind = create_method_bind(p_method); @@ -377,6 +382,16 @@ public: return bind_methodfi(METHOD_FLAGS_DEFAULT,bind,p_method_name,ptr,5); } + + template + static MethodBind* bind_method(N p_method_name, M p_method,const Variant& p_def1,const Variant& p_def2,const Variant& p_def3,const Variant& p_def4,const Variant& p_def5,const Variant& p_def6) { + + MethodBind *bind = create_method_bind(p_method); + const Variant* ptr[6]={&p_def1,&p_def2,&p_def3,&p_def4,&p_def5,&p_def6}; + + return bind_methodfi(METHOD_FLAGS_DEFAULT,bind,p_method_name,ptr,6); + } + #if 0 template static MethodBind* bind_methodf(uint32_t p_flags, N p_method_name, M p_method, diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index f2df6d47c97..7e7d57c3c23 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -27,6 +27,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "tween.h" +#include "method_bind_ext.inc" bool Tween::_set(const StringName& p_name, const Variant& p_value) { diff --git a/scene/animation/tween.h b/scene/animation/tween.h index 51d5fc91328..c9d98633976 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -54,17 +54,15 @@ public: TRANS_CIRC, TRANS_BOUNCE, TRANS_BACK, - - TRANS_COUNT, + TRANS_COUNT, }; enum EaseType { EASE_IN, EASE_OUT, EASE_IN_OUT, - EASE_OUT_IN, - - EASE_COUNT, + EASE_OUT_IN, + EASE_COUNT, }; private: diff --git a/scene/gui/center_container.cpp b/scene/gui/center_container.cpp index 9cedf023718..4f8f50781c9 100644 --- a/scene/gui/center_container.cpp +++ b/scene/gui/center_container.cpp @@ -32,6 +32,8 @@ Size2 CenterContainer::get_minimum_size() const { + if (use_top_left) + return Size2(); Size2 ms; for(int i=0;iis_set_as_toplevel()) continue; + Size2 minsize = c->get_combined_minimum_size(); - Point2 ofs = ((size - minsize)/2.0).floor(); + Point2 ofs = use_top_left ? (-minsize*0.5).floor() : ((size - minsize)/2.0).floor(); fit_child_in_rect(c,Rect2(ofs,minsize)); } } } -CenterContainer::CenterContainer() -{ +void CenterContainer::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_use_top_left","enable"),&CenterContainer::set_use_top_left); + ObjectTypeDB::bind_method(_MD("is_using_top_left"),&CenterContainer::is_using_top_left); + + ADD_PROPERTY( PropertyInfo(Variant::BOOL,"use_top_left"),_SCS("set_use_top_left"),_SCS("is_using_top_left")); +} + +CenterContainer::CenterContainer() { + + use_top_left=false; } diff --git a/scene/gui/center_container.h b/scene/gui/center_container.h index 458e2e72513..9cd9173fab3 100644 --- a/scene/gui/center_container.h +++ b/scene/gui/center_container.h @@ -36,11 +36,16 @@ class CenterContainer : public Container { OBJ_TYPE( CenterContainer, Container ); + bool use_top_left; protected: void _notification(int p_what); + static void _bind_methods(); public: + void set_use_top_left(bool p_enable); + bool is_using_top_left() const; + virtual Size2 get_minimum_size() const; CenterContainer(); diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 68787933608..fc24294a70e 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -1738,9 +1738,9 @@ float Control::_a2s(float p_val, AnchorType p_anchor,float p_range) const { case ANCHOR_RATIO: { return Math::floor(p_range*p_val); } break; - case ANCHOR_CENTER: { - return Math::floor((p_range/2)-p_val); - } break; + case ANCHOR_CENTER: { + return Math::floor((p_range/2)-p_val); + } break; } return 0; } diff --git a/scene/gui/control.h b/scene/gui/control.h index f9225a1c2bc..64b5a9b661f 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -55,7 +55,7 @@ public: ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO, - ANCHOR_CENTER, + ANCHOR_CENTER, }; enum FocusMode {