private void WriteTdf(Tdf tdf)
{
// write label
WriteLabel(tdf.Label);
// write type
_stream.WriteByte((byte)tdf.Type);
switch (tdf.Type)
{
case TdfBaseType.Integer:
WriteTdfInteger((TdfInteger)tdf);
break;
case TdfBaseType.String:
WriteString(((TdfString)tdf).Value);
break;
case TdfBaseType.Binary:
WriteBlob(((TdfBlob)tdf).Data);
break;
case TdfBaseType.Struct:
WriteStruct(((TdfStruct)tdf).Data);
break;
case TdfBaseType.List:
WriteTdfList((TdfList)tdf);
break;
case TdfBaseType.Map:
WriteTdfMap((TdfMap)tdf);
break;
case TdfBaseType.Union:
WriteTdfUnion((TdfUnion)tdf);
break;
case TdfBaseType.Variable:
WriteTdfIntegerList((TdfIntegerList)tdf);
break;
case TdfBaseType.TDF_TYPE_BLAZE_OBJECT_TYPE:
WriteTdfVector2((TdfVector2)tdf);
break;
case TdfBaseType.TDF_TYPE_BLAZE_OBJECT_ID:
WriteTdfVector3((TdfVector3)tdf);
break;
default:
Log.Warn(string.Format("Unknown Tdf type: {0}", tdf.Type));
break;
}
}