/* Utilities For F-Curve Modifiers ---------------------- */
-/* Recalculate the F-Curve at evaltime, as modified by the given F-Curve */
-// TODO: this isn't really such an elegant solution for time-modifying F-Modifiers, but it gets too difficult otherwise for now...
+/* Recalculate the F-Curve at evaltime, as modified by the given F-Curve
+ *
+ * While this may sound wrong (and be potentially very slow), it is invalid for F-Curve modifiers to actually
+ * modify the evaltime in such a way that those after it will end up evaluating in the wrong time space.
+ */
static float fcm_reevaluate_fcurve (FCurve *fcu, FModifier *fcm, float cvalue, float evaltime)
{
ListBase modifiers = {NULL, NULL};
#include "RNA_access.h"
#include "ED_armature.h"
+#include "ED_keyframing.h"
#include "ED_object.h"
#include "ED_screen.h"
static int outliner_drivers_addsel_exec(bContext *C, wmOperator *op)
{
SpaceOops *soutliner= (SpaceOops*)CTX_wm_space_data(C);
- Scene *scene= CTX_data_scene(C);
/* check for invalid states */
if (soutliner == NULL)
static int outliner_drivers_deletesel_exec(bContext *C, wmOperator *op)
{
SpaceOops *soutliner= (SpaceOops*)CTX_wm_space_data(C);
- Scene *scene= CTX_data_scene(C);
/* check for invalid states */
if (soutliner == NULL)
}
}
- /* add target values to a py dictionary that we add to the drivers dict as 'd' */
+ /* add target values to a dict that will be used as '__locals__' dict */
driver_vars = PyDict_New(); // XXX do we need to decref this?
for (dtar= driver->targets.first; dtar; dtar= dtar->next) {
PyObject *driver_arg = NULL;
/* try to get variable value */
tval= driver_get_target_value(driver, dtar);
driver_arg= PyFloat_FromDouble((double)tval);
- if (driver_arg == NULL) continue;
/* try to add to dictionary */
if (PyDict_SetItemString(driver_vars, dtar->name, driver_arg)) {
- /* this target failed */
+ /* this target failed - bad name */
if (targets_ok) {
/* first one - print some extra info for easier identification */
fprintf(stderr, "\nBPY_pydriver_eval() - Error while evaluating PyDriver:\n");