17 #ifndef __OBJ_Node_h__
18 #define __OBJ_Node_h__
56 class OBJ_NodeParentTransform;
61 class OBJ_UndoPreTransform;
146 #define OBJ_MATERIAL_SPARE_TAG "material_spare"
214 #define OBJ_SELECTABLE_FLAG 'S'
216 #define FLOAT_OBJ_PARM(name, idx, vi, t) \
217 return evalFloat(name, &getIndirect()[idx], vi, t);
218 #define FLOAT_OBJ_PARMS(name, idx, v, t) \
219 evalFloats(name, &getIndirect()[idx], v, t);
220 #define INT_OBJ_PARM(name, idx, vi, t) \
221 return evalInt(name, &getIndirect()[idx], vi, t);
222 #define STR_OBJ_PARM(name, idx, vi, t) \
223 evalString(str, name, &getIndirect()[idx], vi, t);
225 #define SET_FLOAT(name, parm_index, vector_index, t, val, add_key) \
226 setChRefFloat(name, getIndirect()[parm_index], vector_index, t, val, add_key);
227 #define SET_INT(name, parm_index, vector_index, t, val) \
228 setChRefInt(name,getIndirect()[parm_index], vector_index, t, val);
229 #define SET_STRING(val, meaning, parm_index, vector_index, t) \
230 setChRefString(val, meaning, name, getIndirect()[parm_index], vector_index, t);
270 void applyBackwardsPathCompatibility(
274 const char *root =
"/obj/",
275 const char *tail =
"");
276 void applyBackwardsNetNodeCompatibility(
278 const char *oldnetname,
279 const char *oldnodename,
281 const char *rootname,
282 const char *property_parm=0);
287 void applyBackwardsShopCompatibility(
290 const char *newname);
305 virtual bool getParmTransformRotates(
OP_Context &context,
307 virtual bool getParmTransformTranslates(
OP_Context &context,
309 virtual bool getParmTransformScales(
OP_Context &context,
313 {
return myUseFullTransformModel; }
320 void destroyTransformParmChannels();
328 bool setParmTransformFromWorld(
330 bool create_keys =
false,
331 bool fail_if_any_locked_parms =
false,
332 bool change_locked_parms =
false);
333 void setRigidParmTransformFromWorld(
335 bool create_keys =
false );
343 bool create_keys =
false,
344 bool fail_if_any_locked_parms =
false,
345 bool change_locked_parms =
false,
349 void setRigidParmTransform(
OP_Context &context,
351 bool create_keys =
false );
363 bool create_keys =
false,
364 bool fail_if_any_locked_parms =
false,
365 bool change_locked_parms =
false,
393 bool getInverseLocalToWorldTransform(
435 bool getInverseObjectToWorldTransform(
483 bool getInverseObjectToWorldTransform(
486 bool getInverseLocalToWorldTransform(
503 int getRelativeTransform(
OP_Node &to,
506 int getRelativeTransform(
OP_Node &to,
522 int keepPosWhenParenting();
523 bool getPreTransformInput(
OP_Context &context,
525 int keepPosWhenMoving();
564 bool getLookatObjectIsTimeDependent(const
UT_String &lookat,
570 bool getLookatObjectTransform(const
UT_String &lookat,
580 int getPreLookatTransform(
OP_Context &context,
583 bool norotates = false);
586 int keepWorldTransformByOldInput(
OP_Context &context,
590 void keepLastWorldTransform(
OP_Context &context);
599 bool getPathObjectDetailHandle(const
UT_String &path,
610 typedef
int (*ApplyParmTransformCallback)(
619 void buildCustomChildToWorldTransform(
621 ApplyParmTransformCallback callback,
void *data);
622 void buildCustomObjectToWorldTransform(
624 ApplyParmTransformCallback callback,
void *data);
634 virtual
int keepWorldTransform(
637 bool allow_extract = false );
640 void clearUndoFlags() override;
643 void savePreTransformForUndo();
648 void resetPreTransform();
652 virtual
void transferLocalToPreTransform(
fpreal gtime);
657 virtual
void transferPreToLocalTransform(
658 fpreal gtime,
bool follow_chan_refs = false);
661 virtual
void transferLocalToPreTransformRotates(
fpreal gtime);
664 virtual
void transferLocalToPreTransformTranslates(
fpreal gtime);
667 virtual
void transferLocalToPreTransformScales(
fpreal gtime);
679 void adjustRotatesToIncludePreTransform(
684 void adjustRotatesForPreTransform(
690 {
return myPreTransform; }
692 {
return myPreTransform; }
694 {
return myPreTransformIsIdentity; }
696 { myPreTransformIsIdentity = yesno; }
700 bool setCachable(
bool onoff);
701 bool getCachable(
int thread)
const;
741 static void initializeExpressions();
742 static void buildMaterialOptMenu(
void *obj,
747 static int handleMaterialOpt(
void *obj,
751 bool processMaterialOpt(
fpreal now,
const char *operation,
752 int argc,
const char *argv[],
758 int getFullCOP2Path(
const char *relpath,
759 UT_String &fullpath,
int &flagdependent);
760 void splitCOP2Path(
const char *
path,
768 static void buildGeoObjMenu(
771 static void buildPathObjMenu(
774 static void buildKinChopMenu(
777 static void buildPopGeoMenu(
780 static void buildShadeObjMenu(
783 static void buildColorPlaneMenu(
786 static void buildAlphaPlaneMenu(
789 static void buildGeoChopMenu(
792 static void buildSoundChopMenu(
795 static void buildMicChopMenu(
798 static void buildChopNetMenu(
801 static void buildBoneCaptureMenu(
804 static void buildBoneChildMenu(
807 static void buildChildObjMenu(
810 static void buildPointGroupMenu(
813 static void buildPrimitiveGroupMenu(
817 static int handlePreTransformMenu(
void *o,
int index,
fpreal t,
824 {
return myObjFlags.getParentingErrorFlag(); }
826 { myObjFlags.setParentingErrorFlag(o); }
829 {
return myCookingRender ? 1:0; }
832 { myCookingRender = (val!=0); }
871 { ourKeepPosWhenParenting = flag; }
873 {
return ourKeepPosWhenParenting; }
876 { ourKeepPosWhenMoving = flag; }
878 {
return ourKeepPosWhenMoving; }
880 static void disallowGlobalKeepPos();
881 static void allowGlobalKeepPos();
883 static void disallowIgnorePretransform();
884 static void allowIgnorePretransform();
887 { ourIgnorePretransformValue = flag; }
889 {
return ourAllowIgnorePretransform
890 && ourIgnorePretransformValue; }
892 {
return ourIgnorePretransformValue; }
895 void *
data=0)
override;
902 void setParmFromHandle(
908 bool check_modified);
909 void setParmFromHandle(
913 bool create_keys =
false,
915 bool check_modified =
true);
918 bool create_keys =
false,
920 bool check_modified =
true);
921 virtual void setUniformScaleFromHandle(
923 bool create_keys =
false,
924 bool check_modified =
true);
926 bool create_keys =
false,
928 bool check_modified =
true);
929 virtual void setTranslateFromHandle(
fpreal t,
931 bool create_keys =
false,
933 bool check_modified =
true);
934 virtual void setPivotFromHandle(
fpreal t,
936 bool create_keys =
false,
938 bool check_modified =
true);
939 virtual void setPivotRotateFromHandle(
fpreal t,
941 bool create_keys =
false,
943 bool check_modified =
true);
945 bool create_keys =
false,
946 bool check_modified =
true);
953 virtual int isObjectRenderable(
fpreal t)
const;
967 virtual void getActingLightSubset(
1020 bool assignShader(
int shop_type,
const char *
path,
1036 int shop_type,
fpreal now,
1039 int shop_type,
fpreal now,
1041 void getShopTransform(
UT_DMatrix4 &xform,
int shop_type,
1045 static const char *getMaterialParmToken();
1076 bool full_combine =
true,
1088 {
return myXformMicroNode; }
1096 return (myXformCookLevel > 0)
1104 bool fail_if_any_locked_parms,
1105 bool change_locked_parms,
1110 bool setParmPivotTransform(
OP_Context &context,
1113 bool fail_if_any_locked_parms,
1114 bool change_locked_parms,
1128 bool supportsDropShopType(
int shop_type);
1130 const char *
label)
override;
1140 virtual void addExtraDependencies(
OP_Context &context);
1152 bool create_missing_multiparms,
1174 virtual int applyInputDependentTransform(
1188 virtual int applyInputIndependentTransform(
1219 bool getParentToWorldTransformForInputNoLock(
1227 void setCachedTransform(
OP_Context &context,
1230 bool isCachingTransforms(
int thread)
const;
1244 const bool myWasTimeDep;
1245 const bool myWasCooking;
1246 const bool myConstraint;
1249 friend class OBJ_NodeParentTransform;
1255 int &copied_input)
override;
1259 void deleteCookedData()
override;
1260 int saveCookedData(
const char *,
OP_Context &)
override;
1261 int saveCookedData(std::ostream &os,
1263 int binary = 0)
override;
1265 const char *getFileExtension(
int binary)
const override;
1266 OP_ERROR saveIntrinsic(std::ostream &os,
1268 void saveIntrinsicCommand(std::ostream &os,
1269 const char *
name)
override;
1271 bool loadPacket(
UT_IStream &is,
short class_id,
short sig,
1272 const char *
path=0)
override;
1273 bool loadPacket(
UT_IStream &is,
const char *token,
1274 const char *
path=0)
override;
1276 void saveFlagsForUndo()
override;
1277 void getSaveFlagsString(
1280 bool save_to_hip)
const override;
1281 void getPreParmSaveFlagsString(
1283 void getPostParmSaveFlagsString(
1290 void getXformDescription(
const UT_DMatrix4 &xform,
1291 const char* label_if_not_identity,
1292 const char* text_if_identity,
1305 OBJ_TRANSFORM_SCALES
1311 void getParmTransformTransferMatrix(
1313 OBJ_TransformComponent
type,
1322 virtual void applyToCaptTransformAndDescendents(
1327 virtual void buildPointGroupMenu(
1332 virtual void buildPrimitiveGroupMenu(
1353 static PRM_SpareData *getMatchSelectButton(
int option,
int autoscope);
1355 virtual OBJ_Node *getParentObject();
1357 {
return setInput(0, node); }
1363 void setLookAtObject(
OBJ_Node *node);
1364 void setLookUpObject(
OBJ_Node *node);
1365 void setPathObject(
OBJ_Node *node);
1369 virtual int collectPropertiesFromChannels(
1373 virtual int collectPropertiesFromParms(
1385 void createPropertiesShop();
1393 virtual int *getIndirect()
const = 0;
1398 int &parm_idx = getIndirect()[name_idx];
1400 parm_idx = getParmList()->getParmIndex(name);
1406 int &parm_idx = getIndirect()[name_idx];
1408 parm_idx = getParmList()->getParmIndex(name);
1413 return getParmList()->getParmPtr(
1414 getCachedParmIndex(name, name_idx));
1419 return getParmList()->getParmPtr(
1420 getCachedParmIndex(name, name_idx));
1427 void inverseDirty() { myInverseDirty =
true; }
1433 myInverseDirty =
false;
1434 myWorldXform.
invert(myIWorldXform);
1436 return myIWorldXform;
1442 bool computeConstraints(
OP_Context &context);
1454 {
return myWorldXform; }
1459 { myWorldXform = m; myInverseDirty=
true; }
1524 OBJ_PATHPARM_UNIFORM = 0,
1547 int PHANTOM(
fpreal t,
int default_value);
1548 int MATTE(
fpreal t,
int default_value);
1549 int RAYBOUNCE(
fpreal t,
int default_value);
1550 int TRANSMITBOUNCE(
fpreal t,
int default_value);
1563 {
return evalInt(
"use_dcolor", &getIndirect()[
I_USE_DCOLOR],
1573 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR], c, t);
1574 col.
setRGB(c[0], c[1], c[2]);
1588 {
return getCachedParmIndex(
"display",
I_DISPLAY); }
1597 return getDisplay() && !isDisplayDisabled(t,
n);
1601 bool ignore_display=
false)
const;
1602 bool isDisplayTimeDependent()
const;
1608 int isDisplayDisabled(
fpreal t,
1614 bool setVisible(
bool onoff)
override;
1615 bool getVisible()
const override;
1622 int TDISPLAY()
const;
1625 return getCachedParmIndex(
"tdisplay",
I_TDISPLAY);
1635 return getCachedParmIndex(
"constraints_path",
I_CONSTRAINTS);
1639 int POINTINSTANCE(
fpreal now)
const;
1664 {
return getDefaultedIProperty(
"vport_promote_popguides", t,1); }
1671 return myDisplayOrder;
1675 myDisplayOrder =
order;
1681 { myDisplayDisabledBySubnetNeedsUpdate = 1; }
1683 void addTransformParmInterests(
OP_Node *interested );
1688 if (evalParameterOrProperty(name, 0, now, val))
1695 if (evalParameterOrProperty(name, 0, now, val))
1702 if (!evalParameterOrProperty(name, 0, now, result))
1709 if (!evalParameterOrPropertyRaw(name, 0, now, result))
1714 int64 getMemoryUsage(
bool inclusive)
const override;
1716 OP_Node *getEvaluatedConstraints();
1724 if(myWireColorMicroNode.requiresUpdate(t))
1726 mySetWireColor = USE_DCOLOR();
1727 if( mySetWireColor )
1729 myWireColor.setType(
UT_RGB);
1731 char *p = (
char*)(
void*)&myWireColor;
1735 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR],c,t);
1738 auto i_dcolor = getIndirect()[
I_DCOLOR];
1739 if(i_usedcolor >= 0)
1740 myWireColorMicroNode.addExplicitInput(
1741 parmMicroNode(i_usedcolor, 0),
false);
1744 myWireColorMicroNode.addExplicitInput(
1745 parmMicroNode(i_dcolor, 0),
false);
1746 myWireColorMicroNode.addExplicitInput(
1747 parmMicroNode(i_dcolor, 1),
false);
1748 myWireColorMicroNode.addExplicitInput(
1749 parmMicroNode(i_dcolor, 2),
false);
1751 myWireColorMicroNode.update(t);
1754 use_color = mySetWireColor;
1758 void onCreated()
override;
1761 void checkTimeDependencies(
int do_parms=1,
1763 int do_extras=1)
override;
1765 friend class OBJ_UndoPreTransform;
1768 void checkKeepPosWhenParenting(
OBJ_Node *parent_obj );
1770 const PRM_Parm * findTransformProperty(
1775 template <
typename OBJ_NODE,
typename VISITOR>
1776 static void visitTransformParms(
1779 bool exclude_uniform_scale,
1782 bool hasTransformParmChannels(
1784 bool exclude_uniform_scale)
const;
1786 int evalToggleInt(
char *togglename,
int toggleindirect,
1787 char *parm,
int parmindirect,
1789 fpreal evalToggleFloat(
char *togglename,
int toggleindirect,
1790 char *parm,
int parmindirect,
1792 int evalToggleParm(
const char *togglename,
1793 const char *token,
fpreal now,
1795 fpreal evalToggleParm(
const char *togglename,
1796 const char *token,
fpreal now,
1799 void computeSubnetParentTransform(
1804 void addTransformDependencies(
OBJ_Node *subnet );
1806 void propagateKeepPosWhenMoving();
1808 void dirtyPreTransform();
1809 void updatePreTransformParms(
bool from,
bool undo=
true);
1810 void updatePreTransformParms(
bool from,
bool undo,
fpreal now,
int thread);
1813 void applyBackwardsRiTransmitCompatibility(
1816 const char *inputLabel(
OP_InputIdx)
const override;
1819 template<
int OFFSET>
1822 void onChangeSpareParms();
1833 bool isSelectionOwnerType() const override final
1836 template<
int HAS_DEP>
1853 OP_Node *myEvaluatedConstraints;
1859 obj_XformMicroNode(
OP_Node &node)
1863 const char *className()
const override
1865 return "obj_XformMicroNode";
1868 obj_XformMicroNode myXformMicroNode;
1869 int myXformCookLevel;
1876 int myShopMaterialIndex;
1877 uint myShopMaterialIndexLastCheck;
1879 unsigned myPreTransformIsIdentity:1,
1880 myTraversingForBlur:1,
1881 mySubnetParentTimeDep:1,
1882 myShowingPreTransform:1,
1883 myUpdatingPreTransform:1,
1885 myUseFullTransformModel:1,
1892 myGotConstraintsByFlag:1;
1894 mutable unsigned myDisplayDisabledBySubnetNeedsUpdate:1,
1895 myDisplayDisabledBySubnet:1,
1896 myInstanceRecursion:1;
1931 struct objSpareParam
1947 struct objSpareProperties
1952 bool isEmpty()
const;
1956 objSpareParam myPreXOrd;
1957 objSpareParam myPreROrd;
1958 objSpareParam myPreTranslate;
1959 objSpareParam myPreRotate;
1960 objSpareParam myPreScale;
1963 objSpareParam myLimitsOn[18];
1964 objSpareParam myLimits[18];
1966 objSpareParam myParentToBoneTip;
1968 objSpareProperties *myProperties;
1971 bool mySetWireColor;
1973 int myConstraintsChannelIndex;
1978 mutable int myCachedDisplay;
1980 mutable int myCachedTDisplay;
1990 static bool ourAllowKeepPos;
1991 static bool ourIgnorePretransformValue;
1992 static bool ourAllowIgnorePretransform;
2017 #undef FLOAT_OBJ_PARM
2018 #undef FLOAT_OBJ_PARMS
2047 if( myCallerUserData )
2049 if( myExtraInputs.size() )
2050 myCaller->addExtraInputs( myExtraInputs );
2052 if( myExtraMicroNodes.size() )
2053 myCaller->addExtraInputs( myExtraMicroNodes );
2056 myContext.setData(myCallerUserData);
2059 myCallerUserData =
nullptr;
2060 myCallerTransformUserData =
nullptr;
2066 if( !myCaller || !dep )
2069 myExtraMicroNodes.append( dep );
2076 myCaller->flags().setTimeDep(
true);
2083 if( !myCaller || !src )
2094 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2103 addExtraInput( src, pi, vi, vi);
2108 if( !myCaller || !src )
2119 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2123 for(
int vi=vi_start; vi<=vi_end; ++vi )
2136 for(
int vi=vi_start; vi<=vi_end; ++vi )
2140 myCaller->flags().setTimeDep(
true);
2152 if( myCallerTransformUserData )
2153 return myCallerTransformUserData->getExtraArgs(xord,rord,mask);
void setRGB(UT_Vector3F c)
void addWarning(OBJ_Error code, const char *msg=0)
UT_DMatrix4 & getPreTransform()
virtual bool getTimeOverride()
void setTX(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
virtual OBJ_Bone * castToOBJBone()
const UT_Matrix4D & getLocalXform() const
GT_API const UT_StringHolder selection
#define SET_FLOAT(name, parm_index, vector_index, t, val, add_key)
virtual const char * getHDASubType()
virtual bool updateParmsFlags()
int PATHPARMTYPE(fpreal t)
DOP_Node * getDisplayDopPtr()
void R(fpreal *v, fpreal t)
virtual OBJ_Sticky * castToOBJSticky()
fpreal getH() const override
Node position/scale is used by the UI.
PRM_Parm * getParmPtr(const UT_StringRef &theparmname, int &theparmidx)
GLuint GLsizei const GLchar * label
virtual OBJ_DopNet * castToOBJDopNet()
fpreal getW() const override
Node position/scale is used by the UI.
void T(fpreal *v, fpreal t)
#define SYS_DEPRECATED(__V__)
virtual int VPORT_SHADEOPEN()
static const char * theChildTableName
static const char * boundingBoxToken
virtual int isObjectLitBySubnet(OBJ_Node *, fpreal)
void setPIVOTRZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
void setSCALE(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
void addFatal(OBJ_Error code, const char *msg=0)
void setDCOLORB(fpreal t, fpreal b)
const char * getDefaultedSProperty(const char *name, fpreal now, UT_String &result, const char *def) const
#define SYS_VISIBILITY_EXPORT
void setIsPreTransformIdentity(int yesno)
fpreal PATHBANK(fpreal t)
int parmIndexCONSTRAINTSPATH() const
virtual bool getPickable()
virtual OP_ERROR setInput(OP_InputIdx idx, OP_Node *op, OP_OutputIdx output_idx=0)
Sets a given input to connect to an output of a particular node.
void setSZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
virtual void setFlag(char tag, int8 val)
void setDisplayOrder(int order)
static const char * input2ObjectToken
GLsizei const GLfloat * value
void P(fpreal *v, fpreal t)
virtual bool createSpareParametersForLoad(UT_StringArray &, PRM_ParmNameMap &, UT_String &)
int LOOKAT(UT_String &str, fpreal t) const
UT_API UT_ErrorSeverity UTaddFatal(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
virtual OBJ_StereoCamera * castToOBJStereoCamera()
#define SYS_DEPRECATED_HDK_REPLACE(__V__, __R__)
const GLuint GLenum const void * binary
virtual int doDrawLit() const
GLsizei const GLchar *const * path
bool isCachingTransforms(int thread) const
GA_API const UT_StringHolder rot
virtual OBJ_Blend * castToOBJBlend()
virtual const char * getSetRotateParmName() const
bool evalVariableValue(UT_String &val, int index, int thread) override
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText()
virtual const char * getSetScaleParmName() const
virtual bool getDisplayOrigin() const
void setParentingErrorFlag(bool o)
int PATHSOP(UT_String &str, fpreal t) const
static const char * input3ObjectToken
int LOOKUPOBJ(UT_String &str, fpreal t) const
**But if you need a result
virtual void getParallelInputs(OP_Context &context, OP_NodeList &nodes) const
static void setGlobalKeepPosWhenParenting(OBJ_KeepPosType flag)
virtual OBJ_Fog * castToOBJFog()
virtual void getNodeSpecificInfoText(OP_Context &context, OP_NodeInfoParms &parms)
virtual bool getParameterOrPropertyByChannel(const UT_StringRef &chname, fpreal now, OP_Node *&op, PRM_Parm *&parm, int &vector_index, PRM_ParmList *obsolete=nullptr)
UT_API UT_ErrorSeverity UTaddMessage(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
void PICKSCRIPT(UT_String &str, fpreal t)
UT_Color DCOLOR(fpreal t)
virtual int VPORT_DISPLAYASSUBDIV()
void setSX(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
fpreal getDefaultedFProperty(const char *name, fpreal now, fpreal def) const
virtual OP_ERROR setInputReference(OP_InputIdx idx, const char *label, int keeppos, OP_OutputIdx output_idx=0)
Connects an input to particular node by name in the network.
constexpr auto in(type t, int set) -> bool
static const char * renderSopToken
void S(fpreal *v, fpreal t)
static const char * displaySopToken
SOP_Node * getDisplaySopPtr()
const UT_Color & DCOLORREF(fpreal t, int &use_color)
const char * getDefaultedRawSProperty(const char *name, fpreal now, UT_String &result, const char *def) const
void opChanged(OP_EventType reason, void *data=nullptr) override
const OP_DataMicroNode & dataMicroNodeConst() const override
#define FLOAT_OBJ_PARMS(name, idx, v, t)
GLint GLint GLsizei GLint GLenum GLenum type
static void setGlobalKeepPosWhenMoving(OBJ_KeepPosType flag)
int isTimeDependent() const
virtual bool isLightInLightMask(const OBJ_Node *light, fpreal now)
Function to resolve lighting based on light masks.
virtual const OP_DataMicroNode & parmListMicroNodeConst() const
int KEEPPOS(fpreal t) const
virtual int * getIndirect() const =0
void PIVOTR(fpreal *v, fpreal t)
GA_API const UT_StringHolder trans
void setDCOLORR(fpreal t, fpreal r)
void LOOKUP(UT_String &str, fpreal t)
SYS_FORCE_INLINE bool getTimeDependent() const
#define SET_INT(name, parm_index, vector_index, t, val)
int getInterceptMode() const
int getCachedParmIndex(const UT_StringRef &name, int name_idx) const
virtual OP_ERROR setNamedInput(const OP_ConnectorId &input_name, OP_Node *op, const OP_ConnectorId *output_name=nullptr)
New input functions that use names instead of indices.
static OBJ_KeepPosType getGlobalKeepPosWhenMoving()
virtual bool setPickable(bool on_off)
int getCachedParmIndex(const PRM_Name &name, int name_idx) const
virtual bool getHideDefaultParms() const
void addError(int code, const char *msg=0)
void setTY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
void setSY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
int parmIndexDISPLAY() const
virtual const char * getSetTranslateParmName() const
GLdouble GLdouble GLint GLint order
SYS_VISIBILITY_EXPORT void newObjectOperator(OP_OperatorTable *table)
fpreal PATHROLL(fpreal t)
virtual OBJ_Ambient * castToOBJAmbient()
int parmIndexTDISPLAY() const
virtual OP_ERROR setIndirectInput(OP_InputIdx idx, OP_IndirectInput *input)
Connects an input to an indirect input of our parent subnet.
void addMessage(OBJ_Error code, const char *msg=0)
#define FLOAT_OBJ_PARM(name, idx, vi, t)
#define INT_OBJ_PARM(name, idx, vi, t)
int PROMOTE_POPGUIDES(fpreal t) const
void setLocalXform(const UT_Matrix4D &m)
virtual OBJ_Camera * castToOBJCamera()
virtual OP_Node * getRenderNodePtr()
static void setIgnorePretransformValue(bool flag)
bool hasConstraints() const
virtual OBJ_SubNet * castToOBJSubNet()
GLuint const GLchar * name
void setTZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
GLsizei const GLchar *const * strings
GLboolean GLboolean GLboolean b
static bool getIgnorePretransform()
virtual const OP_DataMicroNode & dataMicroNodeConst() const
virtual bool getBoundingBox(UT_BoundingBox &box, OP_Context &)
int CHILDCOMP(fpreal t) const
GLenum GLenum GLsizei void * table
virtual OP_OpTypeId getOpTypeID() const
static const char * input4ObjectToken
that also have some descendant prim *whose name begins with which in turn has a child named baz where *the predicate active
const UT_Matrix4D & getWorldXform() const
bool getObjectDisplay(fpreal t, const OP_Network *n=0) const
virtual OP_ERROR setNamedIndirectInput(const OP_ConnectorId &input_name, OP_IndirectInput *input)
bool getParentingErrorFlag() const
virtual bool createSpareParametersFromChannels(UT_BitArray &selection, const CH_ChannelList &channels)
virtual OBJ_Light * castToOBJLight()
virtual OP_ERROR setNamedInputReference(const OP_ConnectorId &input_name, const char *label, int, const OP_ConnectorId *output_name=nullptr)
virtual void getDragDropChoice(DD_Source &src, DD_ChoiceList &c)
int isPreTransformIdentity()
virtual const char * getChildType() const
virtual bool getParameterOrProperty(const UT_StringRef &name, fpreal now, OP_Node *&op, PRM_Parm *&parm, bool create_missing_multiparms, PRM_ParmList *obsolete=nullptr)
#define STR_OBJ_PARM(name, idx, vi, t)
virtual int testDragDrop(DD_Source &src)
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
A map of string to various well defined value types.
void setWorldXform(const UT_Matrix4D &m)
GA_API const UT_StringHolder parms
void setRY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
virtual int findParametersOrProperties(fpreal now, OP_PropertyLookupList &list)
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific()
void PATHUP(fpreal *v, fpreal t)
virtual void fillInfoTreeNodeSpecific(UT_InfoTree &tree, const OP_NodeInfoTreeParms &parms)
virtual bool canCreateNewOpType() const
PRM_Parm * getCachedParm(const UT_StringRef &name, int name_idx)
static OBJ_KeepPosType getGlobalKeepPosWhenParenting()
int getDisplayOrder() const
static UT_Playback * getPlayback()
__hostdev__ constexpr T pi()
Pi constant taken from Boost to match old behaviour.
virtual int isObjectLitBy(OBJ_Node *, fpreal)
virtual void resolveObsoleteParms(PRM_ParmList *)
OP_VERSION modVersion() const
exint evalIntT(int pi, int vi, fpreal t, int thread) const
SOP_Node * getRenderSopPtr()
bool isUseFullTransformModel() const
virtual OBJ_Rivet * castToOBJRivet()
void setPIVOTRY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
LeafData & operator=(const LeafData &)=delete
int getDefaultedIProperty(const char *name, fpreal now, int def) const
virtual void referencedParmChanged(int pi)
virtual bool setDisplayOrigin(bool on_off_unchanged)
virtual const char * getOpType() const
UT_API UT_ErrorSeverity UTaddWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
int parmIndexCONSTRAINTSON() const
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
void setRZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
GA_API const UT_StringHolder pivot
virtual OP_OpTypeId getChildTypeID() const =0
virtual OBJ_Handle * castToOBJHandle()
void setTRANSORDER(int v)
virtual bool evalVariableValue(UT_String &val, int index, int thread)
const OP_DataMicroNode & parmListMicroNodeConst() const override
bool inheritTimeDependentFromExplicitInputs()
virtual OBJ_Fetch * castToOBJFetch()
int isBeingDeleted() const
const UT_DMatrix4 & getInverseXform()
This is the base class for all DOP nodes.
static bool getIgnorePretransformValue()
void setPX(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
void setPZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
bool getCachable(int thread) const
virtual void propagateEndBlockModify()
void setRX(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
SYS_FORCE_INLINE PRM_ParmList * getParmList()
OP_VERSION parmListModVersion() const
void setPY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
virtual OBJ_Null * castToOBJNull()
OBJ_NodeFlags & objflags()
void setCookingRender(int val) override
void setDCOLORG(fpreal t, fpreal g)
void setPIVOTRX(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
static const char * boundingSphereToken
virtual int acceptDragDrop(DD_Source &src, const char *label)
virtual OBJ_Geometry * castToOBJGeometry()
static const char * input1ObjectToken
virtual OP_Node * getDisplayNodePtr()
int isCookingRender() const override
OP_ERROR setParentObject(OBJ_Node *node)
UT_API UT_ErrorSeverity UTaddError(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
ImageBuf OIIO_API channels(const ImageBuf &src, int nchannels, cspan< int > channelorder, cspan< float > channelvalues={}, cspan< std::string > newchannelnames={}, bool shuffle_channel_names=false, int nthreads=0)
const PRM_Parm * getCachedParm(const UT_StringRef &name, int name_idx) const
virtual obj_OnionSkin getOnionSkin()
void setDisplayDisabledBySubnetNeedsUpdate()