protected virtual void BuildMesh() { _verts.Clear(); _tris.Clear(); _colours.Clear(); //--- int vc = _verts.size; Vector3 scale = Vector3.one * SCALE; // points for (int i = 0; i < _verlet._points.Length; ++i) { Vector3 pos = _verlet._points[i].curr_mat.GetColumn(3); //UtilShape.BuildCube(pos, Quaternion.identity, scale * 0.3f, ref _verts, ref _tris); UtilShape.BuildSphere(pos, Quaternion.identity, scale * 0.3f, 8, 6, ref _verts, ref _tris); } for (int c = vc; c < _verts.size; ++c) { _colours.Add(col_joint); } vc = _verts.size; // connections for (int i = 0; i < _verlet._pos_constraints.Length; ++i) { Verlet.ConstraintPosition cp = _verlet._pos_constraints[i]; Vector3 p0 = _verlet.GetPointPos(cp.index_0); Vector3 p1 = _verlet.GetPointPos(cp.index_1); UtilShape.BuildCylinder(p0, p1, SCALE * 0.2f, ref _verts, ref _tris); Debug.DrawLine(transform.position + p0, transform.position + p1, Color.red); } for (int c = vc; c < _verts.size; ++c) { _colours.Add(col_stem); } vc = _verts.size; //--- _mf.mesh.Clear(); _mf.mesh.vertices = _verts.ToArray(); _mf.mesh.triangles = _tris.ToArray(); _mf.mesh.colors = _colours.ToArray(); _mf.mesh.RecalculateBounds(); _mf.mesh.RecalculateNormals(); }
protected virtual void BuildMesh() { _verts.Clear(); _tris.Clear(); _colours.Clear(); //--- int vc = _verts.size; //UtilShape.BuildSphere(Vector3.zero, Quaternion.identity, Vector3.one, 24, 16, // ref _verts, ref _tris); for (int i = vc; i < _verts.size; ++i) { _colours.Add(Color.white); } vc = _verts.size; UtilShape.BuildSphere(new Vector3(0f, 0f, 0f), Quaternion.identity, Vector3.one * 1f, 12, 8, ref _verts, ref _tris); for (int i = vc; i < _verts.size; ++i) { _colours.Add(Color.cyan); } vc = _verts.size; //--- _mf.mesh.Clear(); _mf.mesh.vertices = _verts.ToArray(); _mf.mesh.triangles = _tris.ToArray(); _mf.mesh.colors = _colours.ToArray(); _mf.mesh.RecalculateBounds(); _mf.mesh.RecalculateNormals(); }