Fixed EntityParser to handle string enums properly.
This commit is contained in:
@@ -9,7 +9,9 @@
|
|||||||
<Entity name="X">
|
<Entity name="X">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>2</Type>
|
<Type>
|
||||||
|
<Rotate/>
|
||||||
|
</Type>
|
||||||
<Axis X="1" Y="0" Z="0"/>
|
<Axis X="1" Y="0" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -22,7 +24,9 @@
|
|||||||
<Entity name="Y">
|
<Entity name="Y">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>2</Type>
|
<Type>
|
||||||
|
<Rotate/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -35,7 +39,9 @@
|
|||||||
<Entity name="Z">
|
<Entity name="Z">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>2</Type>
|
<Type>
|
||||||
|
<Rotate/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="0" Z="1"/>
|
<Axis X="0" Y="0" Z="1"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
<Entity name="X">
|
<Entity name="X">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>3</Type>
|
<Type>
|
||||||
|
<Scale/>
|
||||||
|
</Type>
|
||||||
<Axis X="1" Y="0" Z="0"/>
|
<Axis X="1" Y="0" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -25,7 +27,9 @@
|
|||||||
<Entity name="Y">
|
<Entity name="Y">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>3</Type>
|
<Type>
|
||||||
|
<Scale/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -38,7 +42,9 @@
|
|||||||
<Entity name="Z">
|
<Entity name="Z">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>3</Type>
|
<Type>
|
||||||
|
<Scale/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="0" Z="1"/>
|
<Axis X="0" Y="0" Z="1"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
<Entity name="X">
|
<Entity name="X">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="1" Y="0" Z="0"/>
|
<Axis X="1" Y="0" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -25,7 +27,9 @@
|
|||||||
<Entity name="Y">
|
<Entity name="Y">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -38,7 +42,9 @@
|
|||||||
<Entity name="Z">
|
<Entity name="Z">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="0" Z="1"/>
|
<Axis X="0" Y="0" Z="1"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -51,7 +57,9 @@
|
|||||||
<Entity name="XPlane">
|
<Entity name="XPlane">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="0" Y="1" Z="1"/>
|
<Axis X="0" Y="1" Z="1"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -64,7 +72,9 @@
|
|||||||
<Entity name="YPlane">
|
<Entity name="YPlane">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="1" Y="0" Z="1"/>
|
<Axis X="1" Y="0" Z="1"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -77,7 +87,9 @@
|
|||||||
<Entity name="ZPlane">
|
<Entity name="ZPlane">
|
||||||
<Components>
|
<Components>
|
||||||
<c:EditorWidget>
|
<c:EditorWidget>
|
||||||
<Type>1</Type>
|
<Type>
|
||||||
|
<Translate/>
|
||||||
|
</Type>
|
||||||
<Axis X="1" Y="1" Z="0"/>
|
<Axis X="1" Y="1" Z="0"/>
|
||||||
</c:EditorWidget>
|
</c:EditorWidget>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
|
|||||||
@@ -86,6 +86,8 @@ void EntityFile::WriteAttributeData(char* outData, const ComponentInfo::Field_t&
|
|||||||
|
|
||||||
void EntityFile::WriteValueData(char* outData, const ComponentInfo::Field_t& field, const char* valueData)
|
void EntityFile::WriteValueData(char* outData, const ComponentInfo::Field_t& field, const char* valueData)
|
||||||
{
|
{
|
||||||
|
// Catch and ignore casting errors so whitespace around string enums won't mess anything up
|
||||||
|
try {
|
||||||
if (field.Type == "int" || field.Type == "enum") {
|
if (field.Type == "int" || field.Type == "enum") {
|
||||||
int value = boost::lexical_cast<int>(valueData);
|
int value = boost::lexical_cast<int>(valueData);
|
||||||
memcpy(outData, reinterpret_cast<char*>(&value), field.Stride);
|
memcpy(outData, reinterpret_cast<char*>(&value), field.Stride);
|
||||||
@@ -103,6 +105,7 @@ void EntityFile::WriteValueData(char* outData, const ComponentInfo::Field_t& fie
|
|||||||
} else {
|
} else {
|
||||||
LOG_WARNING("Unknown value data type: %s", field.Type.c_str());
|
LOG_WARNING("Unknown value data type: %s", field.Type.c_str());
|
||||||
}
|
}
|
||||||
|
} catch (const boost::bad_lexical_cast&) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityFileSAXHandler::EntityFileSAXHandler(const EntityFileHandler* handler, xercesc::SAX2XMLReader* reader) : m_Handler(handler)
|
EntityFileSAXHandler::EntityFileSAXHandler(const EntityFileHandler* handler, xercesc::SAX2XMLReader* reader) : m_Handler(handler)
|
||||||
|
|||||||
Reference in New Issue
Block a user