protected override void OnUpdate()
        {
            Polygon poly  = null;
            var     holes = new List <Polygon>();

            Entities.ForEach((ref PolygonOrientationComponent polygonOrientation, DynamicBuffer <PointSampleGlobal> points) =>
            {
                PolygonPoint[] pointArray = new PolygonPoint[points.Length];
                for (var i = 0; i < points.Length; i++)
                {
                    pointArray[i] = new PolygonPoint(points[i].pose.pos.x, points[i].pose.pos.z);
                }
                var polygon = new Polygon(pointArray);
                if (polygonOrientation.Orientation == PolygonOrientation.Outside)
                {
                    if (poly != null)
                    {
                        Debug.LogError("Multiple outside polygons detected. " +
                                       "Multiple outside polygons indicate a disconnected road network.");
                    }
                    poly = polygon;
                }
                else
                {
                    holes.Add(polygon);
                }
            });

            if (poly == null)
            {
                throw new NullReferenceException($"Polygon is null - will be unable to create mesh for " +
                                                 $"{Parameters.Parent.name}.");
            }

            foreach (var hole in holes)
            {
                poly.AddHole(hole);
            }

            var mesh = RoadNetworkMesher.PolygonToMesh(poly, Parameters.UVMultiplier);

            GameObject go = new GameObject("Road mesh");

            go.transform.parent        = Parameters.Parent;
            go.transform.localPosition = new Vector3(0, .1f, 0);
            var meshRenderer = go.AddComponent <MeshRenderer>();

            meshRenderer.material = Parameters.Material;
            var meshFilter = go.AddComponent <MeshFilter>();

            meshFilter.mesh = mesh;
            go.AddComponent <MeshCollider>();
        }