Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/api2_2x/Armature.c6
-rw-r--r--source/blender/python/api2_2x/Bone.c121
-rw-r--r--source/blender/python/api2_2x/Object.c44
-rw-r--r--source/blender/python/api2_2x/Object.h1
-rw-r--r--source/blender/python/api2_2x/Scene.c25
-rw-r--r--source/blender/python/api2_2x/doc/Object.py3
-rw-r--r--source/blender/python/api2_2x/doc/Scene.py2
7 files changed, 96 insertions, 106 deletions
diff --git a/source/blender/python/api2_2x/Armature.c b/source/blender/python/api2_2x/Armature.c
index a1c0e5eea9a..422016b93fe 100644
--- a/source/blender/python/api2_2x/Armature.c
+++ b/source/blender/python/api2_2x/Armature.c
@@ -610,9 +610,9 @@ static PyObject *Armature_addBone( BPy_Armature * self, PyObject * args )
//rebuild_bone_parent_matrix(py_bone->bone);
- precalc_bonelist_irestmats( &self->armature->bonebase );
- precalc_armature_posemats( self->armature );
- precalc_bone_defmat( py_bone->bone );
+ //precalc_bonelist_irestmats( &self->armature->bonebase );
+ //precalc_armature_posemats( self->armature );
+ //precalc_bone_defmat( py_bone->bone );
Py_INCREF( Py_None );
return Py_None;
diff --git a/source/blender/python/api2_2x/Bone.c b/source/blender/python/api2_2x/Bone.c
index 686b791a846..7c96a02d595 100644
--- a/source/blender/python/api2_2x/Bone.c
+++ b/source/blender/python/api2_2x/Bone.c
@@ -91,12 +91,14 @@ static PyObject *Bone_setName( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setRoll( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setHead( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setTail( BPy_Bone * self, PyObject * args );
+ // note; this can only be done as POSE operation
static PyObject *Bone_setLoc( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setSize( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setQuat( BPy_Bone * self, PyObject * args );
+static PyObject *Bone_setPose( BPy_Bone * self, PyObject * args );
+
static PyObject *Bone_setParent( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setWeight( BPy_Bone * self, PyObject * args );
-static PyObject *Bone_setPose( BPy_Bone * self, PyObject * args );
static PyObject *Bone_setBoneclass( BPy_Bone * self, PyObject * args );
static PyObject *Bone_getRestMatrix( BPy_Bone * self, PyObject * args );
@@ -261,7 +263,7 @@ static int updatePyBone( BPy_Bone * self )
BLI_strncpy( self->parent, parent_str,
strlen( parent_str ) + 1 );
}
-
+#if 0
for( x = 0; x < 3; x++ ) {
self->head->vec[x] = self->bone->head[x];
self->tail->vec[x] = self->bone->tail[x];
@@ -288,6 +290,7 @@ static int updatePyBone( BPy_Bone * self )
self->bone->posemat[x][y];
}
}
+#endif
return 1;
}
}
@@ -315,27 +318,27 @@ int updateBoneData( BPy_Bone * self, Bone * parent )
for( x = 0; x < 3; x++ ) {
self->bone->head[x] = self->head->vec[x];
self->bone->tail[x] = self->tail->vec[x];
- self->bone->loc[x] = self->loc->vec[x];
- self->bone->dloc[x] = self->dloc->vec[x];
- self->bone->size[x] = self->size->vec[x];
- self->bone->dsize[x] = self->dsize->vec[x];
+// self->bone->loc[x] = self->loc->vec[x];
+// self->bone->dloc[x] = self->dloc->vec[x];
+// self->bone->size[x] = self->size->vec[x];
+// self->bone->dsize[x] = self->dsize->vec[x];
}
for( x = 0; x < 4; x++ ) {
- self->bone->quat[x] = self->quat->quat[x];
- self->bone->dquat[x] = self->dquat->quat[x];
+// self->bone->quat[x] = self->quat->quat[x];
+// self->bone->dquat[x] = self->dquat->quat[x];
}
for( x = 0; x < 4; x++ ) {
for( y = 0; y < 4; y++ ) {
- self->bone->obmat[x][y] =
- self->obmat->matrix[x][y];
- self->bone->parmat[x][y] =
- self->parmat->matrix[x][y];
- self->bone->defmat[x][y] =
- self->defmat->matrix[x][y];
- self->bone->irestmat[x][y] =
- self->irestmat->matrix[x][y];
- self->bone->posemat[x][y] =
- self->posemat->matrix[x][y];
+// self->bone->obmat[x][y] =
+// self->obmat->matrix[x][y];
+// self->bone->parmat[x][y] =
+// self->parmat->matrix[x][y];
+// self->bone->defmat[x][y] =
+// self->defmat->matrix[x][y];
+// self->bone->irestmat[x][y] =
+// self->irestmat->matrix[x][y];
+// self->bone->posemat[x][y] =
+// self->posemat->matrix[x][y];
}
}
return 1;
@@ -828,9 +831,10 @@ static PyObject *Bone_getLoc( BPy_Bone * self )
//use bone datastruct
attr = newVectorObject( PyMem_Malloc( 3 * sizeof( float ) ),
3 );
- ( ( VectorObject * ) attr )->vec[0] = self->bone->loc[0];
- ( ( VectorObject * ) attr )->vec[1] = self->bone->loc[1];
- ( ( VectorObject * ) attr )->vec[2] = self->bone->loc[2];
+
+// ( ( VectorObject * ) attr )->vec[0] = self->bone->loc[0];
+// ( ( VectorObject * ) attr )->vec[1] = self->bone->loc[1];
+// ( ( VectorObject * ) attr )->vec[2] = self->bone->loc[2];
}
if( attr )
return attr;
@@ -856,9 +860,9 @@ static PyObject *Bone_getSize( BPy_Bone * self )
//use bone datastruct
attr = newVectorObject( PyMem_Malloc( 3 * sizeof( float ) ),
3 );
- ( ( VectorObject * ) attr )->vec[0] = self->bone->size[0];
- ( ( VectorObject * ) attr )->vec[1] = self->bone->size[1];
- ( ( VectorObject * ) attr )->vec[2] = self->bone->size[2];
+// ( ( VectorObject * ) attr )->vec[0] = self->bone->size[0];
+// ( ( VectorObject * ) attr )->vec[1] = self->bone->size[1];
+// ( ( VectorObject * ) attr )->vec[2] = self->bone->size[2];
}
if( attr )
return attr;
@@ -885,10 +889,10 @@ static PyObject *Bone_getQuat( BPy_Bone * self )
//use bone datastruct
attr = newQuaternionObject( PyMem_Malloc
( 4 * sizeof( float ) ) );
- ( ( QuaternionObject * ) attr )->quat[0] = self->bone->quat[0];
- ( ( QuaternionObject * ) attr )->quat[1] = self->bone->quat[1];
- ( ( QuaternionObject * ) attr )->quat[2] = self->bone->quat[2];
- ( ( QuaternionObject * ) attr )->quat[3] = self->bone->quat[3];
+// ( ( QuaternionObject * ) attr )->quat[0] = self->bone->quat[0];
+// ( ( QuaternionObject * ) attr )->quat[1] = self->bone->quat[1];
+// ( ( QuaternionObject * ) attr )->quat[2] = self->bone->quat[2];
+// ( ( QuaternionObject * ) attr )->quat[3] = self->bone->quat[3];
}
return attr;
@@ -1095,9 +1099,9 @@ static PyObject *Bone_setLoc( BPy_Bone * self, PyObject * args )
self->loc->vec[2] = f3;
} else {
//use bone datastruct
- self->bone->loc[0] = f1;
- self->bone->loc[1] = f2;
- self->bone->loc[2] = f3;
+// self->bone->loc[0] = f1;
+// self->bone->loc[1] = f2;
+// self->bone->loc[2] = f3;
}
return EXPP_incr_ret( Py_None );
}
@@ -1124,9 +1128,9 @@ static PyObject *Bone_setSize( BPy_Bone * self, PyObject * args )
self->size->vec[2] = f3;
} else {
//use bone datastruct
- self->bone->size[0] = f1;
- self->bone->size[1] = f2;
- self->bone->size[2] = f3;
+// self->bone->size[0] = f1;
+// self->bone->size[1] = f2;
+// self->bone->size[2] = f3;
}
return EXPP_incr_ret( Py_None );
}
@@ -1168,10 +1172,10 @@ static PyObject *Bone_setQuat( BPy_Bone * self, PyObject * args )
self->quat->quat[3] = f4;
} else {
//use bone datastruct
- self->bone->quat[0] = f1;
- self->bone->quat[1] = f2;
- self->bone->quat[2] = f3;
- self->bone->quat[3] = f4;
+// self->bone->quat[0] = f1;
+// self->bone->quat[1] = f2;
+// self->bone->quat[2] = f3;
+// self->bone->quat[3] = f4;
}
return EXPP_incr_ret( Py_None );
}
@@ -1543,19 +1547,22 @@ static PyObject *Bone_setPose( BPy_Bone * self, PyObject * args )
object->pose = MEM_callocN( sizeof( bPose ), "Pose" );
//if bone does have a channel create one
- verify_pose_channel( object->pose, self->bone->name );
+ // do not use anymore! (ton)
+ chan= verify_pose_channel( object->pose, self->bone->name );
+
//create temp Pose Channel
- chan = MEM_callocN( sizeof( bPoseChannel ), "PoseChannel" );
+ // chan = MEM_callocN( sizeof( bPoseChannel ), "PoseChannel" );
//set the variables for this pose
- memcpy( chan->loc, self->bone->loc, sizeof( chan->loc ) );
- memcpy( chan->quat, self->bone->quat, sizeof( chan->quat ) );
- memcpy( chan->size, self->bone->size, sizeof( chan->size ) );
+// memcpy( chan->loc, self->bone->loc, sizeof( chan->loc ) );
+// memcpy( chan->quat, self->bone->quat, sizeof( chan->quat ) );
+// memcpy( chan->size, self->bone->size, sizeof( chan->size ) );
strcpy( chan->name, self->bone->name );
chan->flag |= flagValue;
//set it to the channel
- setChan = set_pose_channel( object->pose, chan );
+ // setChan = set_pose_channel( object->pose, chan );
//frees unlinked pose/bone channels from object
- collect_pose_garbage( object );
+/* note; changing an Armature requires building poses again, consult me! (ton) */
+ // collect_pose_garbage( object );
//create an action if one not already assigned to object
if( !py_action && !object->action ) {
@@ -1600,8 +1607,8 @@ static PyObject *Bone_setPose( BPy_Bone * self, PyObject * args )
//rebuild ipos
remake_action_ipos( object->action );
- //rebuild displists
- rebuild_all_armature_displists( );
+ //signal to rebuild displists (new! added by ton)
+ object->recalc |= OB_RECALC_DATA;
}
return EXPP_incr_ret( Py_None );
}
@@ -1667,6 +1674,11 @@ static PyObject *Bone_hasIK( BPy_Bone * self )
}
//--------------- BPy_Bone.getRestMatrix()-------------------------
+
+/* we now got BoneSpace, ArmatureSpace, PoseSpace, WorldSpace.
+ check DNA_armature.h, only read from data itself, dont use evil calls
+ that evaluate animation system anymore (ton) */
+
static PyObject *Bone_getRestMatrix( BPy_Bone * self, PyObject * args )
{
char *local = "worldspace";
@@ -1691,8 +1703,8 @@ static PyObject *Bone_getRestMatrix( BPy_Bone * self, PyObject * args )
//use python vars
if( BLI_streq( local, worldspace ) ) {
VecSubf( delta, self->tail->vec, self->head->vec );
- make_boneMatrixvr( (float ( * )[4]) *( ( MatrixObject * ) matrix )->
- matrix, delta, self->roll );
+// make_boneMatrixvr( (float ( * )[4]) *( ( MatrixObject * ) matrix )->
+// matrix, delta, self->roll );
} else if( BLI_streq( local, bonespace ) ) {
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
"bone not yet linked to an armature....'" ) );
@@ -1706,12 +1718,13 @@ static PyObject *Bone_getRestMatrix( BPy_Bone * self, PyObject * args )
1 );
} else if( BLI_streq( local, bonespace ) ) {
VecSubf( delta, self->bone->tail, self->bone->head );
- make_boneMatrixvr( (float ( * )[4]) *( ( MatrixObject * ) matrix )->
- matrix, delta, self->bone->roll );
+// make_boneMatrixvr( (float ( * )[4]) *( ( MatrixObject * ) matrix )->
+// matrix, delta, self->bone->roll );
if( self->bone->parent ) {
- get_bone_root_pos( self->bone, root, 1 );
- get_bone_root_pos( self->bone->parent, p_root,
- 1 );
+
+// get_bone_root_pos( self->bone, root, 1 );
+// get_bone_root_pos( self->bone->parent, p_root,
+// 1 );
VecSubf( delta, root, p_root );
VECCOPY( ( ( MatrixObject * ) matrix )->
matrix[3], delta );
diff --git a/source/blender/python/api2_2x/Object.c b/source/blender/python/api2_2x/Object.c
index 40412520797..67a94a8b4fd 100644
--- a/source/blender/python/api2_2x/Object.c
+++ b/source/blender/python/api2_2x/Object.c
@@ -46,15 +46,15 @@
#include "DNA_object_force.h"
#include <DNA_property_types.h>
-#include <BSE_edit.h>
-
+#include <BKE_depsgraph.h>
+#include <BKE_font.h>
#include <BKE_property.h>
#include <BKE_mball.h>
-#include <BKE_font.h>
#include <BKE_softbody.h>
#include <BIF_editview.h>
#include <BSE_editipo.h>
+#include <BSE_edit.h>
#include "Ipo.h"
#include "Lattice.h"
@@ -581,7 +581,6 @@ PyObject *M_Object_New( PyObject * self, PyObject * args )
type = OB_CURVE;
else if (strcmp (str_type, "Text") == 0)
type = OB_FONT;
-/* else if (strcmp (str_type, "Ika") == 0) type = OB_IKA; */
else if( strcmp( str_type, "Lamp" ) == 0 )
type = OB_LAMP;
else if( strcmp( str_type, "Lattice" ) == 0 )
@@ -865,7 +864,7 @@ static PyObject *Object_clrParent( BPy_Object * self, PyObject * args )
}
if( !fast ) {
- sort_baselist( G.scene );
+ DAG_scene_sort( G.scene );
}
Py_INCREF( Py_None );
@@ -891,7 +890,7 @@ static PyObject *Object_clearTrack( BPy_Object * self, PyObject * args )
}
if( !fast ) {
- sort_baselist( G.scene );
+ DAG_scene_sort( G.scene );
}
Py_INCREF( Py_None );
@@ -941,10 +940,6 @@ int EXPP_add_obdata( struct Object *object )
case OB_FONT:
object->data = add_curve(OB_FONT);
break;
- case OB_IKA:
- object->data = add_ika();
- object->dt = OB_WIRE;
- break;
case OB_WAVE:
object->data = add_wave();
break;
@@ -1290,8 +1285,6 @@ static PyObject *Object_getType( BPy_Object * self )
return ( Py_BuildValue( "s", "Empty" ) );
case OB_FONT:
return ( Py_BuildValue( "s", "Text" ) );
- case OB_IKA:
- return ( Py_BuildValue( "s", "Ika" ) );
case OB_LAMP:
return ( Py_BuildValue( "s", "Lamp" ) );
case OB_LATTICE:
@@ -1597,7 +1590,7 @@ static PyObject *Object_makeParent( BPy_Object * self, PyObject * args )
}
if( !fast ) {
- sort_baselist( G.scene );
+ DAG_scene_sort( G.scene );
}
// We don't need the child object anymore.
Py_DECREF (py_child);
@@ -1984,7 +1977,7 @@ static PyObject *Object_makeTrack( BPy_Object * self, PyObject * args )
ob->track = tracked->object;
if( !fast )
- sort_baselist( G.scene );
+ DAG_scene_sort( G.scene );
return EXPP_incr_ret( Py_None );
}
@@ -2414,7 +2407,6 @@ static void Object_dealloc( BPy_Object * obj )
static PyObject *Object_getAttr( BPy_Object * obj, char *name )
{
struct Object *object;
- struct Ika *ika;
object = obj->object;
if( StringEqual( name, "LocX" ) )
@@ -2475,25 +2467,7 @@ static PyObject *Object_getAttr( BPy_Object * obj, char *name )
return ( Py_BuildValue
( "fff", object->dsize[0], object->dsize[1],
object->dsize[2] ) );
- /* no IKA anymore, I think we can remove this. (theeth)
- if( strncmp( name, "Eff", 3 ) == 0 ) {
- if( ( object->type == OB_IKA ) && ( object->data != NULL ) ) {
- ika = object->data;
- switch ( name[3] ) {
- case 'X':
- return ( PyFloat_FromDouble( ika->effg[0] ) );
- case 'Y':
- return ( PyFloat_FromDouble( ika->effg[1] ) );
- case 'Z':
- return ( PyFloat_FromDouble( ika->effg[2] ) );
- default:
- // Do we need to display a sensible error message here?
- return ( NULL );
- }
- }
- return ( NULL );
- }
- */
+
/* accept both Layer (old, for compatibility) and Layers */
if( strncmp( name, "Layer", 5 ) == 0)
return ( PyInt_FromLong( object->lay ) );
@@ -2612,7 +2586,6 @@ static int Object_setAttr( BPy_Object * obj, char *name, PyObject * value )
{
PyObject *valtuple, *result=NULL;
struct Object *object;
- struct Ika *ika;
object = obj->object;
@@ -2682,6 +2655,7 @@ static int Object_setAttr( BPy_Object * obj, char *name, PyObject * value )
return ( !PyArg_ParseTuple
( value, "fff", &( object->dsize[0] ),
&( object->dsize[1] ), &( object->dsize[2] ) ) );
+
if( StringEqual( name, "DupSta" ) )
return ( !PyArg_Parse( value, "h", &( object->dupsta ) ) );
diff --git a/source/blender/python/api2_2x/Object.h b/source/blender/python/api2_2x/Object.h
index c1b3025a386..0c629f325ce 100644
--- a/source/blender/python/api2_2x/Object.h
+++ b/source/blender/python/api2_2x/Object.h
@@ -52,7 +52,6 @@
#include <DNA_armature_types.h>
#include <DNA_action_types.h>
#include <DNA_ID.h>
-#include <DNA_ika_types.h>
#include <DNA_listBase.h>
#include <DNA_scene_types.h>
#include <DNA_userdef_types.h>
diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c
index 4b65aa72321..b9ae673ffb1 100644
--- a/source/blender/python/api2_2x/Scene.c
+++ b/source/blender/python/api2_2x/Scene.c
@@ -31,19 +31,26 @@
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
-#include <BKE_main.h>
+#include <MEM_guardedalloc.h> /* for MEM_callocN */
+
+#include <DNA_screen_types.h> /* SPACE_VIEW3D, SPACE_SEQ */
+#include <DNA_scriptlink_types.h>
+
+#include <BKE_depsgraph.h>
#include <BKE_global.h>
-#include <BKE_scene.h>
#include <BKE_library.h>
+#include <BKE_main.h>
+#include <BKE_scene.h>
+
#include <BLI_blenlib.h>
+
#include <BSE_drawview.h> /* for play_anim */
#include <BSE_headerbuttons.h> /* for copy_scene */
+
#include <BIF_drawscene.h> /* for set_scene */
#include <BIF_space.h> /* for copy_view3d_lock() */
#include <BIF_screen.h> /* curarea */
-#include <DNA_screen_types.h> /* SPACE_VIEW3D, SPACE_SEQ */
-#include <DNA_scriptlink_types.h>
-#include <MEM_guardedalloc.h> /* for MEM_callocN */
+
#include <mydevice.h> /* for #define REDRAW */
#include "Object.h"
@@ -141,7 +148,7 @@ static PyMethodDef BPy_Scene_methods[] = {
{"update", ( PyCFunction ) Scene_update, METH_VARARGS,
"(full = 0) - Update scene self.\n"
"full = 0: sort the base list of objects."
- "full = 1: full update -- also regroups, does ipos, ikas, keys"},
+ "full = 1: full update -- also regroups, does ipos, keys"},
{"link", ( PyCFunction ) Scene_link, METH_VARARGS,
"(obj) - Link Object obj to this scene"},
{"unlink", ( PyCFunction ) Scene_unlink, METH_VARARGS,
@@ -702,12 +709,12 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected nothing or int (0 or 1) argument" );
-/* Under certain circunstances, sort_baselist *here* can crash Blender.
+/* Under certain circunstances, DAG_scene_sort *here* can crash Blender.
* A "RuntimeError: max recursion limit" happens when a scriptlink
* on frame change has scene.update(1).
* Investigate better how to avoid this. */
if( !full )
- sort_baselist( scene );
+ DAG_scene_sort( scene );
else if( full == 1 )
set_scene_bg( scene );
@@ -716,7 +723,7 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args )
return EXPP_ReturnPyObjError( PyExc_ValueError,
"in method scene.update(full), full should be:\n"
"0: to only sort scene elements (old behavior); or\n"
- "1: for a full update (regroups, does ipos, ikas, keys, etc.)" );
+ "1: for a full update (regroups, does ipos, keys, etc.)" );
Py_INCREF( Py_None );
return Py_None;
diff --git a/source/blender/python/api2_2x/doc/Object.py b/source/blender/python/api2_2x/doc/Object.py
index 1247aa576e8..797382af0de 100644
--- a/source/blender/python/api2_2x/doc/Object.py
+++ b/source/blender/python/api2_2x/doc/Object.py
@@ -137,9 +137,6 @@ class Object:
@ivar dSizeY: The delta Y size of the object.
@ivar dSizeZ: The delta Z size of the object.
@ivar dsize: The delta (X,Y,Z) size of the object.
- @ivar EffX: The X effector coordinate of the object. Only applies to IKA.
- @ivar EffY: The Y effector coordinate of the object. Only applies to IKA.
- @ivar EffZ: The Z effector coordinate of the object. Only applies to IKA.
@type Layers: integer (bitmask)
@ivar Layers: The object layers (also check the newer attribute
L{layers<Object.Object.layers>}). This value is a bitmask with at
diff --git a/source/blender/python/api2_2x/doc/Scene.py b/source/blender/python/api2_2x/doc/Scene.py
index 8314c2beaa7..d871cc714ba 100644
--- a/source/blender/python/api2_2x/doc/Scene.py
+++ b/source/blender/python/api2_2x/doc/Scene.py
@@ -158,7 +158,7 @@ class Scene:
@type full: int
@param full: A bool to control the level of updating:
- 0: sort the base list of objects.
- - 1: sort and also regroup, do ipos, ikas, keys, script links, etc.
+ - 1: sort and also regroup, do ipos, keys, script links, etc.
@warn: When in doubt, try with I{full = 0} first, since it is faster.
The "full" update is a recent addition to this method.
"""