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
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2010-03-07 13:40:52 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2010-03-07 13:40:52 +0300
commit8d53f3f04edc809ab0777d94b3b17b4b38a253f7 (patch)
tree4184e39657aaa6b54d157b1bcb16f25342bda0de /source
parent447cd8d79171021a0cc7af18b87e981d8e0cd2b2 (diff)
Enable "Build" modifier for curves/surfaces.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/displist.c20
-rw-r--r--source/blender/blenkernel/intern/modifier.c3
2 files changed, 12 insertions, 11 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index b8b5ae300d9..9f6f2e445fc 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -1329,23 +1329,23 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
for (; md; md=md->next) {
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
-
+
+ /* modifier depends on derived mesh and has got valid applyModifier call */
+ int dmApplyMod = mti->type==eModifierTypeType_Constructive ||
+ mti->type==eModifierTypeType_Nonconstructive;
+
md->scene= scene;
-
+
if ((md->mode & required_mode) != required_mode) continue;
if (mti->isDisabled && mti->isDisabled(md, forRender)) continue;
- if (mti->type!=eModifierTypeType_OnlyDeform &&
- mti->type!=eModifierTypeType_DeformOrConstruct &&
- mti->type!=eModifierTypeType_Constructive) continue;
/* need to put all verts in 1 block for curve deform */
- /* we also need all verts in 1 block for derived mesh creation when handling constructive modifiers */
- if(md->type==eModifierType_Curve || mti->type==eModifierTypeType_Constructive) {
+ /* we also need all verts in 1 block for derived mesh creation */
+ if(md->type==eModifierType_Curve || dmApplyMod) {
float *allverts = NULL, *fp;
int totvert= 0;
- if (md->type==eModifierType_Curve ||
- (mti->type==eModifierTypeType_Constructive && !dm)) {
+ if (md->type==eModifierType_Curve || (dmApplyMod && !dm)) {
for (dl=dispbase->first; dl; dl=dl->next)
totvert+= (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr;
@@ -1357,7 +1357,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
}
}
- if (mti->type==eModifierTypeType_Constructive) {
+ if (dmApplyMod) {
if (!dm) {
dm= CDDM_from_curve(ob);
/*
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 0c3c1e2e041..601bee4f670 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -8599,7 +8599,8 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti = INIT_TYPE(Build);
mti->type = eModifierTypeType_Nonconstructive;
- mti->flags = eModifierTypeFlag_AcceptsMesh;
+ mti->flags = eModifierTypeFlag_AcceptsMesh |
+ eModifierTypeFlag_AcceptsCVs;
mti->initData = buildModifier_initData;
mti->copyData = buildModifier_copyData;
mti->dependsOnTime = buildModifier_dependsOnTime;