[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14306] trunk/blender/source/blender: function for getting object texspace settings, without dealing with curve/ mball/mesh separately.

Campbell Barton ideasman42 at gmail.com
Tue Apr 1 13:14:34 CEST 2008


Revision: 14306
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14306
Author:   campbellbarton
Date:     2008-04-01 13:14:34 +0200 (Tue, 01 Apr 2008)

Log Message:
-----------
function for getting object texspace settings, without dealing with curve/mball/mesh separately.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/src/buttons_editing.c
    trunk/blender/source/blender/src/transform_conversions.c

Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h	2008-04-01 11:08:48 UTC (rev 14305)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2008-04-01 11:14:34 UTC (rev 14306)
@@ -115,7 +115,7 @@
 void object_handle_update(struct Object *ob);
 
 float give_timeoffset(struct Object *ob);
-
+int give_obdata_texspace(struct Object *ob, int **texflag, float **loc, float **size, float **rot);
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2008-04-01 11:08:48 UTC (rev 14305)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2008-04-01 11:14:34 UTC (rev 14306)
@@ -53,6 +53,8 @@
 #include "DNA_lattice_types.h"
 #include "DNA_material_types.h"
 #include "DNA_mesh_types.h"
+#include "DNA_meta_types.h"
+#include "DNA_curve_types.h"
 #include "DNA_meshdata_types.h"
 #include "DNA_modifier_types.h"
 #include "DNA_nla_types.h"
@@ -2288,3 +2290,42 @@
 		return ob->sf;
 	}
 }
+
+int give_obdata_texspace(Object *ob, int **texflag, float **loc, float **size, float **rot) {
+	
+	if (ob->data==NULL)
+		return 0;
+	
+	switch (GS(((ID *)ob->data)->name)) {
+	case ID_ME:
+	{
+		Mesh *me= ob->data;
+		if (texflag)	*texflag = &me->texflag;
+		if (loc)		*loc = me->loc;
+		if (size)		*size = me->size;
+		if (rot)		*rot = me->rot;
+		break;
+	}
+	case ID_CU:
+	{
+		Curve *cu= ob->data;
+		if (texflag)	*texflag = &cu->texflag;
+		if (loc)		*loc = cu->loc;
+		if (size)		*size = cu->size;
+		if (rot)		*rot = cu->rot;
+		break;
+	}
+	case ID_MB:
+	{
+		MetaBall *mb= ob->data;
+		if (texflag)	*texflag = &mb->texflag;
+		if (loc)		*loc = mb->loc;
+		if (size)		*size = mb->size;
+		if (rot)		*rot = mb->rot;
+		break;
+	}
+	default:
+		return 0;
+	}
+	return 1;
+}

Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c	2008-04-01 11:08:48 UTC (rev 14305)
+++ trunk/blender/source/blender/src/buttons_editing.c	2008-04-01 11:14:34 UTC (rev 14306)
@@ -5412,12 +5412,8 @@
 	if ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL);
 	else return;
 	
-	id= ob->data;
 	uiSetButLock(object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE);
-	
-	if(ob->type==OB_MESH) poin= &( ((Mesh *)ob->data)->texflag );
-	else if(ob->type==OB_MBALL) poin= &( ((MetaBall *)ob->data)->texflag );
-	else poin= &( ((Curve *)ob->data)->texflag );
+	give_obdata_texspace(ob, &poin, NULL, NULL, NULL);
 	uiDefButBitI(block, TOG, AUTOSPACE, B_AUTOTEX, "AutoTexSpace",	143,15,140,19, poin, 0, 0, 0, 0, "Adjusts active object's texture space automatically when transforming object");
 
 	sprintf(str,"%d Mat ", ob->totcol);

Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c	2008-04-01 11:08:48 UTC (rev 14305)
+++ trunk/blender/source/blender/src/transform_conversions.c	2008-04-01 11:14:34 UTC (rev 14306)
@@ -284,6 +284,7 @@
 	TransData *td;
 	Object *ob;
 	ID *id;
+	int *texflag;
 	
 	ob= OBACT;
 	
@@ -311,27 +312,9 @@
 	Mat3Ortho(td->axismtx);
 	Mat3Inv(td->smtx, td->mtx);
 	
-	if( GS(id->name)==ID_ME) {
-		Mesh *me= ob->data;
-		me->texflag &= ~AUTOSPACE;
-		td->loc= me->loc;
-		td->ext->rot= me->rot;
-		td->ext->size= me->size;
+	if (give_obdata_texspace(ob, &texflag, &td->loc, &td->ext->size, &td->ext->rot)) {
+		*texflag &= ~AUTOSPACE;
 	}
-	else if( GS(id->name)==ID_CU) {
-		Curve *cu= ob->data;
-		cu->texflag &= ~CU_AUTOSPACE;
-		td->loc= cu->loc;
-		td->ext->rot= cu->rot;
-		td->ext->size= cu->size;
-	}
-	else if( GS(id->name)==ID_MB) {
-		MetaBall *mb= ob->data;
-		mb->texflag &= ~MB_AUTOSPACE;
-		td->loc= mb->loc;
-		td->ext->rot= mb->rot;
-		td->ext->size= mb->size;
-	}
 	
 	VECCOPY(td->iloc, td->loc);
 	VECCOPY(td->ext->irot, td->ext->rot);





More information about the Bf-blender-cvs mailing list