[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14783] trunk/blender/source/blender/ python/api2_2x: Initial commit for BPy Particle patch #8557 from Cedric Paille

Stephen Swaney sswaney at centurytel.net
Sun May 11 06:15:22 CEST 2008


Revision: 14783
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14783
Author:   stiv
Date:     2008-05-11 06:15:21 +0200 (Sun, 11 May 2008)

Log Message:
-----------
Initial commit for BPy Particle patch #8557 from Cedric Paille
Thanks, Cedric!

*** WARNING ****   This is a Work In Progress   *** Warning ****

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Blender.c
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/python/api2_2x/Particle.c
    trunk/blender/source/blender/python/api2_2x/Particle.h
    trunk/blender/source/blender/python/api2_2x/doc/API_intro.py
    trunk/blender/source/blender/python/api2_2x/doc/Object.py

Added Paths:
-----------
    trunk/blender/source/blender/python/api2_2x/doc/Particle.py

Modified: trunk/blender/source/blender/python/api2_2x/Blender.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Blender.c	2008-05-11 02:28:01 UTC (rev 14782)
+++ trunk/blender/source/blender/python/api2_2x/Blender.c	2008-05-11 04:15:21 UTC (rev 14783)
@@ -96,6 +96,7 @@
 #include "Window.h"
 #include "World.h"
 #include "Types.h"
+#include "Particle.h"
 
 /**********************************************************/
 /* Python API function prototypes for the Blender module.	*/
@@ -1074,6 +1075,7 @@
 	PyDict_SetItemString(dict, "Node", Node_Init());
 	PyDict_SetItemString(dict, "Noise", Noise_Init());
 	PyDict_SetItemString(dict, "Object", Object_Init());
+	PyDict_SetItemString(dict, "Particle", ParticleSys_Init());
 	PyDict_SetItemString(dict, "Group", Group_Init());
 	PyDict_SetItemString(dict, "Registry", Registry_Init());
 	PyDict_SetItemString(dict, "Scene", Scene_Init());

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c	2008-05-11 02:28:01 UTC (rev 14782)
+++ trunk/blender/source/blender/python/api2_2x/Object.c	2008-05-11 04:15:21 UTC (rev 14783)
@@ -27,7 +27,7 @@
  *
  * Contributor(s): Michel Selten, Willian Germano, Jacques Guignot,
  * Joseph Gilbert, Stephen Swaney, Bala Gi, Campbell Barton, Johnny Matthews,
- * Ken Hughes, Alex Mole, Jean-Michel Soler
+ * Ken Hughes, Alex Mole, Jean-Michel Soler, Cedric Paille
  *
  * ***** END GPL LICENSE BLOCK *****
 */
@@ -117,6 +117,7 @@
 #include "EXPP_interface.h"
 #include "BIF_editkey.h"
 #include "IDProp.h"
+#include "Particle.h"
 
 /* Defines for insertIpoKey */
 
@@ -336,6 +337,9 @@
 static int setupSB(Object* ob); /*Make sure Softbody Pointer is initialized */
 static int setupPI(Object* ob);
 
+static PyObject *Object_getParticleSys( BPy_Object * self );
+/* fixme Object_newParticleSys( self, default-partsys-name ) */
+static PyObject *Object_newParticleSys( BPy_Object * self );
 static PyObject *Object_buildParts( BPy_Object * self );
 static PyObject *Object_clearIpo( BPy_Object * self );
 static PyObject *Object_clrParent( BPy_Object * self, PyObject * args );
