示例#1
0
        private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Label == null)
            {
                return;
            }
            KeyValuesList kvList = (KeyValuesList)e.Node.Tag;

            // changing key-value of the entity
            if (kvList != null)
            {
                string keyName = e.Node.Parent.Text;
                kvList.setKeyValue(keyName, e.Label);
                // fix the classname display at entity node
                if (keyName.CompareTo("classname") == 0)
                {
                    TreeNode  nodeKeyValues = e.Node.Parent.Parent;
                    TreeNode  nodeEntity    = nodeKeyValues.Parent;
                    MapEntity mapEntity     = (MapEntity)nodeEntity.Tag;
                    if (mapEntity != null)
                    {
                        nodeEntity.Text = ("Entity " + mapEntity.getIndex() + " (" + mapEntity.getClassName() + ")");
                    }
                }
            }
            MapBrushBase brushBase = (MapBrushBase)e.Node.Tag;

            // changing the material name of brushside
            if (brushBase != null)
            {
                // TODO
            }
        }
示例#2
0
        private void copyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (contextMenuNode == null)
            {
                return;
            }
            // allow user to copy entire entity (along with key valeus and brushes)
            MapEntity entity = contextMenuNode.Tag as MapEntity;

            if (entity != null)
            {
                Clipboard.SetText(entity.ToString());
                return;
            }
            // allow user to copy single brushdef block
            MapBrushBase brush = contextMenuNode.Tag as MapBrushBase;

            if (brush != null)
            {
                Clipboard.SetText(brush.ToString());
                return;
            }
            // allow user to copy single keyvalues list
            KeyValuesList epairs = contextMenuNode.Tag as KeyValuesList;

            if (epairs != null)
            {
                Clipboard.SetText(epairs.ToString());
                return;
            }
        }
