57
57
static void copyData(ModifierData *md, ModifierData *target)
59
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*)md;
60
DynamicPaintModifierData *tpmd = (DynamicPaintModifierData*)target;
59
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
60
DynamicPaintModifierData *tpmd = (DynamicPaintModifierData *)target;
62
62
dynamicPaint_Modifier_copy(pmd, tpmd);
65
65
static void freeData(ModifierData *md)
67
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
67
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
68
68
dynamicPaint_Modifier_free(pmd);
71
71
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
73
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*)md;
73
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
74
74
CustomDataMask dataMask = 0;
77
77
DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
78
for (; surface; surface=surface->next) {
78
for (; surface; surface = surface->next) {
80
80
if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ ||
81
surface->init_color_type == MOD_DPAINT_INITIAL_TEXTURE) {
81
surface->init_color_type == MOD_DPAINT_INITIAL_TEXTURE)
82
83
dataMask |= (1 << CD_MTFACE);
85
86
if (surface->type == MOD_DPAINT_SURFACE_T_PAINT ||
86
surface->init_color_type == MOD_DPAINT_INITIAL_VERTEXCOLOR) {
87
surface->init_color_type == MOD_DPAINT_INITIAL_VERTEXCOLOR)
87
89
dataMask |= (1 << CD_MCOL);
89
91
/* CD_MDEFORMVERT */
104
106
static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
106
int UNUSED(useRenderParams),
107
int UNUSED(isFinalCalc))
108
ModifierApplyFlag UNUSED(flag))
109
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
110
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
111
112
return dynamicPaint_Modifier_do(pmd, md->scene, ob, dm);
114
115
static void updateDepgraph(ModifierData *md, DagForest *forest,
119
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
120
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
121
122
/* add relation from canvases to all brush objects */
122
123
if (pmd && pmd->canvas) {
123
124
Base *base = scene->base.first;
125
126
for (; base; base = base->next) {
126
DynamicPaintModifierData *pmd2 = (DynamicPaintModifierData *)modifiers_findByType(base->object, eModifierType_DynamicPaint);
127
DynamicPaintModifierData *pmd2 =
128
(DynamicPaintModifierData *)modifiers_findByType(base->object, eModifierType_DynamicPaint);
128
if (pmd2 && pmd2->brush && ob!=base->object) {
130
if (pmd2 && pmd2->brush && ob != base->object) {
129
131
DagNode *brushNode = dag_get_node(forest, base->object);
130
dag_add_relation(forest, brushNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Dynamic Paint Brush");
132
dag_add_relation(forest, brushNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Dynamic Paint Brush");
141
143
static void foreachIDLink(ModifierData *md, Object *ob,
142
IDWalkFunc walk, void *userData)
144
IDWalkFunc walk, void *userData)
144
DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
146
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
146
148
if (pmd->canvas) {
147
149
DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
149
for (; surface; surface=surface->next) {
151
for (; surface; surface = surface->next) {
150
152
walk(userData, ob, (ID **)&surface->brush_group);
151
153
walk(userData, ob, (ID **)&surface->init_texture);
159
161
static void foreachTexLink(ModifierData *UNUSED(md), Object *UNUSED(ob),
160
TexWalkFunc UNUSED(walk), void *UNUSED(userData))
162
TexWalkFunc UNUSED(walk), void *UNUSED(userData))
162
164
//walk(userData, ob, md, ""); /* re-enable when possible */
167
169
/* structName */ "DynamicPaintModifierData",
168
170
/* structSize */ sizeof(DynamicPaintModifierData),
169
171
/* type */ eModifierTypeType_Constructive,
170
/* flags */ eModifierTypeFlag_AcceptsMesh
171
/* |eModifierTypeFlag_SupportsMapping*/
172
|eModifierTypeFlag_UsesPointCache
173
|eModifierTypeFlag_Single
174
|eModifierTypeFlag_UsesPreview,
172
/* flags */ eModifierTypeFlag_AcceptsMesh |
173
/* eModifierTypeFlag_SupportsMapping |*/
174
eModifierTypeFlag_UsesPointCache |
175
eModifierTypeFlag_Single |
176
eModifierTypeFlag_UsesPreview,
176
178
/* copyData */ copyData,
177
179
/* deformVerts */ NULL,