Changeset View
Changeset View
Standalone View
Standalone View
source/blender/depsgraph/intern/depsgraph_eval.cc
| Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | void DEG_evaluate_on_refresh(Depsgraph *graph) | ||||
| const float frame = BKE_scene_frame_get(scene); | const float frame = BKE_scene_frame_get(scene); | ||||
| const float ctime = BKE_scene_ctime_get(scene); | const float ctime = BKE_scene_ctime_get(scene); | ||||
| if (deg_graph->frame != frame || ctime != deg_graph->ctime) { | if (deg_graph->frame != frame || ctime != deg_graph->ctime) { | ||||
| deg_graph->tag_time_source(); | deg_graph->tag_time_source(); | ||||
| deg_graph->frame = frame; | deg_graph->frame = frame; | ||||
| deg_graph->ctime = ctime; | deg_graph->ctime = ctime; | ||||
| } | } | ||||
| else if ((scene->id.recalc & ID_RECALC_FRAME_CHANGE)) { | |||||
| /* Comparing depsgraph & scene frame fails in the case of undo, | |||||
| * since the undo state is stored before updates from the frame change have been applied. | |||||
| * In this case reading back the undo state will behave as if no updates on frame change | |||||
| * is needed as the #Depsgraph.ctime & frame will match the values in the input scene. | |||||
| * Use #ID_RECALC_FRAME_CHANGE to detect that recalculation is necessary. see: T66913. */ | |||||
| deg_graph->tag_time_source(); | |||||
| } | |||||
| deg_flush_updates_and_refresh(deg_graph); | deg_flush_updates_and_refresh(deg_graph); | ||||
| } | } | ||||
| void DEG_evaluate_on_framechange(Depsgraph *graph, float frame) | void DEG_evaluate_on_framechange(Depsgraph *graph, float frame) | ||||
| { | { | ||||
| deg::Depsgraph *deg_graph = reinterpret_cast<deg::Depsgraph *>(graph); | deg::Depsgraph *deg_graph = reinterpret_cast<deg::Depsgraph *>(graph); | ||||
| const Scene *scene = DEG_get_input_scene(graph); | const Scene *scene = DEG_get_input_scene(graph); | ||||
| deg_graph->tag_time_source(); | deg_graph->tag_time_source(); | ||||
| deg_graph->frame = frame; | deg_graph->frame = frame; | ||||
| deg_graph->ctime = BKE_scene_frame_to_ctime(scene, frame); | deg_graph->ctime = BKE_scene_frame_to_ctime(scene, frame); | ||||
| deg_flush_updates_and_refresh(deg_graph); | deg_flush_updates_and_refresh(deg_graph); | ||||
| } | } | ||||