Turned out that ValueRef::Variable objects with m_property_name starting with "Target." had a m_ref_type of NON_OBJECT_REFERENCE. If I understand the code correctly, this should be EFFECT_TARGET_REFERENCE instead.
Looking further into the matter, I finally came across this piece of code:
Code: Select all
ValueRef::Variable<T>::Variable(const std::vector<adobe::name_t>& property_name) :
m_ref_type(),
m_property_name(property_name.begin(), property_name.end())
{
assert(!property_name.empty());
adobe::name_t ref_type_name = property_name.front();
if (ref_type_name == CurrentTurn_name) {
m_ref_type = NON_OBJECT_REFERENCE;
} else if (ref_type_name == Source_name) {
m_ref_type = SOURCE_REFERENCE;
} else if (ref_type_name == Value_name || ref_type_name == Value_name) {
m_ref_type = EFFECT_TARGET_REFERENCE;
} else if (ref_type_name == LocalCandidate_name) {
m_ref_type = CONDITION_LOCAL_CANDIDATE_REFERENCE;
} else if (ref_type_name == RootCandidate_name) {
m_ref_type = CONDITION_ROOT_CANDIDATE_REFERENCE;
}
}
Code: Select all
} else if (ref_type_name == Value_name || ref_type_name == Value_name) {
m_ref_type = EFFECT_TARGET_REFERENCE;
Code: Select all
} else if (ref_type_name == Value_name || ref_type_name == Target_name) {
m_ref_type = EFFECT_TARGET_REFERENCE;
After I applied that fix and rebuild FO, resource meters were working fine again, so it looks like I got that right. I hope I could help a bit with this fix
Patch is attached.