示例#3
0
        private void viewMapFile(string mapName)
        {
            MapFileParser p = new MapFileParser();

            try
            {
                if (p.loadMapFile(mapName))
                {
                    MessageBox.Show("Failed to load .map file '" + mapName + "'");
                    return;
                }
            }
            catch (System.IO.DirectoryNotFoundException ex)
            {
                MessageBox.Show("Failed to load .map file '" + mapName + "' - directory not found exception.");
                return;
            }
            map = p.getMapFile();
            map.setTreeView(treeView1);

            /*
             * MapFileWriter w = new MapFileWriter();
             * w.writeMapFile(map, mapName + "_textExport.map");
             * */
            treeView1.BeginUpdate();
            treeView1.Nodes.Clear();
            for (int i = 0; i < map.getNumEntities(); i++)
            {
                MapEntity entity     = map.getEntity(i);
                TreeNode  nodeEntity = new TreeNode("Entity " + i + " (" + entity.getClassName() + ")");
                nodeEntity.Tag = entity;
                entity.setTreeViewNode(nodeEntity);
                TreeNode      nodeKeyValues = new TreeNode("Variables");
                KeyValuesList epairs        = entity.getKeyValues();
                nodeKeyValues.Tag = epairs;
                for (int j = 0; j < epairs.size(); j++)
                {
                    TreeNode nodeKey   = new TreeNode(epairs.getPairKey(j));
                    TreeNode nodeValue = new TreeNode(epairs.getPairValue(j));
                    // save the node so epairs can automatically update GUI
                    epairs.setPairTreeNode(j, nodeKey);
                    nodeKey.Tag   = epairs;
                    nodeValue.Tag = epairs;
                    nodeKey.Nodes.Add(nodeValue);
                    nodeKeyValues.Nodes.Add(nodeKey);
                }
                nodeEntity.Nodes.Add(nodeKeyValues);
                if (entity.getNumBrushes() != 0 || entity.getNumPatches() != 0)
                {
                    TreeNode nodeGeometry = new TreeNode("Geometry");
                    if (entity.getNumBrushes() != 0)
                    {
                        TreeNode nodeBrushes = new TreeNode("Brushes");
                        for (int j = 0; j < entity.getNumBrushes(); j++)
                        {
                            MapBrushBase brBase = entity.getBrush(j);
                            if (brBase.isOldBrush())
                            {
                                MapBrushOld br        = (MapBrushOld)brBase;
                                TreeNode    nodeBrush = new TreeNode("Brush (old format) " + j);
                                nodeBrush.Tag = br;
                                for (int k = 0; k < br.getNumSides(); k++)
                                {
                                    MapBrushSideOld side     = br.getSide(k);
                                    TreeNode        nodeSide = new TreeNode("Side " + k);
                                    // plane points
                                    TreeNode nodePlanePoints = new TreeNode("Plane points");
                                    nodePlanePoints.Nodes.Add(side.getPlanePointA().ToStringBraced()
                                                              + " " + side.getPlanePointB().ToStringBraced()
                                                              + " " + side.getPlanePointB().ToStringBraced());
                                    nodeSide.Nodes.Add(nodePlanePoints);
                                    // material
                                    TreeNode nodeMaterial = new TreeNode("Material");
                                    nodeMaterial.Nodes.Add(side.getMatName());
                                    nodeSide.Nodes.Add(nodeMaterial);
                                    // tex scale
                                    TreeNode nodeTexScale = new TreeNode("TexScale");
                                    nodeTexScale.Nodes.Add(side.getTexScale().ToString());
                                    nodeSide.Nodes.Add(nodeTexScale);
                                    // tex shift
                                    TreeNode nodeTexShift = new TreeNode("TexShift");
                                    nodeTexShift.Nodes.Add(side.getTexShift().ToString());
                                    nodeSide.Nodes.Add(nodeTexShift);
                                    // tex rotation
                                    TreeNode nodeTexRotation = new TreeNode("TexRotation");
                                    nodeTexRotation.Nodes.Add(side.getTexRotation().ToString());
                                    nodeSide.Nodes.Add(nodeTexRotation);
                                    // contents (eg. detail)
                                    TreeNode nodeContentFlags = new TreeNode("ContentFlags");
                                    nodeContentFlags.Nodes.Add(side.getContentFlags().ToString());
                                    nodeSide.Nodes.Add(nodeContentFlags);
                                    nodeBrush.Nodes.Add(nodeSide);
                                }
                                nodeBrushes.Nodes.Add(nodeBrush);
                            }
                            else
                            {
                                MapBrushDef3 br        = (MapBrushDef3)brBase;
                                TreeNode     nodeBrush = new TreeNode("Brush (Def3) " + j);
                                nodeBrush.Tag = br;
                                for (int k = 0; k < br.getNumSides(); k++)
                                {
                                    MapBrushSide4 side     = br.getSide(k);
                                    TreeNode      nodeSide = new TreeNode("Side " + k);
                                    // plane points
                                    TreeNode nodePlanePoints = new TreeNode("Plane");
                                    nodePlanePoints.Nodes.Add(side.getPlane().ToString());
                                    nodeSide.Nodes.Add(nodePlanePoints);
                                    // material
                                    TreeNode nodeMaterial = new TreeNode("Material");
                                    nodeMaterial.Nodes.Add(side.getMatName());
                                    nodeSide.Nodes.Add(nodeMaterial);
                                    // tex matrix
                                    TreeNode nodeTexAxis0 = new TreeNode("TexAxis0");
                                    nodeTexAxis0.Nodes.Add(side.getTextureAxis0().ToString());
                                    nodeSide.Nodes.Add(nodeTexAxis0);
                                    TreeNode nodeTexAxis1 = new TreeNode("TexAxis1");
                                    nodeTexAxis1.Nodes.Add(side.getTextureAxis1().ToString());
                                    nodeSide.Nodes.Add(nodeTexAxis1);
                                    nodeBrush.Nodes.Add(nodeSide);
                                }
                                nodeBrushes.Nodes.Add(nodeBrush);
                            }
                        }
                        nodeGeometry.Nodes.Add(nodeBrushes);
                    }
                    if (entity.getNumPatches() != 0)
                    {
                        TreeNode nodePatches = new TreeNode("Patches");
                        for (int j = 0; j < entity.getNumPatches(); j++)
                        {
                            MapPatch patch     = entity.getPatch(j);
                            TreeNode nodePatch = new TreeNode("Patch " + j);
                            // material
                            TreeNode nodeMaterial = new TreeNode("Material");
                            nodeMaterial.Nodes.Add(patch.getMatName());
                            nodePatch.Nodes.Add(nodeMaterial);
                            // sizes
                            TreeNode nodeSizes = new TreeNode("Size");
                            nodeSizes.Nodes.Add(patch.getSizeW().ToString() + " " + patch.getSizeH().ToString());
                            nodePatch.Nodes.Add(nodeSizes);
                            // verts
                            TreeNode nodeVerts = new TreeNode("Verts");
                            for (int k = 0; k < patch.getSizeH(); k++)
                            {
                                TreeNode nodeRowK = new TreeNode("Row " + k);
                                for (int l = 0; l < patch.getSizeW(); l++)
                                {
                                    TreeNode nodeVertex = new TreeNode("Vertex " + l + " (abs " + k + "/" + l + ")");
                                    nodeVertex.Nodes.Add(patch.getVertex(l, k).ToString());
                                    nodeRowK.Nodes.Add(nodeVertex);
                                }
                                nodeVerts.Nodes.Add(nodeRowK);
                            }
                            nodePatch.Nodes.Add(nodeVerts);

                            nodePatches.Nodes.Add(nodePatch);
                        }
                        nodeGeometry.Nodes.Add(nodePatches);
                    }
                    nodeEntity.Nodes.Add(nodeGeometry);
                }
                treeView1.Nodes.Add(nodeEntity);
                treeView1.EndUpdate();
            }
        }
示例#4
0
 public MapEntity()
 {
     keyValues = new KeyValuesList();
     brushes   = new List <MapBrushBase>();
     patches   = new List <MapPatch>();
 }