[Bf-blender-cvs] [6cd3ebf] alembic_pointcache: Merge branch 'master' into alembic_pointcache

Lukas Tönne noreply at git.blender.org
Fri Jan 16 12:51:41 CET 2015


Commit: 6cd3ebfc9fa4838a74192f2e5cc82b5d5d2e6fe7
Author: Lukas Tönne
Date:   Fri Jan 16 12:50:11 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rB6cd3ebfc9fa4838a74192f2e5cc82b5d5d2e6fe7

Merge branch 'master' into alembic_pointcache

Conflicts:
	release/scripts/addons
	source/blender/blenkernel/intern/pointcache.c
	source/blender/blenloader/intern/versioning_270.c
	source/blender/editors/space_outliner/outliner_draw.c
	source/blender/makesdna/DNA_modifier_types.h
	source/blender/makesrna/intern/rna_modifier.c
	source/blender/modifiers/MOD_modifiertypes.h
	source/blender/modifiers/intern/MOD_collision.c
	source/blender/modifiers/intern/MOD_util.c

===================================================================



===================================================================

diff --cc build_files/scons/tools/Blender.py
index d9e80a1,eb2e57a..1ab3635
mode 100755,100644..100644
--- a/build_files/scons/tools/Blender.py
+++ b/build_files/scons/tools/Blender.py
diff --cc source/blender/blenkernel/CMakeLists.txt
index 353a389,c71595e..328c465
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@@ -36,8 -36,8 +36,9 @@@ set(IN
  	../bmesh
  	../modifiers
  	../nodes
 +	../pointcache
  	../render/extern/include
+ 	../../../intern/ghost
  	../../../intern/guardedalloc
  	../../../intern/glew-mx
  	../../../intern/iksolver/extern
diff --cc source/blender/blenkernel/intern/pointcache.c
index c2f71d7,19ed49c..7530147
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@@ -2493,41 -2568,50 +2493,48 @@@ void BKE_ptcache_id_clear(PTCacheID *pi
  	case PTCACHE_CLEAR_ALL:
  	case PTCACHE_CLEAR_BEFORE:
  	case PTCACHE_CLEAR_AFTER:
 -		if (pid->cache->flag & PTCACHE_DISK_CACHE) {
 -			ptcache_path(pid, path);
 -			
 -			dir = opendir(path);
 -			if (dir==NULL)
 -				return;
 -			
 -			len = ptcache_filename(pid, filename, cfra, 0, 0); /* no path */
 -			/* append underscore terminator to ensure we don't match similar names
 -			 * from objects whose names start with the same prefix
 -			 */
 -			if (len < sizeof(filename) - 2) {
 -				BLI_strncpy(filename + len, "_", sizeof(filename) - 2 - len);
 -				len += 1;
 -			}
 -			
 -			BLI_snprintf(ext, sizeof(ext), "_%02u"PTCACHE_EXT, pid->stack_index);
 +		ptcache_path(pid->cache, pid->ob, path);
 +		
- 		len = ptcache_filename(pid, filename, cfra, 0, 0); /* no path */
- 		
 +		dir = opendir(path);
 +		if (dir==NULL)
 +			return;
+ 			
 -			while ((de = readdir(dir)) != NULL) {
 -				if (strstr(de->d_name, ext)) { /* do we have the right extension?*/
 -					if (strncmp(filename, de->d_name, len ) == 0) { /* do we have the right prefix */
 -						if (mode == PTCACHE_CLEAR_ALL) {
 -							pid->cache->last_exact = MIN2(pid->cache->startframe, 0);
 -							BLI_join_dirfile(path_full, sizeof(path_full), path, de->d_name);
 -							BLI_delete(path_full, false, false);
 -						}
 -						else {
 -							/* read the number of the file */
 -							unsigned int frame, len2 = (int)strlen(de->d_name);
 -							char num[7];
 -
 -							if (len2 > 15) { /* could crash if trying to copy a string out of this range*/
 -								BLI_strncpy(num, de->d_name + (strlen(de->d_name) - 15), sizeof(num));
 -								frame = atoi(num);
++		len = ptcache_filename(pid, filename, cfra, 0, 0); /* no path */
++		/* append underscore terminator to ensure we don't match similar names
++		 * from objects whose names start with the same prefix
++		 */
++		if (len < sizeof(filename) - 2) {
++			BLI_strncpy(filename + len, "_", sizeof(filename) - 2 - len);
++			len += 1;
++		}
 +		
 +		BLI_snprintf(ext, sizeof(ext), "_%02u"PTCACHE_EXT, pid->stack_index);
 +		
 +		while ((de = readdir(dir)) != NULL) {
 +			if (strstr(de->d_name, ext)) { /* do we have the right extension?*/
 +				if (strncmp(filename, de->d_name, len ) == 0) { /* do we have the right prefix */
 +					if (mode == PTCACHE_CLEAR_ALL) {
 +						pid->cache->state.last_exact = MIN2(pid->cache->startframe, 0);
 +						BLI_join_dirfile(path_full, sizeof(path_full), path, de->d_name);
 +						BLI_delete(path_full, false, false);
 +					}
 +					else {
 +						/* read the number of the file */
 +						unsigned int frame, len2 = (int)strlen(de->d_name);
 +						char num[7];
 +						
 +						if (len2 > 15) { /* could crash if trying to copy a string out of this range*/
 +							BLI_strncpy(num, de->d_name + (strlen(de->d_name) - 15), sizeof(num));
 +							frame = atoi(num);
 +							
 +							if ((mode == PTCACHE_CLEAR_BEFORE && frame < cfra) ||
 +							    (mode == PTCACHE_CLEAR_AFTER && frame > cfra))
 +							{
  								
 -								if ((mode == PTCACHE_CLEAR_BEFORE && frame < cfra) ||
 -								    (mode == PTCACHE_CLEAR_AFTER && frame > cfra))
 -								{
 -									
 -									BLI_join_dirfile(path_full, sizeof(path_full), path, de->d_name);
 -									BLI_delete(path_full, false, false);
 -									if (pid->cache->cached_frames && frame >=sta && frame <= end)
 -										pid->cache->cached_frames[frame-sta] = 0;
 -								}
 +								BLI_join_dirfile(path_full, sizeof(path_full), path, de->d_name);
 +								BLI_delete(path_full, false, false);
 +								if (pid->cache->state.cached_frames && frame >=sta && frame <= end)
 +									pid->cache->state.cached_frames[frame-sta] = 0;
  							}
  						}
  					}
diff --cc source/blender/blenloader/intern/versioning_270.c
index 37ad216,e6e4375..0ff953e
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -54,14 -49,11 +54,12 @@@
  
  #include "DNA_genfile.h"
  
- #include "BLI_blenlib.h"
- #include "BLI_math.h"
- 
  #include "BKE_main.h"
  #include "BKE_node.h"
 +#include "BKE_pointcache.h"
  
  #include "BLI_math.h"
+ #include "BLI_listbase.h"
  #include "BLI_string.h"
  
  #include "BLO_readfile.h"
@@@ -465,51 -435,27 +463,74 @@@ void blo_do_versions_270(FileData *fd, 
  			}
  		}
  	}
 +	
 +	/* memcache has been removed, clear BAKED flags to enforce rebaking */
 +	if (!PTCACHE_DO_VERSIONS(main)) {
 +		Object *ob;
 +		Scene *sce;
 +		for (ob = main->object.first; ob; ob = ob->id.next) {
 +			ModifierData *md;
 +			ParticleSystem *psys;
 +			for (md = ob->modifiers.first; md; md = md->next) {
 +				if (md->type == eModifierType_Fluidsim) {
 +					FluidsimModifierData *fluidmd = (FluidsimModifierData *)md;
 +					do_versions_pointcache(&ob->id, fluidmd->point_cache);
 +				}
 +				else if (md->type == eModifierType_Smoke) {
 +					SmokeModifierData *smd = (SmokeModifierData *)md;
 +					if (smd->type & MOD_SMOKE_TYPE_DOMAIN) {
 +						do_versions_pointcache(&ob->id, smd->domain->point_cache[0]);
 +					}
 +				}
 +				else if (md->type == eModifierType_Cloth) {
 +					ClothModifierData *clmd = (ClothModifierData *) md;
 +					do_versions_pointcache(&ob->id, clmd->point_cache);
 +				}
 +				else if (md->type == eModifierType_DynamicPaint) {
 +					DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
 +					if (pmd->canvas) {
 +						DynamicPaintSurface *surface;
 +						for (surface=pmd->canvas->surfaces.first; surface; surface=surface->next)
 +							do_versions_pointcache(&ob->id, surface->pointcache);
 +					}
 +				}
 +			}
 +			
 +			if (ob->soft) {
 +				do_versions_pointcache(&ob->id, ob->soft->pointcache);
 +			}
 +			
 +			for (psys = ob->particlesystem.first; psys; psys = psys->next) {
 +				do_versions_pointcache(&ob->id, psys->pointcache);
 +			}
 +		}
 +		for (sce = main->scene.first; sce; sce = sce->id.next) {
 +			RigidBodyWorld *rbw = sce->rigidbody_world;
 +			if (rbw)
 +				do_versions_pointcache(&sce->id, rbw->pointcache);
 +		}
 +	}
+ 
+ 	if (!MAIN_VERSION_ATLEAST(main, 273, 1)) {
+ #define	BRUSH_RAKE (1 << 7)
+ #define BRUSH_RANDOM_ROTATION (1 << 25)
+ 
+ 		Brush *br;
+ 
+ 		for (br = main->brush.first; br; br = br->id.next) {
+ 			if (br->flag & BRUSH_RAKE) {
+ 				br->mtex.brush_angle_mode |= MTEX_ANGLE_RAKE;
+ 				br->mask_mtex.brush_angle_mode |= MTEX_ANGLE_RAKE;
+ 			}
+ 			else if (br->flag & BRUSH_RANDOM_ROTATION) {
+ 				br->mtex.brush_angle_mode |= MTEX_ANGLE_RANDOM;
+ 				br->mask_mtex.brush_angle_mode |= MTEX_ANGLE_RANDOM;
+ 			}
+ 			br->mtex.random_angle = 2.0f * M_PI;
+ 			br->mask_mtex.random_angle = 2.0f * M_PI;
+ 		}
+ 
+ #undef BRUSH_RAKE
+ #undef BRUSH_RANDOM_ROTATION
+ 	}
  }
diff --cc source/blender/editors/space_outliner/outliner_draw.c
index 61c4fe3,a963f42..9bc043b3
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@@ -1018,8 -1018,8 +1018,10 @@@ static void tselem_draw_icon(uiBlock *b
  						UI_icon_draw(x, y, ICON_MOD_WIREFRAME); break;
  					case eModifierType_LaplacianDeform:
  						UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break;  /* XXX, needs own icon */
+ 					case eModifierType_DataTransfer:
+ 						UI_icon_draw(x, y, ICON_MOD_DATA_TRANSFER); break;
 +					case eModifierType_PointCache:
 +						UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break;  /* XXX, needs own icon */
  					/* Default */
  					case eModifierType_None:
  					case eModifierType_ShapeKey:
diff --cc source/blender/makesdna/DNA_modifier_types.h
index 5ab82f8,b1e9fd2..7b1a9bb
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@@ -82,7 -82,7 +82,8 @@@ typedef enum ModifierType 
  	eModifierType_MeshCache         = 46,
  	eModifierType_LaplacianDeform   = 47,
  	eModifierType_Wireframe         = 48,
- 	eModifierType_PointCache        = 49,
+ 	eModifierType_DataTransfer      = 49,
++	eModifierType_PointCache        = 50,
  	NUM_MODIFIER_TYPES
  } ModifierType;
  
@@@ -1367,19 -1367,48 +1368,62 @@@ enum 
  	MOD_WIREFRAME_CREASE        = (1 << 5),
  };
  
+ 
+ typedef struct DataTransferModifierData {
+ 	ModifierData modifier;
+ 
+ 	struct Object *ob_source;
+ 
+ 	int data_types;  /* See DT_TYPE_ enum in ED_object.h */
+ 
+ 	/* See MREMAP_MODE_ enum in BKE_mesh_mapping.h */
+ 	int vmap_mode;
+ 	int emap_mode;
+ 	int lmap_mode;
+ 	int pmap_mode;
+ 
+ 	float map_max_distance;
+ 	float map_ray_radius;
+ 	float islands_precision;
+ 
+ 	int pad_i1;
+ 
+ 	int layers_select_src[4];  /* DT_MULTILAYER_INDEX_MAX; See DT_FROMLAYERS_ enum in ED_object.h */
+ 	int layers_select_dst[4];  /* DT_MULTILAYER_INDEX_MAX; See DT_TOLAYERS_ enum in ED_object.h */
+ 
+ 	int mix_mode;  /* See CDT_MIX_ enum in BKE_customdata.h */
+ 	float mix_factor;
+ 	char defgrp_name[64];  /* MAX_VGROUP_NAME */
+ 
+ 	int flags;
+ } DataTransferModifierData;
+ 
+ /* DataTransferModifierData.flags */
+ enum {
+ 	MOD_DATATRANSFER_OBSRC_TRANSFORM  = 1 << 0,
+ 	MOD_DATATRANSFER_MAP_MAXDIST      = 1 << 1,
+ 	MOD_DATATRANSFER_INVERT_VGROUP    = 1 << 2,
+ 
+ 	/* Only for UI really. */
+ 	MOD_DATATRANSFER_USE_VERT         = 1 << 28,
+ 	MOD_DATATRANSFER_USE_EDGE         = 1 << 29,
+ 	MOD_DATATRANSFER_USE_LOOP         = 1 << 30,
+ 	MOD_DATATRANSFER_USE_POLY         = 1 << 31,
+ };
+ 
 +/* point cache modifier */
 +typedef struct PointCacheModifierData {
 +	ModifierData m

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list