コード例 #1
0
        public void cleanup()
        {
            //Cleanup slide trash
            CleanupInfo cleanupInfo = new CleanupInfo();

            slideshow.cleanup(cleanupInfo, ResourceProvider);

            undoBuffer.clear(); //Can't really recover from this one, so just erase all undo
            List <Guid> cleanupSlides = new List <Guid>(projectGuidDirectories());

            foreach (Slide slide in slideshow.Slides)
            {
                Guid guid;
                if (Guid.TryParse(slide.UniqueName, out guid))
                {
                    cleanupSlides.Remove(guid);
                }
                foreach (String file in ResourceProvider.listFiles("*", slide.UniqueName, true))
                {
                    if (!cleanupInfo.isClaimed(file))
                    {
                        try
                        {
                            editorController.ResourceProvider.delete(file);
                        }
                        catch (Exception ex)
                        {
                            Logging.Log.Error("Cleanup -- Failed to delete file '{0}'. Reason: {1}", file, ex.Message);
                        }
                    }
                }
            }
            foreach (Guid dir in cleanupSlides)
            {
                try
                {
                    editorController.ResourceProvider.delete(dir.ToString("D"));
                }
                catch (Exception ex)
                {
                    Logging.Log.Error("Cleanup -- Failed to delete directory '{0}'. Reason: {1}", dir, ex.Message);
                }
            }

            PropFactory   propFactory = standaloneController.PropFactory;
            DDAtlasPlugin plugin;

            using (Stream pluginFileStream = editorController.ResourceProvider.openFile("Plugin.ddp"))
            {
                plugin = SharedXmlSaver.Load <DDAtlasPlugin>(pluginFileStream);
            }
            plugin.setDependencyIds(cleanupInfo.getObjects <String>(ShowPropAction.PropClass)
                                    .Select(n => propFactory.getDependencyIdForProp(n))
                                    .Where(id => id.HasValue)
                                    .Select(id => id.Value));
            using (Stream pluginFileStream = editorController.ResourceProvider.openWriteStream("Plugin.ddp"))
            {
                SharedXmlSaver.Save(plugin, pluginFileStream);
            }
        }
コード例 #2
0
 public void CleanUp()
 {
     shadowCleanupList.AddRange(cleanupList);
     cleanupList.Clear();
     foreach (CleanupInfo shadowCleanup in shadowCleanupList)
     {
         CleanupInfo current = shadowCleanup;
         OnCleanUp(current.handle);
         InternalRemoveComponent(current);
     }
     shadowCleanupList.Clear();
 }
コード例 #3
0
    public override void Remove(GameObject go)
    {
        HandleVector <int> .Handle handle = GetHandle(go);
        OnCleanUpImmediate(handle);
        CleanupInfo cleanupInfo = new CleanupInfo(go, handle);

        if (!KComponentCleanUp.InCleanUpPhase)
        {
            cleanupList.Add(cleanupInfo);
        }
        else
        {
            InternalRemoveComponent(cleanupInfo);
        }
    }
コード例 #4
0
    public virtual void Remove(GameObject go)
    {
        HandleVector <int> .Handle handle = GetHandle(go);
        CleanupInfo cleanupInfo           = new CleanupInfo(go, handle);

        if (!KComponentCleanUp.InCleanUpPhase)
        {
            cleanupList.Add(cleanupInfo);
        }
        else
        {
            RemoveFromCleanupList(go);
            OnCleanUp(handle);
            InternalRemoveComponent(cleanupInfo);
        }
    }
コード例 #5
0
        private void RunCore(CleanupInfo cleanupInfo, CleanupRunResult result)
        {
            if (cleanupInfo.IsFile)
            {
                if (File.Exists(cleanupInfo.FullPath))
                {
                    File.Delete(cleanupInfo.FullPath);
                }

                result.TargetAffectedFileCount++;
            }
            else
            {
                Directory.Delete(cleanupInfo.FullPath, true);
            }
        }
コード例 #6
0
    protected void RemoveFromCleanupList(object instance)
    {
        int num = 0;

        while (true)
        {
            if (num >= cleanupList.Count)
            {
                return;
            }
            CleanupInfo cleanupInfo = cleanupList[num];
            if (cleanupInfo.instance == instance)
            {
                break;
            }
            num++;
        }
        cleanupList[num] = cleanupList[cleanupList.Count - 1];
        cleanupList.RemoveAt(cleanupList.Count - 1);
    }
コード例 #7
0
 protected void InternalRemoveComponent(CleanupInfo info)
 {
     if (info.instance != null)
     {
         if (!instanceHandleMap.ContainsKey(info.instance))
         {
             DebugUtil.LogErrorArgs("Tried to remove component of type", typeof(Header).ToString(), typeof(Payload).ToString(), "on instance", info.instance.ToString(), "but instance has not been registered yet. Handle:", info.handle);
             return;
         }
         instanceHandleMap.Remove(info.instance);
     }
     else
     {
         foreach (KeyValuePair <object, HandleVector <int> .Handle> item in instanceHandleMap)
         {
             if (item.Value == info.handle)
             {
                 instanceHandleMap.Remove(item.Key);
             }
         }
     }
     Free(info.handle);
     spawnList.Remove(info.handle);
 }
コード例 #8
0
 public virtual void cleanup(Slide slide, CleanupInfo info, ResourceProvider resourceProvider)
 {
 }
コード例 #9
0
 public override void cleanup(Slide slide, CleanupInfo info, ResourceProvider resourceProvider)
 {
     info.claimFile(Path.Combine(slide.UniqueName, imageName));
     base.cleanup(slide, info, resourceProvider);
 }