List <Vector4> LoadMesh(GameObject obj, int fill, int dup, float dir, bool generate_jet, Vector3 trans, out Jet jet)
    {
        var mesh     = obj.GetComponentInChildren <MeshFilter>();
        var vertices = mesh.mesh.vertices;

        var vres       = new List <Vector4>();
        var last_scale = obj.transform.localScale;
        var pos        = obj.transform.position;
        var pos4       = new Vector4(pos.x, pos.y, pos.z, 0);

        // var minmax = MinMaxVec.Create();

        for (int j = 0; j < fill; ++j)
        {
            obj.transform.localScale = last_scale * FillCurve.Evaluate(((float)j) / fill);

            var mat = obj.transform.localToWorldMatrix;
            for (int k = 0; k < dup; ++k)
            {
                for (int i = 0; i < vertices.Length; ++i)
                {
                    if (Random.Range(0, j + 1) == j)
                    {
                        var c = mat.MultiplyVector(vertices[i]);
                        // var c = obj.transform.TransformVector(vertices[i]) + trans;
                        var res = new Vector4(c.x, c.y, c.z, 1);
                        res += pos4;
                        // res += new Vector4(Random.Range(-0.1f, 0.1f), Random.Range(-0.1f, 0.1f), Random.Range(-0.1f, 0.1f), 0);
                        // minmax.Feed(new Vector3(res.x, res.y, res.z));
                        vres.Add(res);
                    }
                }
            }
        }
        obj.transform.localScale = last_scale;

        if (DisableObjects)
        {
            obj.SetActive(false);
        }

        if (generate_jet)
        {
            jet = new Jet();
            // minmax.GetRenderTextureBoundingBox((int)Jet.Constants.ThreadMutiples, out Vector3Int size, out Vector3Int center);
            // jet.nozzle_radius = ISFUtils.IntToFloat(size).x * 0.4f;
            var N = isf.GetGrids();
            jet.nozzle_radius   = N[1] / 4;
            jet.nozzle_length   = N[1] / 4;
            jet.nozzle_center   = new Vector3(dir > 0 ? 4 : N[0] - 4 - 4, N[1] / 2, N[2] / 2);
            jet.nozzle_velocity = new Vector3(dir, 0, 0);
            jet.nozzle_dir      = new Vector3(dir, 0, 0);
            jet.Initialize(NozzleCS, isf);
            // jet.ResetParameters(minmax);
            jet.ResetParameters();
        }
        else
        {
            jet = null;
        }
        return(vres);
    }