Depsgraph: Add utility function to initialize evaluation context from scene and layer
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user