If you want to try again, breakpoint on line 609 that I showed above. When that is run for the constraint with the problem, why is constraint->_active
set to true? In other words, what are the 4 boolean values on that line?
constraint->_active = constraint->_target->_active && (!constraint->_data.isSkinRequired() || (_skin && _skin->_constraints.contains(&constraint->_data)));
-
constraint->_target->_active
is true if the contraint's target bone is active (meaning it is not a skin bone, or it is a skin bone and the current skin has the target bone). This could be true or false, depending on your skeleton and the current skin. When you call setSkin
it calls updateCache
which sets the bones to active or not.
-
constraint->_data.isSkinRequired()
is true if this constraint is in a skin. I expect this to be true, since you said the constraint is in a skin.
-
_skin
evaluates to true if a skin is set. Make sure it is the skin you expect (eg look at the skin name).
-
_skin->_constraints.contains(&constraint->_data)))
is true if the current skin contains the constraint. I expect this to be false, since you said you've set a skin that does not have the constraint.
With the values I expect above, constraint->_active
would be assigned false. Since you say it is true, we need to know the values above so we know why it gets true.