public new static bool Equals(object objA, object objB) { MeshInstRange lhs = objA as MeshInstRange; MeshInstRange rhs = objB as MeshInstRange; return(lhs.inst.Equals(rhs.inst) && lhs.range == rhs.range); }
//-------------------------------- private void RemoveUberizeItem(TreeNodeAdv node) { // update the uberize item dictionary. MeshInstRange curKey = node.Tag as MeshInstRange; if (curKey != null) { int refCount = (_uberizeItems[curKey] -= 1); if (refCount == 0) { _uberizeItems.Remove(curKey); } } // remove the model if necessary. string curModel = node.Tag as string; if (curModel != null) { if (_models.ContainsKey(curModel)) { _models.Remove(curModel); } } // recurse children. while (node.Nodes.Count > 0) { RemoveUberizeItem(node.Nodes[0]); } // remove the node. node.Remove(); }
private void GetUniqueNodes(Dictionary <MeshInstRange, int> items, TreeNodeAdv node) { // add the current node's key. MeshInstRange key = node.Tag as MeshInstRange; if (key != null) { items.Add(key, 0); } // recurse. foreach (TreeNodeAdv child in node.Nodes) { GetUniqueNodes(items, child); } }
//-------------------------------- private void AddUberizeItem(TreeNodeAdv parent, MeshInst inst) { TreeNodeAdv meshNode = new TreeNodeAdv(inst.Mesh.Name); parent.Nodes.Add(meshNode); // iterate through mesh instance's ranges. int rangeIndex = 0; Mesh mesh = inst.Mesh; for (int i = 0; i < inst.RangeCount; ++i) { // get the range info. RangeInfo range; if (!mesh.GetRange(out range, i)) { continue; } TreeNodeAdv rangeNode = new TreeNodeAdv(range.Name); meshNode.Nodes.Add(rangeNode); // fill out a new key. MeshInstRange key = new MeshInstRange(); key.inst = inst; key.range = rangeIndex; // check for the current mesh instance/range pair. if (_uberizeItems.ContainsKey(key)) { // increment the reference count if necessary. _uberizeItems[key] += 1; } else { // TODO: Calculate a valid default matrix. _uberizeItems.Add(key, 1); rangeNode.Tag = key; } } }
public override bool Equals(object obj) { MeshInstRange rhs = obj as MeshInstRange; return(inst.Equals(rhs.inst) && range == rhs.range); }