Made EntityFileWriter store enums as strings instead of integer values to be resistant to enum value changes!
This commit is contained in:
@@ -114,9 +114,18 @@ void EntityFileWriter::appentEntityComponents(xercesc::DOMElement* parentElement
|
|||||||
fieldElement->setAttribute(X("Y"), X(boost::lexical_cast<std::string>(q.y)));
|
fieldElement->setAttribute(X("Y"), X(boost::lexical_cast<std::string>(q.y)));
|
||||||
fieldElement->setAttribute(X("Z"), X(boost::lexical_cast<std::string>(q.z)));
|
fieldElement->setAttribute(X("Z"), X(boost::lexical_cast<std::string>(q.z)));
|
||||||
fieldElement->setAttribute(X("W"), X(boost::lexical_cast<std::string>(q.w)));
|
fieldElement->setAttribute(X("W"), X(boost::lexical_cast<std::string>(q.w)));
|
||||||
} else if (field.Type == "int" || field.Type == "enum") {
|
} else if (field.Type == "int") {
|
||||||
const int& value = c[fieldName];
|
const int& value = c[fieldName];
|
||||||
fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast<std::string>(value))));
|
fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast<std::string>(value))));
|
||||||
|
} else if (field.Type == "enum") {
|
||||||
|
const int& value = c[fieldName];
|
||||||
|
auto& enumDef = c.Info.Meta->FieldEnumDefinitions.at(fieldName);
|
||||||
|
for (auto& kv : enumDef) {
|
||||||
|
if (kv.second == value) {
|
||||||
|
fieldElement->appendChild(doc->createElement(X(kv.first)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (field.Type == "float") {
|
} else if (field.Type == "float") {
|
||||||
const float& value = c[fieldName];
|
const float& value = c[fieldName];
|
||||||
fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast<std::string>(value))));
|
fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast<std::string>(value))));
|
||||||
|
|||||||
Reference in New Issue
Block a user