Exemplo n.º 1
0
 // Disposer
 public virtual void Dispose()
 {
     // Not already disposed?
     if (!isdisposed)
     {
         // Done
         textureset = null;
         isdisposed = true;
     }
 }
Exemplo n.º 2
0
        //mxd
        private static void SetItemsCount(TreeNode node)
        {
            ResourceImageSet ts = ((TreeNodeData)node.Tag).Set as ResourceImageSet;

            if (ts == null)
            {
                throw new Exception("Expected ResourceImageSet, but got null...");
            }
            if (ts.Images.Count > 0)
            {
                node.Text += " [" + ts.Images.Count + "]";
            }
            foreach (TreeNode child in node.Nodes)
            {
                SetItemsCount(child);
            }
        }
Exemplo n.º 3
0
        //mxd
        private void CreateNodes(TreeNode root)
        {
            TreeNodeData     rootdata = (TreeNodeData)root.Tag;
            ResourceImageSet set      = rootdata.Set as ResourceImageSet;

            if (set == null)
            {
                General.ErrorLogger.Add(ErrorType.Error, "Resource " + root.Name + " doesn't have ImageSet!");
                return;
            }

            int imageIndex = (int)set.Location.type + 5;

            //char[] separator = { Path.AltDirectorySeparatorChar };

            ImageData[] images = new ImageData[set.Images.Count];
            set.Images.CopyTo(images, 0);

            Array.Sort(images, SortImageData);

            List <ImageData> rootimages = new List <ImageData>();

            foreach (ImageData image in images)
            {
                rootimages.Add(image);

                //TODO

                /*string[] parts = image.VirtualName.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                 * TreeNode curNode = root;
                 *
                 * if(parts.Length == 1)
                 * {
                 *      rootimages.Add(image);
                 *      continue;
                 * }
                 *
                 * int localindex = ((parts[0] == "[TEXTURES]" || image is TEXTURESImage) ? 8 : imageIndex);
                 * string category = set.Name;
                 * for(int i = 0; i < parts.Length - 1; i++)
                 * {
                 *      category += (Path.DirectorySeparatorChar + parts[i]);
                 *
                 *      //already got such category?
                 *      if(curNode.Nodes.Count > 0 && curNode.Nodes.ContainsKey(category))
                 *      {
                 *              curNode = curNode.Nodes[category];
                 *      }
                 *      else //create a new one
                 *      {
                 *              TreeNode n = new TreeNode(parts[i]) { Name = category, ImageIndex = localindex, SelectedImageIndex = localindex };
                 *              curNode.Nodes.Add(n);
                 *              curNode = n;
                 *              curNode.Tag = new TreeNodeData { Set = new ResourceTextureSet(category, set.Location), FolderName = parts[i] };
                 *      }
                 *
                 *      // Add to current node
                 *      if(i == parts.Length - 2)
                 *      {
                 *              ResourceTextureSet curTs = ((TreeNodeData)curNode.Tag).Set as ResourceTextureSet;
                 *              if(image.IsFlat)
                 *                      curTs.AddFlat(image);
                 *              else
                 *                      curTs.AddTexture(image);
                 *      }
                 * }*/
            }

            // Shift the tree up when only single child node was added
            if (root.Nodes.Count == 1 && root.Nodes[0].Nodes.Count > 0)
            {
                TreeNode[] children = new TreeNode[root.Nodes[0].Nodes.Count];
                root.Nodes[0].Nodes.CopyTo(children, 0);
                root.Nodes.Clear();
                root.Nodes.AddRange(children);
            }

            // Add "All set textures" node
            if (root.Nodes.Count > 1)
            {
                TreeNode allnode = new TreeNode(ALL_IMAGES)
                {
                    Name               = ALL_IMAGES,
                    ImageIndex         = imageIndex,
                    SelectedImageIndex = imageIndex,
                    Tag = new TreeNodeData {
                        Set = set, FolderName = ALL_IMAGES
                    }
                };
                root.Nodes.Add(allnode);
            }

            // Sort immediate child nodes...
            TreeNode[] rootnodes = new TreeNode[root.Nodes.Count];
            root.Nodes.CopyTo(rootnodes, 0);
            Array.Sort(rootnodes, SortTreeNodes);
            root.Nodes.Clear();
            root.Nodes.AddRange(rootnodes);

            // Re-add root images
            ResourceImageSet rootset = new ResourceImageSet(set.Name, set.Location);

            foreach (ImageData data in rootimages)
            {
                rootset.AddImage(data);
            }

            // Store root data
            rootdata.Set = rootset;
            root.Tag     = rootdata;

            // Set root images count
            if (rootset.Images.Count > 0)
            {
                root.Text += " [" + rootset.Images.Count + "]";
            }

            // Add image count to node titles
            foreach (TreeNode n in root.Nodes)
            {
                SetItemsCount(n);
            }
        }
Exemplo n.º 4
0
 // Constructor
 public DataReader(DataLocation dl)
 {
     // Keep information
     location   = dl;
     textureset = new ResourceImageSet(GetTitle(), dl);
 }