Fetch count from simple property instead of recalculation.

Polygons don't change when in layer-view. There's already an analogous elementCount property anyway, so a vertexCount property can't do much harm. Just keep in mind that when the polygons are altered, it should be either done via build, or the lineMeshXXXCount methods should be used instead.
This commit is contained in:
Remco Burema 2021-08-09 13:15:44 +02:00
parent 818438a8d6
commit e119c46944
No known key found for this signature in database
GPG key ID: 215C49431D43F98C
3 changed files with 12 additions and 1 deletions

View file

@ -15,6 +15,7 @@ class Layer:
self._height = 0.0 self._height = 0.0
self._thickness = 0.0 self._thickness = 0.0
self._polygons = [] # type: List[LayerPolygon] self._polygons = [] # type: List[LayerPolygon]
self._vertex_count = 0
self._element_count = 0 self._element_count = 0
@property @property
@ -29,6 +30,10 @@ class Layer:
def polygons(self) -> List[LayerPolygon]: def polygons(self) -> List[LayerPolygon]:
return self._polygons return self._polygons
@property
def vertexCount(self):
return self._vertex_count
@property @property
def elementCount(self): def elementCount(self):
return self._element_count return self._element_count
@ -64,11 +69,13 @@ class Layer:
def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices): def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices):
result_vertex_offset = vertex_offset result_vertex_offset = vertex_offset
result_index_offset = index_offset result_index_offset = index_offset
self._vertex_count = 0
self._element_count = 0 self._element_count = 0
for polygon in self._polygons: for polygon in self._polygons:
polygon.build(result_vertex_offset, result_index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices) polygon.build(result_vertex_offset, result_index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices)
result_vertex_offset += polygon.lineMeshVertexCount() result_vertex_offset += polygon.lineMeshVertexCount()
result_index_offset += polygon.lineMeshElementCount() result_index_offset += polygon.lineMeshElementCount()
self._vertex_count += polygon.vertexCount
self._element_count += polygon.elementCount self._element_count += polygon.elementCount
return result_vertex_offset, result_index_offset return result_vertex_offset, result_index_offset

View file

@ -187,6 +187,10 @@ class LayerPolygon:
def data(self): def data(self):
return self._data return self._data
@property
def vertexCount(self):
return self._vertex_end - self._vertex_begin
@property @property
def elementCount(self): def elementCount(self):
return (self._index_end - self._index_begin) * 2 # The range of vertices multiplied by 2 since each vertex is used twice return (self._index_end - self._index_begin) * 2 # The range of vertices multiplied by 2 since each vertex is used twice

View file

@ -162,7 +162,7 @@ class SimulationPass(RenderPass):
head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition() head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition()
break break
break break
end += layer_data.getLayer(layer).lineMeshVertexCount() end += layer_data.getLayer(layer).vertexCount
if layer < self._layer_view._minimum_layer_num: if layer < self._layer_view._minimum_layer_num:
start = end start = end