#pragma once #include "Engine/Operator/GeometryConnection.h" #include "Engine/Operator/GeometryOpDef.h" #include "Engine/Types.h" #include #include namespace enzo::nt { void connectOperators(enzo::nt::OpId inputOpId, unsigned int inputIndex, enzo::nt::OpId outputOpId, unsigned int outputIndex); class GeometryOperator { public: GeometryOperator(enzo::nt::OpId opId, nt::opConstructor ctorFunc); // disable copying GeometryOperator(const GeometryOperator&) = delete; GeometryOperator& operator=(const GeometryOperator&) = delete; void cookOp(op::Context context); geo::Geometry& getOutputGeo(unsigned outputIndex); void addInputConnection(std::shared_ptr connection); void addOutputConnection(std::shared_ptr connection); std::vector> getInputConnections() const; std::vector> getOutputConnections() const; unsigned int getMaxInputs() const; unsigned int getMaxOutputs() const; private: // TODO: avoid duplicate connections std::vector> inputConnections_; std::vector> outputConnections_; unsigned int maxInputs_; unsigned int maxOutputs_; std::unique_ptr opDef_; enzo::nt::OpId opId_; }; }