static void SaveEntry(File file, WRLEntry entry) { file.Store32(OBMG_MAGIC); var type = entry.Type; file.StoreFixedString(type, 24); file.Store32(entry.U); var length = entry.Length; file.Store32(length); var endPosition = file.GetPosition() + length; file.Store32(entry.Layer); file.StoreFixedString(entry.Name, 24); var binding = ""; if (entry.Binding != null) { binding = entry.Binding.Name; } file.StoreFixedString(binding, 24); entry.Save(file); if (file.GetPosition() != endPosition) { GD.PrintErr("The WRLEntry for type \"", type, "\" didn't write the correct amount; correcting..."); file.Seek(endPosition); } foreach (var e in entry.children) { SaveEntry(file, e); } }
void HandleEntryAdded(WRLEntry entry) { EntryAdded(entry); entry.children.ForEach(HandleEntryAdded); }