orange: added Object.insertPoseKey to continue with the attempt to make nla/path walkcycle baking to actions
This commit is contained in:
		@@ -197,6 +197,7 @@ static PyObject *Object_setEuler( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_setMatrix( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_setIpo( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_insertIpoKey( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_insertPoseKey( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_setLocation( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_setMaterials( BPy_Object * self, PyObject * args );
 | 
			
		||||
static PyObject *Object_setName( BPy_Object * self, PyObject * args );
 | 
			
		||||
@@ -517,6 +518,8 @@ works only if self and the object specified are of the same type."},
 | 
			
		||||
	 "() - Unlink ipo from this object"},
 | 
			
		||||
	 {"insertIpoKey", ( PyCFunction ) Object_insertIpoKey, METH_VARARGS,
 | 
			
		||||
	 "( Object IPO type ) - Inserts a key into IPO"},
 | 
			
		||||
	 {"insertPoseKey", ( PyCFunction ) Object_insertPoseKey, METH_VARARGS,
 | 
			
		||||
	 "( Object Pose type ) - Inserts a key into Action"},
 | 
			
		||||
	{"getAllProperties", ( PyCFunction ) Object_getAllProperties,
 | 
			
		||||
	 METH_NOARGS,
 | 
			
		||||
	 "() - Get all the properties from this object"},
 | 
			
		||||
@@ -2000,7 +2003,7 @@ static PyObject *Object_setIpo( BPy_Object * self, PyObject * args )
 | 
			
		||||
static PyObject *Object_insertIpoKey( BPy_Object * self, PyObject * args )
 | 
			
		||||
{
 | 
			
		||||
	Object *ob= self->object;
 | 
			
		||||
    int key = 0;
 | 
			
		||||
	int key = 0;
 | 
			
		||||
	char *actname= NULL;
 | 
			
		||||
    
 | 
			
		||||
	if( !PyArg_ParseTuple( args, "i", &( key ) ) )
 | 
			
		||||
@@ -2055,6 +2058,59 @@ static PyObject *Object_insertIpoKey( BPy_Object * self, PyObject * args )
 | 
			
		||||
	return EXPP_incr_ret( Py_None );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Object_insertPoseKey()
 | 
			
		||||
 *  inserts Action Pose key (for LOC, ROT, SIZE, LOCROT, or LOCROTSIZE)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
static PyObject *Object_insertPoseKey( BPy_Object * self, PyObject * args )
 | 
			
		||||
{
 | 
			
		||||
	Object *ob= self->object;
 | 
			
		||||
	char *chanName;
 | 
			
		||||
 | 
			
		||||
	/* for doing the time trick, similar to editaction bake_action_with_client() */
 | 
			
		||||
	int oldframe;
 | 
			
		||||
	int curframe;
 | 
			
		||||
 | 
			
		||||
	if( !PyArg_ParseTuple( args, "si", &chanName, &curframe ) )
 | 
			
		||||
		return ( EXPP_ReturnPyObjError( PyExc_AttributeError,										"expected a string and an int argument" ) );
 | 
			
		||||
 | 
			
		||||
	oldframe = G.scene->r.cfra;
 | 
			
		||||
	G.scene->r.cfra = curframe;
 | 
			
		||||
 | 
			
		||||
	/* Apply the object ipo */
 | 
			
		||||
	/* uses the current action of the object */
 | 
			
		||||
	extract_pose_from_action(ob->pose, ob->action, curframe);
 | 
			
		||||
	where_is_pose(ob);
 | 
			
		||||
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_LOC_X);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_LOC_Y);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_LOC_Z);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_QUAT_X);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_QUAT_Y);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_QUAT_Z);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_QUAT_W);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_SIZE_X);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_SIZE_Y);
 | 
			
		||||
	insertkey(&ob->id, ID_PO, chanName, NULL, AC_SIZE_Z);
 | 
			
		||||
	
 | 
			
		||||
	allspace(REMAKEIPO, 0);
 | 
			
		||||
	EXPP_allqueue(REDRAWIPO, 0);
 | 
			
		||||
	EXPP_allqueue(REDRAWVIEW3D, 0);
 | 
			
		||||
	EXPP_allqueue(REDRAWACTION, 0);
 | 
			
		||||
	EXPP_allqueue(REDRAWNLA, 0);
 | 
			
		||||
 | 
			
		||||
	G.scene->r.cfra = oldframe;
 | 
			
		||||
 | 
			
		||||
	/* restore */
 | 
			
		||||
	extract_pose_from_action(ob->pose, ob->action, G.scene->r.cfra);
 | 
			
		||||
	where_is_pose(ob);
 | 
			
		||||
	
 | 
			
		||||
	allqueue(REDRAWACTION, 1);
 | 
			
		||||
 | 
			
		||||
	return EXPP_incr_ret( Py_None );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static PyObject *Object_setLocation( BPy_Object * self, PyObject * args )
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user