Depsgraph: Cleanup, split build_driver function up
This commit is contained in:
@@ -1093,6 +1093,30 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcu)
|
||||
* initialised later?
|
||||
*/
|
||||
/* Loop over variables to get the target relationships. */
|
||||
build_driver_variables(id, fcu);
|
||||
/* It's quite tricky to detect if the driver actually depends on time or
|
||||
* not, so for now we'll be quite conservative here about optimization and
|
||||
* consider all python drivers to be depending on time.
|
||||
*/
|
||||
if ((driver->type == DRIVER_TYPE_PYTHON) &&
|
||||
python_driver_depends_on_time(driver))
|
||||
{
|
||||
TimeSourceKey time_src_key;
|
||||
add_relation(time_src_key, driver_key, "TimeSrc -> Driver");
|
||||
}
|
||||
}
|
||||
|
||||
void DepsgraphRelationBuilder::build_driver_variables(ID *id, FCurve *fcu)
|
||||
{
|
||||
ChannelDriver *driver = fcu->driver;
|
||||
OperationKey driver_key(id,
|
||||
DEG_NODE_TYPE_PARAMETERS,
|
||||
DEG_OPCODE_DRIVER,
|
||||
fcu->rna_path ? fcu->rna_path : "",
|
||||
fcu->array_index);
|
||||
const char *rna_path = fcu->rna_path ? fcu->rna_path : "";
|
||||
const RNAPathKey self_key(id, rna_path);
|
||||
|
||||
LINKLIST_FOREACH (DriverVar *, dvar, &driver->variables) {
|
||||
/* Only used targets. */
|
||||
DRIVER_TARGETS_USED_LOOPER(dvar)
|
||||
@@ -1158,16 +1182,6 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcu)
|
||||
}
|
||||
DRIVER_TARGETS_LOOPER_END
|
||||
}
|
||||
/* It's quite tricky to detect if the driver actually depends on time or
|
||||
* not, so for now we'll be quite conservative here about optimization and
|
||||
* consider all python drivers to be depending on time.
|
||||
*/
|
||||
if ((driver->type == DRIVER_TYPE_PYTHON) &&
|
||||
python_driver_depends_on_time(driver))
|
||||
{
|
||||
TimeSourceKey time_src_key;
|
||||
add_relation(time_src_key, driver_key, "TimeSrc -> Driver");
|
||||
}
|
||||
}
|
||||
|
||||
void DepsgraphRelationBuilder::build_world(World *world)
|
||||
|
||||
@@ -198,6 +198,7 @@ struct DepsgraphRelationBuilder
|
||||
RootPChanMap *root_map);
|
||||
void build_animdata(ID *id);
|
||||
void build_driver(ID *id, FCurve *fcurve);
|
||||
void build_driver_variables(ID *id, FCurve *fcurve);
|
||||
void build_world(World *world);
|
||||
void build_rigidbody(Scene *scene);
|
||||
void build_particles(Object *object);
|
||||
|
||||
Reference in New Issue
Block a user