[Bf-blender-cvs] [137fa8a] particles_refactor: Sensible default value support for particle attributes. Some data types (normal, color, quaternion, matrix) get common default values, others are just 0 and have to be defined by the user if necessary.
Lukas Tönne
noreply at git.blender.org
Tue Apr 22 12:07:06 CEST 2014
Commit: 137fa8a40b8cfbf2c5fe4e2ccc6a602e754ba6a6
Author: Lukas Tönne
Date: Fri Jan 3 17:21:47 2014 +0100
https://developer.blender.org/rB137fa8a40b8cfbf2c5fe4e2ccc6a602e754ba6a6
Sensible default value support for particle attributes. Some data types
(normal, color, quaternion, matrix) get common default values, others
are just 0 and have to be defined by the user if necessary.
===================================================================
M source/blender/blenkernel/intern/nparticle.c
M source/blender/makesdna/DNA_nparticle_types.h
===================================================================
diff --git a/source/blender/blenkernel/intern/nparticle.c b/source/blender/blenkernel/intern/nparticle.c
index 8daffc0..310d15d 100644
--- a/source/blender/blenkernel/intern/nparticle.c
+++ b/source/blender/blenkernel/intern/nparticle.c
@@ -316,6 +316,23 @@ NParticleAttribute *BKE_nparticle_attribute_new(NParticleSystem *psys, const cha
BLI_strncpy(attr->desc.name, name, sizeof(attr->desc.name));
attr->desc.datatype = datatype;
attr->desc.flag = flag;
+ /* some data types should have more usable defaults
+ * without explicitly setting them.
+ */
+ switch (datatype) {
+ case PAR_ATTR_DATATYPE_NORMAL:
+ ((float*)attr->desc.default_value)[2] = 1.0f;
+ break;
+ case PAR_ATTR_DATATYPE_QUATERNION:
+ unit_qt((float*)attr->desc.default_value);
+ break;
+ case PAR_ATTR_DATATYPE_COLOR:
+ ((float*)attr->desc.default_value)[3] = 1.0f;
+ break;
+ case PAR_ATTR_DATATYPE_MATRIX:
+ unit_m4((float(*)[4])attr->desc.default_value);
+ break;
+ }
BLI_addtail(&psys->attributes, attr);
@@ -461,8 +478,7 @@ int BKE_nparticle_add(NParticleState *state, NParticleID id)
*(int*)BLI_pbuf_get(&attrstate->data, index) = (int)id;
}
else {
- /* XXX default value? */
- memset(BLI_pbuf_get(&attrstate->data, index), 0, attrstate->data.elem_bytes);
+ memcpy(BLI_pbuf_get(&attrstate->data, index), attrstate->desc.default_value, attrstate->data.elem_bytes);
}
}
}
diff --git a/source/blender/makesdna/DNA_nparticle_types.h b/source/blender/makesdna/DNA_nparticle_types.h
index a980d6e..8fedec5 100644
--- a/source/blender/makesdna/DNA_nparticle_types.h
+++ b/source/blender/makesdna/DNA_nparticle_types.h
@@ -36,6 +36,8 @@ typedef struct NParticleAttributeDescription {
char name[64];
int datatype;
int flag;
+
+ char default_value[64];
} NParticleAttributeDescription;
typedef enum eParticleAttributeFlag {
More information about the Bf-blender-cvs
mailing list