Mass: fix data ordering issue with joint sliders.
This commit is contained in:
parent
83fa5822bf
commit
bd8ff47f1e
2 changed files with 77 additions and 66 deletions
|
@ -290,94 +290,94 @@ auto Mass::writeJointSliders() -> bool {
|
|||
return false;
|
||||
}
|
||||
|
||||
auto length = frame_prop->at<FloatProperty>("NeckLength_6_ED6AF79849C27CD1A9D523A09E2BFE58");
|
||||
if(!length && _frame.joints.neck != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("NeckLength_6_ED6AF79849C27CD1A9D523A09E2BFE58");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
Containers::Array<UnrealPropertyBase::ptr> temp;
|
||||
|
||||
auto length = frame_prop->atMove<FloatProperty>("NeckLength_6_ED6AF79849C27CD1A9D523A09E2BFE58");
|
||||
if(_frame.joints.neck != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("NeckLength_6_ED6AF79849C27CD1A9D523A09E2BFE58");
|
||||
}
|
||||
length->value = _frame.joints.neck;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("BodyLength_7_C16287754CBA96C93BAE36A5C154996A");
|
||||
if(!length && _frame.joints.body != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("BodyLength_7_C16287754CBA96C93BAE36A5C154996A");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length = frame_prop->atMove<FloatProperty>("BodyLength_7_C16287754CBA96C93BAE36A5C154996A");
|
||||
if(_frame.joints.body != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("BodyLength_7_C16287754CBA96C93BAE36A5C154996A");
|
||||
}
|
||||
length->value = _frame.joints.body;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("ShoulderLength_8_220EDF304F1C1226F0D8D39117FB3883");
|
||||
if(!length && _frame.joints.shoulders != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("ShoulderLength_8_220EDF304F1C1226F0D8D39117FB3883");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length = frame_prop->atMove<FloatProperty>("ShoulderLength_8_220EDF304F1C1226F0D8D39117FB3883");
|
||||
if(_frame.joints.shoulders != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("ShoulderLength_8_220EDF304F1C1226F0D8D39117FB3883");
|
||||
}
|
||||
length->value = _frame.joints.shoulders;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("HipLength_14_02AEEEAC4376087B9C51F0AA7CC92818");
|
||||
if(!length && _frame.joints.hips != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("HipLength_14_02AEEEAC4376087B9C51F0AA7CC92818");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length->value = _frame.joints.hips;
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("ArmUpperLength_10_249FDA3E4F3B399E7B9E5C9B7C765EAE");
|
||||
if(!length && _frame.joints.upperArms != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("ArmUpperLength_10_249FDA3E4F3B399E7B9E5C9B7C765EAE");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length = frame_prop->atMove<FloatProperty>("ArmUpperLength_10_249FDA3E4F3B399E7B9E5C9B7C765EAE");
|
||||
if(_frame.joints.upperArms != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("ArmUpperLength_10_249FDA3E4F3B399E7B9E5C9B7C765EAE");
|
||||
}
|
||||
length->value = _frame.joints.upperArms;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("ArmLowerLength_12_ACD0F02745C28882619376926292FB36");
|
||||
if(!length && _frame.joints.lowerArms != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("ArmLowerLength_12_ACD0F02745C28882619376926292FB36");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length = frame_prop->atMove<FloatProperty>("ArmLowerLength_12_ACD0F02745C28882619376926292FB36");
|
||||
if(_frame.joints.lowerArms != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("ArmLowerLength_12_ACD0F02745C28882619376926292FB36");
|
||||
}
|
||||
length->value = _frame.joints.lowerArms;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("LegUpperLength_16_A7C4C71249A3776F7A543D96819C0C61");
|
||||
if(!length && _frame.joints.upperLegs != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("LegUpperLength_16_A7C4C71249A3776F7A543D96819C0C61");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
length = frame_prop->atMove<FloatProperty>("HipLength_14_02AEEEAC4376087B9C51F0AA7CC92818");
|
||||
if(_frame.joints.hips != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("HipLength_14_02AEEEAC4376087B9C51F0AA7CC92818");
|
||||
}
|
||||
length->value = _frame.joints.hips;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
if(length) {
|
||||
|
||||
length = frame_prop->atMove<FloatProperty>("LegUpperLength_16_A7C4C71249A3776F7A543D96819C0C61");
|
||||
if(_frame.joints.upperLegs != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("LegUpperLength_16_A7C4C71249A3776F7A543D96819C0C61");
|
||||
}
|
||||
length->value = _frame.joints.upperLegs;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
length = frame_prop->at<FloatProperty>("LegLowerLength_18_D2DF39964EA0F2A2129D0491B08A032F");
|
||||
if(!length && _frame.joints.lowerLegs != 0.0f) {
|
||||
length = new FloatProperty;
|
||||
auto length_prop = FloatProperty::ptr{length};
|
||||
length_prop->name.emplace("LegLowerLength_18_D2DF39964EA0F2A2129D0491B08A032F");
|
||||
arrayAppend(frame_prop->properties, std::move(length_prop));
|
||||
}
|
||||
if(length) {
|
||||
length = frame_prop->atMove<FloatProperty>("LegLowerLength_18_D2DF39964EA0F2A2129D0491B08A032F");
|
||||
if(_frame.joints.lowerLegs != 0.0f) {
|
||||
if(!length) {
|
||||
length.emplace();
|
||||
length->name.emplace("LegLowerLength_18_D2DF39964EA0F2A2129D0491B08A032F");
|
||||
}
|
||||
length->value = _frame.joints.lowerLegs;
|
||||
arrayAppend(temp, std::move(length));
|
||||
}
|
||||
|
||||
arrayAppend(temp, std::move(frame_prop->properties[frame_prop->properties.size() - 3]));
|
||||
arrayAppend(temp, std::move(frame_prop->properties[frame_prop->properties.size() - 2]));
|
||||
arrayAppend(temp, std::move(frame_prop->properties[frame_prop->properties.size() - 1]));
|
||||
|
||||
frame_prop->properties = std::move(temp);
|
||||
|
||||
if(!_mass->saveToFile()) {
|
||||
_lastError = "Couldn't write data to " + _filename;
|
||||
return false;
|
||||
|
|
|
@ -36,5 +36,16 @@ struct GenericStructProperty : public StructProperty {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::enable_if_t<std::is_base_of<UnrealPropertyBase, T>::value, typename T::ptr>
|
||||
atMove(const std::string& name) {
|
||||
for(auto& item : properties) {
|
||||
if(item && item->name == name) {
|
||||
return Containers::Pointer<T>{static_cast<T*>(item.release())};
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Containers::Array<UnrealPropertyBase::ptr> properties;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue