[Bf-blender-cvs] [1275e68c] particles_refactor: Store the particle ID alongside the particle iterator in the python particle wrapper type, so it can be used to automatically create missing particles later on.

Lukas Tönne noreply at git.blender.org
Tue Apr 22 12:06:17 CEST 2014


Commit: 1275e68c0e9be0c7c8508d4f4c7f090b5ba9f70e
Author: Lukas Tönne
Date:   Fri Dec 20 11:26:26 2013 +0100
https://developer.blender.org/rB1275e68c0e9be0c7c8508d4f4c7f090b5ba9f70e

Store the particle ID alongside the particle iterator in the python
particle wrapper type, so it can be used to automatically create missing
particles later on.

===================================================================

M	source/blender/python/bparticles/bparticles_py_types.c
M	source/blender/python/bparticles/bparticles_py_types.h

===================================================================

diff --git a/source/blender/python/bparticles/bparticles_py_types.c b/source/blender/python/bparticles/bparticles_py_types.c
index efe54df..0cf4e4d 100644
--- a/source/blender/python/bparticles/bparticles_py_types.c
+++ b/source/blender/python/bparticles/bparticles_py_types.c
@@ -314,10 +314,11 @@ static Py_ssize_t bpy_bpar_particleseq_length(BPy_NParticleAttributeStateSeq *se
 static PyObject *bpy_bpar_particleseq_subscript_int(BPy_NParticleAttributeStateSeq *self, int keynum)
 {
 	NParticleIterator iter;
+	NParticleID id = (NParticleID)keynum;
 	
-	BKE_nparticle_iter_find_id(self->state, &iter, (NParticleID)keynum);
+	BKE_nparticle_iter_find_id(self->state, &iter, id);
 	if (BKE_nparticle_iter_valid(&iter))
-		return BPy_NParticleParticle_CreatePyObject(self->state, iter);
+		return BPy_NParticleParticle_CreatePyObject(self->state, id, iter);
 	
 	PyErr_Format(PyExc_IndexError,
 	             "NParticleParticleSeq[id]: id %d not found", keynum);
@@ -406,7 +407,8 @@ static PyObject *bpy_bpar_particleseq_iter(BPy_NParticleParticleSeq *self)
 static PyObject *bpy_bpar_particleiter_next(BPy_NParticleParticleIter *self)
 {
 	if (BKE_nparticle_iter_valid(&self->iter)) {
-		PyObject *result = BPy_NParticleParticle_CreatePyObject(self->state, self->iter);
+		NParticleID id = BKE_nparticle_iter_get_id(&self->iter);
+		PyObject *result = BPy_NParticleParticle_CreatePyObject(self->state, id, self->iter);
 		BKE_nparticle_iter_next(&self->iter);
 		return result;
 	}
@@ -655,10 +657,11 @@ PyObject *BPy_NParticleAttributeStateIter_CreatePyObject(NParticleState *state)
 	return (PyObject *)self;
 }
 
-PyObject *BPy_NParticleParticle_CreatePyObject(NParticleState *state, NParticleIterator iter)
+PyObject *BPy_NParticleParticle_CreatePyObject(NParticleState *state, NParticleID id, NParticleIterator iter)
 {
 	BPy_NParticleParticle *self = PyObject_New(BPy_NParticleParticle, &BPy_NParticleParticle_Type);
 	self->state = state;
+	self->id = id;
 	self->iter = iter;
 	return (PyObject *)self;
 }
diff --git a/source/blender/python/bparticles/bparticles_py_types.h b/source/blender/python/bparticles/bparticles_py_types.h
index 33623c9..827cd7c 100644
--- a/source/blender/python/bparticles/bparticles_py_types.h
+++ b/source/blender/python/bparticles/bparticles_py_types.h
@@ -71,6 +71,7 @@ typedef struct BPy_NParticleAttributeStateIter {
 typedef struct BPy_NParticleParticle {
 	PyObject_VAR_HEAD
 	struct NParticleState *state; /* keep first */
+	NParticleID id;
 	NParticleIterator iter;
 } BPy_NParticleParticle;
 
@@ -93,7 +94,7 @@ PyObject *BPy_NParticleState_CreatePyObject(NParticleState *state);
 PyObject *BPy_NParticleAttributeState_CreatePyObject(NParticleState *state, NParticleAttributeState *attr);
 PyObject *BPy_NParticleAttributeStateSeq_CreatePyObject(NParticleState *state);
 PyObject *BPy_NParticleAttributeStateIter_CreatePyObject(NParticleState *state);
-PyObject *BPy_NParticleParticle_CreatePyObject(NParticleState *state, NParticleIterator iter);
+PyObject *BPy_NParticleParticle_CreatePyObject(NParticleState *state, NParticleID id, NParticleIterator iter);
 PyObject *BPy_NParticleParticleSeq_CreatePyObject(NParticleState *state);
 PyObject *BPy_NParticleParticleIter_CreatePyObject(NParticleState *state);




More information about the Bf-blender-cvs mailing list