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); }