Pārlūkot izejas kodu

Small Fixes
-----------

-Added Ability for centering on top left for centercontainer
-Added ability to bind more than 5 parameters (must include an extra file)

Juan Linietsky 11 gadi atpakaļ
vecāks
revīzija
fa004d5c0f

+ 1 - 1
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');

+ 20 - 9
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()
+
 		
 			
 		

+ 82 - 0
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<StringName,ObjectTypeDB::TypeInfo,StringNameHasher> ObjectTypeDB::types;

+ 16 - 1
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<class N, class M>
+	 template<class N, class M>
 	 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<class N, class M>
+	 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<class N, class M>
 	static MethodBind* bind_methodf(uint32_t p_flags, N p_method_name, M p_method,

+ 1 - 0
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) {
 

+ 3 - 5
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:

+ 29 - 3
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;i<get_child_count();i++) {
 
@@ -53,6 +55,20 @@ Size2 CenterContainer::get_minimum_size() const {
 
 }
 
+
+void CenterContainer::set_use_top_left(bool p_enable) {
+
+	use_top_left=p_enable;
+	queue_sort();
+
+}
+
+bool CenterContainer::is_using_top_left() const {
+
+	return use_top_left;
+}
+
+
 void CenterContainer::_notification(int p_what) {
 
 	if (p_what==NOTIFICATION_SORT_CHILDREN) {
@@ -65,14 +81,24 @@ void CenterContainer::_notification(int p_what) {
 				continue;
 			if (c->is_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;
 }

+ 5 - 0
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();

+ 3 - 3
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;
 }

+ 1 - 1
scene/gui/control.h

@@ -55,7 +55,7 @@ public:
 		ANCHOR_BEGIN,
 		ANCHOR_END,
 		ANCHOR_RATIO,
-        ANCHOR_CENTER,
+		ANCHOR_CENTER,
 	};
 	
 	enum FocusMode {