mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Adjustments to save out code when writing fields such that if the TAML writer is marked as not writing defaults, it doesn't. And makes the regular simobject save out not write default values as the default behavior
This commit is contained in:
parent
5e1eb80bc1
commit
b4e346aa3f
|
|
@ -304,6 +304,10 @@ bool SimObject::writeField(StringTableEntry fieldname, const char* value)
|
|||
void SimObject::writeFields(Stream &stream, U32 tabStop)
|
||||
{
|
||||
// Write static fields.
|
||||
|
||||
// Create a default object of the same type
|
||||
ConsoleObject* defaultConObject = ConsoleObject::create(getClassName());
|
||||
SimObject* defaultObject = dynamic_cast<SimObject*>(defaultConObject);
|
||||
|
||||
const AbstractClassRep::FieldList &list = getFieldList();
|
||||
|
||||
|
|
@ -332,6 +336,11 @@ void SimObject::writeFields(Stream &stream, U32 tabStop)
|
|||
if (!writeField(f->pFieldname, valCopy))
|
||||
continue;
|
||||
|
||||
//If the field hasn't been changed from the default value, then don't bother writing it out
|
||||
const char* defaultValueCheck = defaultObject->getDataField(f->pFieldname, array);
|
||||
if (dStricmp(defaultValueCheck, valCopy) == 0)
|
||||
continue;
|
||||
|
||||
val = valCopy;
|
||||
|
||||
U32 expandedBufferSize = ( nBufferSize * 2 ) + dStrlen(f->pFieldname) + 32;
|
||||
|
|
@ -366,6 +375,9 @@ void SimObject::writeFields(Stream &stream, U32 tabStop)
|
|||
|
||||
if(mFieldDictionary && mCanSaveFieldDictionary)
|
||||
mFieldDictionary->writeFields(this, stream, tabStop);
|
||||
|
||||
// Cleanup our created default object
|
||||
delete defaultConObject;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -217,11 +217,6 @@ ImplementEnumType(_TamlFormatMode,
|
|||
|
||||
FileStream stream;
|
||||
|
||||
if (StringTable->insert("c://.asset.taml") == StringTable->insert(mFilePathBuffer))
|
||||
{
|
||||
bool asdfasdf = true;
|
||||
}
|
||||
|
||||
// File opened?
|
||||
if (!stream.open(mFilePathBuffer, Torque::FS::File::Write))
|
||||
{
|
||||
|
|
@ -643,6 +638,19 @@ ImplementEnumType(_TamlFormatMode,
|
|||
// Fetch field count.
|
||||
const U32 fieldCount = fieldList.size();
|
||||
|
||||
ConsoleObject* defaultConObject;
|
||||
SimObject* defaultObject;
|
||||
if (!getWriteDefaults())
|
||||
{
|
||||
// Create a default object of the same type
|
||||
defaultConObject = ConsoleObject::create(pSimObject->getClassName());
|
||||
defaultObject = dynamic_cast<SimObject*>(defaultConObject);
|
||||
|
||||
// ***Really*** shouldn't happen
|
||||
if (!defaultObject)
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate fields.
|
||||
U8 arrayDepth = 0;
|
||||
TamlCustomNode* currentArrayNode = NULL;
|
||||
|
|
@ -709,9 +717,6 @@ ImplementEnumType(_TamlFormatMode,
|
|||
if (!pFieldValue)
|
||||
pFieldValue = StringTable->EmptyString();
|
||||
|
||||
if (pField->type == TypeBool)
|
||||
pFieldValue = dAtob(pFieldValue) ? "true" : "false";
|
||||
|
||||
U32 nBufferSize = dStrlen(pFieldValue) + 1;
|
||||
FrameTemp<char> valueCopy(nBufferSize);
|
||||
dStrcpy((char *)valueCopy, pFieldValue, nBufferSize);
|
||||
|
|
@ -720,9 +725,19 @@ ImplementEnumType(_TamlFormatMode,
|
|||
if (!pSimObject->writeField(fieldName, valueCopy))
|
||||
continue;
|
||||
|
||||
if (!getWriteDefaults())
|
||||
{
|
||||
//If the field hasn't been changed from the default value, then don't bother writing it out
|
||||
if (dStricmp(defaultObject->getDataField(fieldName, indexBuffer), pFieldValue) == 0)
|
||||
continue;
|
||||
}
|
||||
|
||||
// Reassign field value.
|
||||
pFieldValue = valueCopy;
|
||||
|
||||
if (pField->type == TypeBool)
|
||||
pFieldValue = dAtob(pFieldValue) ? "true" : "false";
|
||||
|
||||
// Detect and collapse relative path information
|
||||
char fnBuf[1024];
|
||||
if ((S32)pField->type == TypeFilename)
|
||||
|
|
@ -741,6 +756,12 @@ ImplementEnumType(_TamlFormatMode,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!getWriteDefaults())
|
||||
{
|
||||
// Cleanup our created default object
|
||||
delete defaultConObject;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Reference in a new issue