/// <summary> /// Create a 1:1 Clone based on the passed Group Number /// </summary> /// <param name="gid"></param> /// <returns></returns> public static SimPe.Packages.GeneratableFile CreatCloneByGroup(uint gid) { SimPe.Packages.GeneratableFile package = SimPe.Packages.GeneratableFile.CreateNew(); SimPe.Interfaces.IAlias a; Interfaces.Files.IPackedFileDescriptor pfd; uint localgroup; OWCloneSettings cs; ObjectWorkshopHelper.PrepareForClone(package, out a, out localgroup, out pfd, out cs); ObjectWorkshopHelper.BaseClone(gid, package, false); return(ObjectWorkshopHelper.Start(package, a, ref pfd, localgroup, cs, true)); }
/// <summary> /// Create a 1:1 Clone based on the passed GUID /// </summary> /// <param name="guid"></param> /// <returns></returns> public static SimPe.Packages.GeneratableFile CreatCloneByGuid(uint guid) { SimPe.Packages.GeneratableFile package = SimPe.Packages.GeneratableFile.CreateNew(); SimPe.Interfaces.IAlias a; Interfaces.Files.IPackedFileDescriptor pfd; uint localgroup; OWCloneSettings cs; ObjectWorkshopHelper.PrepareForClone(package, out a, out localgroup, out pfd, out cs); SimPe.Interfaces.Scenegraph.IScenegraphFileIndex fii = FileTable.FileIndex.AddNewChild(); SimPe.Cache.MemoryCacheItem mci = SimPe.PackedFiles.Wrapper.ObjectComboBox.ObjectCache.FindItem(guid); if (mci != null) { localgroup = mci.FileDescriptor.Group; if (localgroup == Data.MetaData.LOCAL_GROUP) { SimPe.Interfaces.Wrapper.IGroupCacheItem gci = SimPe.FileTable.GroupCache.GetItem(mci.ParentCacheContainer.FileName); if (gci != null) { if (!FileTable.FileIndex.Contains(mci.ParentCacheContainer.FileName)) { fii.AddIndexFromPackage(mci.ParentCacheContainer.FileName); } localgroup = gci.LocalGroup; } } ObjectWorkshopHelper.BaseClone(localgroup, package, false); } SimPe.Packages.GeneratableFile ret = ObjectWorkshopHelper.Start(package, a, ref pfd, localgroup, cs, true); fii.CloseAssignedPackages(); FileTable.FileIndex.RemoveChild(fii); return(ret); }