~ubuntu-branches/ubuntu/trusty/blender/trusty

« back to all changes in this revision

Viewing changes to source/blender/modifiers/intern/MOD_dynamicpaint.c

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2013-03-06 12:08:47 UTC
  • mfrom: (1.5.1) (14.1.8 experimental)
  • Revision ID: package-import@ubuntu.com-20130306120847-frjfaryb2zrotwcg
Tags: 2.66a-1ubuntu1
* Resynchronize with Debian (LP: #1076930, #1089256, #1052743, #999024,
  #1122888, #1147084)
* debian/control:
  - Lower build-depends on libavcodec-dev since we're not
    doing the libav9 transition in Ubuntu yet

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
 
48
48
static void initData(ModifierData *md) 
49
49
{
50
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
 
50
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
51
51
        
52
52
        pmd->canvas = NULL;
53
53
        pmd->brush = NULL;
56
56
 
57
57
static void copyData(ModifierData *md, ModifierData *target)
58
58
{
59
 
        DynamicPaintModifierData *pmd  = (DynamicPaintModifierData*)md;
60
 
        DynamicPaintModifierData *tpmd = (DynamicPaintModifierData*)target;
 
59
        DynamicPaintModifierData *pmd  = (DynamicPaintModifierData *)md;
 
60
        DynamicPaintModifierData *tpmd = (DynamicPaintModifierData *)target;
61
61
        
62
62
        dynamicPaint_Modifier_copy(pmd, tpmd);
63
63
}
64
64
 
65
65
static void freeData(ModifierData *md)
66
66
{
67
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
 
67
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
68
68
        dynamicPaint_Modifier_free(pmd);
69
69
}
70
70
 
71
71
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
72
72
{
73
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*)md;
 
73
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
74
74
        CustomDataMask dataMask = 0;
75
75
 
76
76
        if (pmd->canvas) {
77
77
                DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
78
 
                for (; surface; surface=surface->next) {
 
78
                for (; surface; surface = surface->next) {
79
79
                        /* tface */
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
                        {
82
83
                                dataMask |= (1 << CD_MTFACE);
83
84
                        }
84
85
                        /* mcol */
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)
 
88
                        {
87
89
                                dataMask |= (1 << CD_MCOL);
88
90
                        }
89
91
                        /* CD_MDEFORMVERT */
102
104
}
103
105
 
104
106
static DerivedMesh *applyModifier(ModifierData *md, Object *ob, 
105
 
                                                DerivedMesh *dm,
106
 
                                                int UNUSED(useRenderParams),
107
 
                                                int UNUSED(isFinalCalc))
 
107
                                  DerivedMesh *dm,
 
108
                                  ModifierApplyFlag UNUSED(flag))
108
109
{
109
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
 
110
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
110
111
 
111
112
        return dynamicPaint_Modifier_do(pmd, md->scene, ob, dm);
112
113
}
113
114
 
114
115
static void updateDepgraph(ModifierData *md, DagForest *forest,
115
 
                                                struct Scene *scene,
116
 
                                                Object *ob,
117
 
                                                DagNode *obNode)
 
116
                           struct Scene *scene,
 
117
                           Object *ob,
 
118
                           DagNode *obNode)
118
119
{
119
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
 
120
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
120
121
 
121
122
        /* add relation from canvases to all brush objects */
122
123
        if (pmd && pmd->canvas) {
123
124
                Base *base = scene->base.first;
124
125
 
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);
127
129
 
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");
131
133
                        }
132
134
                }
133
135
        }
139
141
}
140
142
 
141
143
static void foreachIDLink(ModifierData *md, Object *ob,
142
 
                                           IDWalkFunc walk, void *userData)
 
144
                          IDWalkFunc walk, void *userData)
143
145
{
144
 
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md;
 
146
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
145
147
 
146
148
        if (pmd->canvas) {
147
149
                DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
148
150
 
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);
152
154
                }
157
159
}
158
160
 
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))
161
163
{
162
164
        //walk(userData, ob, md, ""); /* re-enable when possible */
163
165
}
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,
175
177
 
176
178
        /* copyData */          copyData,
177
179
        /* deformVerts */       NULL,