Revision: 16625
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16625
Author:   campbellbarton
Date:     2008-09-20 12:11:42 +0200 (Sat, 20 Sep 2008)

Log Message:
-----------
Python api access to obcolor
Option to copy obcolor in the copy menu
Option to select same color in select grouped menu
console.py - mistake in last commit caused a python error

Modified Paths:
--------------
    trunk/blender/release/scripts/console.py
    trunk/blender/source/blender/blenlib/BLI_arithb.h
    trunk/blender/source/blender/blenlib/intern/arithb.c
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/python/api2_2x/doc/Object.py
    trunk/blender/source/blender/src/editobject.c
    trunk/blender/source/blender/src/space.c

Modified: trunk/blender/release/scripts/console.py
===================================================================
--- trunk/blender/release/scripts/console.py    2008-09-20 10:10:50 UTC (rev 
16624)
+++ trunk/blender/release/scripts/console.py    2008-09-20 10:11:42 UTC (rev 
16625)
@@ -417,8 +417,8 @@
                        histIndex = -1
                        
                        # When wrapping allow 1 plank lines
-                       if cmdBuffer[-1].cmd != '':
-                               cmdBuffer[-1].cmd = ''
+                       if cmdBuffer[-1].cmd != ' ':
+                               cmdBuffer[-1].cmd = ' '
                                return
                
                histIndex_orig = histIndex
@@ -437,8 +437,8 @@
                        histIndex = -len(cmdBuffer)
                        
                        # When wrapping allow 1 plank lines
-                       if cmdBuffer[-1].cmd != '':
-                               cmdBuffer[-1].cmd = ''
+                       if cmdBuffer[-1].cmd != ' ':
+                               cmdBuffer[-1].cmd = ' '
                                return
                        
                histIndex_orig = histIndex

Modified: trunk/blender/source/blender/blenlib/BLI_arithb.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_arithb.h   2008-09-20 10:10:50 UTC 
(rev 16624)
+++ trunk/blender/source/blender/blenlib/BLI_arithb.h   2008-09-20 10:11:42 UTC 
(rev 16625)
@@ -91,6 +91,7 @@
 float sasqrt(float fac);
 
 int FloatCompare(float *v1, float *v2, float limit);
+int FloatCompare4(float *v1, float *v2, float limit);
 float FloatLerpf(float target, float origin, float fac);
 
 float CalcNormFloat(float *v1, float *v2, float *v3, float *n);

Modified: trunk/blender/source/blender/blenlib/intern/arithb.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/arithb.c        2008-09-20 
10:10:50 UTC (rev 16624)
+++ trunk/blender/source/blender/blenlib/intern/arithb.c        2008-09-20 
10:11:42 UTC (rev 16625)
@@ -1026,6 +1026,19 @@
        return 0;
 }
 
+int FloatCompare4( float *v1,  float *v2, float limit)
+{
+
+       if( fabs(v1[0]-v2[0])<limit ) {
+               if( fabs(v1[1]-v2[1])<limit ) {
+                       if( fabs(v1[2]-v2[2])<limit ) {
+                               if( fabs(v1[3]-v2[3])<limit ) return 1;
+                       }
+               }
+       }
+       return 0;
+}
+
 float FloatLerpf( float target, float origin, float fac)
 {
        return (fac*target) + (1.0f-fac)*origin;

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c        2008-09-20 
10:10:50 UTC (rev 16624)
+++ trunk/blender/source/blender/python/api2_2x/Object.c        2008-09-20 
10:11:42 UTC (rev 16625)
@@ -3305,6 +3305,33 @@
        Py_RETURN_NONE;
 }
 
+static PyObject *Object_getColor( BPy_Object *self, void *type )
+{
+       return Py_BuildValue( "(ffff)", self->object->col[0], 
self->object->col[1], self->object->col[2], self->object->col[3] );
+}
+
+static int Object_setColor( BPy_Object *self, PyObject *value )
+{
+       int i;
+       float color[4];
+       struct Object *object = self->object;
+
+       value = PySequence_Tuple( value );
+
+       if( !value || !PyArg_ParseTuple( value, "ffff", &color[0], &color[1], 
&color[2], &color[3] ) ) {
+               Py_XDECREF( value );
+               return EXPP_ReturnIntError( PyExc_TypeError,
+                                       "expected a list or tuple of 3 floats" 
);
+       }
+
+       Py_DECREF( value );
+       
+       for( i = 0; i < 4; ++i ) {
+               object->col[i] = MAX2(MIN2(color[i], 1.0), 0);
+       }
+       return 0;
+}
+
 /* __copy__() */
 static  PyObject *Object_copy(BPy_Object * self)
 {
@@ -5189,7 +5216,10 @@
         (getter)Object_getDrawModeBits, (setter)Object_setDrawModeBits,
         "Transparent materials for the active object (mesh only) enabled",
         (void *)OB_DRAWTRANSP},
