private void ReadField(MetaField field)
{
// Update the field's memory address
var valueField = field as ValueField;
if (valueField != null)
{
valueField.FieldAddress = BaseOffset + valueField.Offset;
if (_type == LoadType.File)
valueField.FieldAddress = _cache.MetaArea.OffsetToPointer((int) valueField.FieldAddress);
}
// Read its contents if it hasn't changed (or if change detection is disabled)
if (_ignoredFields == null || !_ignoredFields.HasChanged(field))
field.Accept(this);
// If it's a reflexive, read its children
var reflexive = field as ReflexiveData;
if (reflexive != null)
ReadReflexiveChildren(reflexive);
}