17 #ifndef __OBJ_Node_h__
18 #define __OBJ_Node_h__
57 class OBJ_NodeParentTransform;
62 class OBJ_UndoPreTransform;
147 #define OBJ_MATERIAL_SPARE_TAG "material_spare"
215 #define OBJ_SELECTABLE_FLAG 'S'
217 #define FLOAT_OBJ_PARM(name, idx, vi, t) \
218 return evalFloat(name, &getIndirect()[idx], vi, t);
219 #define FLOAT_OBJ_PARMS(name, idx, v, t) \
220 evalFloats(name, &getIndirect()[idx], v, t);
221 #define INT_OBJ_PARM(name, idx, vi, t) \
222 return evalInt(name, &getIndirect()[idx], vi, t);
223 #define STR_OBJ_PARM(name, idx, vi, t) \
224 evalString(str, name, &getIndirect()[idx], vi, t);
226 #define SET_FLOAT(name, parm_index, vector_index, t, val, add_key) \
227 setChRefFloat(name, getIndirect()[parm_index], vector_index, t, val, add_key);
228 #define SET_INT(name, parm_index, vector_index, t, val) \
229 setChRefInt(name,getIndirect()[parm_index], vector_index, t, val);
230 #define SET_STRING(val, meaning, parm_index, vector_index, t) \
231 setChRefString(val, meaning, name, getIndirect()[parm_index], vector_index, t);
271 void applyBackwardsPathCompatibility(
275 const char *root =
"/obj/",
276 const char *tail =
"");
277 void applyBackwardsNetNodeCompatibility(
279 const char *oldnetname,
280 const char *oldnodename,
282 const char *rootname,
283 const char *property_parm=0);
288 void applyBackwardsShopCompatibility(
291 const char *newname);
306 virtual bool getParmTransformRotates(
OP_Context &context,
308 virtual bool getParmTransformTranslates(
OP_Context &context,
310 virtual bool getParmTransformScales(
OP_Context &context,
314 {
return myUseFullTransformModel; }
321 void destroyTransformParmChannels();
329 bool setParmTransformFromWorld(
331 bool create_keys =
false,
332 bool fail_if_any_locked_parms =
false,
333 bool change_locked_parms =
false);
334 void setRigidParmTransformFromWorld(
336 bool create_keys =
false );
344 bool create_keys =
false,
345 bool fail_if_any_locked_parms =
false,
346 bool change_locked_parms =
false,
350 void setRigidParmTransform(
OP_Context &context,
352 bool create_keys =
false );
364 bool create_keys =
false,
365 bool fail_if_any_locked_parms =
false,
366 bool change_locked_parms =
false,
394 bool getInverseLocalToWorldTransform(
436 bool getInverseObjectToWorldTransform(
484 bool getInverseObjectToWorldTransform(
487 bool getInverseLocalToWorldTransform(
504 int getRelativeTransform(
OP_Node &to,
507 int getRelativeTransform(
OP_Node &to,
518 int keepPosWhenParenting();
519 bool getPreTransformInput(
OP_Context &context,
521 int keepPosWhenMoving();
576 int getPreLookatTransform(
OP_Context &context,
579 bool norotates = false);
582 int keepWorldTransformByOldInput(
OP_Context &context,
586 void keepLastWorldTransform(
OP_Context &context);
606 typedef
int (*ApplyParmTransformCallback)(
615 void buildCustomChildToWorldTransform(
617 ApplyParmTransformCallback callback,
void *data);
618 void buildCustomObjectToWorldTransform(
620 ApplyParmTransformCallback callback,
void *data);
630 virtual
int keepWorldTransform(
633 bool allow_extract = false );
636 void clearUndoFlags() override;
639 void savePreTransformForUndo();
644 void resetPreTransform();
648 virtual
void transferLocalToPreTransform(
fpreal gtime);
653 virtual
void transferPreToLocalTransform(
654 fpreal gtime,
bool follow_chan_refs = false);
657 virtual
void transferLocalToPreTransformRotates(
fpreal gtime);
660 virtual
void transferLocalToPreTransformTranslates(
fpreal gtime);
663 virtual
void transferLocalToPreTransformScales(
fpreal gtime);
675 void adjustRotatesToIncludePreTransform(
680 void adjustRotatesForPreTransform(
686 {
return myPreTransform; }
688 {
return myPreTransform; }
690 {
return myPreTransformIsIdentity; }
692 { myPreTransformIsIdentity = yesno; }
696 bool setCachable(
bool onoff);
697 bool getCachable(
int thread)
const;
731 static void initializeExpressions();
732 static void buildMaterialOptMenu(
void *
obj,
737 static int handleMaterialOpt(
void *
obj,
741 bool processMaterialOpt(
fpreal now,
const char *operation,
742 int argc,
const char *argv[],
748 int getFullCOP2Path(
const char *relpath,
749 UT_String &fullpath,
int &flagdependent);
750 void splitCOP2Path(
const char *
path,
758 static void buildGeoObjMenu(
761 static void buildPathObjMenu(
764 static void buildKinChopMenu(
767 static void buildPopGeoMenu(
770 static void buildShadeObjMenu(
773 static void buildColorPlaneMenu(
776 static void buildAlphaPlaneMenu(
779 static void buildGeoChopMenu(
782 static void buildSoundChopMenu(
785 static void buildMicChopMenu(
788 static void buildChopNetMenu(
791 static void buildBoneCaptureMenu(
794 static void buildBoneChildMenu(
797 static void buildChildObjMenu(
800 static void buildPointGroupMenu(
803 static void buildPrimitiveGroupMenu(
807 static int handlePreTransformMenu(
void *o,
int index,
fpreal t,
814 {
return myObjFlags.getParentingErrorFlag(); }
816 { myObjFlags.setParentingErrorFlag(o); }
819 {
return myCookingRender ? 1:0; }
822 { myCookingRender = (val!=0); }
828 unsigned outputIdx = 0)
override;
831 unsigned idx,
const char *
label,
833 unsigned outputIdx = 0)
override;
861 { ourKeepPosWhenParenting = flag; }
863 {
return ourKeepPosWhenParenting; }
866 { ourKeepPosWhenMoving = flag; }
868 {
return ourKeepPosWhenMoving; }
870 static void disallowGlobalKeepPos();
871 static void allowGlobalKeepPos();
873 static void disallowIgnorePretransform();
874 static void allowIgnorePretransform();
877 { ourIgnorePretransformValue = flag; }
879 {
return ourAllowIgnorePretransform
880 && ourIgnorePretransformValue; }
882 {
return ourIgnorePretransformValue; }
885 void *
data=0)
override;
892 void setParmFromHandle(
898 bool check_modified);
899 void setParmFromHandle(
903 bool create_keys =
false,
905 bool check_modified =
true);
908 bool create_keys =
false,
910 bool check_modified =
true);
911 virtual void setUniformScaleFromHandle(
913 bool create_keys =
false,
914 bool check_modified =
true);
916 bool create_keys =
false,
918 bool check_modified =
true);
919 virtual void setTranslateFromHandle(
fpreal t,
921 bool create_keys =
false,
923 bool check_modified =
true);
924 virtual void setPivotFromHandle(
fpreal t,
926 bool create_keys =
false,
928 bool check_modified =
true);
929 virtual void setPivotRotateFromHandle(
fpreal t,
931 bool create_keys =
false,
933 bool check_modified =
true);
935 bool create_keys =
false,
936 bool check_modified =
true);
943 virtual int isObjectRenderable(
fpreal t)
const;
957 virtual void getActingLightSubset(
1010 bool assignShader(
int shop_type,
const char *
path,
1026 int shop_type,
fpreal now,
1029 int shop_type,
fpreal now,
1031 void getShopTransform(
UT_DMatrix4 &xform,
int shop_type,
1035 static const char *getMaterialParmToken();
1066 bool full_combine =
true,
1076 {
return myXformMicroNode; }
1084 return (myXformCookLevel > 0)
1092 bool fail_if_any_locked_parms,
1093 bool change_locked_parms,
1098 bool setParmPivotTransform(
OP_Context &context,
1101 bool fail_if_any_locked_parms,
1102 bool change_locked_parms,
1116 bool supportsDropShopType(
int shop_type);
1118 const char *
label)
override;
1128 virtual void addExtraDependencies(
OP_Context &context);
1140 bool create_missing_multiparms,
1162 virtual int applyInputDependentTransform(
1176 virtual int applyInputIndependentTransform(
1207 bool getParentToWorldTransformForInputNoLock(
1215 void setCachedTransform(
OP_Context &context,
1218 bool isCachingTransforms(
int thread)
const;
1232 const bool myWasTimeDep;
1233 const bool myWasCooking;
1234 const bool myConstraint;
1237 friend class OBJ_NodeParentTransform;
1243 int &copied_input)
override;
1247 void deleteCookedData()
override;
1248 int saveCookedData(
const char *,
OP_Context &)
override;
1249 int saveCookedData(std::ostream &os,
1251 int binary = 0)
override;
1253 const char *getFileExtension(
int binary)
const override;
1254 OP_ERROR saveIntrinsic(std::ostream &os,
1256 void saveIntrinsicCommand(std::ostream &os,
1257 const char *
name)
override;
1259 bool loadPacket(
UT_IStream &is,
short class_id,
short sig,
1260 const char *
path=0)
override;
1261 bool loadPacket(
UT_IStream &is,
const char *token,
1262 const char *
path=0)
override;
1264 void saveFlagsForUndo()
override;
1265 void getSaveFlagsString(
1268 bool save_to_hip)
const override;
1269 void getPreParmSaveFlagsString(
1271 void getPostParmSaveFlagsString(
1278 void getXformDescription(
const UT_DMatrix4 &xform,
1279 const char* label_if_not_identity,
1280 const char* text_if_identity,
1293 OBJ_TRANSFORM_SCALES
1299 void getParmTransformTransferMatrix(
1301 OBJ_TransformComponent
type,
1310 virtual void applyToCaptTransformAndDescendents(
1315 virtual void buildPointGroupMenu(
1320 virtual void buildPrimitiveGroupMenu(
1343 virtual OBJ_Node *getParentObject();
1345 {
return setInput(0, node); }
1351 void setLookAtObject(
OBJ_Node *node);
1352 void setLookUpObject(
OBJ_Node *node);
1353 void setPathObject(
OBJ_Node *node);
1357 virtual int collectPropertiesFromChannels(
1361 virtual int collectPropertiesFromParms(
1373 void createPropertiesShop();
1381 virtual int *getIndirect()
const = 0;
1386 int &parm_idx = getIndirect()[name_idx];
1388 parm_idx = getParmList()->getParmIndex(name);
1394 int &parm_idx = getIndirect()[name_idx];
1396 parm_idx = getParmList()->getParmIndex(name);
1401 return getParmList()->getParmPtr(
1402 getCachedParmIndex(name, name_idx));
1407 return getParmList()->getParmPtr(
1408 getCachedParmIndex(name, name_idx));
1415 void inverseDirty() { myInverseDirty =
true; }
1421 myInverseDirty =
false;
1422 myWorldXform.
invert(myIWorldXform);
1424 return myIWorldXform;
1430 bool computeConstraints(
OP_Context &context);
1442 {
return myWorldXform; }
1447 { myWorldXform =
m; myInverseDirty=
true; }
1512 OBJ_PATHPARM_UNIFORM = 0,
1535 int PHANTOM(
fpreal t,
int default_value);
1536 int MATTE(
fpreal t,
int default_value);
1537 int RAYBOUNCE(
fpreal t,
int default_value);
1538 int TRANSMITBOUNCE(
fpreal t,
int default_value);
1551 {
return evalInt(
"use_dcolor", &getIndirect()[
I_USE_DCOLOR],
1561 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR], c, t);
1562 col.
setRGB(c[0], c[1], c[2]);
1576 {
return getCachedParmIndex(
"display",
I_DISPLAY); }
1585 return getDisplay() && !isDisplayDisabled(t,
n);
1589 bool ignore_display=
false)
const;
1590 bool isDisplayTimeDependent()
const;
1596 int isDisplayDisabled(
fpreal t,
1602 bool setVisible(
bool onoff)
override;
1603 bool getVisible()
const override;
1610 int TDISPLAY()
const;
1613 return getCachedParmIndex(
"tdisplay",
I_TDISPLAY);
1623 return getCachedParmIndex(
"constraints_path",
I_CONSTRAINTS);
1627 int POINTINSTANCE(
fpreal now)
const;
1652 {
return getDefaultedIProperty(
"vport_promote_popguides", t,1); }
1659 return myDisplayOrder;
1663 myDisplayOrder =
order;
1669 { myDisplayDisabledBySubnetNeedsUpdate = 1; }
1671 void addTransformParmInterests(
OP_Node *interested );
1676 if (evalParameterOrProperty(name, 0, now, val))
1683 if (evalParameterOrProperty(name, 0, now, val))
1690 if (!evalParameterOrProperty(name, 0, now, result))
1697 if (!evalParameterOrPropertyRaw(name, 0, now, result))
1702 int64 getMemoryUsage(
bool inclusive)
const override;
1704 OP_Node *getEvaluatedConstraints();
1712 if(myWireColorMicroNode.requiresUpdate(t))
1714 mySetWireColor = USE_DCOLOR();
1715 if( mySetWireColor )
1717 myWireColor.setType(
UT_RGB);
1719 char *
p = (
char*)(
void*)&myWireColor;
1723 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR],c,t);
1726 auto i_dcolor = getIndirect()[
I_DCOLOR];
1727 if(i_usedcolor >= 0)
1728 myWireColorMicroNode.addExplicitInput(
1729 parmMicroNode(i_usedcolor, 0),
false);
1732 myWireColorMicroNode.addExplicitInput(
1733 parmMicroNode(i_dcolor, 0),
false);
1734 myWireColorMicroNode.addExplicitInput(
1735 parmMicroNode(i_dcolor, 1),
false);
1736 myWireColorMicroNode.addExplicitInput(
1737 parmMicroNode(i_dcolor, 2),
false);
1739 myWireColorMicroNode.update(t);
1742 use_color = mySetWireColor;
1746 void onCreated()
override;
1749 void checkTimeDependencies(
int do_parms=1,
1751 int do_extras=1)
override;
1753 friend class OBJ_UndoPreTransform;
1756 void checkKeepPosWhenParenting(
OBJ_Node *parent_obj );
1758 const PRM_Parm * findTransformProperty(
1763 template <
typename OBJ_NODE,
typename VISITOR>
1764 static void visitTransformParms(
1767 bool exclude_uniform_scale,
1770 bool hasTransformParmChannels(
1772 bool exclude_uniform_scale)
const;
1774 int evalToggleInt(
char *togglename,
int toggleindirect,
1775 char *parm,
int parmindirect,
1777 fpreal evalToggleFloat(
char *togglename,
int toggleindirect,
1778 char *parm,
int parmindirect,
1780 int evalToggleParm(
const char *togglename,
1781 const char *token,
fpreal now,
1783 fpreal evalToggleParm(
const char *togglename,
1784 const char *token,
fpreal now,
1787 void computeSubnetParentTransform(
1792 void addTransformDependencies(
OBJ_Node *subnet );
1794 void propagateKeepPosWhenMoving();
1796 void dirtyPreTransform();
1797 void updatePreTransformParms(
bool from,
bool undo=
true);
1798 void updatePreTransformParms(
bool from,
bool undo,
fpreal now,
int thread);
1801 void applyBackwardsRiTransmitCompatibility(
1804 const char *inputLabel(
unsigned)
const override;
1807 template<
int OFFSET>
1810 void onChangeSpareParms();
1821 bool isSelectionOwnerType()
const override final
1824 template<
int HAS_DEP>
1841 OP_Node *myEvaluatedConstraints;
1847 obj_XformMicroNode(
OP_Node &node)
1851 const char *className()
const override
1853 return "obj_XformMicroNode";
1856 obj_XformMicroNode myXformMicroNode;
1857 int myXformCookLevel;
1864 int myShopMaterialIndex;
1865 uint myShopMaterialIndexLastCheck;
1867 unsigned myPreTransformIsIdentity:1,
1868 myTraversingForBlur:1,
1869 mySubnetParentTimeDep:1,
1870 myShowingPreTransform:1,
1871 myUpdatingPreTransform:1,
1873 myUseFullTransformModel:1,
1880 myGotConstraintsByFlag:1;
1882 mutable unsigned myDisplayDisabledBySubnetNeedsUpdate:1,
1883 myDisplayDisabledBySubnet:1,
1884 myInstanceRecursion:1;
1919 struct objSpareParam
1935 struct objSpareProperties
1940 bool isEmpty()
const;
1944 objSpareParam myPreXOrd;
1945 objSpareParam myPreROrd;
1946 objSpareParam myPreTranslate;
1947 objSpareParam myPreRotate;
1948 objSpareParam myPreScale;
1951 objSpareParam myLimitsOn[18];
1952 objSpareParam myLimits[18];
1954 objSpareParam myParentToBoneTip;
1956 objSpareProperties *myProperties;
1959 bool mySetWireColor;
1961 int myConstraintsChannelIndex;
1966 mutable int myCachedDisplay;
1968 mutable int myCachedTDisplay;
1978 static bool ourAllowKeepPos;
1979 static bool ourIgnorePretransformValue;
1980 static bool ourAllowIgnorePretransform;
2005 #undef FLOAT_OBJ_PARM
2006 #undef FLOAT_OBJ_PARMS
2023 , myAddTimeDep(true)
2025 , myCallerUserData(nullptr)
2026 , myCallerTransformUserData(nullptr)
2032 if( tud !=
nullptr )
2034 myCallerUserData = ctx_data;
2035 myCallerTransformUserData = tud;
2042 CHOP_Node *chop = CAST_CHOPNODE(myCaller);
2058 if( myCallerUserData )
2060 if( myExtraInputs.size() )
2061 myCaller->addExtraInputs( myExtraInputs );
2063 if( myExtraMicroNodes.size() )
2064 myCaller->addExtraInputs( myExtraMicroNodes );
2067 myContext.setData(myCallerUserData);
2070 myCallerUserData =
nullptr;
2071 myCallerTransformUserData =
nullptr;
2077 if( !myCaller || !dep )
2080 myExtraMicroNodes.append( dep );
2087 myCaller->flags().setTimeDep(
true);
2094 if( !myCaller || !src )
2105 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2114 addExtraInput( src, pi, vi, vi);
2119 if( !myCaller || !src )
2130 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2134 for(
int vi=vi_start; vi<=vi_end; ++vi )
2147 for(
int vi=vi_start; vi<=vi_end; ++vi )
2151 myCaller->flags().setTimeDep(
true);
2163 if( myCallerTransformUserData )
2164 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 bool getParameterOrProperty(const UT_StringRef &name, fpreal now, OP_Node *&op, PRM_Parm *&parm, bool create_missing_multiparms, PRM_ParmList *obsolete=0)
GLboolean GLboolean GLboolean b
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)
virtual OBJ_DopNet * castToOBJDopNet()
fpreal getW() const override
Node position/scale is used by the UI.
GLuint GLdouble GLdouble GLint GLint order
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()
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
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
GLenum GLenum GLenum input
virtual OBJ_Blend * castToOBJBlend()
virtual const char * getSetRotateParmName() const
OP_ContextData * getData() 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)
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
int PATHSOP(UT_String &str, fpreal t) const
static const char * input3ObjectToken
int LOOKUPOBJ(UT_String &str, fpreal t) const
GLuint const GLchar * name
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)
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
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
const OP_DataMicroNode & dataMicroNodeConst() const override
#define FLOAT_OBJ_PARMS(name, idx, v, t)
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)
virtual OP_ERROR setInput(unsigned idx, OP_Node *op, unsigned outputIdx=0)
Sets a given input to connect to an output of a particular node.
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.
void opChanged(OP_EventType reason, void *data=0) override
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)
GLuint GLsizei const GLchar * label
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
SYS_VISIBILITY_EXPORT void newObjectOperator(OP_OperatorTable *table)
fpreal PATHROLL(fpreal t)
virtual OBJ_Ambient * castToOBJAmbient()
int parmIndexTDISPLAY() const
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
GLuint const GLuint * names
void setData(int parmi, int vectori, fpreal t, const PRM_DataItemHandle &val)
void setLocalXform(const UT_Matrix4D &m)
virtual OBJ_Camera * castToOBJCamera()
virtual OP_Node * getRenderNodePtr()
static void setIgnorePretransformValue(bool flag)
bool hasConstraints() const
virtual bool getParameterOrPropertyByChannel(const UT_StringRef &chname, fpreal now, OP_Node *&op, PRM_Parm *&parm, int &vector_index, PRM_ParmList *obsolete=0)
virtual OBJ_SubNet * castToOBJSubNet()
void setTZ(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
GLsizei const GLchar *const * strings
static bool getIgnorePretransform()
virtual const OP_DataMicroNode & dataMicroNodeConst() const
virtual bool getBoundingBox(UT_BoundingBox &box, OP_Context &)
int CHILDCOMP(fpreal t) const
virtual OP_OpTypeId getOpTypeID() const
static const char * input4ObjectToken
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
#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)
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()
GLsizei const GLint box[]
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()
virtual int isObjectLitBy(OBJ_Node *, fpreal)
GA_API const UT_StringHolder up
virtual void resolveObsoleteParms(PRM_ParmList *)
OP_VERSION modVersion() const
virtual bool isUsingCurrentFrameForVexTransformContext() const
exint evalIntT(int pi, int vi, fpreal t, int thread) const
SOP_Node * getRenderSopPtr()
virtual OP_ERROR setIndirectInput(unsigned idx, OP_IndirectInput *input)
Connects an input to an indirect input of our parent subnet.
bool isUseFullTransformModel() const
virtual OBJ_Rivet * castToOBJRivet()
void setPIVOTRY(fpreal t, fpreal v, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
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()
int invert(T tol=0.0F)
Invert this matrix and return 0 if OK, 1 if singular.
void setTRANSORDER(int v)
virtual bool evalVariableValue(UT_String &val, int index, int thread)
constexpr T pi()
Pi constant taken from Boost to match old behaviour.
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
GLenum GLsizei GLenum GLenum const void * table
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)
OP_Node * getCallerNode() const
const PRM_Parm * getCachedParm(const UT_StringRef &name, int name_idx) const
virtual obj_OnionSkin getOnionSkin()
void setDisplayDisabledBySubnetNeedsUpdate()
virtual OP_ERROR setInputReference(unsigned idx, const char *label, int keeppos, unsigned outputIdx=0)
Connects an input to particular node by name in the network.