Example #1
0
        public void TransformVertices(Func <T, T> transformFunc)
        {
            _VertexCache.Clear();

            for (int i = 0; i < _Vertices.Count; ++i)
            {
                _Vertices[i] = transformFunc(_Vertices[i]);

                var key = new StoredKey(_Vertices, i);

                _VertexCache[key] = i;
            }
        }
Example #2
0
        public int Use(T v)
        {
            if (_VertexCache.TryGetValue(new QueryKey(v), out int index))
            {
                System.Diagnostics.Debug.Assert(Object.Equals(v, _Vertices[index]), "Vertex equality failed");
                return(index);
            }

            index = _Vertices.Count;

            _Vertices.Add(v);

            var key = new StoredKey(_Vertices, index);

            _VertexCache[key] = index;

            return(index);
        }