Пример #1
0
        /// <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);
    }
Пример #3
0
 private void UpdateMesh(TriangleMeshStamped o)
 {
     MeshGenerator.ReportNewMesh(o);
 }