20 template<
typename KeyType>
24 return node !=
nullptr ?
node->get_exit_operation() :
nullptr;
27 template<
typename KeyFrom,
typename KeyTo>
30 const char *description,
38 if (op_from && op_to) {
44 std::cerr <<
"--------------------------------------------------------------------\n";
45 std::cerr <<
"Failed to add relation \"" << description <<
"\"\n";
48 std::cerr <<
"Could not find op_from: " << key_from.identifier() <<
"\n";
52 std::cerr <<
"Could not find op_to: " << key_to.identifier() <<
"\n";
56 std::cerr <<
"\nTrace:\n\n";
64 template<
typename KeyTo>
67 const char *description,
73 if (time_from !=
nullptr && op_to !=
nullptr) {
79 template<
typename KeyType>
82 const char *description,
88 if (op_from !=
nullptr && op_to !=
nullptr) {
94 "add_node_handle_relation(%s) - Could not find op_from (%s)\n",
96 key_from.identifier().c_str());
100 "add_node_handle_relation(%s) - Could not find op_to (%s)\n",
102 key_from.identifier().c_str());
110 if (rbo ==
nullptr) {
121 template<
typename KeyTo>
124 const char *description,
131 return add_relation(transform_key, key_to, description, flags);
135 return add_relation(transform_key, key_to, description, flags);
138 template<
typename KeyType>
140 const char *default_name)
149 template<
typename KeyFrom,
typename KeyTo>
156 if (node_from ==
nullptr || node_to ==
nullptr) {
161 if (op_from ==
nullptr || op_to ==
nullptr) {
180 template<
typename KeyFrom,
typename KeyTo>
187 if (node_from ==
nullptr || node_to ==
nullptr) {
192 if (op_from ==
nullptr || op_to ==
nullptr) {
ID and Library types, which are fundamental for sdna.
Object is a sort of wrapper for general info.
Types and defines for representing Rigid Body entities.
void print_backtrace(std::ostream &stream)
Relation * add_depends_on_transform_relation(ID *id, const KeyTo &key_to, const char *description, int flags=0)
TimeSourceNode * get_node(const TimeSourceKey &key) const
bool is_same_nodetree_node_dependency(const KeyFrom &key_from, const KeyTo &key_to)
bool is_same_bone_dependency(const KeyFrom &key_from, const KeyTo &key_to)
Relation * add_node_handle_relation(const KeyType &key_from, const DepsNodeHandle *handle, const char *description, int flags=0)
Relation * add_relation(const KeyFrom &key_from, const KeyTo &key_to, const char *description, int flags=0)
Relation * add_operation_relation(OperationNode *node_from, OperationNode *node_to, const char *description, int flags=0)
OperationNode * find_operation_node(const KeyType &key)
DepsNodeHandle create_node_handle(const KeyType &key, const char *default_name="")
Relation * add_time_relation(TimeSourceNode *timesrc, Node *node_to, const char *description, int flags=0)
static bool rigidbody_object_depends_on_evaluated_geometry(const RigidBodyOb *rbo)
struct RigidBodyOb * rigidbody_object
virtual OperationNode * get_exit_operation()
virtual OperationNode * get_entry_operation()
virtual OperationNode * get_entry_operation() override