Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 19:31:55 +0300
committerSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 19:31:55 +0300
commit34859b285aff14b022c9b175fa2babfff7c63314 (patch)
treea07bfadfa50a516af32ee9ef6fdc0c68302c55fb /source/blender
parent405980b1facff4a76e3661a412eab1d072d0236f (diff)
parent6099b2620d645f4129c42af2272cb6bd8538fc7a (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/cachefile.c3
-rw-r--r--source/blender/editors/interface/interface_templates.c3
-rw-r--r--source/blender/makesdna/DNA_cachefile_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_cachefile.c9
-rw-r--r--source/blender/modifiers/intern/MOD_meshsequencecache.c1
5 files changed, 17 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c
index 9d02a27187c..f8215668034 100644
--- a/source/blender/blenkernel/intern/cachefile.c
+++ b/source/blender/blenkernel/intern/cachefile.c
@@ -211,8 +211,9 @@ bool BKE_cachefile_filepath_get(
float BKE_cachefile_time_offset(CacheFile *cache_file, const float time, const float fps)
{
+ const float time_offset = cache_file->frame_offset / fps;
const float frame = (cache_file->override_frame ? cache_file->frame : time);
- return cache_file->is_sequence ? frame : frame / fps;
+ return cache_file->is_sequence ? frame : frame / fps - time_offset;
}
/* TODO(kevin): replace this with some depsgraph mechanism, or something similar. */
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index d7fac303d4e..c4bb50bb68b 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -4362,6 +4362,9 @@ void uiTemplateCacheFile(uiLayout *layout, bContext *C, PointerRNA *ptr, const c
uiItemR(row, &fileptr, "frame", 0, "Frame", ICON_NONE);
row = uiLayoutRow(layout, false);
+ uiItemR(row, &fileptr, "frame_offset", 0, "Frame Offset", ICON_NONE);
+
+ row = uiLayoutRow(layout, false);
uiItemL(row, IFACE_("Manual Transform:"), ICON_NONE);
row = uiLayoutRow(layout, false);
diff --git a/source/blender/makesdna/DNA_cachefile_types.h b/source/blender/makesdna/DNA_cachefile_types.h
index a353c94ae64..c0e662d8a48 100644
--- a/source/blender/makesdna/DNA_cachefile_types.h
+++ b/source/blender/makesdna/DNA_cachefile_types.h
@@ -75,9 +75,12 @@ typedef struct CacheFile {
float scale;
float frame; /* The frame/time to lookup in the cache file. */
+ float frame_offset; /* The frame offset to subtract. */
short flag; /* Animation flag. */
short draw_flag;
+
+ char padding[4];
} CacheFile;
#ifdef __cplusplus
diff --git a/source/blender/makesrna/intern/rna_cachefile.c b/source/blender/makesrna/intern/rna_cachefile.c
index bfe419ca8e3..0e59c3784bc 100644
--- a/source/blender/makesrna/intern/rna_cachefile.c
+++ b/source/blender/makesrna/intern/rna_cachefile.c
@@ -147,6 +147,15 @@ static void rna_def_cachefile(BlenderRNA *brna)
" or to determine which file to use in a file sequence");
RNA_def_property_update(prop, 0, "rna_CacheFile_update");
+ prop = RNA_def_property(srna, "frame_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "frame_offset");
+ RNA_def_property_range(prop, -MAXFRAME, MAXFRAME);
+ RNA_def_property_ui_text(prop, "Frame Offset",
+ "Subtracted from the current frame to use for "
+ "looking up the data in the cache file, or to "
+ "determine which file to use in a file sequence");
+ RNA_def_property_update(prop, 0, "rna_CacheFile_update");
+
/* ----------------- Axis Conversion ----------------- */
prop = RNA_def_property(srna, "forward_axis", PROP_ENUM, PROP_NONE);
diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c
index 86c2a24eddf..e28459814e2 100644
--- a/source/blender/modifiers/intern/MOD_meshsequencecache.c
+++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c
@@ -108,7 +108,6 @@ static DerivedMesh *applyModifier(ModifierData *md, const struct EvaluationConte
Scene *scene = md->scene;
const float frame = BKE_scene_frame_get(scene);
const float time = BKE_cachefile_time_offset(mcmd->cache_file, frame, FPS);
-
const char *err_str = NULL;
CacheFile *cache_file = mcmd->cache_file;