// async void usdiAllocateMeshData(double t) { usdi.MeshData md = default(usdi.MeshData); usdi.usdiMeshReadSample(m_mesh, ref md, t, true); // skip if already allocated if (m_prevVertexCount == md.num_points && m_prevIndexCount == md.num_indices_triangulated) { return; } m_meshData = md; if (m_meshData.num_splits != 0) { m_splitedData = new usdi.SubmeshData[m_meshData.num_splits]; m_meshData.splits = usdi.GetArrayPtr(m_splitedData); usdi.usdiMeshReadSample(m_mesh, ref m_meshData, t, true); while (m_children.Count < m_meshData.num_splits) { usdiAddSplit(); } for (int i = 0; i < m_children.Count; ++i) { m_children[i].usdiAllocateMeshData(ref m_splitedData[i]); } } else { m_buf.Allocate(ref m_meshSummary, ref m_meshData); } }