public PartMetadata(PartManager manager) { Manager = manager; BlockSetInfo = new BlockSetInfo(); m_mountPoints = new Dictionary <string, Dictionary <string, PartMount> >(); m_mountPointBlocks = new Dictionary <Vector3I, PartMountPointBlock>(128, Vector3I.Comparer); m_reservedSpaces = new List <ReservedSpace>(); m_blocks = new Dictionary <Vector3I, MyObjectBuilder_CubeBlock>(256, Vector3I.Comparer); }
public PartFromPrefab(PartManager manager, MyPrefabDefinition prefab) : base(manager) { Prefab = prefab; var success = false; // Try init from cache. try { if (MyAPIGateway.Utilities.FileExistsInLocalStorage(CacheName, typeof(PartFromPrefab))) { using (var reader = MyAPIGateway.Utilities.ReadFileInLocalStorage(CacheName, typeof(PartFromPrefab))) { var xml = reader.ReadToEnd(); var ob = MyAPIGateway.Utilities.SerializeFromXML <Ob_Part>(xml); if (ob != null && ob.BuilderVersion == Ob_Part.PartBuilderVersion) { Logger.Info("Loading {0} from cache", Name); Init(ob); success = true; } } } } catch (Exception e) { Logger.Warning("Malformed cache for {0}.\n{1}", Name, e); } // Try init from metadata. If only this actually worked :/ TODO // if (!success && !string.IsNullOrWhiteSpace(prefab.DisplayNameString)) // try // { // var data = Convert.FromBase64String(prefab.DisplayNameString); // var obs = MyAPIGateway.Utilities.SerializeFromBinary<MyObjectBuilder_Part>(data); // if (obs != null) // { // SessionCore.Log("Loading {0} from description", Name); // Init(obs); // success = true; // } // } // catch (Exception e) // { // SessionCore.Log("Malformed description tag for {0}.\n{1}", Name, e); // } // Fallback to init from prefab data if (!success || Prefab.Initialized) { InitFromPrefab(); } }