/// <summary> /// Returns a Subscription handler which stores the received mesh /// </summary> /// <returns></returns> internal SubscriptionHandler <TriangleMeshStamped> GetSubscriptionHandler() { SubscriptionHandler <TriangleMeshStamped> subscriptionHandler = new SubscriptionHandler <TriangleMeshStamped>((o) => { Mesh = o; MeshReceived = true; MeshReceivedEvent?.Invoke(this, EventArgs.Empty); }); return(subscriptionHandler); }
public void ReportNewMesh(TriangleMeshStamped _mesh) { Debug.Log("Received a new mesh to generate!"); vertices = new UnityEngine.Vector3[_mesh.mesh.vertices.Length]; for (int i = 0; i < _mesh.mesh.vertices.Length; i++) { vertices[i] = _mesh.mesh.vertices[i].ToUnity(); } // Unity takes the triangle indices as one array. Unravel it. triangles = new int[_mesh.mesh.triangles.Length * 3]; for (int i = 0; i < _mesh.mesh.triangles.Length; i++) { triangles[3 * i + 0] = (int)_mesh.mesh.triangles[i].vertex_indices[2]; triangles[3 * i + 1] = (int)_mesh.mesh.triangles[i].vertex_indices[1]; triangles[3 * i + 2] = (int)_mesh.mesh.triangles[i].vertex_indices[0]; } ui_thread.ExecuteOnMainThread(UpdateMesh); }
private void UpdateMesh(TriangleMeshStamped o) { MeshGenerator.ReportNewMesh(o); }