src/linetypes/subfilereference.cpp

changeset 193
b4beff48bb7a
parent 186
922662adb72a
equal deleted inserted replaced
192:e6faeffed1d1 193:b4beff48bb7a
41 std::vector<gl::Polygon>& polygons, 41 std::vector<gl::Polygon>& polygons,
42 GetPolygonsContext* context 42 GetPolygonsContext* context
43 ) const 43 ) const
44 { 44 {
45 Model* dependency = this->resolve(context->modelId, context->documents); 45 Model* dependency = this->resolve(context->modelId, context->documents);
46 PolygonCache* referencedModelPolygonBuilder = nullptr; 46 PolygonCache* cache = nullptr;
47 if (dependency != nullptr) 47 if (dependency != nullptr)
48 { 48 {
49 const auto dependencyModelId = context->documents->findIdForModel(dependency); 49 const auto dependencyModelId = context->documents->findIdForModel(dependency);
50 if (dependencyModelId.has_value()) 50 if (dependencyModelId.has_value())
51 { 51 {
52 referencedModelPolygonBuilder = context->documents->getPolygonCacheForModel(dependencyModelId.value()); 52 cache = context->documents->getPolygonCacheForModel(dependencyModelId.value());
53 } 53 }
54 } 54 }
55 if (referencedModelPolygonBuilder != nullptr) 55 if (cache != nullptr)
56 { 56 {
57 const bool needInverting = glm::determinant(this->transformation) < 0; 57 const bool needInverting = glm::determinant(this->transformation) < 0;
58 const std::vector<gl::Polygon> modelPolygons = referencedModelPolygonBuilder->getPolygons(context->documents); 58 const std::vector<gl::Polygon> modelPolygons = getCachedPolygons(
59 cache,
60 dependency,
61 context->documents);
59 polygons.reserve(polygons.size() + modelPolygons.size()); 62 polygons.reserve(polygons.size() + modelPolygons.size());
60 for (gl::Polygon polygon : modelPolygons) 63 for (gl::Polygon polygon : modelPolygons)
61 { 64 {
62 for (unsigned int i = 0; i < polygon.numPolygonVertices(); i += 1) 65 for (unsigned int i = 0; i < polygon.numPolygonVertices(); i += 1)
63 { 66 {

mercurial