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,
517 int keepPosWhenParenting();
518 bool getPreTransformInput(
OP_Context &context,
520 int keepPosWhenMoving();
559 bool getLookatObjectIsTimeDependent(const
UT_String &lookat,
565 bool getLookatObjectTransform(const
UT_String &lookat,
575 int getPreLookatTransform(
OP_Context &context,
578 bool norotates = false);
581 int keepWorldTransformByOldInput(
OP_Context &context,
585 void keepLastWorldTransform(
OP_Context &context);
594 bool getPathObjectDetailHandle(const
UT_String &path,
605 typedef
int (*ApplyParmTransformCallback)(
614 void buildCustomChildToWorldTransform(
616 ApplyParmTransformCallback callback,
void *data);
617 void buildCustomObjectToWorldTransform(
619 ApplyParmTransformCallback callback,
void *data);
629 virtual
int keepWorldTransform(
632 bool allow_extract = false );
635 void clearUndoFlags() override;
638 void savePreTransformForUndo();
643 void resetPreTransform();
647 virtual
void transferLocalToPreTransform(
fpreal gtime);
652 virtual
void transferPreToLocalTransform(
653 fpreal gtime,
bool follow_chan_refs = false);
656 virtual
void transferLocalToPreTransformRotates(
fpreal gtime);
659 virtual
void transferLocalToPreTransformTranslates(
fpreal gtime);
662 virtual
void transferLocalToPreTransformScales(
fpreal gtime);
674 void adjustRotatesToIncludePreTransform(
679 void adjustRotatesForPreTransform(
685 {
return myPreTransform; }
687 {
return myPreTransform; }
689 {
return myPreTransformIsIdentity; }
691 { myPreTransformIsIdentity = yesno; }
695 bool setCachable(
bool onoff);
696 bool getCachable(
int thread)
const;
736 static void initializeExpressions();
737 static void buildMaterialOptMenu(
void *obj,
742 static int handleMaterialOpt(
void *obj,
746 bool processMaterialOpt(
fpreal now,
const char *operation,
747 int argc,
const char *argv[],
753 int getFullCOP2Path(
const char *relpath,
754 UT_String &fullpath,
int &flagdependent);
755 void splitCOP2Path(
const char *
path,
763 static void buildGeoObjMenu(
766 static void buildPathObjMenu(
769 static void buildKinChopMenu(
772 static void buildPopGeoMenu(
775 static void buildShadeObjMenu(
778 static void buildColorPlaneMenu(
781 static void buildAlphaPlaneMenu(
784 static void buildGeoChopMenu(
787 static void buildSoundChopMenu(
790 static void buildMicChopMenu(
793 static void buildChopNetMenu(
796 static void buildBoneCaptureMenu(
799 static void buildBoneChildMenu(
802 static void buildChildObjMenu(
805 static void buildPointGroupMenu(
808 static void buildPrimitiveGroupMenu(
812 static int handlePreTransformMenu(
void *o,
int index,
fpreal t,
819 {
return myObjFlags.getParentingErrorFlag(); }
821 { myObjFlags.setParentingErrorFlag(o); }
824 {
return myCookingRender ? 1:0; }
827 { myCookingRender = (val!=0); }
833 unsigned outputIdx = 0)
override;
836 unsigned idx,
const char *
label,
838 unsigned outputIdx = 0)
override;
866 { ourKeepPosWhenParenting = flag; }
868 {
return ourKeepPosWhenParenting; }
871 { ourKeepPosWhenMoving = flag; }
873 {
return ourKeepPosWhenMoving; }
875 static void disallowGlobalKeepPos();
876 static void allowGlobalKeepPos();
878 static void disallowIgnorePretransform();
879 static void allowIgnorePretransform();
882 { ourIgnorePretransformValue = flag; }
884 {
return ourAllowIgnorePretransform
885 && ourIgnorePretransformValue; }
887 {
return ourIgnorePretransformValue; }
890 void *
data=0)
override;
897 void setParmFromHandle(
903 bool check_modified);
904 void setParmFromHandle(
908 bool create_keys =
false,
910 bool check_modified =
true);
913 bool create_keys =
false,
915 bool check_modified =
true);
916 virtual void setUniformScaleFromHandle(
918 bool create_keys =
false,
919 bool check_modified =
true);
921 bool create_keys =
false,
923 bool check_modified =
true);
924 virtual void setTranslateFromHandle(
fpreal t,
926 bool create_keys =
false,
928 bool check_modified =
true);
929 virtual void setPivotFromHandle(
fpreal t,
931 bool create_keys =
false,
933 bool check_modified =
true);
934 virtual void setPivotRotateFromHandle(
fpreal t,
936 bool create_keys =
false,
938 bool check_modified =
true);
940 bool create_keys =
false,
941 bool check_modified =
true);
948 virtual int isObjectRenderable(
fpreal t)
const;
962 virtual void getActingLightSubset(
1015 bool assignShader(
int shop_type,
const char *
path,
1031 int shop_type,
fpreal now,
1034 int shop_type,
fpreal now,
1036 void getShopTransform(
UT_DMatrix4 &xform,
int shop_type,
1040 static const char *getMaterialParmToken();
1071 bool full_combine =
true,
1083 {
return myXformMicroNode; }
1091 return (myXformCookLevel > 0)
1099 bool fail_if_any_locked_parms,
1100 bool change_locked_parms,
1105 bool setParmPivotTransform(
OP_Context &context,
1108 bool fail_if_any_locked_parms,
1109 bool change_locked_parms,
1123 bool supportsDropShopType(
int shop_type);
1125 const char *
label)
override;
1135 virtual void addExtraDependencies(
OP_Context &context);
1147 bool create_missing_multiparms,
1169 virtual int applyInputDependentTransform(
1183 virtual int applyInputIndependentTransform(
1214 bool getParentToWorldTransformForInputNoLock(
1222 void setCachedTransform(
OP_Context &context,
1225 bool isCachingTransforms(
int thread)
const;
1239 const bool myWasTimeDep;
1240 const bool myWasCooking;
1241 const bool myConstraint;
1244 friend class OBJ_NodeParentTransform;
1250 int &copied_input)
override;
1254 void deleteCookedData()
override;
1255 int saveCookedData(
const char *,
OP_Context &)
override;
1256 int saveCookedData(std::ostream &os,
1258 int binary = 0)
override;
1260 const char *getFileExtension(
int binary)
const override;
1261 OP_ERROR saveIntrinsic(std::ostream &os,
1263 void saveIntrinsicCommand(std::ostream &os,
1264 const char *
name)
override;
1266 bool loadPacket(
UT_IStream &is,
short class_id,
short sig,
1267 const char *
path=0)
override;
1268 bool loadPacket(
UT_IStream &is,
const char *token,
1269 const char *
path=0)
override;
1271 void saveFlagsForUndo()
override;
1272 void getSaveFlagsString(
1275 bool save_to_hip)
const override;
1276 void getPreParmSaveFlagsString(
1278 void getPostParmSaveFlagsString(
1285 void getXformDescription(
const UT_DMatrix4 &xform,
1286 const char* label_if_not_identity,
1287 const char* text_if_identity,
1300 OBJ_TRANSFORM_SCALES
1306 void getParmTransformTransferMatrix(
1308 OBJ_TransformComponent
type,
1317 virtual void applyToCaptTransformAndDescendents(
1322 virtual void buildPointGroupMenu(
1327 virtual void buildPrimitiveGroupMenu(
1348 static PRM_SpareData *getMatchSelectButton(
int option,
int autoscope);
1350 virtual OBJ_Node *getParentObject();
1352 {
return setInput(0, node); }
1358 void setLookAtObject(
OBJ_Node *node);
1359 void setLookUpObject(
OBJ_Node *node);
1360 void setPathObject(
OBJ_Node *node);
1364 virtual int collectPropertiesFromChannels(
1368 virtual int collectPropertiesFromParms(
1380 void createPropertiesShop();
1388 virtual int *getIndirect()
const = 0;
1393 int &parm_idx = getIndirect()[name_idx];
1395 parm_idx = getParmList()->getParmIndex(name);
1401 int &parm_idx = getIndirect()[name_idx];
1403 parm_idx = getParmList()->getParmIndex(name);
1408 return getParmList()->getParmPtr(
1409 getCachedParmIndex(name, name_idx));
1414 return getParmList()->getParmPtr(
1415 getCachedParmIndex(name, name_idx));
1422 void inverseDirty() { myInverseDirty =
true; }
1428 myInverseDirty =
false;
1429 myWorldXform.
invert(myIWorldXform);
1431 return myIWorldXform;
1437 bool computeConstraints(
OP_Context &context);
1449 {
return myWorldXform; }
1454 { myWorldXform = m; myInverseDirty=
true; }
1519 OBJ_PATHPARM_UNIFORM = 0,
1542 int PHANTOM(
fpreal t,
int default_value);
1543 int MATTE(
fpreal t,
int default_value);
1544 int RAYBOUNCE(
fpreal t,
int default_value);
1545 int TRANSMITBOUNCE(
fpreal t,
int default_value);
1558 {
return evalInt(
"use_dcolor", &getIndirect()[
I_USE_DCOLOR],
1568 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR], c, t);
1569 col.
setRGB(c[0], c[1], c[2]);
1583 {
return getCachedParmIndex(
"display",
I_DISPLAY); }
1592 return getDisplay() && !isDisplayDisabled(t,
n);
1596 bool ignore_display=
false)
const;
1597 bool isDisplayTimeDependent()
const;
1603 int isDisplayDisabled(
fpreal t,
1609 bool setVisible(
bool onoff)
override;
1610 bool getVisible()
const override;
1617 int TDISPLAY()
const;
1620 return getCachedParmIndex(
"tdisplay",
I_TDISPLAY);
1630 return getCachedParmIndex(
"constraints_path",
I_CONSTRAINTS);
1634 int POINTINSTANCE(
fpreal now)
const;
1659 {
return getDefaultedIProperty(
"vport_promote_popguides", t,1); }
1666 return myDisplayOrder;
1670 myDisplayOrder =
order;
1676 { myDisplayDisabledBySubnetNeedsUpdate = 1; }
1678 void addTransformParmInterests(
OP_Node *interested );
1683 if (evalParameterOrProperty(name, 0, now, val))
1690 if (evalParameterOrProperty(name, 0, now, val))
1697 if (!evalParameterOrProperty(name, 0, now, result))
1704 if (!evalParameterOrPropertyRaw(name, 0, now, result))
1709 int64 getMemoryUsage(
bool inclusive)
const override;
1711 OP_Node *getEvaluatedConstraints();
1719 if(myWireColorMicroNode.requiresUpdate(t))
1721 mySetWireColor = USE_DCOLOR();
1722 if( mySetWireColor )
1724 myWireColor.setType(
UT_RGB);
1726 char *p = (
char*)(
void*)&myWireColor;
1730 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR],c,t);
1733 auto i_dcolor = getIndirect()[
I_DCOLOR];
1734 if(i_usedcolor >= 0)
1735 myWireColorMicroNode.addExplicitInput(
1736 parmMicroNode(i_usedcolor, 0),
false);
1739 myWireColorMicroNode.addExplicitInput(
1740 parmMicroNode(i_dcolor, 0),
false);
1741 myWireColorMicroNode.addExplicitInput(
1742 parmMicroNode(i_dcolor, 1),
false);
1743 myWireColorMicroNode.addExplicitInput(
1744 parmMicroNode(i_dcolor, 2),
false);
1746 myWireColorMicroNode.update(t);
1749 use_color = mySetWireColor;
1753 void onCreated()
override;
1756 void checkTimeDependencies(
int do_parms=1,
1758 int do_extras=1)
override;
1760 friend class OBJ_UndoPreTransform;
1763 void checkKeepPosWhenParenting(
OBJ_Node *parent_obj );
1765 const PRM_Parm * findTransformProperty(
1770 template <
typename OBJ_NODE,
typename VISITOR>
1771 static void visitTransformParms(
1774 bool exclude_uniform_scale,
1777 bool hasTransformParmChannels(
1779 bool exclude_uniform_scale)
const;
1781 int evalToggleInt(
char *togglename,
int toggleindirect,
1782 char *parm,
int parmindirect,
1784 fpreal evalToggleFloat(
char *togglename,
int toggleindirect,
1785 char *parm,
int parmindirect,
1787 int evalToggleParm(
const char *togglename,
1788 const char *token,
fpreal now,
1790 fpreal evalToggleParm(
const char *togglename,
1791 const char *token,
fpreal now,
1794 void computeSubnetParentTransform(
1799 void addTransformDependencies(
OBJ_Node *subnet );
1801 void propagateKeepPosWhenMoving();
1803 void dirtyPreTransform();
1804 void updatePreTransformParms(
bool from,
bool undo=
true);
1805 void updatePreTransformParms(
bool from,
bool undo,
fpreal now,
int thread);
1808 void applyBackwardsRiTransmitCompatibility(
1811 const char *inputLabel(
unsigned)
const override;
1814 template<
int OFFSET>
1817 void onChangeSpareParms();
1828 bool isSelectionOwnerType() const override final
1831 template<
int HAS_DEP>
1848 OP_Node *myEvaluatedConstraints;
1854 obj_XformMicroNode(
OP_Node &node)
1858 const char *className()
const override
1860 return "obj_XformMicroNode";
1863 obj_XformMicroNode myXformMicroNode;
1864 int myXformCookLevel;
1871 int myShopMaterialIndex;
1872 uint myShopMaterialIndexLastCheck;
1874 unsigned myPreTransformIsIdentity:1,
1875 myTraversingForBlur:1,
1876 mySubnetParentTimeDep:1,
1877 myShowingPreTransform:1,
1878 myUpdatingPreTransform:1,
1880 myUseFullTransformModel:1,
1887 myGotConstraintsByFlag:1;
1889 mutable unsigned myDisplayDisabledBySubnetNeedsUpdate:1,
1890 myDisplayDisabledBySubnet:1,
1891 myInstanceRecursion:1;
1926 struct objSpareParam
1942 struct objSpareProperties
1947 bool isEmpty()
const;
1951 objSpareParam myPreXOrd;
1952 objSpareParam myPreROrd;
1953 objSpareParam myPreTranslate;
1954 objSpareParam myPreRotate;
1955 objSpareParam myPreScale;
1958 objSpareParam myLimitsOn[18];
1959 objSpareParam myLimits[18];
1961 objSpareParam myParentToBoneTip;
1963 objSpareProperties *myProperties;
1966 bool mySetWireColor;
1968 int myConstraintsChannelIndex;
1973 mutable int myCachedDisplay;
1975 mutable int myCachedTDisplay;
1985 static bool ourAllowKeepPos;
1986 static bool ourIgnorePretransformValue;
1987 static bool ourAllowIgnorePretransform;
2012 #undef FLOAT_OBJ_PARM
2013 #undef FLOAT_OBJ_PARMS
2042 if( myCallerUserData )
2044 if( myExtraInputs.size() )
2045 myCaller->addExtraInputs( myExtraInputs );
2047 if( myExtraMicroNodes.size() )
2048 myCaller->addExtraInputs( myExtraMicroNodes );
2051 myContext.setData(myCallerUserData);
2054 myCallerUserData =
nullptr;
2055 myCallerTransformUserData =
nullptr;
2061 if( !myCaller || !dep )
2064 myExtraMicroNodes.append( dep );
2071 myCaller->flags().setTimeDep(
true);
2078 if( !myCaller || !src )
2089 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2098 addExtraInput( src, pi, vi, vi);
2103 if( !myCaller || !src )
2114 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2118 for(
int vi=vi_start; vi<=vi_end; ++vi )
2131 for(
int vi=vi_start; vi<=vi_end; ++vi )
2135 myCaller->flags().setTimeDep(
true);
2147 if( myCallerTransformUserData )
2148 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)
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()
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
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)
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)
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
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 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()
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
#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()
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)
GA_API const UT_StringHolder up
virtual void resolveObsoleteParms(PRM_ParmList *)
OP_VERSION modVersion() 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)
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()
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.