added friction and restitution for the Collada Physics export/import

See http://colladablender.illusoft.com
This commit is contained in:
2006-06-02 20:59:29 +00:00
parent 6f1c45ced4
commit 9c2707572a

View File

@@ -502,6 +502,9 @@ static int Material_setIOR( BPy_Material * self, PyObject * value );
static int Material_setTransDepth( BPy_Material * self, PyObject * value );
static int Material_setFresnelTrans( BPy_Material * self, PyObject * value );
static int Material_setFresnelTransFac( BPy_Material * self, PyObject * value );
static int Material_setRigidBodyFriction( BPy_Material * self, PyObject * value );
static int Material_setRigidBodyRestitution( BPy_Material * self, PyObject * value );
static int Material_setOopsLoc ( BPy_Material * self, PyObject * value );
static int Material_setOopsSel ( BPy_Material * self, PyObject * value );
static int Material_setSpecShader( BPy_Material * self, PyObject * value );
@@ -574,6 +577,10 @@ static PyObject *Material_getIOR( BPy_Material * self );
static PyObject *Material_getTransDepth( BPy_Material * self );
static PyObject *Material_getFresnelTrans( BPy_Material * self );
static PyObject *Material_getFresnelTransFac( BPy_Material * self );
static PyObject *Material_getRigidBodyFriction( BPy_Material * self );
static PyObject *Material_getRigidBodyRestitution( BPy_Material * self );
static PyObject *Material_getFilter( BPy_Material * self );
static PyObject *Material_getTranslucency( BPy_Material * self );
static PyObject *Material_getTextures( BPy_Material * self );
@@ -689,6 +696,11 @@ static PyMethodDef BPy_Material_methods[] = {
"() - Return fresnel power for refractions"},
{"getFresnelTransFac", ( PyCFunction ) Material_getFresnelTransFac, METH_NOARGS,
"() - Return fresnel power for refractions factor"},
{"getRbFriction", ( PyCFunction ) Material_getRigidBodyFriction, METH_NOARGS,
"() - Return friction for Rigid Body dynamics"},
{"getRbRestitution", ( PyCFunction ) Material_getRigidBodyRestitution, METH_NOARGS,
"() - Return restitution for Rigid Body dynamics"},
{"getTextures", ( PyCFunction ) Material_getTextures, METH_NOARGS,
"() - Return Material's texture list as a tuple"},
{"setName", ( PyCFunction ) Matr_oldsetName, METH_VARARGS,
@@ -881,6 +893,15 @@ static PyGetSetDef BPy_Material_getseters[] = {
(getter)Material_getFresnelTransFac, (setter)Material_setFresnelTransFac,
"Blending factor for Fresnel transparency",
NULL},
{"rbFriction",
(getter)Material_getRigidBodyFriction, (setter)Material_setRigidBodyFriction,
"Rigid Body Friction coefficient",
NULL},
{"rbRestitution",
(getter)Material_getRigidBodyRestitution, (setter)Material_setRigidBodyRestitution,
"Rigid Body Restitution coefficient",
NULL},
{"haloSeed",
(getter)Material_getHaloSeed, (setter)Material_setHaloSeed,
"Randomizes halo ring dimension and line location",
@@ -1743,6 +1764,32 @@ static PyObject *Material_getFresnelTransFac( BPy_Material * self )
"couldn't get Material.fresnelTransFac attribute" );
}
static PyObject* Material_getRigidBodyFriction( BPy_Material * self )
{
PyObject *attr =
PyFloat_FromDouble( ( double ) self->material->friction );
if( attr )
return attr;
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"couldn't get Material.friction" );
}
static PyObject* Material_getRigidBodyRestitution( BPy_Material * self )
{
PyObject *attr =
PyFloat_FromDouble( ( double ) self->material->reflect );
if( attr )
return attr;
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"couldn't get Material.reflect" );
}
static PyObject *Material_getTextures( BPy_Material * self )
{
int i;
@@ -2195,6 +2242,23 @@ static int Material_setFresnelTransFac( BPy_Material * self, PyObject * value )
EXPP_MAT_FRESNELTRANSFAC_MAX );
}
static int Material_setRigidBodyFriction( BPy_Material * self, PyObject * value )
{
return EXPP_setFloatClamped ( value, &self->material->friction,
0.f,
100.f );
}
static int Material_setRigidBodyRestitution( BPy_Material * self, PyObject * value )
{
return EXPP_setFloatClamped ( value, &self->material->reflect,
0.f,
1.f );
}
static int Material_setSpecShader( BPy_Material * self, PyObject * value )
{
return EXPP_setIValueRange( value, &self->material->spec_shader,