@@ -465,6 +469,10 @@
 /*****************************************************************************/
 static PyMethodDef BPy_Object_methods[] = {
 	/* name, method, flags, doc */
+	{"getParticleSystems", ( PyCFunction ) Object_getParticleSys, METH_NOARGS,
+	 "Return a list of particle systems"},
+ 	{"newParticleSystem", ( PyCFunction ) Object_newParticleSys, METH_NOARGS,
+	 "Create and link a new particle system"},
 	{"buildParts", ( PyCFunction ) Object_buildParts, METH_NOARGS,
 	 "Recalcs particle system (if any), (depricated, will always return an empty list in version 2.46)"},
 	{"getIpo", ( PyCFunction ) Object_getIpo, METH_NOARGS,
@@ -1026,6 +1034,78 @@
 /* Python BPy_Object methods:					*/
 /*****************************************************************************/
 
+PyObject *Object_getParticleSys( BPy_Object * self ){
+	ParticleSystem *blparticlesys = 0;
+	Object *ob = self->object;
+	PyObject *partsyslist,*current;
+
+	blparticlesys = ob->particlesystem.first;
+
+	partsyslist = PyList_New( 0 );
+
+	if (!blparticlesys)
+		return partsyslist;
+
+	current = ParticleSys_CreatePyObject( blparticlesys, ob );
+	PyList_Append(partsyslist,current);
+
+	while(blparticlesys = blparticlesys->next){
+		current = ParticleSys_CreatePyObject( blparticlesys, ob );
+		PyList_Append(partsyslist,current);
+	}
+
+	return partsyslist;
+}
+
+PyObject *Object_newParticleSys( BPy_Object * self ){
+	ParticleSystem *psys = 0;
+	ParticleSystem *rpsys = 0;
+	ModifierData *md;
+	ParticleSystemModifierData *psmd;
+	Object *ob = self->object;
+	char *name = NULL;
+	ID *id;
+	int nr;
+
+	id = (ID *)psys_new_settings("PSys", G.main);
+
+	psys = MEM_callocN(sizeof(ParticleSystem), "particle_system");
+	psys->pointcache = BKE_ptcache_add();
+	psys->flag |= PSYS_ENABLED;
+	BLI_addtail(&ob->particlesystem,psys);
+
+	md = modifier_new(eModifierType_ParticleSystem);
+	sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+	psmd = (ParticleSystemModifierData*) md;
+	psmd->psys=psys;
+	BLI_addtail(&ob->modifiers, md);
+
+	psys->part=(ParticleSettings*)id;
+	psys->totpart=0;
+	psys->flag=PSYS_ENABLED|PSYS_CURRENT;
+	psys->cfra=bsystem_time(ob,(float)G.scene->r.cfra+1,0.0);
+	rpsys = psys;
+
+	/* check need for dupliobjects */
+
+	nr=0;
+	for(psys=ob->particlesystem.first; psys; psys=psys->next){
+		if(ELEM(psys->part->draw_as,PART_DRAW_OB,PART_DRAW_GR))
+			nr++;
+	}
+	if(nr)
+		ob->transflag |= OB_DUPLIPARTS;
+	else
+		ob->transflag &= ~OB_DUPLIPARTS;
+
+	BIF_undo_push("Browse Particle System");
+
+	DAG_scene_sort(G.scene);
+	DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+
+	return ParticleSys_CreatePyObject(rpsys,ob);
+}
+
 static PyObject *Object_buildParts( BPy_Object * self )
 {
 	/* This is now handles by modifiers */

Modified: trunk/blender/source/blender/python/api2_2x/Particle.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Particle.c	2008-05-11 02:28:01 UTC (rev 14782)
+++ trunk/blender/source/blender/python/api2_2x/Particle.c	2008-05-11 04:15:21 UTC (rev 14783)
@@ -22,941 +22,1813 @@
  *
  * This is a new part of Blender.
  *
- * Contributor(s): Jacques Guignot, Jean-Michel Soler 
+ * Contributor(s): 
+ *    Original version: Jacques Guignot, Jean-Michel Soler
+ *    Rewrite :        Cedric Paille, Stephen Swaney, Joilnen Leite
  *
  * ***** END GPL LICENSE BLOCK *****
  */
 
-#include "Particle.h" /*This must come first */
-
-#include "DNA_object_types.h"
-#include "BKE_effect.h"
+#include "Particle.h"
+#include "gen_utils.h"
+#include "BKE_object.h"
+#include "BKE_main.h"
+#include "BKE_particle.h"
 #include "BKE_global.h"
-#include "BKE_main.h"
-#include "BKE_object.h"
+#include "BKE_depsgraph.h"
+#include "BKE_modifier.h"
+#include "BKE_material.h"
+#include "BKE_utildefines.h"
+#include "BKE_pointcache.h"
+#include "BIF_editparticle.h"
+#include "BIF_space.h"
+#include "blendef.h"
+#include "DNA_modifier_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_material_types.h"
 #include "BLI_blenlib.h"
-#include "gen_utils.h"
+#include "mydevice.h"
+#include "Object.h"
+#include "Material.h"
 
-/*****************************************************************************/
-/* Python API function prototypes for the Particle module.                   */
-/*****************************************************************************/
-PyObject *M_Particle_New( PyObject * self, PyObject * args );
-PyObject *M_Particle_Get( PyObject * self, PyObject * args );
+#include "MEM_guardedalloc.h"
 
-/*****************************************************************************/
-/* Python BPy_Particle methods declarations:                                 */
-/*****************************************************************************/
-PyObject *Effect_getType( BPy_Effect * self );
-PyObject *Effect_setType( BPy_Effect * self, PyObject * args );
-PyObject *Effect_getFlag( BPy_Effect * self );
-PyObject *Effect_setFlag( BPy_Effect * self, PyObject * args );
-PyObject *Particle_getSta( BPy_Particle * self );
-PyObject *Particle_setSta( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getEnd( BPy_Particle * self );
-PyObject *Particle_setEnd( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getLifetime( BPy_Particle * self );
-PyObject *Particle_setLifetime( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getNormfac( BPy_Particle * self );
-PyObject *Particle_setNormfac( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getObfac( BPy_Particle * self );
-PyObject *Particle_setObfac( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getRandfac( BPy_Particle * self );
-PyObject *Particle_setRandfac( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getTexfac( BPy_Particle * self );
-PyObject *Particle_setTexfac( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getRandlife( BPy_Particle * self );
-PyObject *Particle_setRandlife( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getNabla( BPy_Particle * self );
-PyObject *Particle_setNabla( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getVectsize( BPy_Particle * self );
-PyObject *Particle_setVectsize( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getTotpart( BPy_Particle * self );
-PyObject *Particle_setTotpart( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getTotkey( BPy_Particle * self );
-PyObject *Particle_setTotkey( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getSeed( BPy_Particle * self );
-PyObject *Particle_setSeed( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getForce( BPy_Particle * self );
-PyObject *Particle_setForce( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getMult( BPy_Particle * self );
-PyObject *Particle_setMult( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getLife( BPy_Particle * self );
-PyObject *Particle_setLife( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getMat( BPy_Particle * self );
-PyObject *Particle_setMat( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getChild( BPy_Particle * self );
-PyObject *Particle_setChild( BPy_Particle * self, PyObject * a );
-PyObject *Particle_getDefvec( BPy_Particle * self );
-PyObject *Particle_setDefvec( BPy_Particle * self, PyObject * a );
 
-/*****************************************************************************/
-/* Python Particle_Type callback function prototypes:                        */
-/*****************************************************************************/
-void ParticleDeAlloc( BPy_Particle * msh );
-//int ParticlePrint (BPy_Particle *msh, FILE *fp, int flags);
-int ParticleSetAttr( BPy_Particle * msh, char *name, PyObject * v );
-PyObject *ParticleGetAttr( BPy_Particle * msh, char *name );
-PyObject *ParticleRepr( void );
-PyObject *ParticleCreatePyObject( struct Effect *particle );
-int ParticleCheckPyObject( PyObject * py_obj );
-struct Particle *ParticleFromPyObject( PyObject * py_obj );
 
- 
-/*****************************************************************************/
-/* Python BPy_Particle methods table:                                        */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list