From 332e00198914bb6cd34199fffb3832e170066959 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 20 Apr 2009 09:17:43 +0000 Subject: Drivers: "Scripted Expression" drivers (i.e. PyDrivers) work again Now it is possible to write a Python Expression using the variable names for driver targets (see mockup from initial commit) to substitute the appropriate values into the expression. In the __global__ namespace for PyDriver evaluation, the following modules are available: * __builtins__ - i.e. the builtin Python functions * bpy - new Python API * math or m - math module For example: Consider a driver with three targets, named: A, B, C Now, you could write an expression like: C if A < 5 else B or even: 2*C if A < 5 or A > 20 else m.PI*B Of course, you don't have to have three targets, the above was just an example. TODO: * Bring back way to load pydrivers.py * Blender.Noise equivalent would be nice to have P.S. I hope I haven't made any terrible Python API coding errors here (i.e. mem leaks, etc.) --- source/blender/blenkernel/BKE_fcurve.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source/blender/blenkernel/BKE_fcurve.h') diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index f973f86972d..3dd083476ce 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -33,6 +33,8 @@ struct ChannelDriver *fcurve_copy_driver(struct ChannelDriver *driver); void driver_free_target(struct ChannelDriver *driver, struct DriverTarget *dtar); struct DriverTarget *driver_add_new_target(struct ChannelDriver *driver); +float driver_get_target_value(struct ChannelDriver *driver, struct DriverTarget *dtar); + /* ************** F-Curve Modifiers *************** */ /* F-Curve Modifier Type-Info (fmi): -- cgit v1.2.3