diff --git a/Base/Rendering/RenderDelegate/imstkMappedVertexArray.cpp b/Base/Rendering/RenderDelegate/imstkMappedVertexArray.cpp index cde8ae4b1f6dd1d20635ddc5921e24ea86d93397..7e4af2bcace845ab56be40941640412e8e64f882 100644 --- a/Base/Rendering/RenderDelegate/imstkMappedVertexArray.cpp +++ b/Base/Rendering/RenderDelegate/imstkMappedVertexArray.cpp @@ -206,9 +206,21 @@ MappedVertexArray::LookupTypedValue(double value, vtkIdList *ids) //------------------------------------------------------------------------------ double -MappedVertexArray::GetValue(vtkIdType idx) +MappedVertexArray::GetValue(vtkIdType idx) const { - return this->GetValueReference(idx); + const vtkIdType tuple = idx / this->NumberOfComponents; + const vtkIdType comp = idx % this->NumberOfComponents; + switch(comp) + { + case 0: + return (*this->vertexArray)[tuple](0); + case 1: + return (*this->vertexArray)[tuple](1); + case 2: + return (*this->vertexArray)[tuple](2); + default: + return 0; + } } //------------------------------------------------------------------------------ @@ -232,6 +244,15 @@ MappedVertexArray::GetValueReference(vtkIdType idx) } } +//------------------------------------------------------------------------------ +void +MappedVertexArray::GetTypedTuple(vtkIdType tupleId, ValueType *tuple) const +{ + tuple[0] = (*this->vertexArray)[tupleId](0); + tuple[1] = (*this->vertexArray)[tupleId](1); + tuple[2] = (*this->vertexArray)[tupleId](2); +} + //------------------------------------------------------------------------------ void MappedVertexArray::GetTupleValue(vtkIdType tupleId, double *tuple) diff --git a/Base/Rendering/RenderDelegate/imstkMappedVertexArray.h b/Base/Rendering/RenderDelegate/imstkMappedVertexArray.h index 144784d3a6cba83ea4ed3ea6046e4d2ee0570655..6446847c6de5db87f379967363dee98ef967a061 100644 --- a/Base/Rendering/RenderDelegate/imstkMappedVertexArray.h +++ b/Base/Rendering/RenderDelegate/imstkMappedVertexArray.h @@ -58,8 +58,9 @@ public: void GetTuple(vtkIdType i, double *tuple); vtkIdType LookupTypedValue(double value); void LookupTypedValue(double value, vtkIdList *ids); - double GetValue(vtkIdType idx); + double GetValue(vtkIdType idx) const; double& GetValueReference(vtkIdType idx); + void GetTypedTuple(vtkIdType idx, ValueType *t) const; void GetTupleValue(vtkIdType idx, double *t); // Description: @@ -98,6 +99,9 @@ public: vtkIdType InsertNextValue(double v); void InsertValue(vtkIdType idx, double v); void InsertVariantValue(vtkIdType idx, vtkVariant value); + void SetTypedTuple(vtkIdType i, const ValueType *t) {} + void InsertTypedTuple(vtkIdType i, const ValueType *t) {} + virtual vtkIdType InsertNextTypedTuple(const ValueType *t) {} protected: MappedVertexArray() {}