[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28756] trunk/blender/source/blender: Fix:
Matt Ebb
matt at mke3.net
Fri May 14 09:09:16 CEST 2010
Revision: 28756
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28756
Author: broken
Date: 2010-05-14 09:09:15 +0200 (Fri, 14 May 2010)
Log Message:
-----------
Fix:
[#22310] Duplicate Does Not Propogate SimpleDeform's VGroup
[#22321] duplicating object with smoke settings doesnt duplicate smoke settings
^ Genscher, you may want to check that but I thought it was pretty straightforward.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_smoke.h
trunk/blender/source/blender/blenkernel/intern/smoke.c
trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
trunk/blender/source/blender/modifiers/intern/MOD_smoke.c
Modified: trunk/blender/source/blender/blenkernel/BKE_smoke.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_smoke.h 2010-05-14 02:27:09 UTC (rev 28755)
+++ trunk/blender/source/blender/blenkernel/BKE_smoke.h 2010-05-14 07:09:15 UTC (rev 28756)
@@ -40,6 +40,7 @@
void smokeModifier_reset(struct SmokeModifierData *smd);
void smokeModifier_reset_turbulence(struct SmokeModifierData *smd);
void smokeModifier_createType(struct SmokeModifierData *smd);
+void smokeModifier_copy(struct SmokeModifierData *smd, struct SmokeModifierData *tsmd);
long long smoke_get_mem_req(int xres, int yres, int zres, int amplify);
Modified: trunk/blender/source/blender/blenkernel/intern/smoke.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/smoke.c 2010-05-14 02:27:09 UTC (rev 28755)
+++ trunk/blender/source/blender/blenkernel/intern/smoke.c 2010-05-14 07:09:15 UTC (rev 28756)
@@ -753,6 +753,41 @@
}
}
+void smokeModifier_copy(struct SmokeModifierData *smd, struct SmokeModifierData *tsmd)
+{
+ tsmd->type = smd->type;
+ tsmd->time = smd->time;
+
+ smokeModifier_createType(tsmd);
+
+ if (tsmd->domain) {
+ tsmd->domain->maxres = smd->domain->maxres;
+ tsmd->domain->amplify = smd->domain->amplify;
+ tsmd->domain->omega = smd->domain->omega;
+ tsmd->domain->alpha = smd->domain->alpha;
+ tsmd->domain->beta = smd->domain->beta;
+ tsmd->domain->flags = smd->domain->flags;
+ tsmd->domain->strength = smd->domain->strength;
+ tsmd->domain->noise = smd->domain->noise;
+ tsmd->domain->diss_speed = smd->domain->diss_speed;
+ tsmd->domain->viewsettings = smd->domain->viewsettings;
+ tsmd->domain->fluid_group = smd->domain->fluid_group;
+ tsmd->domain->coll_group = smd->domain->coll_group;
+
+ MEM_freeN(tsmd->domain->effector_weights);
+ tsmd->domain->effector_weights = MEM_dupallocN(smd->domain->effector_weights);
+ } else if (tsmd->flow) {
+ tsmd->flow->density = smd->flow->density;
+ tsmd->flow->temp = smd->flow->temp;
+ tsmd->flow->psys = smd->flow->psys;
+ tsmd->flow->type = smd->flow->type;
+ } else if (tsmd->coll) {
+ ;
+ /* leave it as initialised, collision settings is mostly caches */
+ }
+}
+
+
// forward decleration
static void smoke_calc_transparency(float *result, float *input, float *p0, float *p1, int res[3], float dx, float *light, bresenham_callback cb, float correct);
static float calc_voxel_transp(float *result, float *input, int res[3], int *pixel, float *tRay, float correct);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c 2010-05-14 02:27:09 UTC (rev 28755)
+++ trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c 2010-05-14 07:09:15 UTC (rev 28756)
@@ -283,8 +283,10 @@
tsmd->mode = smd->mode;
tsmd->axis = smd->axis;
tsmd->origin= smd->origin;
+ tsmd->originOpts= smd->originOpts;
tsmd->factor= smd->factor;
memcpy(tsmd->limit, smd->limit, sizeof(tsmd->limit));
+ strcpy(tsmd->vgroup_name, smd->vgroup_name);
}
static CustomDataMask requiredDataMask(Object *ob, ModifierData *md)
Modified: trunk/blender/source/blender/modifiers/intern/MOD_smoke.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_smoke.c 2010-05-14 02:27:09 UTC (rev 28755)
+++ trunk/blender/source/blender/modifiers/intern/MOD_smoke.c 2010-05-14 07:09:15 UTC (rev 28756)
@@ -32,6 +32,8 @@
#include "stddef.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_cdderivedmesh.h"
#include "BKE_modifier.h"
#include "BKE_smoke.h"
@@ -52,6 +54,14 @@
smd->time = -1;
}
+static void copyData(ModifierData *md, ModifierData *target)
+{
+ SmokeModifierData *smd = (SmokeModifierData*)md;
+ SmokeModifierData *tsmd = (SmokeModifierData*)target;
+
+ smokeModifier_copy(smd, tsmd);
+}
+
static void freeData(ModifierData *md)
{
SmokeModifierData *smd = (SmokeModifierData*) md;
@@ -117,7 +127,7 @@
| eModifierTypeFlag_UsesPointCache
| eModifierTypeFlag_Single,
- /* copyData */ 0,
+ /* copyData */ copyData,
/* deformVerts */ deformVerts,
/* deformVertsEM */ 0,
/* deformMatricesEM */ 0,
More information about the Bf-blender-cvs
mailing list