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:
Diffstat (limited to 'source/blender/blenkernel/intern/node_composite.c')
-rw-r--r--source/blender/blenkernel/intern/node_composite.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c
index 8a04f37bb3a..41fa770c3b9 100644
--- a/source/blender/blenkernel/intern/node_composite.c
+++ b/source/blender/blenkernel/intern/node_composite.c
@@ -950,6 +950,36 @@ static bNodeType cmp_node_normal= {
};
+/* **************** CURVE Time ******************** */
+
+/* custom1 = sfra, custom2 = efra */
+static bNodeSocketType cmp_node_time_out[]= {
+ { SOCK_VALUE, 0, "Fac", 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f},
+ { -1, 0, "" }
+};
+
+static void node_composit_exec_time(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
+{
+ /* stack order output: fac */
+ float fac= 0.0f;
+
+ if(node->custom1 < node->custom2)
+ fac= (G.scene->r.cfra - node->custom1)/(float)(node->custom2-node->custom1);
+
+ out[0]->vec[0]= curvemapping_evaluateF(node->storage, 0, fac);
+}
+
+static bNodeType cmp_node_time= {
+ /* type code */ CMP_NODE_TIME,
+ /* name */ "Time",
+ /* width+range */ 140, 100, 320,
+ /* class+opts */ NODE_CLASS_GENERATOR, NODE_OPTIONS,
+ /* input sock */ NULL,
+ /* output sock */ cmp_node_time_out,
+ /* storage */ "CurveMapping",
+ /* execfunc */ node_composit_exec_time
+};
+
/* **************** CURVE VEC ******************** */
static bNodeSocketType cmp_node_curve_vec_in[]= {
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f},
@@ -2184,6 +2214,7 @@ bNodeType *node_all_composit[]= {
&cmp_node_normal,
&cmp_node_curve_vec,
&cmp_node_curve_rgb,
+ &cmp_node_time,
&cmp_node_image,
&cmp_node_rresult,
&cmp_node_alphaover,
@@ -2222,5 +2253,7 @@ void ntreeCompositTagAnimated(bNodeTree *ntree)
if(node->storage)
NodeTagChanged(ntree, node);
}
+ else if(node->type==CMP_NODE_TIME)
+ NodeTagChanged(ntree, node);
}
}