private void MakeSerializable(GameObject go, Table table) { // add table component (plus other data) _tb = go.AddComponent <TableBehavior>(); _tb.SetItemAndData(table); var sidecar = _tb.GetOrCreateSidecar(); foreach (var key in table.TableInfo.Keys) { sidecar.tableInfo[key] = table.TableInfo[key]; } sidecar.textures = table.Textures.Values.Select(d => d.Data).ToArray(); sidecar.customInfoTags = table.CustomInfoTags; sidecar.collections = table.Collections.Values.Select(c => c.Data).ToArray(); sidecar.decals = table.Decals.Select(d => d.Data).ToArray(); sidecar.dispReels = table.DispReels.Values.Select(d => d.Data).ToArray(); sidecar.flashers = table.Flashers.Values.Select(d => d.Data).ToArray(); sidecar.lightSeqs = table.LightSeqs.Values.Select(d => d.Data).ToArray(); sidecar.plungers = table.Plungers.Values.Select(d => d.Data).ToArray(); sidecar.sounds = table.Sounds.Values.Select(d => d.Data).ToArray(); sidecar.textBoxes = table.TextBoxes.Values.Select(d => d.Data).ToArray(); sidecar.timers = table.Timers.Values.Select(d => d.Data).ToArray(); Logger.Info("Collections saved: [ {0} ] [ {1} ]", string.Join(", ", table.Collections.Keys), string.Join(", ", sidecar.collections.Select(c => c.Name)) ); }