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_;
43 std::vector<Transform> orientations_;
48 Transforms(std::vector<geo::PrimPtr>& primitives, TransformClass transformClass)
49 : primitives_(primitives), transformClass_(transformClass)
53 Iterator begin() {
return Iterator(primitives_, transformClass_, 0); }
54 Iterator end() {
return Iterator(primitives_, transformClass_, primitives_.size()); }
57 std::vector<geo::PrimPtr>& primitives_;
58 TransformClass transformClass_;
61 void addPrimitive(std::shared_ptr<enzo::geo::Primitive> primitive);
62 void attemptMerge(geo::PrimPtr prim);
64 std::shared_ptr<enzo::geo::Primitive> getPrimitive(
unsigned int index);
65 std::shared_ptr<const enzo::geo::Primitive> getPrimitive(
unsigned int index)
const;
66 geo::PrimPtr getPrimAtPath(
const std::string& path);
67 std::shared_ptr<const geo::Primitive> getPrimAtPath(
const std::string& path)
const;
69 const std::vector<std::shared_ptr<enzo::geo::Primitive>>& getPrimitives()
const
73 std::vector<geo::PrimPtr> getPrimitives(enzo::geo::PrimType type)
const;
74 void removePrim(std::string path);
76 Transforms getTransforms(TransformClass transformClass)
78 return Transforms(primitives_, transformClass);
82 NodePacket deepCopy()
const;
85 std::vector<geo::PrimPtr> primitives_;