Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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();
            }
        }