- switch to using softbody modifier, controls enabling but does not have
variables, these are still in same place. enable button automatically makes/enables modifier. - changed hook to hook modifier conversion to happen on direct link, required to make sure we don't forget to free any memory for files saved with 2.38 that have hooks. - update modifier interface to enforce modifiers with the require-original- data flag to not move beyond deforming modifiers. - enforce only one softbody modifier allowed NOTE: Once again, no modifier stack for lattice yet means softbody for lattice does not work atm.
This commit is contained in:
@@ -259,10 +259,6 @@ static PyObject *Object_getSBInnerSpringFriction( BPy_Object * self );
|
||||
static PyObject *Object_setSBInnerSpringFriction( BPy_Object * self, PyObject * args );
|
||||
static PyObject *Object_getSBDefaultGoal( BPy_Object * self );
|
||||
static PyObject *Object_setSBDefaultGoal( BPy_Object * self, PyObject * args );
|
||||
static PyObject *Object_getSBEnable( BPy_Object * self );
|
||||
static PyObject *Object_setSBEnable( BPy_Object * self, PyObject * args );
|
||||
static PyObject *Object_getSBPostDef( BPy_Object * self );
|
||||
static PyObject *Object_setSBPostDef( BPy_Object * self, PyObject * args );
|
||||
static PyObject *Object_getSBUseGoal( BPy_Object * self );
|
||||
static PyObject *Object_setSBUseGoal( BPy_Object * self, PyObject * args );
|
||||
static PyObject *Object_getSBUseEdges( BPy_Object * self );
|
||||
@@ -422,14 +418,6 @@ automatic when the script finishes."},
|
||||
"Returns SB DefaultGoal"},
|
||||
{"setSBDefaultGoal", ( PyCFunction ) Object_setSBDefaultGoal, METH_VARARGS,
|
||||
"Sets SB DefaultGoal"},
|
||||
{"getSBEnable", ( PyCFunction ) Object_getSBEnable, METH_NOARGS,
|
||||
"Returns SB Enable"},
|
||||
{"setSBEnable", ( PyCFunction ) Object_setSBEnable, METH_VARARGS,
|
||||
"Sets SB Enable"},
|
||||
{"getSBPostDef", ( PyCFunction ) Object_getSBPostDef, METH_NOARGS,
|
||||
"Returns SB PostDef"},
|
||||
{"setSBPostDef", ( PyCFunction ) Object_setSBPostDef, METH_VARARGS,
|
||||
"Sets SB PostDef"},
|
||||
{"getSBUseGoal", ( PyCFunction ) Object_getSBUseGoal, METH_NOARGS,
|
||||
"Returns SB UseGoal"},
|
||||
{"setSBUseGoal", ( PyCFunction ) Object_setSBUseGoal, METH_VARARGS,
|
||||
@@ -3924,97 +3912,6 @@ PyObject *Object_setSBDefaultGoal( BPy_Object * self, PyObject * args )
|
||||
return EXPP_incr_ret( Py_None );
|
||||
}
|
||||
|
||||
PyObject *Object_getSBEnable( BPy_Object * self )
|
||||
{
|
||||
/*short flag = self->object->softflag;*/
|
||||
PyObject *attr = NULL;
|
||||
|
||||
if(!self->object->soft){
|
||||
if(!setupSB(self->object))
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"softbody could not be accessed (null pointer)" ) );
|
||||
}
|
||||
|
||||
|
||||
if(self->object->softflag & OB_SB_ENABLE){
|
||||
attr = PyInt_FromLong(1);
|
||||
}
|
||||
else{ attr = PyInt_FromLong(0); }
|
||||
|
||||
if( attr )
|
||||
return attr;
|
||||
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"couldn't get Object->softflag attribute" ) );
|
||||
}
|
||||
|
||||
PyObject *Object_setSBEnable( BPy_Object * self, PyObject * args )
|
||||
{
|
||||
short value;
|
||||
|
||||
if(!self->object->soft){
|
||||
if(!setupSB(self->object))
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"softbody could not be accessed (null pointer)" ) );
|
||||
}
|
||||
|
||||
if( !PyArg_ParseTuple( args, "h", &value ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"expected integer argument" ) );
|
||||
|
||||
if(value > 0){
|
||||
self->object->softflag |= OB_SB_ENABLE;
|
||||
}
|
||||
else{
|
||||
self->object->softflag &= ~OB_SB_ENABLE;
|
||||
}
|
||||
|
||||
return EXPP_incr_ret( Py_None );
|
||||
}
|
||||
|
||||
PyObject *Object_getSBPostDef( BPy_Object * self )
|
||||
{
|
||||
/*short flag = self->object->softflag;*/
|
||||
PyObject *attr = NULL;
|
||||
|
||||
if(!self->object->soft){
|
||||
if(!setupSB(self->object))
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"softbody could not be accessed (null pointer)" ) );
|
||||
}
|
||||
|
||||
if(self->object->softflag & OB_SB_POSTDEF){
|
||||
attr = PyInt_FromLong(1);
|
||||
}
|
||||
else{ attr = PyInt_FromLong(0); }
|
||||
|
||||
if( attr )
|
||||
return attr;
|
||||
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"couldn't get Object->softflag attribute" ) );
|
||||
}
|
||||
|
||||
PyObject *Object_setSBPostDef( BPy_Object * self, PyObject * args )
|
||||
{
|
||||
short value;
|
||||
|
||||
if(!self->object->soft){
|
||||
if(!setupSB(self->object))
|
||||
return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"softbody could not be accessed (null pointer)" ) );
|
||||
}
|
||||
|
||||
|
||||
if( !PyArg_ParseTuple( args, "h", &value ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"expected integer argument" ) );
|
||||
|
||||
if(value){ self->object->softflag |= OB_SB_POSTDEF; }
|
||||
else{ self->object->softflag &= ~OB_SB_POSTDEF; }
|
||||
|
||||
return EXPP_incr_ret( Py_None );
|
||||
}
|
||||
PyObject *Object_getSBUseGoal( BPy_Object * self )
|
||||
{
|
||||
/*short flag = self->object->softflag;*/
|
||||
|
||||
Reference in New Issue
Block a user