private static void LoadSingleForm(Form form, RecordReader reader, SharedData sharedData)
{
// Skip if record has been already loaded
// unless it has been loaded lazily and current loading scheme is lazy again
if (form.Record != null && (!form.IsLazyLoaded || sharedData.LazyLoading))
{
Interlocked.Increment(ref sharedData.Skipped);
}
else
{
if (sharedData.LazyLoading)
{
form.Flags |= FormFlags.LazyLoaded;
}
else
{
form.Flags &= ~FormFlags.LazyLoaded;
}
form.Record = sharedData.Plugin.Context.CreateGenericFormRecord(form.FormKind);
reader.ReadRecordAt(form.FilePosition, form.Record, sharedData.LazyLoading);
sharedData.LastFormLoaded = form;
if (form.IsDummyRecord)
Interlocked.Increment(ref sharedData.Unsupported);
Interlocked.Increment(ref sharedData.Loaded);
}
}