Depsgraph: Add utility function to initialize evaluation context from scene and layer

This commit is contained in:
2017-07-26 16:27:15 +02:00
parent e99350aeaa
commit a01c1849e9
2 changed files with 28 additions and 11 deletions

View File

@@ -65,26 +65,27 @@ struct Main;
struct PointerRNA;
struct PropertyRNA;
struct Scene;
struct SceneLayer;
typedef enum eEvaluationMode {
DAG_EVAL_VIEWPORT = 0, /* evaluate for OpenGL viewport */
DAG_EVAL_PREVIEW = 1, /* evaluate for render with preview settings */
DAG_EVAL_RENDER = 2, /* evaluate for render purposes */
} eEvaluationMode;
/* Dependency graph evaluation context
*
* This structure stores all the local dependency graph data,
* which is needed for it's evaluation,
*/
typedef struct EvaluationContext {
int mode;
eEvaluationMode mode;
float ctime;
struct SceneLayer *scene_layer;
} EvaluationContext;
typedef enum eEvaluationMode {
DAG_EVAL_VIEWPORT = 0, /* evaluate for OpenGL viewport */
DAG_EVAL_PREVIEW = 1, /* evaluate for render with preview settings */
DAG_EVAL_RENDER = 2, /* evaluate for render purposes */
} eEvaluationMode;
/* DagNode->eval_flags */
enum {
/* Regardless to curve->path animation flag path is to be evaluated anyway,
@@ -198,13 +199,18 @@ void DEG_ids_check_recalc(struct Main *bmain,
/* Evaluation Context ---------------------------- */
/* Create new evaluation context. */
struct EvaluationContext *DEG_evaluation_context_new(int mode);
struct EvaluationContext *DEG_evaluation_context_new(eEvaluationMode mode);
/* Initialize evaluation context.
* Used by the areas which currently overrides the context or doesn't have
* access to a proper one.
*/
void DEG_evaluation_context_init(struct EvaluationContext *eval_ctx, int mode);
void DEG_evaluation_context_init(struct EvaluationContext *eval_ctx,
eEvaluationMode mode);
void DEG_evaluation_context_init_from_scene(struct EvaluationContext *eval_ctx,
struct Scene *scene,
struct SceneLayer *scene_layer,
eEvaluationMode mode);
/* Free evaluation context. */
void DEG_evaluation_context_free(struct EvaluationContext *eval_ctx);

View File

@@ -56,7 +56,7 @@ extern "C" {
/* Evaluation Context */
/* Create new evaluation context. */
EvaluationContext *DEG_evaluation_context_new(int mode)
EvaluationContext *DEG_evaluation_context_new(eEvaluationMode mode)
{
EvaluationContext *eval_ctx =
(EvaluationContext *)MEM_callocN(sizeof(EvaluationContext),
@@ -70,11 +70,22 @@ EvaluationContext *DEG_evaluation_context_new(int mode)
* Used by the areas which currently overrides the context or doesn't have
* access to a proper one.
*/
void DEG_evaluation_context_init(EvaluationContext *eval_ctx, int mode)
void DEG_evaluation_context_init(EvaluationContext *eval_ctx,
eEvaluationMode mode)
{
eval_ctx->mode = mode;
}
void DEG_evaluation_context_init_from_scene(EvaluationContext *eval_ctx,
Scene *scene,
SceneLayer *scene_layer,
eEvaluationMode mode)
{
DEG_evaluation_context_init(eval_ctx, mode);
eval_ctx->scene_layer = scene_layer;
eval_ctx->ctime = BKE_scene_frame_get(scene);
}
/* Free evaluation context. */
void DEG_evaluation_context_free(EvaluationContext *eval_ctx)
{