static OneWayArrayMap GetInputMap(OneWayArrayMap result, int noOfInitialNodes)
        {
            OneWayArrayMap input = OneWayArrayMap.CreateEmpty(Connection.Removed, noOfInitialNodes);

            input.AddReverse(result);
            return(input);
        }
        static OneWayArrayMap ExtractMap(IList <TrackableNode> processed)
        {
            ArrayConnection[] connections = new ArrayConnection[processed.Count];
            for (int i = 0; i < processed.Count; ++i)
            {
                connections[i] = processed[i].Type;
            }
            OneWayArrayMap backwardsMap = new OneWayArrayMap(connections);

            return(backwardsMap);
        }
        public TrackedVoronoiGrid CreateGrid(VoronoiNodes nodes, Settings settings)
        {
            List <TrackableNode>         mesherNodes = WrapInMesherNodes(nodes.Nodes);
            BoundaryMesh <TrackableNode> mesh        = CreateMesh(mesherNodes, settings);
            VoronoiGrid grid = Convert2VoronoiGrid(mesh, settings);

            OneWayArrayMap     resultMap  = ExtractMap(mesh.GetNodes());
            OneWayArrayMap     inputMap   = GetInputMap(resultMap, nodes.Count);
            TrackedVoronoiGrid movingGrid = new TrackedVoronoiGrid
            {
                Result = grid,
                InputNodesToResultNodes = inputMap,
                ResultNodesToInputNodes = resultMap
            };

            return(movingGrid);
        }