17 using iterator_category = std::forward_iterator_tag;
18 using difference_type = std::ptrdiff_t;
22 std::vector<geo::PrimPtr>& primitives,
23 TransformClass transformClass,
32 return a.primIdx_ == b.primIdx_ && a.offset_ == b.offset_;
34 friend bool operator!=(
const Iterator& a,
const Iterator& b) {
return !(a == b); }
37 std::vector<geo::PrimPtr>& primitives_;
38 TransformClass transformClass_;
41 std::shared_ptr<attr::Attribute> curAttrib_;
47 Transforms(std::vector<geo::PrimPtr>& primitives, TransformClass transformClass)
48 : primitives_(primitives), transformClass_(transformClass)
52 Iterator begin() {
return Iterator(primitives_, transformClass_, 0); }
53 Iterator end() {
return Iterator(primitives_, transformClass_, primitives_.size()); }
56 std::vector<geo::PrimPtr>& primitives_;
57 TransformClass transformClass_;
60 void addPrimitive(std::shared_ptr<enzo::geo::Primitive> primitive);
61 void attemptMerge(geo::PrimPtr prim);
63 std::shared_ptr<enzo::geo::Primitive> getPrimitive(
unsigned int index);
64 std::shared_ptr<const enzo::geo::Primitive> getPrimitive(
unsigned int index)
const;
65 geo::PrimPtr getPrimAtPath(
const std::string& path);
66 std::shared_ptr<const geo::Primitive> getPrimAtPath(
const std::string& path)
const;
68 const std::vector<std::shared_ptr<enzo::geo::Primitive>>& getPrimitives()
const
72 std::vector<geo::PrimPtr> getPrimitives(enzo::geo::PrimType type)
const;
73 void removePrim(std::string path);
75 Transforms getTransforms(TransformClass transformClass)
77 return Transforms(primitives_, transformClass);
81 NodePacket deepCopy()
const;
84 std::vector<geo::PrimPtr> primitives_;