80 if (object->
pose !=
nullptr) {
106 operation_name_tag(-1)
118 : depsgraph_(
depsgraph), builder_(builder)
138 if (comp_node ==
nullptr) {
151 const char *substr = strstr(prop_identifier, rna_path_component);
152 if (substr ==
nullptr) {
158 const bool start_ok = substr == prop_identifier || substr[-1] ==
'.';
163 const size_t component_len = strlen(rna_path_component);
164 const bool end_ok =
ELEM(substr[component_len],
'\0',
'.',
'[');
174 return node_identifier;
196 return node_identifier;
204 if (prop !=
nullptr) {
217 else if (
STR_ELEM(prop_name,
"head",
"tail",
"length") ||
STRPREFIX(prop_name,
"matrix")) {
227 return node_identifier;
241 return node_identifier;
252 if (pchan ==
nullptr) {
261 return node_identifier;
269 if (con !=
nullptr) {
270 if (pchan !=
nullptr) {
279 return node_identifier;
302 return node_identifier;
306 if (prop !=
nullptr) {
309 if (
contains(prop_identifier,
"location") ||
contains(prop_identifier,
"matrix_basis") ||
310 contains(prop_identifier,
"matrix_channel") ||
311 contains(prop_identifier,
"matrix_inverse") ||
312 contains(prop_identifier,
"matrix_local") ||
313 contains(prop_identifier,
"matrix_parent_inverse") ||
314 contains(prop_identifier,
"matrix_world") ||
315 contains(prop_identifier,
"rotation_axis_angle") ||
316 contains(prop_identifier,
"rotation_euler") ||
317 contains(prop_identifier,
"rotation_mode") ||
318 contains(prop_identifier,
"rotation_quaternion") ||
contains(prop_identifier,
"scale") ||
319 contains(prop_identifier,
"delta_location") ||
320 contains(prop_identifier,
"delta_rotation_euler") ||
321 contains(prop_identifier,
"delta_rotation_quaternion") ||
322 contains(prop_identifier,
"delta_scale")) {
324 return node_identifier;
326 if (
contains(prop_identifier,
"data")) {
330 return node_identifier;
332 if (
STR_ELEM(prop_identifier,
"hide_viewport",
"hide_render")) {
334 return node_identifier;
336 if (
STREQ(prop_identifier,
"dimensions")) {
339 return node_identifier;
349 return node_identifier;
354 return node_identifier;
359 return node_identifier;
363 return node_identifier;
367 return node_identifier;
372 return node_identifier;
377 return node_identifier;
383 return node_identifier;
388 return node_identifier;
390 if (prop !=
nullptr) {
396 return node_identifier;
398 return node_identifier;
403 unique_ptr<RNANodeQueryIDData> &id_data =
id_data_map_.lookup_or_add_cb(
404 id, [&]() {
return std::make_unique<RNANodeQueryIDData>(
id); });
405 return id_data.get();
struct bConstraint * BKE_constraint_find_from_target(struct Object *ob, struct bConstraintTarget *tgt, struct bPoseChannel **r_pchan)
#define LISTBASE_FOREACH(type, var, list)
Object is a sort of wrapper for general info.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
StructRNA RNA_VertexGroupElement
StructRNA RNA_BezierSplinePoint
StructRNA RNA_ConstraintTargetBone
StructRNA RNA_SplinePoint
StructRNA RNA_LatticePoint
StructRNA RNA_MeshLoopColor
StructRNA RNA_GPencilLayer
StructRNA RNA_ConstraintTarget
StructRNA RNA_GpencilModifier
StructRNA RNA_MeshPolygon
Value lookup_default(const Key &key, const Value &default_value) const
void add_new(const Key &key, const Value &value)
virtual bool check_pchan_has_bbone_segments(Object *object, const bPoseChannel *pchan)
OperationCode operation_code
const char * operation_name
const char * component_name
const bPoseChannel * get_pchan_for_constraint(const bConstraint *constraint)
RNANodeQueryIDData(const ID *id)
void ensure_constraint_to_pchan_map()
Map< const bConstraint *, const bPoseChannel * > * constraint_to_pchan_map_
Node * find_node(const PointerRNA *ptr, const PropertyRNA *prop, RNAPointerSource source)
RNANodeIdentifier construct_node_identifier(const PointerRNA *ptr, const PropertyRNA *prop, RNAPointerSource source)
static bool contains(const char *prop_identifier, const char *rna_path_component)
DepsgraphBuilder * builder_
RNANodeQuery(Depsgraph *depsgraph, DepsgraphBuilder *builder)
RNANodeQueryIDData * ensure_id_data(const ID *id)
Map< const ID *, unique_ptr< RNANodeQueryIDData > > id_data_map_
const Depsgraph * depsgraph
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
const char * RNA_property_identifier(const PropertyRNA *prop)
bool RNA_property_is_idprop(const PropertyRNA *prop)
OperationNode * find_operation(OperationIDKey key) const
IDNode * find_id_node(const ID *id) const