diff --git a/source/include/csg.h b/source/include/csg.h index 4b34400..75b9a42 100644 --- a/source/include/csg.h +++ b/source/include/csg.h @@ -34,7 +34,7 @@ protected: bool intersectionAllowed(bool leftHit, bool inLeft, bool inRight); - Intersect filterIntersections(Intersect &xs); + void filterIntersections(Intersect &xs, Intersect &ret); void updateBoundingBox(); BoundingBox getBounds(); diff --git a/source/shapes/csg.cpp b/source/shapes/csg.cpp index 5d193c0..fac6852 100644 --- a/source/shapes/csg.cpp +++ b/source/shapes/csg.cpp @@ -101,13 +101,11 @@ bool CSG::intersectionAllowed(bool leftHit, bool inLeft, bool inRight) return false; } -Intersect CSG::filterIntersections(Intersect &xs) +void CSG::filterIntersections(Intersect &xs, Intersect &ret) { bool inl = false; bool inr = false; - Intersect ret = Intersect(); - int i; for(i = 0; i < xs.count(); i++) @@ -128,8 +126,6 @@ Intersect CSG::filterIntersections(Intersect &xs) inr = !inr; } } - - return ret; } void CSG::dumpMe(FILE *fp) diff --git a/tests/csg_test.cpp b/tests/csg_test.cpp index 5301678..308430a 100644 --- a/tests/csg_test.cpp +++ b/tests/csg_test.cpp @@ -31,8 +31,8 @@ public: return this->intersectionAllowed(leftHit, inLeft, inRight); }; - Intersect doFilterIntersections(Intersect &xs) { - return this->filterIntersections(xs); + void doFilterIntersections(Intersect &xs, Intersect &ret) { + this->filterIntersections(xs, ret); } CSGTest(OperationType operation, Shape *left, Shape *right) : CSG(operation, left, right) {}; @@ -186,7 +186,8 @@ TEST(CSGTest, Filtering_a_list_of_intersections) for(i = 0; i < testCount; i++) { c.setOperation(testList[i]); - Intersect result = c.doFilterIntersections(xs); + Intersect result = Intersect(); + c.doFilterIntersections(xs, result); ASSERT_EQ(result.count(), 2); ASSERT_EQ(result[0], xs[testResults[i][0]]);