20 using namespace UT::Literal;
23 namespace SOP_FuseEnums
63 myKeepunusedpoints =
false;
64 myKeepconsolidatedpoints =
false;
65 myGrouppropagation = 0;
69 mySnappointpos =
true;
70 mySnappointattribs =
false;
71 myPointattribnames =
""_sh;
91 if (myGroup != src.myGroup)
return false;
92 if (myUsedist != src.myUsedist)
return false;
93 if (myDist != src.myDist)
return false;
94 if (myDeldegen != src.myDeldegen)
return false;
95 if (myKeepunusedpoints != src.myKeepunusedpoints)
return false;
96 if (myKeepconsolidatedpoints != src.myKeepconsolidatedpoints)
return false;
97 if (myGrouppropagation != src.myGrouppropagation)
return false;
98 if (mySwitcher != src.mySwitcher)
return false;
99 if (mySnaptype != src.mySnaptype)
return false;
100 if (myTol3d != src.myTol3d)
return false;
101 if (mySnappointpos != src.mySnappointpos)
return false;
102 if (mySnappointattribs != src.mySnappointattribs)
return false;
103 if (myPointattribnames != src.myPointattribnames)
return false;
104 if (mySnapswitcher != src.mySnapswitcher)
return false;
105 if (myGridtype != src.myGridtype)
return false;
106 if (myGridspacing != src.myGridspacing)
return false;
107 if (myGridlines != src.myGridlines)
return false;
108 if (myGridpow2 != src.myGridpow2)
return false;
109 if (myGridoffset != src.myGridoffset)
return false;
110 if (myGridround != src.myGridround)
return false;
111 if (myGridtol != src.myGridtol)
return false;
112 if (myUpdatenml != src.myUpdatenml)
return false;
113 if (myAccurate != src.myAccurate)
return false;
132 graph->
evalOpParm(myGroup, nodeidx,
"group", time, 0);
135 graph->
evalOpParm(myUsedist, nodeidx,
"usedist", time, 0);
137 if (
true && ( (!(((getUsedist()==0)))) ) )
138 graph->
evalOpParm(myDist, nodeidx,
"dist", time, 0);
141 graph->
evalOpParm(myDeldegen, nodeidx,
"deldegen", time, 0);
142 myKeepunusedpoints =
false;
144 graph->
evalOpParm(myKeepunusedpoints, nodeidx,
"keepunusedpoints", time, 0);
145 myKeepconsolidatedpoints =
false;
147 graph->
evalOpParm(myKeepconsolidatedpoints, nodeidx,
"keepconsolidatedpoints", time, 0);
148 myGrouppropagation = 0;
150 graph->
evalOpParm(myGrouppropagation, nodeidx,
"grouppropagation", time, 0);
153 graph->
evalOpParm(mySwitcher, nodeidx,
"switcher", time, 0);
156 graph->
evalOpParm(mySnaptype, nodeidx,
"snaptype", time, 0);
159 graph->
evalOpParm(myTol3d, nodeidx,
"tol3d", time, 0);
160 mySnappointpos =
true;
162 graph->
evalOpParm(mySnappointpos, nodeidx,
"snappointpos", time, 0);
163 mySnappointattribs =
false;
165 graph->
evalOpParm(mySnappointattribs, nodeidx,
"snappointattribs", time, 0);
166 myPointattribnames =
""_sh;
167 if (
true && ( (!(((getSnappointattribs()==0)))) ) )
168 graph->
evalOpParm(myPointattribnames, nodeidx,
"pointattribnames", time, 0);
171 graph->
evalOpParm(mySnapswitcher, nodeidx,
"snapswitcher", time, 0);
174 graph->
evalOpParm(myGridtype, nodeidx,
"gridtype", time, 0);
176 if (
true && ( (!(((
int64(getGridtype())!=0)))) ) )
177 graph->
evalOpParm(myGridspacing, nodeidx,
"gridspacing", time, 0);
179 if (
true && ( (!(((
int64(getGridtype())!=1)))) ) )
180 graph->
evalOpParm(myGridlines, nodeidx,
"gridlines", time, 0);
182 if (
true && ( (!(((
int64(getGridtype())!=2)))) ) )
183 graph->
evalOpParm(myGridpow2, nodeidx,
"gridpow2", time, 0);
186 graph->
evalOpParm(myGridoffset, nodeidx,
"gridoffset", time, 0);
189 graph->
evalOpParm(myGridround, nodeidx,
"gridround", time, 0);
192 graph->
evalOpParm(myGridtol, nodeidx,
"gridtol", time, 0);
195 graph->
evalOpParm(myUpdatenml, nodeidx,
"updatenml", time, 0);
197 if (
true && ( (!(((
int64(getSwitcher())==1))||((
int64(getSwitcher())==2)&&(
int64(getSnapswitcher())!=0)))) ) )
198 graph->
evalOpParm(myAccurate, nodeidx,
"accurate", time, 0);
214 template <
typename T>
221 if (idx.
size() != instance.
size()+1)
226 coerceValue(value, myGroup);
229 coerceValue(value, myUsedist);
232 coerceValue(value, myDist);
235 coerceValue(value, myDeldegen);
238 coerceValue(value, myKeepunusedpoints);
241 coerceValue(value, myKeepconsolidatedpoints);
244 coerceValue(value, myGrouppropagation);
247 coerceValue(value, mySwitcher);
250 coerceValue(value, mySnaptype);
253 coerceValue(value, myTol3d);
256 coerceValue(value, mySnappointpos);
259 coerceValue(value, mySnappointattribs);
262 coerceValue(value, myPointattribnames);
265 coerceValue(value, mySnapswitcher);
268 coerceValue(value, myGridtype);
271 coerceValue(value, myGridspacing);
274 coerceValue(value, myGridlines);
277 coerceValue(value, myGridpow2);
280 coerceValue(value, myGridoffset);
283 coerceValue(value, myGridround);
286 coerceValue(value, myGridtol);
289 coerceValue(value, myUpdatenml);
292 coerceValue(value, myAccurate);
299 { doGetParmValue(idx, instance, value); }
301 { doGetParmValue(idx, instance, value); }
303 { doGetParmValue(idx, instance, value); }
305 { doGetParmValue(idx, instance, value); }
307 { doGetParmValue(idx, instance, value); }
309 { doGetParmValue(idx, instance, value); }
311 { doGetParmValue(idx, instance, value); }
313 { doGetParmValue(idx, instance, value); }
315 { doGetParmValue(idx, instance, value); }
317 { doGetParmValue(idx, instance, value); }
319 { doGetParmValue(idx, instance, value); }
321 template <
typename T>
328 if (idx.
size() != instance.
size()+1)
333 coerceValue(myGroup, value);
336 coerceValue(myUsedist, value);
339 coerceValue(myDist, value);
342 coerceValue(myDeldegen, value);
345 coerceValue(myKeepunusedpoints, value);
348 coerceValue(myKeepconsolidatedpoints, value);
351 coerceValue(myGrouppropagation, value);
354 coerceValue(mySwitcher, value);
357 coerceValue(mySnaptype, value);
360 coerceValue(myTol3d, value);
363 coerceValue(mySnappointpos, value);
366 coerceValue(mySnappointattribs, value);
369 coerceValue(myPointattribnames, value);
372 coerceValue(mySnapswitcher, value);
375 coerceValue(myGridtype, value);
378 coerceValue(myGridspacing, value);
381 coerceValue(myGridlines, value);
384 coerceValue(myGridpow2, value);
387 coerceValue(myGridoffset, value);
390 coerceValue(myGridround, value);
393 coerceValue(myGridtol, value);
396 coerceValue(myUpdatenml, value);
399 coerceValue(myAccurate, value);
406 { doSetParmValue(idx, instance, value); }
408 { doSetParmValue(idx, instance, value); }
410 { doSetParmValue(idx, instance, value); }
412 { doSetParmValue(idx, instance, value); }
414 { doSetParmValue(idx, instance, value); }
416 { doSetParmValue(idx, instance, value); }
418 { doSetParmValue(idx, instance, value); }
420 { doSetParmValue(idx, instance, value); }
422 { doSetParmValue(idx, instance, value); }
424 { doSetParmValue(idx, instance, value); }
426 { doSetParmValue(idx, instance, value); }
442 if (fieldnum.
size() < 1)
455 return "keepunusedpoints";
457 return "keepconsolidatedpoints";
459 return "grouppropagation";
467 return "snappointpos";
469 return "snappointattribs";
471 return "pointattribnames";
473 return "snapswitcher";
477 return "gridspacing";
499 if (fieldnum.
size() < 1)
500 return PARM_UNSUPPORTED;
551 return PARM_UNSUPPORTED;
587 loadData(is, rampdata);
605 int typelen = colon - data.
buffer();
619 {
int64 iv =
v; UTwrite(os, &iv); }
621 { UTwrite<fpreal64>(os, &
v); }
623 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
625 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
626 UTwrite<fpreal64>(os, &v.
z()); }
628 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
629 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
641 if (s) s->save(ostr);
643 saveData(os, result);
650 ostr << s->getDataTypeToken();
655 saveData(os, result);
659 void save(std::ostream &os)
const
663 saveData(os, myGroup);
664 saveData(os, myUsedist);
665 saveData(os, myDist);
666 saveData(os, myDeldegen);
667 saveData(os, myKeepunusedpoints);
668 saveData(os, myKeepconsolidatedpoints);
669 saveData(os, myGrouppropagation);
670 saveData(os, mySwitcher);
671 saveData(os, mySnaptype);
672 saveData(os, myTol3d);
673 saveData(os, mySnappointpos);
674 saveData(os, mySnappointattribs);
675 saveData(os, myPointattribnames);
676 saveData(os, mySnapswitcher);
677 saveData(os, myGridtype);
678 saveData(os, myGridspacing);
679 saveData(os, myGridlines);
680 saveData(os, myGridpow2);
681 saveData(os, myGridoffset);
682 saveData(os, myGridround);
683 saveData(os, myGridtol);
684 saveData(os, myUpdatenml);
685 saveData(os, myAccurate);
698 loadData(is, myGroup);
699 loadData(is, myUsedist);
700 loadData(is, myDist);
701 loadData(is, myDeldegen);
702 loadData(is, myKeepunusedpoints);
703 loadData(is, myKeepconsolidatedpoints);
704 loadData(is, myGrouppropagation);
705 loadData(is, mySwitcher);
706 loadData(is, mySnaptype);
707 loadData(is, myTol3d);
708 loadData(is, mySnappointpos);
709 loadData(is, mySnappointattribs);
710 loadData(is, myPointattribnames);
711 loadData(is, mySnapswitcher);
712 loadData(is, myGridtype);
713 loadData(is, myGridspacing);
714 loadData(is, myGridlines);
715 loadData(is, myGridpow2);
716 loadData(is, myGridoffset);
717 loadData(is, myGridround);
718 loadData(is, myGridtol);
719 loadData(is, myUpdatenml);
720 loadData(is, myAccurate);
730 if (!thissop)
return getGroup();
732 OP_Utils::evalOpParm(result, thissop,
"group", cookparms.
getCookTime(), 0);
740 if (!thissop)
return getUsedist();
742 OP_Utils::evalOpParm(result, thissop,
"usedist", cookparms.
getCookTime(), 0);
750 if (!thissop)
return getDist();
752 OP_Utils::evalOpParm(result, thissop,
"dist", cookparms.
getCookTime(), 0);
760 if (!thissop)
return getDeldegen();
762 OP_Utils::evalOpParm(result, thissop,
"deldegen", cookparms.
getCookTime(), 0);
770 if (!thissop)
return getKeepunusedpoints();
772 OP_Utils::evalOpParm(result, thissop,
"keepunusedpoints", cookparms.
getCookTime(), 0);
780 if (!thissop)
return getKeepconsolidatedpoints();
782 OP_Utils::evalOpParm(result, thissop,
"keepconsolidatedpoints", cookparms.
getCookTime(), 0);
790 if (!thissop)
return getGrouppropagation();
792 OP_Utils::evalOpParm(result, thissop,
"grouppropagation", cookparms.
getCookTime(), 0);
800 if (!thissop)
return getSwitcher();
802 OP_Utils::evalOpParm(result, thissop,
"switcher", cookparms.
getCookTime(), 0);
810 if (!thissop)
return getSnaptype();
812 OP_Utils::evalOpParm(result, thissop,
"snaptype", cookparms.
getCookTime(), 0);
820 if (!thissop)
return getTol3d();
822 OP_Utils::evalOpParm(result, thissop,
"tol3d", cookparms.
getCookTime(), 0);
830 if (!thissop)
return getSnappointpos();
832 OP_Utils::evalOpParm(result, thissop,
"snappointpos", cookparms.
getCookTime(), 0);
840 if (!thissop)
return getSnappointattribs();
842 OP_Utils::evalOpParm(result, thissop,
"snappointattribs", cookparms.
getCookTime(), 0);
850 if (!thissop)
return getPointattribnames();
852 OP_Utils::evalOpParm(result, thissop,
"pointattribnames", cookparms.
getCookTime(), 0);
860 if (!thissop)
return getSnapswitcher();
862 OP_Utils::evalOpParm(result, thissop,
"snapswitcher", cookparms.
getCookTime(), 0);
870 if (!thissop)
return getGridtype();
872 OP_Utils::evalOpParm(result, thissop,
"gridtype", cookparms.
getCookTime(), 0);
880 if (!thissop)
return getGridspacing();
882 OP_Utils::evalOpParm(result, thissop,
"gridspacing", cookparms.
getCookTime(), 0);
890 if (!thissop)
return getGridlines();
892 OP_Utils::evalOpParm(result, thissop,
"gridlines", cookparms.
getCookTime(), 0);
900 if (!thissop)
return getGridpow2();
902 OP_Utils::evalOpParm(result, thissop,
"gridpow2", cookparms.
getCookTime(), 0);
910 if (!thissop)
return getGridoffset();
912 OP_Utils::evalOpParm(result, thissop,
"gridoffset", cookparms.
getCookTime(), 0);
920 if (!thissop)
return getGridround();
922 OP_Utils::evalOpParm(result, thissop,
"gridround", cookparms.
getCookTime(), 0);
930 if (!thissop)
return getGridtol();
932 OP_Utils::evalOpParm(result, thissop,
"gridtol", cookparms.
getCookTime(), 0);
940 if (!thissop)
return getUpdatenml();
942 OP_Utils::evalOpParm(result, thissop,
"updatenml", cookparms.
getCookTime(), 0);
950 if (!thissop)
return getAccurate();
952 OP_Utils::evalOpParm(result, thissop,
"accurate", cookparms.
getCookTime(), 0);
961 bool myKeepunusedpoints;
962 bool myKeepconsolidatedpoints;
963 int64 myGrouppropagation;
968 bool mySnappointattribs;
970 int64 mySnapswitcher;
void setSnaptype(Snaptype val)
static void saveData(std::ostream &os, UT_Vector3D v)
void setPointattribnames(const UT_StringHolder &val)
UT_Vector3D getGridoffset() const
static void saveData(std::ostream &os, UT_StringHolder s)
static void saveData(std::ostream &os, int64 v)
UT_StringHolder opPointattribnames(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
SOP_Node * getNode() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
int64 opSnapswitcher(const SOP_NodeVerb::CookParms &cookparms) const
void setGridlines(UT_Vector3D val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
static void loadData(UT_IStream &is, bool &v)
exint bread(int32 *buffer, exint asize=1)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
int64 getSnapswitcher() const
UT_Vector3D opGridoffset(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLuint const GLfloat * val
bool getSnappointattribs() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
Grouppropagation opGrouppropagation(const SOP_NodeVerb::CookParms &cookparms) const
void setGridtype(Gridtype val)
void setGrouppropagation(Grouppropagation val)
bool opUsedist(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SYS_FORCE_INLINE const char * buffer() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
const SOP_GraphProxy * graph() const
bool operator==(const SOP_FuseParms &src) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_Vector3T< int64 > UT_Vector3I
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
fpreal64 getGridtol() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void saveData(std::ostream &os, bool v)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, fpreal64 &v)
exint getNestNumParms(TempIndex idx) const override
void setTol3d(fpreal64 val)
static void loadData(UT_IStream &is, UT_Vector3I &v)
UT_Vector3I getGridpow2() const
bool opSnappointpos(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setGridspacing(UT_Vector3D val)
static void saveData(std::ostream &os, fpreal64 v)
void setSnappointpos(bool val)
bool getSnappointpos() const
fpreal64 getTol3d() const
bool opSnappointattribs(const SOP_NodeVerb::CookParms &cookparms) const
void setKeepunusedpoints(bool val)
void setGridtol(fpreal64 val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Gridround opGridround(const SOP_NodeVerb::CookParms &cookparms) const
Gridtype opGridtype(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
void setKeepconsolidatedpoints(bool val)
void setAccurate(bool val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector3I opGridpow2(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setGridround(Gridround val)
bool getKeepunusedpoints() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
UT_Vector3D opGridspacing(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opTol3d(const SOP_NodeVerb::CookParms &cookparms) const
void setUpdatenml(bool val)
GLint GLenum GLsizei GLint GLsizei const void * data
ParmType getNestParmType(TempIndex fieldnum) const override
bool operator!=(const SOP_FuseParms &src) const
bool opUpdatenml(const SOP_NodeVerb::CookParms &cookparms) const
bool opAccurate(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
const UT_StringHolder & getPointattribnames() const
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, int64 &v)
void save(std::ostream &os) const
UT_Vector3T< fpreal64 > UT_Vector3D
Snaptype getSnaptype() const
bool load(UT_IStream &is)
bool getKeepconsolidatedpoints() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setSwitcher(int64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
int64 opSwitcher(const SOP_NodeVerb::CookParms &cookparms) const
bool getUpdatenml() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
Grouppropagation getGrouppropagation() const
UT_Vector3D getGridlines() const
void setGridoffset(UT_Vector3D val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
fpreal64 opGridtol(const SOP_NodeVerb::CookParms &cookparms) const
Gridtype getGridtype() const
UT_Vector3D getGridspacing() const
static void saveData(std::ostream &os, UT_Vector2D v)
void setUsedist(bool val)
Gridround getGridround() const
void setGridpow2(UT_Vector3I val)
Utility class for containing a color ramp.
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setDist(fpreal64 val)
GLdouble GLdouble GLdouble r
void setSnappointattribs(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
bool opDeldegen(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
~SOP_FuseParms() override
fpreal getCookTime() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
UT_Vector3D opGridlines(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
const char * findChar(int c) const
int64 getSwitcher() const
void copyFrom(const SOP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Vector4D v)
void setSnapswitcher(int64 val)
Snaptype opSnaptype(const SOP_NodeVerb::CookParms &cookparms) const
bool opKeepconsolidatedpoints(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
GLsizei const GLfloat * value
const OP_Context & context() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setDeldegen(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool opKeepunusedpoints(const SOP_NodeVerb::CookParms &cookparms) const