public void UnExecute() { StageView stage = MainForm.CurrentStage; Library lib = MainForm.CurrentLibrary; LibraryView libView = MainForm.CurrentLibraryView; for (int i = removedTreeNodes.Length - 1; i >= 0; i--) { LibraryTreeNode liv = removedTreeNodes[i]; lib.AddLibraryItem(liv.item); libView.InsertNode(liv, removedPaths[i], removedIndexes[i]); } // todo: need to readd bonds and snaps. for (int i = removedInstances.Length - 1; i >= 0; i--) { stage.AddInstance(removedInstances[i]); } libView.SelectNode(selectedNode); removedInstances = null; removedTreeNodes = null; removedPaths = null; removedIndexes = null; selectedNode = null; stage.InvalidateAll(); libView.RefreshCurrentNode(); }
private void dragDrop(object sender, DragEventArgs args) { LibraryTreeNode node = (LibraryTreeNode)args.Data.GetData(typeof(LibraryTreeNode)); FileDescriptor fDesc = FileManager.Instance.lookUp(node.FilePath); TypeDescriptor tDesc = null; if (fDesc is TypeDescriptor) { tDesc = (TypeDescriptor)fDesc; } else if (fDesc is ArtDescriptor) { tDesc = CoreTypes.getType <SimpleObject>(); } if (tDesc != null) { InstanceDescriptor inst = new InstanceDescriptor(Descriptor.Level); inst.Sprite = new Sprite(WhiskeyControl.Renderer, WhiskeyControl.Resources, inst.Sprite); inst.Light.Visible = false; inst.initialize(tDesc); Point p = PointToClient(new Point(args.X, args.Y - ToolStrip.Height)); inst.Position = new Vector(p.X, p.Y);// -inst.Bounds.Size / 2; inst.Position = WhiskeyControl.ActiveCamera.getGameCoordinate(inst.Position); inst.X = inst.Position.X; inst.Y = inst.Position.Y; SelectionManager.Instance.SelectedInstance = inst; Dirty = true; if (fDesc is ArtDescriptor) { ArtDescriptor aDesc = (ArtDescriptor)fDesc; inst.Sprite.ImagePath = aDesc.Name; inst.Sprite.Scale = Vector.One; } Descriptor.Level.updateAll(); } }
private void dragEnter(object sender, DragEventArgs args) { if (args.Data.GetData(typeof(LibraryTreeNode)) is LibraryTreeNode) { LibraryTreeNode node = (LibraryTreeNode)args.Data.GetData(typeof(LibraryTreeNode)); FileDescriptor fDesc = FileManager.Instance.lookUp(node.FilePath); if (fDesc != null && (fDesc is TypeDescriptor || fDesc.GetType().IsSubclassOf(typeof(TypeDescriptor)))) { args.Effect = DragDropEffects.All; } if (fDesc != null && (fDesc is ArtDescriptor)) { args.Effect = DragDropEffects.All; } } }
public void Execute() { StageView stage = MainForm.CurrentStage; Library lib = MainForm.CurrentLibrary; LibraryView libView = MainForm.CurrentLibraryView; List <LibraryTreeNode> remNodes = new List <LibraryTreeNode>(); List <string> remPaths = new List <string>(); List <int> remIndexes = new List <int>(); selectedNode = libView.GetSelectedNode(); for (int i = 0; i < libraryIds.Length; i++) { uint id = libraryIds[i]; uint[] uis = lib.FindAllUsagesOfDefinition(id); removedInstances = stage.RemoveInstancesByIdGlobal(uis); LibraryItem li = lib[id]; if (li != null) { TreeNode tn = libView.FindNode(id); if (tn != null && tn is LibraryTreeNode) { LibraryTreeNode liv = (LibraryTreeNode)tn; remNodes.Add(liv); remPaths.Add(liv.FullPath); remIndexes.Add(liv.Index); lib.RemoveLibraryItem(liv.item); tn.Remove(); } } } removedTreeNodes = remNodes.ToArray(); removedPaths = remPaths.ToArray(); removedIndexes = remIndexes.ToArray(); stage.InvalidateAll(); libView.RefreshCurrentNode(); }
private void dragDrop(object sender, DragEventArgs args) { LibraryTreeNode node = (LibraryTreeNode)args.Data.GetData(typeof(LibraryTreeNode)); FileDescriptor fDesc = FileManager.Instance.lookUp(node.FilePath); if (fDesc is ScriptDescriptor) { ScriptDescriptor sDesc = (ScriptDescriptor)fDesc; if (sDesc.TargetTypeName.Equals(Descriptor.TypeDescriptorInFileManager.Name)) { Descriptor.addScript(sDesc.Name); Refresh(); } } //LibraryTreeNode node = (LibraryTreeNode)args.Data.GetData(typeof(LibraryTreeNode)); //FileDescriptor fDesc = FileManager.Instance.lookUp(node.FilePath); //if (fDesc is TypeDescriptor) //{ // TypeDescriptor tDesc = (TypeDescriptor)fDesc; // InstanceDescriptor inst = new InstanceDescriptor(tDesc, Descriptor.Level); // inst.Sprite = new Sprite(WhiskeyControl.Renderer, inst.Sprite); // //inst.Sprite.Scale *= 50; // Point p = PointToClient(new Point(args.X, args.Y - ToolStrip.Height)); // inst.Position = new Vector(p.X, p.Y) - inst.Bounds.Size / 2; // inst.X = inst.Position.X; // inst.Y = inst.Position.Y; // //Descriptor.Level.Descriptors.Add(inst); // Dirty = true; //} // save(new DefaultProgressNotifier()); }
private void dragEnter(object sender, DragEventArgs args) { if (args.Data.GetData(typeof(LibraryTreeNode)) is LibraryTreeNode) { LibraryTreeNode node = (LibraryTreeNode)args.Data.GetData(typeof(LibraryTreeNode)); FileDescriptor fDesc = FileManager.Instance.lookUp(node.FilePath); if (fDesc != null && fDesc is ScriptDescriptor) { ScriptDescriptor sDesc = (ScriptDescriptor)fDesc; if (sDesc.TargetTypeName.Equals(Descriptor.TypeDescriptorInFileManager.Name)) { args.Effect = DragDropEffects.All; } } } }