Depsgraph: Cleanup, deduplicate code around component registration

This commit is contained in:
Sergey Sharybin 2017-11-23 15:23:19 +01:00
parent f2842ac65e
commit 75a87abdc9
2 changed files with 31 additions and 88 deletions

View File

@ -333,40 +333,25 @@ void ComponentDepsNode::finalize_build()
operations_map = NULL;
}
/* Parameter Component Defines ============================ */
/* Register all components. =============================== */
DEG_DEPSNODE_DEFINE(ParametersComponentDepsNode, DEG_NODE_TYPE_PARAMETERS, "Parameters Component");
static DepsNodeFactoryImpl<ParametersComponentDepsNode> DNTI_PARAMETERS;
#define DEG_COMPONENT_DEFINE(name, NAME) \
DEG_DEPSNODE_DEFINE(name ## ComponentDepsNode, \
DEG_NODE_TYPE_ ## NAME, \
#name " Component"); \
static DepsNodeFactoryImpl<name ## ComponentDepsNode> DNTI_ ## NAME
/* Animation Component Defines ============================ */
DEG_DEPSNODE_DEFINE(AnimationComponentDepsNode, DEG_NODE_TYPE_ANIMATION, "Animation Component");
static DepsNodeFactoryImpl<AnimationComponentDepsNode> DNTI_ANIMATION;
/* Transform Component Defines ============================ */
DEG_DEPSNODE_DEFINE(TransformComponentDepsNode, DEG_NODE_TYPE_TRANSFORM, "Transform Component");
static DepsNodeFactoryImpl<TransformComponentDepsNode> DNTI_TRANSFORM;
/* Proxy Component Defines ================================ */
DEG_DEPSNODE_DEFINE(ProxyComponentDepsNode, DEG_NODE_TYPE_PROXY, "Proxy Component");
static DepsNodeFactoryImpl<ProxyComponentDepsNode> DNTI_PROXY;
/* Geometry Component Defines ============================= */
DEG_DEPSNODE_DEFINE(GeometryComponentDepsNode, DEG_NODE_TYPE_GEOMETRY, "Geometry Component");
static DepsNodeFactoryImpl<GeometryComponentDepsNode> DNTI_GEOMETRY;
/* Sequencer Component Defines ============================ */
DEG_DEPSNODE_DEFINE(SequencerComponentDepsNode, DEG_NODE_TYPE_SEQUENCER, "Sequencer Component");
static DepsNodeFactoryImpl<SequencerComponentDepsNode> DNTI_SEQUENCER;
/* Pose Component ========================================= */
DEG_DEPSNODE_DEFINE(PoseComponentDepsNode, DEG_NODE_TYPE_EVAL_POSE, "Pose Eval Component");
static DepsNodeFactoryImpl<PoseComponentDepsNode> DNTI_EVAL_POSE;
DEG_COMPONENT_DEFINE(Animation, ANIMATION);
DEG_COMPONENT_DEFINE(Cache, CACHE);
DEG_COMPONENT_DEFINE(Geometry, GEOMETRY);
DEG_COMPONENT_DEFINE(Parameters, PARAMETERS);
DEG_COMPONENT_DEFINE(Particles, EVAL_PARTICLES);
DEG_COMPONENT_DEFINE(Proxy, PROXY);
DEG_COMPONENT_DEFINE(Pose, EVAL_POSE);
DEG_COMPONENT_DEFINE(Sequencer, SEQUENCER);
DEG_COMPONENT_DEFINE(Shading, SHADING);
DEG_COMPONENT_DEFINE(Transform, TRANSFORM);
/* Bone Component ========================================= */
@ -387,24 +372,7 @@ void BoneComponentDepsNode::init(const ID *id, const char *subdata)
this->pchan = BKE_pose_channel_find_name(object->pose, subdata);
}
DEG_DEPSNODE_DEFINE(BoneComponentDepsNode, DEG_NODE_TYPE_BONE, "Bone Component");
static DepsNodeFactoryImpl<BoneComponentDepsNode> DNTI_BONE;
/* Particles Component Defines ============================ */
DEG_DEPSNODE_DEFINE(ParticlesComponentDepsNode, DEG_NODE_TYPE_EVAL_PARTICLES, "Particles Component");
static DepsNodeFactoryImpl<ParticlesComponentDepsNode> DNTI_EVAL_PARTICLES;
/* Shading Component Defines ============================ */
DEG_DEPSNODE_DEFINE(ShadingComponentDepsNode, DEG_NODE_TYPE_SHADING, "Shading Component");
static DepsNodeFactoryImpl<ShadingComponentDepsNode> DNTI_SHADING;
/* Cache Component Defines ============================ */
DEG_DEPSNODE_DEFINE(CacheComponentDepsNode, DEG_NODE_TYPE_CACHE, "Cache Component");
static DepsNodeFactoryImpl<CacheComponentDepsNode> DNTI_CACHE;
DEG_COMPONENT_DEFINE(Bone, BONE);
/* Node Types Register =================================== */

View File

@ -158,33 +158,21 @@ struct ComponentDepsNode : public DepsNode {
/* ---------------------------------------- */
struct ParametersComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
#define DEG_COMPONENT_DECLARE_GENERIC(name) \
struct name ## ComponentDepsNode : public ComponentDepsNode { \
DEG_DEPSNODE_DECLARE; \
}
struct AnimationComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct TransformComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct ProxyComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct GeometryComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct SequencerComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct PoseComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
DEG_COMPONENT_DECLARE_GENERIC(Animation);
DEG_COMPONENT_DECLARE_GENERIC(Cache);
DEG_COMPONENT_DECLARE_GENERIC(Geometry);
DEG_COMPONENT_DECLARE_GENERIC(Parameters);
DEG_COMPONENT_DECLARE_GENERIC(Particles);
DEG_COMPONENT_DECLARE_GENERIC(Proxy);
DEG_COMPONENT_DECLARE_GENERIC(Pose);
DEG_COMPONENT_DECLARE_GENERIC(Sequencer);
DEG_COMPONENT_DECLARE_GENERIC(Shading);
DEG_COMPONENT_DECLARE_GENERIC(Transform);
/* Bone Component */
struct BoneComponentDepsNode : public ComponentDepsNode {
@ -195,19 +183,6 @@ struct BoneComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct ParticlesComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct ShadingComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
struct CacheComponentDepsNode : public ComponentDepsNode {
DEG_DEPSNODE_DECLARE;
};
void deg_register_component_depsnodes();
} // namespace DEG