private bool PointRaycastMesh(Vector2 hitPos, ref FlatMeshData data)
            {
                int trisCount = data.Triangles.Length / 3;

                for (int i = 0; i < trisCount; i++)
                {
                    var v1 = data.Vertices[data.Triangles[3 * i]];
                    var v2 = data.Vertices[data.Triangles[3 * i + 1]];
                    var v3 = data.Vertices[data.Triangles[3 * i + 2]];
                    if (v1 == v2 || v2 == v3 || v1 == v3)
                    {
                        continue;
                    }
                    if (PointInTriangle(hitPos, v1, v2, v3))
                    {
                        return(true);
                    }
                }
                return(false);
            }
        protected Mesh CreateMeshFromBlob(ref FlatMeshData data)
        {
            var verts = new Vector3[data.Vertices.Length];

            for (int i = 0; i < verts.Length; i++)
            {
                var x = data.Vertices[i].x;
                var y = data.Vertices[i].y;
                verts[i] = new Vector3(x, y);
            }
            var triangles = new int[data.Triangles.Length];

            for (int i = 0; i < triangles.Length; i++)
            {
                triangles[i] = data.Triangles[i];
            }
            return(new Mesh
            {
                vertices = verts,
                triangles = triangles
            });
        }