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);
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,
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();
1064 bool full_combine =
true,
1074 {
return myXformMicroNode; }
1082 return (myXformCookLevel > 0)
1090 bool fail_if_any_locked_parms,
1091 bool change_locked_parms,
1099 bool fail_if_any_locked_parms,
1100 bool change_locked_parms,
1114 bool supportsDropShopType(
int shop_type);
1116 const char *
label)
override;
1138 bool create_missing_multiparms,
1160 virtual int applyInputDependentTransform(
1174 virtual int applyInputIndependentTransform(
1205 bool getParentToWorldTransformForInputNoLock(
1216 bool isCachingTransforms(
int thread)
const;
1230 const bool myWasTimeDep;
1231 const bool myWasCooking;
1232 const bool myConstraint;
1235 friend class OBJ_NodeParentTransform;
1241 int &copied_input)
override;
1245 void deleteCookedData()
override;
1246 int saveCookedData(
const char *,
OP_Context &)
override;
1247 int saveCookedData(std::ostream &os,
1249 int binary = 0)
override;
1251 const char *getFileExtension(
int binary)
const override;
1252 OP_ERROR saveIntrinsic(std::ostream &os,
1254 void saveIntrinsicCommand(std::ostream &os,
1255 const char *
name)
override;
1257 bool loadPacket(
UT_IStream &is,
short class_id,
short sig,
1258 const char *
path=0)
override;
1259 bool loadPacket(
UT_IStream &is,
const char *token,
1260 const char *
path=0)
override;
1262 void saveFlagsForUndo()
override;
1263 void getSaveFlagsString(
1266 bool save_to_hip)
const override;
1267 void getPreParmSaveFlagsString(
1269 void getPostParmSaveFlagsString(
1276 void getXformDescription(
const UT_DMatrix4 &xform,
1277 const char* label_if_not_identity,
1278 const char* text_if_identity,
1291 OBJ_TRANSFORM_SCALES
1297 void getParmTransformTransferMatrix(
1299 OBJ_TransformComponent
type,
1308 virtual void applyToCaptTransformAndDescendents(
1313 virtual void buildPointGroupMenu(
1318 virtual void buildPrimitiveGroupMenu(
1341 virtual OBJ_Node *getParentObject();
1343 {
return setInput(0, node); }
1349 void setLookAtObject(
OBJ_Node *node);
1350 void setLookUpObject(
OBJ_Node *node);
1351 void setPathObject(
OBJ_Node *node);
1355 virtual int collectPropertiesFromChannels(
1359 virtual int collectPropertiesFromParms(
1371 void createPropertiesShop();
1379 virtual int *getIndirect()
const = 0;
1384 int &parm_idx = getIndirect()[name_idx];
1386 parm_idx = getParmList()->getParmIndex(name);
1392 int &parm_idx = getIndirect()[name_idx];
1394 parm_idx = getParmList()->getParmIndex(name);
1399 return getParmList()->getParmPtr(
1400 getCachedParmIndex(name, name_idx));
1405 return getParmList()->getParmPtr(
1406 getCachedParmIndex(name, name_idx));
1413 void inverseDirty() { myInverseDirty =
true; }
1419 myInverseDirty =
false;
1420 myWorldXform.
invert(myIWorldXform);
1422 return myIWorldXform;
1440 {
return myWorldXform; }
1445 { myWorldXform =
m; myInverseDirty=
true; }
1510 OBJ_PATHPARM_UNIFORM = 0,
1533 int PHANTOM(
fpreal t,
int default_value);
1534 int MATTE(
fpreal t,
int default_value);
1535 int RAYBOUNCE(
fpreal t,
int default_value);
1536 int TRANSMITBOUNCE(
fpreal t,
int default_value);
1549 {
return evalInt(
"use_dcolor", &getIndirect()[
I_USE_DCOLOR],
1559 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR], c, t);
1560 col.
setRGB(c[0], c[1], c[2]);
1574 {
return getCachedParmIndex(
"display",
I_DISPLAY); }
1583 return getDisplay() && !isDisplayDisabled(t,
n);
1587 bool ignore_display=
false)
const;
1588 bool isDisplayTimeDependent()
const;
1594 int isDisplayDisabled(
fpreal t,
1600 bool setVisible(
bool onoff)
override;
1601 bool getVisible()
const override;
1608 int TDISPLAY()
const;
1611 return getCachedParmIndex(
"tdisplay",
I_TDISPLAY);
1621 return getCachedParmIndex(
"constraints_path",
I_CONSTRAINTS);
1625 int POINTINSTANCE(
fpreal now)
const;
1650 {
return getDefaultedIProperty(
"vport_promote_popguides", t,1); }
1657 return myDisplayOrder;
1661 myDisplayOrder =
order;
1667 { myDisplayDisabledBySubnetNeedsUpdate = 1; }
1669 void addTransformParmInterests(
OP_Node *interested );
1674 if (evalParameterOrProperty(name, 0, now, val))
1681 if (evalParameterOrProperty(name, 0, now, val))
1688 if (!evalParameterOrProperty(name, 0, now, result))
1695 if (!evalParameterOrPropertyRaw(name, 0, now, result))
1700 int64 getMemoryUsage(
bool inclusive)
const override;
1702 OP_Node *getEvaluatedConstraints();
1710 use_color = USE_DCOLOR();
1713 myWireColor.setType(
UT_RGB);
1715 char *
p = (
char*)(
void*)&myWireColor;
1719 evalFloats(
"dcolor", &getIndirect()[
I_DCOLOR], c, t);
1725 void onCreated()
override;
1728 void checkTimeDependencies(
int do_parms=1,
1730 int do_extras=1)
override;
1732 friend class OBJ_UndoPreTransform;
1735 void checkKeepPosWhenParenting(
OBJ_Node *parent_obj );
1737 const PRM_Parm * findTransformProperty(
1742 template <
typename OBJ_NODE,
typename VISITOR>
1743 static void visitTransformParms(
1746 bool exclude_uniform_scale,
1749 bool hasTransformParmChannels(
1751 bool exclude_uniform_scale)
const;
1753 int evalToggleInt(
char *togglename,
int toggleindirect,
1754 char *parm,
int parmindirect,
1756 fpreal evalToggleFloat(
char *togglename,
int toggleindirect,
1757 char *parm,
int parmindirect,
1759 int evalToggleParm(
const char *togglename,
1760 const char *token,
fpreal now,
1762 fpreal evalToggleParm(
const char *togglename,
1763 const char *token,
fpreal now,
1766 void computeSubnetParentTransform(
1771 void addTransformDependencies(
OBJ_Node *subnet );
1773 void propagateKeepPosWhenMoving();
1775 void dirtyPreTransform();
1776 void updatePreTransformParms(
bool from,
bool undo=
true);
1777 void updatePreTransformParms(
bool from,
bool undo,
fpreal now,
int thread);
1780 void applyBackwardsRiTransmitCompatibility(
1783 const char *inputLabel(
unsigned)
const override;
1786 template<
int OFFSET>
1789 void onChangeSpareParms();
1800 bool isSelectionOwnerType()
const override final
1803 template<
int HAS_DEP>
1820 OP_Node *myEvaluatedConstraints;
1826 obj_XformMicroNode(
OP_Node &node)
1830 const char *className()
const override
1832 return "obj_XformMicroNode";
1835 obj_XformMicroNode myXformMicroNode;
1836 int myXformCookLevel;
1840 int myShopMaterialIndex;
1841 uint myShopMaterialIndexLastCheck;
1843 unsigned myPreTransformIsIdentity:1,
1844 myTraversingForBlur:1,
1845 mySubnetParentTimeDep:1,
1846 myShowingPreTransform:1,
1847 myUpdatingPreTransform:1,
1849 myUseFullTransformModel:1,
1855 myGotConstraintsByFlag:1;
1857 mutable unsigned myDisplayDisabledBySubnetNeedsUpdate:1,
1858 myDisplayDisabledBySubnet:1,
1859 myInstanceRecursion:1;
1894 struct objSpareParam
1910 struct objSpareProperties
1915 bool isEmpty()
const;
1919 objSpareParam myPreXOrd;
1920 objSpareParam myPreROrd;
1921 objSpareParam myPreTranslate;
1922 objSpareParam myPreRotate;
1923 objSpareParam myPreScale;
1926 objSpareParam myLimitsOn[18];
1927 objSpareParam myLimits[18];
1929 objSpareParam myParentToBoneTip;
1931 objSpareProperties *myProperties;
1935 int myConstraintsChannelIndex;
1940 mutable int myCachedDisplay;
1942 mutable int myCachedTDisplay;
1948 static bool ourAllowKeepPos;
1949 static bool ourIgnorePretransformValue;
1950 static bool ourAllowIgnorePretransform;
1975 #undef FLOAT_OBJ_PARM
1976 #undef FLOAT_OBJ_PARMS
1993 , myAddTimeDep(true)
1995 , myCallerUserData(nullptr)
1996 , myCallerTransformUserData(nullptr)
2002 if( tud !=
nullptr )
2004 myCallerUserData = ctx_data;
2005 myCallerTransformUserData = tud;
2008 myContext.setData(
nullptr);
2026 if( myCallerUserData )
2028 if( myExtraInputs.size() )
2029 myCaller->addExtraInputs( myExtraInputs );
2031 if( myExtraMicroNodes.size() )
2032 myCaller->addExtraInputs( myExtraMicroNodes );
2035 myContext.setData(myCallerUserData);
2038 myCallerUserData =
nullptr;
2039 myCallerTransformUserData =
nullptr;
2045 if( !myCaller || !dep )
2048 myExtraMicroNodes.append( dep );
2055 myCaller->flags().setTimeDep(
true);
2062 if( !myCaller || !src )
2073 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2082 addExtraInput( src, pi, vi, vi);
2087 if( !myCaller || !src )
2098 UT_ASSERT(!
"Adding an extra input onto a deleted node");
2102 for(
int vi=vi_start; vi<=vi_end; ++vi )
2115 for(
int vi=vi_start; vi<=vi_end; ++vi )
2119 myCaller->flags().setTimeDep(
true);
2131 if( myCallerTransformUserData )
2132 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()
vint4 max(const vint4 &a, const vint4 &b)
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 bool updateParmsFlags()
GLenum GLenum GLenum input
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.
void T(fpreal *v, fpreal t)
#define SYS_DEPRECATED(__V__)
GLuint const GLchar * name
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)
GLuint const GLfloat * val
static const char * input2ObjectToken
void P(fpreal *v, fpreal t)
virtual OP_OpTypeId getOpTypeID() const =0
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__)
virtual int doDrawLit() const
bool isCachingTransforms(int thread) const
GLenum GLsizei GLenum GLenum const void * table
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
GA_API const UT_StringHolder rot
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)
int PATHSOP(UT_String &str, fpreal t) const
static const char * input3ObjectToken
int LOOKUPOBJ(UT_String &str, fpreal t) const
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)
CHOP_Node * castToCHOPNode() const
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
GLuint GLdouble GLdouble GLint GLint order
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)
virtual const char * getOpType() const =0
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)
GLint GLenum GLsizei GLint GLsizei const void * data
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
const GLuint GLenum const void * binary
#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 const GLuint * names
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)
GLsizei const GLchar *const * strings
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()
*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
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)
static bool getIgnorePretransform()
GLuint GLuint GLsizei GLenum type
virtual const OP_DataMicroNode & dataMicroNodeConst() const
virtual bool getBoundingBox(UT_BoundingBox &box, OP_Context &)
int CHILDCOMP(fpreal t) const
static const char * input4ObjectToken
const UT_Matrix4D & getWorldXform() const
GLuint GLsizei GLsizei GLchar * label
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)
GLsizei const GLchar *const * path
virtual OBJ_Light * castToOBJLight()
virtual OP_ERROR setNamedInputReference(const OP_ConnectorId &input_name, const char *label, int, const OP_ConnectorId *output_name=nullptr)
GLdouble GLdouble GLdouble b
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)
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()
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
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
virtual void referencedParmChanged(int pi)
virtual bool setDisplayOrigin(bool on_off_unchanged)
GLdouble GLdouble GLdouble r
UT_API UT_ErrorSeverity UTaddWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
int parmIndexCONSTRAINTSON() const
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()
GLsizei const GLfloat * value
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)
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.