feat: operator nm getter and operator input setting

This commit is contained in:
parker
2025-07-04 13:42:45 +01:00
parent e0f2ca0927
commit af6c2eb7c5
5 changed files with 90 additions and 3 deletions

View File

@@ -1,9 +1,55 @@
#include "Engine/Operator/GeometryOperator.h"
#include <cstdint>
#include <optional>
using namespace enzo;
nt::GeometryOperator::GeometryOperator()
{
// TODO: drive by geometry definition
maxInputs_=4;
maxOutputs_=4;
inputIds_ = std::vector<std::optional<nt::OpId>>(maxInputs_, std::nullopt);
outputIds_ = std::vector<std::optional<nt::OpId>>(maxOutputs_, std::nullopt);
}
bool nt::GeometryOperator::setInput(unsigned int inputNumber, nt::OpId opId)
{
if(inputNumber>=maxInputs_)
{
return false;
}
inputIds_[inputNumber] = opId;
return true;
}
bool nt::GeometryOperator::setOutput(unsigned int outputNumber, nt::OpId opId)
{
if(outputNumber>=maxOutputs_)
{
return false;
}
inputIds_[outputNumber] = opId;
return true;
}
std::optional<nt::OpId> nt::GeometryOperator::getInput(unsigned int inputNumber) const
{
if(inputNumber>=maxInputs_)
{
return std::nullopt;
}
return inputIds_.at(inputNumber);
}
std::optional<nt::OpId> nt::GeometryOperator::getOutput(unsigned int outputNumber) const
{
if(outputNumber>=maxOutputs_)
{
return std::nullopt;
}
return outputIds_.at(outputNumber);
}

View File

@@ -1,5 +1,6 @@
#pragma once
#include "Engine/Types.h"
#include <optional>
namespace enzo::nt {
@@ -7,9 +8,16 @@ class GeometryOperator
{
public:
GeometryOperator();
// nodeDef
bool setInput(unsigned int inputNumber, nt::OpId opId);
bool setOutput(unsigned int outputNumber, nt::OpId opId);
std::optional<nt::OpId> getInput(unsigned int inputNumber) const;
std::optional<nt::OpId> getOutput(unsigned int outputNumber) const;
private:
std::vector<std::optional<nt::OpId>> inputIds_;
std::vector<std::optional<nt::OpId>> outputIds_;
unsigned int maxInputs_;
unsigned int maxOutputs_;
};
}