feat: support for multiple node types
This commit is contained in:
42
src/Engine/Operator/GOP_transform.cpp
Normal file
42
src/Engine/Operator/GOP_transform.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include "Engine/Operator/GOP_transform.h"
|
||||
#include "Engine/Operator/AttributeHandle.h"
|
||||
#include <oneapi/tbb/parallel_for.h>
|
||||
|
||||
GOP_transform::GOP_transform(enzo::nt::OpId opId)
|
||||
: enzo::nt::GeometryOpDef(opId)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GOP_transform::cookOp()
|
||||
{
|
||||
using namespace enzo;
|
||||
// std::cout << "COOKING\n";
|
||||
|
||||
if(outputRequested(0))
|
||||
{
|
||||
// copy input geometry
|
||||
geo::Geometry geo = cloneInputGeo(0);
|
||||
|
||||
// ----
|
||||
// create geometry start
|
||||
// ----
|
||||
auto PAttr = geo.getAttribByName(ga::AttrOwner::POINT, "P");
|
||||
ga::AttributeHandleVector3 PAttrHandle(PAttr);
|
||||
|
||||
for(int i=0; i<PAttrHandle.getAllValues().size(); ++i)
|
||||
{
|
||||
enzo::bt::Vector3 vector = PAttrHandle.getValue(i);
|
||||
vector.y()+=2.5;
|
||||
PAttrHandle.setValue(i, vector);
|
||||
}
|
||||
// ----
|
||||
|
||||
|
||||
|
||||
// set output geometry
|
||||
setOutputGeometry(0, geo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
15
src/Engine/Operator/GOP_transform.h
Normal file
15
src/Engine/Operator/GOP_transform.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
#include "Engine/Operator/GeometryOpDef.h"
|
||||
|
||||
class GOP_transform
|
||||
: public enzo::nt::GeometryOpDef
|
||||
{
|
||||
public:
|
||||
GOP_transform(enzo::nt::OpId opId);
|
||||
virtual void cookOp();
|
||||
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId)
|
||||
{
|
||||
return new GOP_transform(opId);
|
||||
}
|
||||
|
||||
};
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
namespace enzo::nt
|
||||
{
|
||||
|
||||
class GeometryOpDef
|
||||
{
|
||||
public:
|
||||
@@ -24,4 +25,6 @@ protected:
|
||||
// TODO: std::move geometry instead of copying
|
||||
void setOutputGeometry(unsigned int outputIndex, enzo::geo::Geometry geometry);
|
||||
};
|
||||
|
||||
using opConstructor = GeometryOpDef* (*)(enzo::nt::OpId);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ void enzo::nt::connectOperators(enzo::nt::OpId inputOpId, unsigned int inputInde
|
||||
outputOp.addInputConnection(newConnection);
|
||||
}
|
||||
|
||||
nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId))
|
||||
nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, nt::opConstructor ctorFunc)
|
||||
: opId_{opId}, opDef_(ctorFunc(opId))
|
||||
{
|
||||
// TODO: drive by geometry definition
|
||||
|
||||
Reference in New Issue
Block a user