-
+       {"color",
+        (getter)Object_getColor, (setter)Object_setColor,
+        "Object color used by the game engine and optionally for materials",
+        NULL},
        {"enableNLAOverride",
         (getter)Object_getNLAflagBits, (setter)Object_setNLAflagBits,
         "Toggles Action-NLA based animation",

Modified: trunk/blender/source/blender/python/api2_2x/doc/Object.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Object.py   2008-09-20 
10:10:50 UTC (rev 16624)
+++ trunk/blender/source/blender/python/api2_2x/doc/Object.py   2008-09-20 
10:11:42 UTC (rev 16625)
@@ -552,6 +552,8 @@
        @ivar transp: Enable transparent materials for the active object
                (mesh only).  Also see B{TRANSP} bit in L{drawMode} attribute.
        @type transp: boolean
+       @ivar color: Object color used by the game engine and optionally for 
materials, 4 floats for RGBA object color.
+       @type color: tuple of 4 floats between 0 and 1
        @ivar drawMode: The object's drawing mode bitfield.
                See L{DrawModes} constant dict for values.
        @type drawMode: int

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c       2008-09-20 10:10:50 UTC 
(rev 16624)
+++ trunk/blender/source/blender/src/editobject.c       2008-09-20 10:11:42 UTC 
(rev 16625)
@@ -3672,6 +3672,9 @@
                                else if(event==30) { /* index object */
                                        base->object->index= ob->index;
                                }
+                               else if(event==31) { /* object color */
+                                       QUATCOPY(base->object->col, ob->col);
+                               }
                        }
                }
                base= base->next;
@@ -3710,7 +3713,7 @@
         * view3d_edit_object_copyattrmenu() and in toolbox.c
         */
        
-       strcpy(str, "Copy Attributes %t|Location%x1|Rotation%x2|Size%x3|Draw 
Options%x4|Time Offset%x5|Dupli%x6|%l|Mass%x7|Damping%x8|All Physical 
Attributes%x11|Properties%x9|Logic Bricks%x10|Protected Transform%x29|%l");
+       strcpy(str, "Copy Attributes %t|Location%x1|Rotation%x2|Size%x3|Draw 
Options%x4|Time Offset%x5|Dupli%x6|Object Color%x31|%l|Mass%x7|Damping%x8|All 
Physical Attributes%x11|Properties%x9|Logic Bricks%x10|Protected 
Transform%x29|%l");
        
        strcat (str, "|Object Constraints%x22");
        strcat (str, "|NLA Strips%x26");

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c    2008-09-20 10:10:50 UTC (rev 
16624)
+++ trunk/blender/source/blender/src/space.c    2008-09-20 10:11:42 UTC (rev 
16625)
@@ -897,6 +897,25 @@
        return changed;
 }
 
+static short select_same_color(Object *ob)
+{
+       char changed = 0;
+       Base *base = FIRSTBASE;
+       
+       if (!ob)
+               return 0;
+       
+       while(base) {
+               if (BASE_SELECTABLE(base) && !(base->flag & SELECT) && 
(FloatCompare(base->object->col, ob->col, 0.005))) {
+                       base->flag |= SELECT;
+                       base->object->flag |= SELECT;
+                       changed = 1;
+               }
+               base= base->next;
+       }
+       return changed;
+}
+
 void select_object_grouped(short nr)
 {
        short changed = 0;
@@ -909,6 +928,7 @@
        else if(nr==7)  changed = select_same_group(OBACT);
        else if(nr==8)  changed = select_object_hooks(OBACT);
        else if(nr==9)  changed = select_same_index_object(OBACT);
+       else if(nr==10) changed = select_same_color(OBACT);
        
        if (changed) {
                countall();
@@ -934,7 +954,9 @@
                    "Objects of Same Type%x5|"
                                "Objects on Shared Layers%x6|"
                 "Objects in Same Group%x7|"
-                "Object Hooks%x8|Object PassIndex%x9");
+                "Object Hooks%x8|"
+                               "Object PassIndex%x9|"
+                               "Object Color%x10");
 
        /* here we go */
        


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to