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:
authorCampbell Barton <ideasman42@gmail.com>2018-07-30 09:16:44 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-07-30 09:16:44 +0300
commitf4379f8b914eaf7aa1f17323f927836a3d9288fc (patch)
treef0fa1827cdbfd63b18ee6c4306d4ff6b57fcbf51 /source/blender/blenkernel
parent9c960557a7d2734b3be8cf5f512ef0d8bba54e98 (diff)
Use Ctrl Snap to seconds w/ play-head drag
D3056 by @alourenco
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_scene.h2
-rw-r--r--source/blender/blenkernel/intern/scene.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index ae809641480..e85867fcbe7 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -114,6 +114,8 @@ int BKE_scene_camera_switch_update(struct Scene *scene);
char *BKE_scene_find_marker_name(struct Scene *scene, int frame);
char *BKE_scene_find_last_marker_name(struct Scene *scene, int frame);
+int BKE_scene_frame_snap_by_seconds(struct Scene *scene, double interval_in_seconds, int cfra);
+
/* checks for cycle, returns 1 if it's all OK */
bool BKE_scene_validate_setscene(struct Main *bmain, struct Scene *sce);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index a1003910ca3..1eb65519596 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1204,6 +1204,16 @@ char *BKE_scene_find_last_marker_name(Scene *scene, int frame)
return best_marker ? best_marker->name : NULL;
}
+int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int cfra)
+{
+ const int fps = round_db_to_int(FPS * interval_in_seconds);
+ const int second_prev = cfra - mod_i(cfra, fps);
+ const int second_next = second_prev + fps;
+ const int delta_prev = cfra - second_prev;
+ const int delta_next = second_next - cfra;
+ return (delta_prev < delta_next) ? second_prev : second_next;
+}
+
Base *BKE_scene_base_add(Scene *sce, Object *ob)
{