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:
authorErwin Coumans <blender@erwincoumans.com>2006-06-03 00:59:29 +0400
committerErwin Coumans <blender@erwincoumans.com>2006-06-03 00:59:29 +0400
commit9c2707572a6771288907dae676dc2a160337d55c (patch)
treef71c7b4a035205425e701fa4466efb8682f8cc5b /source/blender/python/api2_2x/Material.c
parent6f1c45ced486b3a3e0b7d722bfcef265285753f7 (diff)
added friction and restitution for the Collada Physics export/import
See http://colladablender.illusoft.com
Diffstat (limited to 'source/blender/python/api2_2x/Material.c')
-rw-r--r--source/blender/python/api2_2x/Material.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/Material.c b/source/blender/python/api2_2x/Material.c
index fcd87383d2b..02a6152101e 100644
--- a/source/blender/python/api2_2x/Material.c
+++ b/source/blender/python/api2_2x/Material.c
@@ -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,