svn merge ^/trunk/blender -r43733:43751
authorCampbell Barton <ideasman42@gmail.com>
Sun, 29 Jan 2012 21:49:49 +0000 (21:49 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 29 Jan 2012 21:49:49 +0000 (21:49 +0000)
1  2 
source/blender/blenkernel/BKE_blender.h
source/blender/blenkernel/BKE_customdata.h
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/makesrna/intern/rna_scene.c
source/blender/modifiers/intern/MOD_boolean_util.c
source/blender/modifiers/intern/MOD_cloth.c

@@@ -71,27 -67,8 +71,27 @@@ extern const CustomDataMask CD_MASK_FAC
  #define CD_DUPLICATE 4  /* do a full copy of all layers, only allowed if source
                                                   has same number of elements */
  
- #define CD_TYPE_AS_MASK(_type) (CustomDataMask)(1 << (CustomDataMask)(_type))
+ #define CD_TYPE_AS_MASK(_type) (CustomDataMask)((CustomDataMask)1 << (CustomDataMask)(_type))
  
 +/* Checks if the layer at physical offset layern (in data->layers) support math
 + * the below operations.
 + */
 +int CustomData_layer_has_math(struct CustomData *data, int layern);
 +
 +/*copies the "value" (e.g. mloopuv uv or mloopcol colors) from one block to
 +  another, while not overwriting anything else (e.g. flags).  probably only
 +  implemented for mloopuv/mloopcol, for now.*/
 +void CustomData_data_copy_value(int type, void *source, void *dest);
 +
 +/* compares if data1 is equal to data2.  type is a valid CustomData type
 + * enum (e.g. CD_MLOOPUV). the layer type's equal function is used to compare
 + * the data, if it exists, otherwise memcmp is used.*/
 +int CustomData_data_equals(int type, void *data1, void *data2);
 +void CustomData_data_initminmax(int type, void *min, void *max);
 +void CustomData_data_dominmax(int type, void *data, void *min, void *max);
 +void CustomData_data_multiply(int type, void *data, float fac);
 +void CustomData_data_add(int type, void *data1, void *data2);
 +
  /* initialises a CustomData object with the same layer setup as source.
   * mask is a bitfield where (mask & (1 << (layer type))) indicates
   * if a layer should be copied or not. alloctype must be one of the above. */
@@@ -374,12 -374,12 +374,12 @@@ static DerivedMesh *ConvertCSGDescripto
        }
  
        // a hash table to remap materials to indices
-       if (mat) {
-               material_hash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "CSG_mat gh");
+       material_hash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "CSG_mat gh");
+       if (mat)
                *totmat = 0;
-       }
  
 -      origindex_layer = result->getFaceDataArray(result, CD_ORIGINDEX);
 +      origindex_layer = result->getTessFaceDataArray(result, CD_ORIGINDEX);
  
        // step through the face iterators
        for(i = 0; !face_it->Done(face_it->it); i++) {
@@@ -84,6 -84,10 +84,10 @@@ static void deformVerts(ModifierData *m
        }
  
        dm = get_dm(ob, NULL, derivedData, NULL, 0);
 -              dm = CDDM_copy(dm);
+       if(dm == derivedData)
++              dm = CDDM_copy(dm, 0);
+       CDDM_apply_vert_coords(dm, vertexCos);
  
        clothModifier_do(clmd, md->scene, ob, dm, vertexCos);