Public Types | Public Member Functions | Static Public Attributes

INode Class Reference

This reference page is linked to from the following overview topics: Lesson 2: The Scene Graph and Nodes, Lesson 3: the reference system, Overview: Scene Graph and Nodes, General Best Practices, Parameter Types, Parameter UI Control Types, Scene Objects, Scene Graph, Nodes, Nodes and References, Node Parent / Child Relationships, Responding to Node Deletion, Getting the Nodes that Reference an Object, Node Grouping, XRef Scenes and Objects, Named Selection Sets, Recovering an ILayer or ILayerProperties from an INode, Containers, Container Manager and Container Objects, Custom User Properties, Node Monitors, Reference Object Lifetime Management, How Objects are Drawn in the Viewport, Geometry Pipeline System, Pipeline Overview, Viewport Rendering and the Pipeline, Object Space and World Space, Cache System, World Space Modifiers and Object Transformations, Extracting the Mesh from a Node, Matrix Fundamentals, A Matrix3 as an Axis System, Node Transformations, Node Transformation Matrix, Object Transformation Matrix, Local Transformation Matrix, Object Offset Transformation, Transforming Linked Nodes, Retrieving the Material from a Node, Transform Controllers and Nodes, Keyframe Data Access Classes and Methods, Hit Lists, Node Level Hit Testing, Foreground / Background Planes, Supported Types, Extracting Wrapped Objects, Biped Hierarchy, Main Physique Export API Elements, Finding a Physique Modifier, 3DXI Initialization, 3DXI Node, IK Concepts, IIKChainControl, Writing Exporter Plug-ins.


Search for all occurrences

Detailed Description

See also:
Class ReferenceTarget, Class FPMixinInterface, Class Interface, Class INodeTransformed, Class Material, Class Matrix3, Class Quat, Class AngAxis, Class Control, Class Object, Class INodeTab.

Description:
The INode class is the interface to nodes in the scene. It provides methods to access various parts of a node such as its name, transformation matrices, parents and children, display status, etc. All methods of this class are implemented by the system.
Method Groups:
See Method Groups for Class INode.

#include <inode.h>

Inheritance diagram for INode:
Inheritance graph
[legend]

List of all members.

Public Types

enum   {
  getPosTaskWeight, getRotTaskWeight, setPosTaskWeight, setRotTaskWeight,
  setBoneNodeOnOff, setBoneNodeOnOffM, setBoneAutoAlign, setBoneFreezeLen,
  setBoneScaleType, getBoneNodeOnOff, getBoneAutoAlign, getBoneFreezeLen,
  getBoneScaleType, realignBoneToChild, resetBoneStretch, getStretchTM,
  getBoneAxis, getBoneAxisFlip, setBoneAxis, setBoneAxisFlip,
  setPrimaryVisibility, getPrimaryVisibility, setSecondaryVisibility, getSecondaryVisibility,
  setApplyAtmospherics, getApplyAtmospherics, getVertexColorType, setVertexColorType,
  getCVertMode, setCVertMode, getShadeCVerts, setShadeCVerts,
  getNodeHandle, getVertexColorMapChannel, setVertexColorMapChannel, kLastFPFuncID
}
enum   { boneScaleTypeEnum, boneAxisEnum, vertexColorTypeEnum }

Public Member Functions

virtual void  DisposeTemporary ()
virtual INode GetActualINode ()
virtual MCHAR *  GetName ()=0
virtual void  SetName (MCHAR *s)=0
virtual Matrix3  GetNodeTM (TimeValue t, Interval *valid=NULL)=0
virtual void  SetNodeTM (TimeValue t, Matrix3 &tm)=0
virtual void  InvalidateTreeTM ()=0
virtual void  InvalidateTM ()=0
virtual void  InvalidateWS ()=0
virtual void  InvalidateRect (TimeValue t, bool oldRect=false)=0
virtual Matrix3  GetObjectTM (TimeValue time, Interval *valid=NULL)=0
virtual Matrix3  GetObjTMBeforeWSM (TimeValue time, Interval *valid=NULL)=0
virtual Matrix3  GetObjTMAfterWSM (TimeValue time, Interval *valid=NULL)=0
virtual const ObjectState EvalWorldState (TimeValue time, BOOL evalHidden=TRUE)=0
virtual INode GetParentNode ()=0
virtual void  AttachChild (INode *node, int keepTM=1)=0
virtual void  Detach (TimeValue t, int keepTM=1)=0
virtual int  NumberOfChildren ()=0
virtual INode GetChildNode (int i)=0
virtual void  Delete (TimeValue t, int keepChildPosition)
virtual void  Hide (BOOL onOff)=0
  Controls the hidden state of the node in the scene.
virtual void  UnhideObjectAndLayer (bool dolayer=true)
  Makes the node, and optionally the layer, visible in the scene.
virtual int  IsObjectHidden ()
  Returns the hidden state of this node in the scene.
virtual int  IsHidden (DWORD hflags=0, BOOL forRenderer=FALSE)
  Determines if the node is hidden in the scene.
virtual int  IsNodeHidden (BOOL forRenderer=FALSE)
  Returns nonzero if the node is hidden in any way.
virtual void  Freeze (BOOL onOff)=0
  Controls the frozen state of the node in the scene.
virtual void  UnfreezeObjectAndLayer (bool dolayer=true)
  Unfreeze the node, and optionally its layer.
virtual int  IsObjectFrozen ()
  Test the frozen property of this node.
virtual int  IsFrozen ()=0
  Determines if the node is frozen in any way in the scene.
virtual void  SetShowFrozenWithMtl (BOOL onOff)=0
virtual int  ShowFrozenWithMtl ()=0
virtual void  XRayMtl (BOOL onOff)=0
  Set the X-Ray node property
virtual int  HasObjectXRayMtl ()
  Get the X-Ray node property.
virtual int  HasXRayMtl ()=0
  Returns nonzero if the X-Ray Material display property is on for the node; otherwise zero.
virtual void  IgnoreExtents (BOOL onOff)=0
  Ignore this node during zoom extents.
virtual int  GetIgnoreExtents ()=0
  Is this node ignored during zoom extents.
virtual void  BoxMode (BOOL onOff)=0
virtual int  GetBoxMode ()=0
virtual void  AllEdges (BOOL onOff)=0
virtual int  GetAllEdges ()=0
virtual void  VertTicks (int onOff)=0
virtual int  GetVertTicks ()=0
virtual void  BackCull (BOOL onOff)=0
virtual int  GetBackCull ()=0
virtual void  SetCastShadows (BOOL onOff)=0
virtual int  CastShadows ()=0
virtual void  SetRcvShadows (BOOL onOff)=0
virtual int  RcvShadows ()=0
virtual void  SetGenerateCaustics (BOOL onOff)
virtual int  GenerateCaustics ()
virtual void  SetRcvCaustics (BOOL onOff)
virtual int  RcvCaustics ()
virtual void  SetApplyAtmospherics (BOOL onOff)=0
virtual int  ApplyAtmospherics ()=0
virtual void  SetGenerateGlobalIllum (BOOL onOff)
virtual int  GenerateGlobalIllum ()
virtual void  SetRcvGlobalIllum (BOOL onOff)
virtual int  RcvGlobalIllum ()
virtual void  SetMotBlur (int kind)=0
virtual int  MotBlur ()=0
virtual float  GetImageBlurMultiplier (TimeValue t)
virtual void  SetImageBlurMultiplier (TimeValue t, float m)
virtual void  SetImageBlurMultController (Control *cont)
virtual Control GetImageBlurMultController ()
virtual BOOL  GetMotBlurOnOff (TimeValue t)
virtual void  SetMotBlurOnOff (TimeValue t, BOOL m)
virtual Control GetMotBlurOnOffController ()
virtual void  SetMotBlurOnOffController (Control *cont)
virtual void  SetRenderable (BOOL onOff)=0
virtual int  Renderable ()=0
virtual void  SetPrimaryVisibility (BOOL onOff)=0
virtual int  GetPrimaryVisibility ()=0
virtual void  SetSecondaryVisibility (BOOL onOff)=0
virtual int  GetSecondaryVisibility ()=0
virtual void  SetCVertMode (int onOff)
virtual int  GetCVertMode ()
virtual void  SetShadeCVerts (int onOff)
virtual int  GetShadeCVerts ()
virtual int  GetVertexColorType ()
virtual void  SetVertexColorType (int nvct)
virtual int  GetVertexColorMapChannel ()
  get the map channel to be displayed as vertex color.
virtual void  SetVertexColorMapChannel (int vcmc)
  set the map channel to be displayed as vertex color.
virtual int  GetTrajectoryON ()
virtual void  SetTrajectoryON (BOOL onOff)
virtual void  ShowBone (int boneVis)=0
virtual void  BoneAsLine (int onOff)=0
virtual BOOL  IsBoneShowing ()=0
virtual BOOL  IsBoneOnly ()
virtual void  SetTargetNodePair (int onOff)
virtual int  GetTargetNodePair ()
virtual DWORD  GetWireColor ()=0
virtual void  SetWireColor (DWORD newcol)=0
virtual int  IsRootNode ()=0
virtual int  Selected ()=0
virtual int  Dependent ()=0
virtual int  IsTarget ()=0
virtual void  SetIsTarget (BOOL b)=0
virtual BOOL  GetTransformLock (int type, int axis)=0
virtual void  SetTransformLock (int type, int axis, BOOL onOff)=0
virtual INode GetTarget ()=0
virtual INode GetLookatNode ()=0
virtual Matrix3  GetParentTM (TimeValue t)=0
virtual int  GetTargetTM (TimeValue t, Matrix3 &m)=0
virtual Object GetObjectRef ()=0
virtual void  SetObjectRef (Object *o)=0
virtual Object GetObjOrWSMRef ()=0
virtual Control GetTMController ()=0
virtual BOOL  SetTMController (Control *m3cont)=0
virtual Control GetVisController ()=0
virtual void  SetVisController (Control *cont)=0
virtual float  GetVisibility (TimeValue t, Interval *valid=NULL)=0
virtual float  GetVisibility (TimeValue t, View &view, Interval *valid=NULL)
virtual void  SetVisibility (TimeValue t, float vis)=0
virtual float  GetLocalVisibility (TimeValue t, Interval *valid=NULL)=0
virtual BOOL  GetInheritVisibility ()=0
virtual void  SetInheritVisibility (BOOL onOff)=0
virtual void  SetRenderOccluded (BOOL onOff)=0
virtual BOOL  GetRenderOccluded ()=0
virtual Mtl GetMtl ()=0
virtual void  SetMtl (Mtl *matl)=0
virtual Material Mtls ()=0
virtual int  NumMtls ()=0
virtual void  SetObjOffsetPos (Point3 p)=0
virtual Point3  GetObjOffsetPos ()=0
virtual void  SetObjOffsetRot (Quat q)=0
virtual Quat  GetObjOffsetRot ()=0
virtual void  SetObjOffsetScale (ScaleValue sv)=0
virtual ScaleValue  GetObjOffsetScale ()=0
virtual void  CenterPivot (TimeValue t, BOOL moveObject)=0
virtual void  AlignPivot (TimeValue t, BOOL moveObject)=0
virtual void  WorldAlignPivot (TimeValue t, BOOL moveObject)=0
virtual void  AlignToParent (TimeValue t)=0
virtual void  AlignToWorld (TimeValue t)=0
virtual void  ResetTransform (TimeValue t, BOOL scaleOnly)=0
virtual void  ResetPivot (TimeValue t)=0
virtual bool  MayResetTransform ()=0
virtual void  FlagForeground (TimeValue t, BOOL notify=TRUE)=0
virtual int  IsActiveGrid ()=0
virtual void  SetNodeLong (LONG_PTR l)=0
virtual LONG_PTR  GetNodeLong ()=0
virtual RenderData GetRenderData ()=0
virtual void  SetRenderData (RenderData *rd)=0
virtual void  GetUserPropBuffer (MSTR &buf)=0
virtual void  SetUserPropBuffer (const MSTR &buf)=0
virtual BOOL  GetUserPropString (const MSTR &key, MSTR &string)=0
virtual BOOL  GetUserPropInt (const MSTR &key, int &val)=0
virtual BOOL  GetUserPropFloat (const MSTR &key, float &val)=0
virtual BOOL  GetUserPropBool (const MSTR &key, BOOL &b)=0
virtual void  SetUserPropString (const MSTR &key, const MSTR &string)=0
virtual void  SetUserPropInt (const MSTR &key, int val)=0
virtual void  SetUserPropFloat (const MSTR &key, float val)=0
virtual void  SetUserPropBool (const MSTR &key, BOOL b)=0
virtual BOOL  UserPropExists (const MSTR &key)=0
virtual ULONG  GetGBufID ()=0
virtual void  SetGBufID (ULONG id)=0
virtual UWORD  GetRenderID ()
virtual void  SetRenderID (UWORD id)
virtual ULONG  GetHandle ()
virtual void  Move (TimeValue t, const Matrix3 &tmAxis, const Point3 &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0
virtual void  Rotate (TimeValue t, const Matrix3 &tmAxis, const AngAxis &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0
virtual void  Rotate (TimeValue t, const Matrix3 &tmAxis, const Quat &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0
virtual void  Scale (TimeValue t, const Matrix3 &tmAxis, const Point3 &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0
virtual BOOL  IsGroupMember ()=0
virtual BOOL  IsGroupHead ()=0
virtual BOOL  IsOpenGroupMember ()
virtual BOOL  IsOpenGroupHead ()
virtual void  SetGroupMember (BOOL b)
virtual void  SetGroupHead (BOOL b)
virtual void  SetGroupMemberOpen (BOOL b)
virtual void  SetGroupHeadOpen (BOOL b)
virtual float  GetPosTaskWeight ()
virtual float  GetRotTaskWeight ()
virtual void  SetPosTaskWeight (float w)
virtual void  SetRotTaskWeight (float w)
virtual BOOL  GetTaskAxisState (int which, int axis)
virtual void  SetTaskAxisState (int which, int axis, BOOL onOff)
virtual DWORD  GetTaskAxisStateBits ()
virtual void  CreateWSMDerivedObject ()
virtual IDerivedObject GetWSMDerivedObject ()
virtual CoreExport
MaxSDK::AssetManagement::AssetUser 
GetXRefFile (int i)
virtual void  SetXRefFile (int i, const MaxSDK::AssetManagement::AssetUser &file, BOOL reload)
virtual int  GetXRefFileCount ()
virtual BOOL  AddNewXRefFile (const MaxSDK::AssetManagement::AssetUser &file, BOOL loadNow=TRUE, BOOL hideInManagerUI=FALSE)
virtual BOOL  DeleteXRefFile (int i)
virtual BOOL  BindXRefFile (int i)
virtual void  DeleteAllXRefs ()
virtual BOOL  ReloadXRef (int i)
virtual void  FlagXrefChanged (int i)
virtual BOOL  UpdateChangedXRefs (BOOL redraw=TRUE)
virtual INode GetXRefTree (int i)
virtual INode GetXRefParent (int i)
virtual void  SetXRefParent (int i, INode *par, BOOL autoOffset=TRUE)
virtual BOOL  FindUnresolvedXRefs (Tab< MSTR * > &fnames)
virtual void  AttemptToResolveUnresolvedXRefs ()
virtual DWORD  GetXRefFlags (int i)
virtual void  SetXRefFlags (int i, DWORD flag, BOOL onOff)
virtual void  SetBoneNodeOnOff (BOOL onOff, TimeValue t)
virtual void  SetBoneAutoAlign (BOOL onOff)
virtual void  SetBoneFreezeLen (BOOL onOff)
virtual void  SetBoneScaleType (int which)
virtual void  SetBoneAxis (int which)
virtual void  SetBoneAxisFlip (BOOL onOff)
virtual BOOL  GetBoneNodeOnOff ()
virtual BOOL  GetBoneNodeOnOff_T (TimeValue t)
virtual BOOL  GetBoneAutoAlign ()
virtual BOOL  GetBoneFreezeLen ()
virtual int  GetBoneScaleType ()
virtual int  GetBoneAxis ()
virtual BOOL  GetBoneAxisFlip ()
virtual void  RealignBoneToChild (TimeValue t)
virtual void  ResetBoneStretch (TimeValue t)
virtual Matrix3  GetStretchTM (TimeValue t, Interval *valid=NULL)
BaseInterface GetInterface (Interface_ID id)
FPInterfaceDesc GetDesc ()
BEGIN_FUNCTION_MAP  PROP_FNS (getPosTaskWeight, GetPosTaskWeight, setPosTaskWeight, SetPosTaskWeight, TYPE_FLOAT)
  PROP_FNS (getRotTaskWeight, GetRotTaskWeight, setRotTaskWeight, SetRotTaskWeight, TYPE_FLOAT)
  PROP_FNS (getBoneAutoAlign, GetBoneAutoAlign, setBoneAutoAlign, SetBoneAutoAlign, TYPE_BOOL)
  PROP_FNS (getBoneFreezeLen, GetBoneFreezeLen, setBoneFreezeLen, SetBoneFreezeLen, TYPE_BOOL)
  PROP_FNS (getBoneScaleType, GetBoneScaleType, setBoneScaleType, SetBoneScaleType, TYPE_ENUM)
  PROP_FNS (getBoneAxis, GetBoneAxis, setBoneAxis, SetBoneAxis, TYPE_ENUM)
  PROP_FNS (getBoneAxisFlip, GetBoneAxisFlip, setBoneAxisFlip, SetBoneAxisFlip, TYPE_BOOL)
  RO_PROP_TFN (getStretchTM, GetStretchTM, TYPE_MATRIX3_BV)
  PROP_TFNS (getBoneNodeOnOff, GetBoneNodeOnOff_T, setBoneNodeOnOff, SetBoneNodeOnOff, TYPE_BOOL)
  VFNT_1 (setBoneNodeOnOffM, SetBoneNodeOnOff, TYPE_BOOL)
  VFNT_0 (realignBoneToChild, RealignBoneToChild)
  VFNT_0 (resetBoneStretch, ResetBoneStretch)
  PROP_FNS (getPrimaryVisibility, GetPrimaryVisibility, setPrimaryVisibility, SetPrimaryVisibility, TYPE_BOOL)
  PROP_FNS (getSecondaryVisibility, GetSecondaryVisibility, setSecondaryVisibility, SetSecondaryVisibility, TYPE_BOOL)
  PROP_FNS (getApplyAtmospherics, ApplyAtmospherics, setApplyAtmospherics, SetApplyAtmospherics, TYPE_BOOL)
  PROP_FNS (getCVertMode, GetCVertMode, setCVertMode, SetCVertMode, TYPE_INT)
  PROP_FNS (getShadeCVerts, GetShadeCVerts, setShadeCVerts, SetShadeCVerts, TYPE_INT)
  PROP_FNS (getVertexColorType, GetVertexColorType, setVertexColorType, SetVertexColorType, TYPE_ENUM)
  PROP_FNS (getVertexColorMapChannel, GetVertexColorMapChannel, setVertexColorMapChannel, SetVertexColorMapChannel, TYPE_INT)
  RO_PROP_FN (getNodeHandle, GetHandle, TYPE_DWORD)
END_FUNCTION_MAP CoreExport void  CopyProperties (INode *from)

Static Public Attributes

static const ULONG  kNullHandle = 0
  This represents the value of an invalid node handle.

Member Enumeration Documentation

anonymous enum
Enumerator:
getPosTaskWeight 
getRotTaskWeight 
setPosTaskWeight 
setRotTaskWeight 
setBoneNodeOnOff 
setBoneNodeOnOffM 
setBoneAutoAlign 
setBoneFreezeLen 
setBoneScaleType 
getBoneNodeOnOff 
getBoneAutoAlign 
getBoneFreezeLen 
getBoneScaleType 
realignBoneToChild 
resetBoneStretch 
getStretchTM 
getBoneAxis 
getBoneAxisFlip 
setBoneAxis 
setBoneAxisFlip 
setPrimaryVisibility 
getPrimaryVisibility 
setSecondaryVisibility 
getSecondaryVisibility 
setApplyAtmospherics 
getApplyAtmospherics 
getVertexColorType 
setVertexColorType 
getCVertMode 
setCVertMode 
getShadeCVerts 
setShadeCVerts 
getNodeHandle 
getVertexColorMapChannel 
setVertexColorMapChannel 
kLastFPFuncID 
anonymous enum

Member Function Documentation

virtual void DisposeTemporary ( ) [inline, virtual]
Remarks:
If this was a temporary INode (like an INodeTransformed) then this method will delete it. Also see the method Interface::GetModContexts().

Reimplemented in INodeTransformed.

{}
virtual INode* GetActualINode ( ) [inline, virtual]
Remarks:
In the case of INodeTransformed, this method retrieves a pointer to the real node.
Returns:
A pointer to the node.

Reimplemented in INodeTransformed.

{return this;}
virtual MCHAR* GetName ( ) [pure virtual]
Remarks:
Returns the name of the node.

Implemented in INodeTransformed.

virtual void SetName ( MCHAR *  s ) [pure virtual]
Remarks:
Sets the name of the node.
Parameters:
s The name of the node.

Implemented in INodeTransformed.

virtual Matrix3 GetNodeTM ( TimeValue  t,
Interval valid = NULL 
) [pure virtual]
Remarks:
This method returns the world space transformation matrix of the node at the specified time. This matrix contains its parents transformation. This matrix does not include the object-offset transformation, or any world space modifier (Space Warp) affects. If you select a single node and change the reference coordinate system to 'Local', you'll see the node's axes tripod displayed. This tripod graphically depicts the nodes transformation matrix. The Node TM may be considered the world space transformation as far as kinematics is concerned. This is almost the complete world space transformation as far as the geometry of the object is concerned, except it does not include the object-offset transformation. See the method INode::GetObjectTM() for the complete world space transformation of the geometry of the object. The Node TM is inherited. When a node asks to retrieve its parents TM, it gets its parents Node TM. It does not get its parents Object TM. The object-offset transformation is not inherited.
Parameters:
t Specifies the time to retrieve the TM.
valid Points to storage for the validity interval of the transformation matrix. The interval, if passed, is intersected with the validity interval of the NodeTM.
Returns:
The node's world space transform matrix.

Implemented in INodeTransformed.

virtual void SetNodeTM ( TimeValue  t,
Matrix3 tm 
) [pure virtual]
Remarks:
This methods sets the node's world space transformation matrix (without the object-offset transformation or world space modifier affect). This method will perform the appropriate operation to the node's transform controller. For example, if the node has a parent, this method will take the parent's transformation into consideration when it calls SetValue() on the controller. This method can be used to set the world space position of the node.
Parameters:
t Specifies the time to set the transformation matrix.
tm The node's world space transformation matrix.

Implemented in INodeTransformed.

virtual void InvalidateTreeTM ( ) [pure virtual]
Remarks:
This method will notify the node's subtree that the transformation matrix has changed. NotifyDependents() is called with the message REFMSG_CHANGE.

Implemented in INodeTransformed.

virtual void InvalidateTM ( ) [pure virtual]
Remarks:
This method will invalidate the node's transformation matrix cache.

Implemented in INodeTransformed.

virtual void InvalidateWS ( ) [pure virtual]
Remarks:
This method will invalidate the node's world space cache.

Implemented in INodeTransformed.

virtual void InvalidateRect ( TimeValue  t,
bool  oldRect = false 
) [pure virtual]
Remarks:
This method invalidates the rectangle in the viewports that the node occupies. Rectangles flagged as invalid will be updated on the next screen redraw. Each node caches the rectangle in the viewports that the node occupies. These caches are updated when the node is drawn in the viewports.
Parameters:
t - The time to invalidate the node's rectangle
oldRect - If true, the cached viewport rectangles of the node are invalidated. This would be the case when a node property that doesn't affect the size or position of the node's viewport rectangles, such as wireframe color, is changed. Otherwise, the node's current rectangle in each viewport is invalidated. If the node's world space cache is not valid, the node's world state at time t will be evaluated, from which its current viewport rectangles are calculated.

Implemented in INodeTransformed.

virtual Matrix3 GetObjectTM ( TimeValue  time,
Interval valid = NULL 
) [pure virtual]
Remarks:
This method returns the transformation matrix the object needs to be multiplied by to transform it into world space. At times, this matrix may be the identity. For example, a deformable object that has a Space Warp applied to it would already have been translated into world space by the space warp. Since the object is already in world space the matrix needed to get it there is the identity. This matrix would not be the identity for a deformable object with only object space modifiers applied. This object would indeed need to be transformed. In this case the TM returned would include the NodeTM plus the object-offset transformation. So, GetObjectTM() is dependent on the context when it is called -- it will either be equal to GetObjectTMAfterWSM() or GetObjectTMBeforeWSM(). Developers should use GetObjectTMBeforeWSM() if what is wanted is the object TM and not the identity matrix. For non-deformable objects this matrix may include the NodeTM, the object-offset transformation and the world space modifier affect. This matrix could be used, for example, if you have a TriObject and wanted to get the world space coordinate of one of its vertices. You could do this by taking the vertex coordinate in object space and multiplying it by the matrix returned from this method. This matrix is also often used inside an object's Display() and HitTest() methods. When an object goes to draw itself (in its BaseObject::Display() method) it is given a node pointer. What the object normally does is use the node pointer and calls GetObjectTM(). It then takes the matrix returned and sets it into the graphics window (using GraphicsWindow::setTransform()). In this way, when the object starts drawing points in object space, they will be transformed with this matrix. This will transform the points into world space when they are drawn. The Object TM is not inherited.
Parameters:
time Specifies the time to retrieve the object's transform matrix.
valid Points to storage for the validity interval of the transformation matrix.
Returns:
The object's transformation matrix.

Implemented in INodeTransformed.

virtual Matrix3 GetObjTMBeforeWSM ( TimeValue  time,
Interval valid = NULL 
) [pure virtual]
Remarks:
This method explicitly retrieves the pipeline ObjectState TM before any world space modifiers have been applied. This includes the node's TM and the object-offset transformation (but not any world space modifier affect). See the section on the Geometry Pipeline for additional details on this method.
Parameters:
time Specifies the time to retrieve the transform matrix.
valid Points to storage for the validity interval of the transformation matrix.

Implemented in INodeTransformed.

virtual Matrix3 GetObjTMAfterWSM ( TimeValue  time,
Interval valid = NULL 
) [pure virtual]
Remarks:
This method explicitly retrieves the pipeline ObjectState TM after any world space modifiers have been applied. This includes the Node TM, the object-offset transformation, and any world space modifier affects. In some cases a world space modifier can actually deform the TM itself if it cannot deform the object. Examples of this are cameras and lights. These objects do not have any 'object' to deform, so the space warp deforms the TM instead. See the section on the Geometry Pipeline for additional details on this method. Note: Beware of calling this method from inside a function that performs a mesh traversal as doing so can invalidate the mesh.
Parameters:
time Specifies the time to retrieve the object's transform matrix.
valid Points to storage for the validity interval of the transformation matrix.

Implemented in INodeTransformed.

virtual const ObjectState& EvalWorldState ( TimeValue  time,
BOOL  evalHidden = TRUE 
) [pure virtual]
Remarks:
This method should be called when a developer needs to work with an object that is the result of the node's pipeline. This is the object that the appears in the scene.

This may not be an object that anyone has a reference to - it may just be an object that has flowed down the pipeline. For example, if there is a Sphere in the scene that has a Bend and Taper applied, EvalWorldState() would return an ObjectState containing a TriObject. This is the result of the sphere turning into a TriObject and being bent and tapered (just as it appeared in the scene).

If a developer needs to access the object that the node in the scene references, then the method INode::GetObjectRef() should be used instead.
Parameters:
time Specifies the time to retrieve the object state.
evalHidden If FALSE and the node is hidden, the pipeline will not actually be evaluated (however the TM will).
Returns:
The ObjectState that is the result of the pipeline. See Class ObjectState.
        // Get the object from the node
        ObjectState os = node->EvalWorldState(ip->GetTime());

        if (os.obj->SuperClassID()==GEOMOBJECT_CLASS_ID)
        {
           obj = (GeomObject*)os.obj;
           //...
        }
The following code shows how a TriObject can be retrieved from a node. Note on the code that if you call ConvertToType() on an object and it returns a pointer other than itself, you are responsible for deleting that object.
        // Retrieve the TriObject from the node
        int deleteIt;
        TriObject *triObject = GetTriObjectFromNode(ip->GetSelNode(0), deleteIt);

        // Use the TriObject if available
        if (!triObject) return;
        // ...
        // Delete it when done...
        if (deleteIt) triObject->DeleteMe();

        // Return a pointer to a TriObject given an INode or return NULL
        // if the node cannot be converted to a TriObject
        TriObject *Utility::GetTriObjectFromNode(INode *node, int &deleteIt)
        {
           deleteIt = FALSE;
           Object *obj = node->EvalWorldState(ip->GetTime()).obj;

           if (obj->CanConvertToType(Class_ID(TRIOBJ_CLASS_ID, 0)))
           {
             TriObject *tri = (TriObject *) obj->ConvertToType(ip->GetTime(),
             Class_ID(TRIOBJ_CLASS_ID, 0));
             // Note that the TriObject should only be deleted
             // if the pointer to it is not equal to the object
             // pointer that called ConvertToType()
             if (obj != tri) deleteIt = TRUE;
             return tri;
           }
           else
           {
             return NULL;
           }
        }

Implemented in INodeTransformed.

virtual INode* GetParentNode ( ) [pure virtual]
Remarks:
Retrieves the parent node of this node. If the node is not linked, its parent is the root node. This may be checked using INode::IsRootNode().

Implemented in INodeTransformed.

virtual void AttachChild ( INode node,
int  keepTM = 1 
) [pure virtual]
Remarks:
Makes the specified node a child of this node.
Parameters:
node Specifies the node to attach.
keepTM If nonzero, the world transform matrix of the specified (child) node is unchanged after the attach operation, i.e. INode::GetNodeTM returns the same matrix both before and after the attach operation. Otherwise, the world transform of the specified (child) node is affected by the parent node's transform.

Implemented in INodeTransformed.

virtual void Detach ( TimeValue  t,
int  keepTM = 1 
) [pure virtual]
Remarks:
Detaches this node from its parent.
Parameters:
t Specifies the time at which to detach the node.
keepTM If nonzero, the world transform matrix of the detached node is unchanged, i.e. INode::GetNodeTM returns the same matrix both before and after the detach operation. Otherwise, the world transform of the detached node may change as a result of the detach operation since the node stops inheriting its parent node's transform.
Note:
The node is detached from its current parent and attached to the scene's root node.

Implemented in INodeTransformed.

virtual int NumberOfChildren ( ) [pure virtual]
Remarks:
Returns the number of children of this node.

Implemented in INodeTransformed.

virtual INode* GetChildNode ( int  i ) [pure virtual]
Remarks:
Retrieves the 'i-th' child node of this node.
Parameters:
i Specifies the child node to retrieve.

Implemented in INodeTransformed.

virtual void Delete ( TimeValue  t,
int  keepChildPosition 
) [inline, virtual]
Remarks:
This method will delete the node, handle removing it from the hierarchy, and handle undo.
Parameters:
t The time for the deletion.
keepChildPosition If TRUE the position of any children of this node are kept the same; otherwise linked children may move due to the deletion.

Reimplemented in INodeTransformed.

{} 
virtual void Hide ( BOOL  onOff ) [pure virtual]

Controls the hidden state of the node in the scene.

Parameters:
onOff Pass TRUE to hide the node in the scene; pass FALSE to make the node visible.

Implemented in INodeTransformed.

virtual void UnhideObjectAndLayer ( bool  dolayer = true ) [inline, virtual]

Makes the node, and optionally the layer, visible in the scene.

Parameters:
doLayer Pass TRUE to unhide the node in the scene; pass FALSE to make the node visible.
{Hide(FALSE);}
virtual int IsObjectHidden ( ) [inline, virtual]

Returns the hidden state of this node in the scene.

Returns:
non-zero if this node is hidden, else false
{return 0;} 
virtual int IsHidden ( DWORD  hflags = 0,
BOOL  forRenderer = FALSE 
) [inline, virtual]

Determines if the node is hidden in the scene.

Parameters:
hflags If you pass 0, you will get the hidden state of the node. If you pass one or more of the flags shown below, the method checks the Class_ID of the node to see if it's hidden by the specified category. You may specify one or more of the following values:

HIDE_OBJECTS
HIDE_SHAPES
HIDE_LIGHTS
HIDE_CAMERAS
HIDE_HELPERS
HIDE_WSMS
HIDE_SYSTEMS
HIDE_PARTICLES
HIDE_ALL
HIDE_NONE

See the method Interface::GetHideByCategoryFlags() for how to retrieve the currently set values to use as the flags for this method.
forRenderer If true, test to see if the node is hidden for the render, else if it is hidden in the viewport
Returns:
Nonzero if the node is hidden; otherwise 0.

Reimplemented in INodeTransformed.

{return 0;}
virtual int IsNodeHidden ( BOOL  forRenderer = FALSE ) [inline, virtual]

Returns nonzero if the node is hidden in any way.

This method takes into account both the node hidden attribute and the 'Hide By Category' flags.

Parameters:
forRenderer If true, test to see if the node is hidden for the render, else if it is hidden in the viewport returns zero.

Reimplemented in INodeTransformed.

{return 0;}
virtual void Freeze ( BOOL  onOff ) [pure virtual]

Controls the frozen state of the node in the scene.

A frozen node is visible but cannot be picked.

Parameters:
onOff TRUE if the node should be frozen; FALSE if the node should not be frozen.

Implemented in INodeTransformed.

virtual void UnfreezeObjectAndLayer ( bool  dolayer = true ) [inline, virtual]

Unfreeze the node, and optionally its layer.

Parameters:
doLayer if true, unfreeze the layer
{Freeze(FALSE);}
virtual int IsObjectFrozen ( ) [inline, virtual]

Test the frozen property of this node.

Returns:
non-zero if this node is frozen, else zero
{return 0;};
virtual int IsFrozen ( ) [pure virtual]

Determines if the node is frozen in any way in the scene.

A node can have the frozen property set, or be frozen by 'ghosting'

Returns:
Nonzero if the node is frozen; otherwise 0.

Implemented in INodeTransformed.

virtual void SetShowFrozenWithMtl ( BOOL  onOff ) [pure virtual]
Remarks:
This method allows you to set the NODE_SHOW_FRZN_WITH_MTL flag in the node so that the node will be displayed in a frozen state with materials applied.
Parameters:
onOff TRUE to set the flag; FALSE to disable.

Implemented in INodeTransformed.

virtual int ShowFrozenWithMtl ( ) [pure virtual]
Remarks:
This method returns the state of the NODE_SHOW_FRZN_WITH_MTL flag in the node and whether it is enabled or disabled.

Implemented in INodeTransformed.

virtual void XRayMtl ( BOOL  onOff ) [pure virtual]

Set the X-Ray node property

The X-Ray Material display property allows you to quickly make objects transparent. This method toggles it on or off for this node.

Parameters:
onOff TRUE to use; FALSE to not use.

Implemented in INodeTransformed.

virtual int HasObjectXRayMtl ( ) [inline, virtual]

Get the X-Ray node property.

The X-Ray Material display property allows you to quickly make objects transparent.

Returns:
TRUE if X-Ray materials are enabled; else FALSE
{return 0;};
virtual int HasXRayMtl ( ) [pure virtual]

Returns nonzero if the X-Ray Material display property is on for the node; otherwise zero.

Implemented in INodeTransformed.

virtual void IgnoreExtents ( BOOL  onOff ) [pure virtual]

Ignore this node during zoom extents.

Parameters:
onOff If true, Set this node to be ignored during zoom extents.

Implemented in INodeTransformed.

virtual int GetIgnoreExtents ( ) [pure virtual]

Is this node ignored during zoom extents.

Returns:
true if this node is to be ignored during zoom extents.

Implemented in INodeTransformed.

virtual void BoxMode ( BOOL  onOff ) [pure virtual]
Remarks:
Controls if the node is displayed with a bounding box representation in the scene.
Parameters:
onOff TRUE to display the node as its bounding box; FALSE for normal display.

Implemented in INodeTransformed.

virtual int GetBoxMode ( ) [pure virtual]
Remarks:
Determines if the node is displayed in box mode in the scene.
Returns:
Nonzero if the node is displayed in box mode; otherwise 0.

Implemented in INodeTransformed.

virtual void AllEdges ( BOOL  onOff ) [pure virtual]
Remarks:
Controls the display of all the edges of the node (including "hidden" ones).
Parameters:
onOff TRUE to display all the node's edges; FALSE to not display "hidden" edges.

Implemented in INodeTransformed.

virtual int GetAllEdges ( ) [pure virtual]
Remarks:
Determines if all the edges of the node are displayed.
Returns:
Nonzero if all the edges (including "hidden" ones) are displayed; otherwise 0.

Implemented in INodeTransformed.

virtual void VertTicks ( int  onOff ) [pure virtual]
Remarks:
This method allows you to enable or disable the display of vertex ticks on the node.
Parameters:
onOff TRUE to enable; FALSE to disable.

Implemented in INodeTransformed.

virtual int GetVertTicks ( ) [pure virtual]
Remarks:
This method returns the state of the vertex ticks display. TRUE if enabled; FALSE if disabled.

Implemented in INodeTransformed.

virtual void BackCull ( BOOL  onOff ) [pure virtual]
Remarks:
Controls if the node is displayed using back-face culling (faces whose surface normals are pointing away from the observer are not drawn).
Parameters:
onOff TRUE if the node should be drawn using back-face culling; FALSE if all faces should be drawn.

Implemented in INodeTransformed.

virtual int GetBackCull ( ) [pure virtual]
Remarks:
Determines if back-face culling is being used to draw the node.
Returns:
Nonzero if back-face culling is used; otherwise 0.

Implemented in INodeTransformed.

virtual void SetCastShadows ( BOOL  onOff ) [pure virtual]
Remarks:
Sets the shadow casting attribute of the node to on or off.
Parameters:
onOff TRUE to turn shadow casting on; FALSE to turn it off.

Implemented in INodeTransformed.

virtual int CastShadows ( ) [pure virtual]
Remarks:
Retrieves the shadow casting attribute of the node.
Returns:
Nonzero indicates the node casts shadows; zero if the node does not cast shadows.

Implemented in INodeTransformed.

virtual void SetRcvShadows ( BOOL  onOff ) [pure virtual]
Remarks:
Sets the shadow receiving attribute of the node to on or off.
Parameters:
onOff TRUE to turn shadow receiving on; FALSE to turn it off.

Implemented in INodeTransformed.

virtual int RcvShadows ( ) [pure virtual]
Remarks:
Retrieves the shadow receiving attribute of the node.
Returns:
Nonzero indicates the node receives shadows; zero if the node does not receive shadows.

Implemented in INodeTransformed.

virtual void SetGenerateCaustics ( BOOL  onOff ) [inline, virtual]
virtual int GenerateCaustics ( ) [inline, virtual]

Reimplemented in INodeTransformed.

{return 0;}
virtual void SetRcvCaustics ( BOOL  onOff ) [inline, virtual]
virtual int RcvCaustics ( ) [inline, virtual]

Reimplemented in INodeTransformed.

{return 0;}
virtual void SetApplyAtmospherics ( BOOL  onOff ) [pure virtual]
Remarks:
This method allows you to set the "apply atmospherics" flag for the node.
Parameters:
onOff TRUE to enable the flag, FALSE to disable.

Implemented in INodeTransformed.

virtual int ApplyAtmospherics ( ) [pure virtual]
Remarks:
This method returns the on/off state of the "apply atmospherics" flag.

Implemented in INodeTransformed.

virtual void SetGenerateGlobalIllum ( BOOL  onOff ) [inline, virtual]
virtual int GenerateGlobalIllum ( ) [inline, virtual]

Reimplemented in INodeTransformed.

{return 0;}
virtual void SetRcvGlobalIllum ( BOOL  onOff ) [inline, virtual]
virtual int RcvGlobalIllum ( ) [inline, virtual]

Reimplemented in INodeTransformed.

{return 0;}
virtual void SetMotBlur ( int  kind ) [pure virtual]
Remarks:
Sets the type of motion blur used by the node.
Parameters:
kind The kind of motion blur. One of the following values:

0: None.
1: Object Motion Blur.
2: Image Motion Blur.
virtual int MotBlur ( ) [pure virtual]
Remarks:
Retrieves the type of motion blur used by the node.
Returns:
One of the following values:

0: None
1: Object Motion Blur.
2: Image Motion Blur.

Implemented in INodeTransformed.

virtual float GetImageBlurMultiplier ( TimeValue  t ) [inline, virtual]
Remarks:
Returns the image motion blur multiplier value at the specified time.
Parameters:
t The time to retrieve the value.

Reimplemented in INodeTransformed.

{ return 1.0f;}
virtual void SetImageBlurMultiplier ( TimeValue  t,
float  m 
) [inline, virtual]
Remarks:
Sets the image blur multiplier value for the node. This is used to increase or decrease the length of the blur 'streak'.
Parameters:
t The time to set the value.
m The value to set.

Reimplemented in INodeTransformed.

{};
virtual void SetImageBlurMultController ( Control cont ) [inline, virtual]
Remarks:
Sets the controller used for the image blur multiplier value.
Parameters:
cont Points for the controller to use.

Reimplemented in INodeTransformed.

{}
virtual Control* GetImageBlurMultController ( ) [inline, virtual]
Remarks:
Returns a pointer to the controller for the image blur multiplier value.

Reimplemented in INodeTransformed.

{return NULL; }
virtual BOOL GetMotBlurOnOff ( TimeValue  t ) [inline, virtual]
Remarks:
Returns TRUE if the object motion blur controller is 'on' at the specified time; otherwise FALSE.
Parameters:
t The time to check.
Default Implementation:
{ return 1; }

Reimplemented in INodeTransformed.

{ return 1;  }
virtual void SetMotBlurOnOff ( TimeValue  t,
BOOL  m 
) [inline, virtual]
Remarks:
Sets the state of the object motion blur controller to on or off at the specified time.
Parameters:
t The time to set the value.
m TRUE for on; FALSE for off.
Default Implementation:
{}

Reimplemented in INodeTransformed.

{ }
virtual Control* GetMotBlurOnOffController ( ) [inline, virtual]
Remarks:
Returns a pointer to the controller handling the object motion blur on / off setting.
Default Implementation:
{ return NULL;}

Reimplemented in INodeTransformed.

{ return NULL;}
virtual void SetMotBlurOnOffController ( Control cont ) [inline, virtual]
Remarks:
Sets the controller used for handling the object motion blur on / off setting.
Parameters:
cont Points to the controller to set.
Default Implementation:
{}

Reimplemented in INodeTransformed.

{ }
virtual void SetRenderable ( BOOL  onOff ) [pure virtual]
Remarks:
Sets the state of the node's renderable flag. If this flag is on the node will appear in rendered images; if off it won't.
Parameters:
onOff TRUE for on; FALSE for off.

Implemented in INodeTransformed.

virtual int Renderable ( ) [pure virtual]
Remarks:
Returns nonzero if the renderable flag is on; zero if off.

Implemented in INodeTransformed.

virtual void SetPrimaryVisibility ( BOOL  onOff ) [pure virtual]
Remarks:
This method allows you to set the primary visibility flag and define whether or not the node is visible to the camera.
Parameters:
onOff TRUE to enable the flag, FALSE to disable.

Implemented in INodeTransformed.

virtual int GetPrimaryVisibility ( ) [pure virtual]
Remarks:
This method returns the on/off state of the primary visibility to determine whether or not the node is visible to the camera.

Implemented in INodeTransformed.

virtual void SetSecondaryVisibility ( BOOL  onOff ) [pure virtual]
Remarks:
This method allows you to set the secondary visibility flag and define whether or not the node is visible to reflections and refractions..
Parameters:
onOff TRUE to enable the flag, FALSE to disable.

Implemented in INodeTransformed.

virtual int GetSecondaryVisibility ( ) [pure virtual]
Remarks:
This method returns the on/off state of the secondary visibility to determine whether or not the node is visible to reflections and refractions.

Implemented in INodeTransformed.

virtual void SetCVertMode ( int  onOff ) [inline, virtual]
Remarks:
Sets the vertex color flag to on or off. This controls the display of assigned vertex colors. Vertex colors are assigned in the editable mesh in vertex or face sub-object level. Vertex colors only appear in viewports using Smooth or Smooth + Highlight display modes, regardless of the state of this flag.
Parameters:
onOff Nonzero for on; zero for off.
{}
virtual int GetCVertMode ( ) [inline, virtual]
Remarks:
Returns nonzero if the vertex color flag if on; otherwise zero.
{return 0;}
virtual void SetShadeCVerts ( int  onOff ) [inline, virtual]
Remarks:
Sets the vertex color shaded flag. This determines whether the vertex colors appears shaded in the viewport. When this is off, the colors are unshaded, and appear in their pure RGB values, looking a little like self-illuminated materials. When on, the colors appear like any other assigned color in the viewports
Parameters:
onOff Nonzero of on; zero of off.
{}
virtual int GetShadeCVerts ( ) [inline, virtual]
Remarks:
Returns nonzero if the vertex color shaded flag is on; zero if off.
{return 0;}
virtual int GetVertexColorType ( ) [inline, virtual]
Remarks:
Get the node's vertex color "type". This is one of the nodeVertexColorType enum's above.
{ return 0; }
virtual void SetVertexColorType ( int  nvct ) [inline, virtual]
Remarks:
Set the node's vertex color "type". This is one of the nodeVertexColorType enum's above.
{ }
virtual int GetVertexColorMapChannel ( ) [inline, virtual]

get the map channel to be displayed as vertex color.

{ return 1; }
virtual void SetVertexColorMapChannel ( int  vcmc ) [inline, virtual]

set the map channel to be displayed as vertex color.

{ }
virtual int GetTrajectoryON ( ) [inline, virtual]
Remarks:
Returns nonzero if the trajectory display is on; zero if the trajectory display is off.
{return 0;}
virtual void SetTrajectoryON ( BOOL  onOff ) [inline, virtual]
Remarks:
This method toggles the trajectory display for the node.
Parameters:
onOff TRUE for on; FALSE for off.
{}
virtual void ShowBone ( int  boneVis ) [pure virtual]
Remarks:
Controls the display of Bones in the scene. A bone is just the link (or line) connecting the node to its parent. These are the same options as available in the 3ds Max user interface in the Display branch, under Link Display, i.e. Display Links and Link Replaces Object.
Parameters:
boneVis Specifies the display state:

0: Bones are not drawn.
1: Bones are drawn.
2: Only bones are shown.

Implemented in INodeTransformed.

virtual void BoneAsLine ( int  onOff ) [pure virtual]
Remarks:
Controls the display of Bones as simple lines in the scene.
Parameters:
onOff Nonzero if bones should be shown as lines only; 0 for normal display.

Implemented in INodeTransformed.

virtual BOOL IsBoneShowing ( ) [pure virtual]
Remarks:
Returns TRUE if the node's bone is turned on; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL IsBoneOnly ( ) [inline, virtual]
Remarks:
Returns TRUE if the bone is showing but the object is hidden; FALSE if both the bone and the node is hidden.

Reimplemented in INodeTransformed.

{ return 0; }
virtual void SetTargetNodePair ( int  onOff ) [inline, virtual]
Remarks:
This method is used for hit-testing and selecting node and target as a single unit. In 3ds Max 2.0 and later you can click on the line connecting, say, a camera to its target and drag that around in the viewports. Doing so moves both the camera and its target as a locked pair. To accomplish this, the camera, light, and tape measure objects (those with two nodes linked by a Look At controller) check for a hit on the object-target line. If they get there (but not at the object or target itself), then they call this method passing TRUE. Then, when a hit is registered, 3ds Max checks the value of this variable (by calling GetTargetNodePair()), and, if it is TRUE, selects both the target and the node. If it's FALSE, then either the target or the node, but not both, gets selected, as with 3ds Max 1.x. For sample code see /MAXSDK/SAMPLES/OBJECTS/LIGHT.CPP or TAPEHELP.CPP.
Parameters:
onOff TRUE for on; FALSE for off.
Default Implementation:
{}
{}
virtual int GetTargetNodePair ( ) [inline, virtual]
Remarks:
Returns the target/node pair setting stored by 3ds Max. See SetTargetNodePair() above for details.
Default Implementation:
{ return 0; }
{ return 0; }
virtual DWORD GetWireColor ( ) [pure virtual]
Remarks:
Retrieves the node's wire-frame color. See COLORREF-DWORD format.

Implemented in INodeTransformed.

virtual void SetWireColor ( DWORD  newcol ) [pure virtual]
Remarks:
Sets the node's wire-frame color. This can be any of the 16 million possible colors in 24 bit. See COLORREF-DWORD format.
Parameters:
newcol Specifies the new wire-frame color for the node. It may be specified using the RGB macro, for example: RGB(0,0,255);

Implemented in INodeTransformed.

virtual int IsRootNode ( ) [pure virtual]
Remarks:
Determines if this node is the root node (does not have a parent node).
Returns:
Nonzero if the node is the root node; otherwise 0.

Implemented in INodeTransformed.

virtual int Selected ( ) [pure virtual]
Remarks:
Determines if the node is selected.
Returns:
Nonzero if the node is selected; otherwise 0.

Implemented in INodeTransformed.

virtual int Dependent ( ) [pure virtual]
Remarks:
Returns nonzero if the node has its dependent flag set; otherwise 0. This is dependent in the sense of 3ds Max's Views/Show Dependencies mode. When in the Modify branch, Show Dependencies will show all the nodes that are dependent on the current modifier or object being editing by highlighting them in green. It also set a flag in the node. This method allows a developer to check this flag.

Implemented in INodeTransformed.

virtual int IsTarget ( ) [pure virtual]
Remarks:
Determines if the node is a target node of a lookat controller.
Returns:
Nonzero if the node is a target; otherwise 0.

Implemented in INodeTransformed.

virtual void SetIsTarget ( BOOL  b ) [pure virtual]
Remarks:
This method controls the property of the node indicating if it's a target or not. Calling this is necessary when hooking up targets as the target node must have its IsTarget() property set.
Parameters:
b TRUE for set; FALSE for off.

Implemented in INodeTransformed.

virtual BOOL GetTransformLock ( int  type,
int  axis 
) [pure virtual]
Remarks:
Retrieves the specified transform lock state of the node. When the user is doing interactive Moving / Rotating / Scaling these locks simply remove one of the components.
Parameters:
type See transformLockTypes.
axis See Transform Lock Axis.
Returns:
TRUE if the lock is set; otherwise FALSE.

Implemented in INodeTransformed.

virtual void SetTransformLock ( int  type,
int  axis,
BOOL  onOff 
) [pure virtual]
Remarks:
Sets the specified transform lock state of the node. When the user is doing interactive Moving / Rotating / Scaling these locks simply remove one of the components.
Parameters:
type See Transform Lock Types.
axis See Transform Lock Axis.
onOff TRUE sets the lock on; FALSE sets the lock off.

Implemented in INodeTransformed.

virtual INode* GetTarget ( ) [pure virtual]
Remarks:
Retrieves this node's target node if any.
Returns:
NULL if this node has no target.

Implemented in INodeTransformed.

virtual INode* GetLookatNode ( ) [pure virtual]
Remarks:
If this node is a target of a lookat controller, this method finds the node that looks at it.
Returns:
The node that looks at this node or NULL if the node is not a target.

Implemented in INodeTransformed.

virtual Matrix3 GetParentTM ( TimeValue  t ) [pure virtual]
Remarks:
Retrieves the parent node's transformation matrix. This is simply for convenience. It is the equivalent to the following code: node->GetParentNode()->GetNodeTM();
Parameters:
t Specifies the time to retrieve the transformation matrix.
Returns:
The parent node's transformation matrix.

Implemented in INodeTransformed.

virtual int GetTargetTM ( TimeValue  t,
Matrix3 m 
) [pure virtual]
Remarks:
Retrieves the target node's transformation matrix. This is simply for convenience. It is the equivalent to the following code:

node->GetTarget()->GetNodeTM();
Parameters:
t Specifies the time to retrieve the transformation matrix.
m The result is stored here.
Returns:
Nonzero if the target matrix was retrieved (the node had a target); otherwise 0.

Implemented in INodeTransformed.

virtual Object* GetObjectRef ( ) [pure virtual]
Remarks:
Returns the object that this node references unless the node has been bound to a Space Warp. In that case this method will not return the WSM derived object even though the node's object reference points at it. Instead it will return the item that the WSM derived object references. Thus, this method will always return essentially the object space portion of the pipeline. In contrast, see GetObjOrWSMRef() below. See the Geometry Pipeline section for additional details.

Implemented in INodeTransformed.

virtual void SetObjectRef ( Object o ) [pure virtual]
Remarks:
Sets the object that this node references. See the Geometry Pipeline section for additional details.
Parameters:
o The object this node will reference.

Implemented in INodeTransformed.

virtual Object* GetObjOrWSMRef ( ) [pure virtual]
Remarks:
This method returns the actual object reference of the node directly. So if this node is bound to a Space Warp this method will return a WSM derived object. If you want the object space portion of the pipeline see GetObjectRef() above.

Implemented in INodeTransformed.

virtual Control* GetTMController ( ) [pure virtual]
Remarks:
Retrieves the node's transform controller. The standard 3ds Max transform controllers each have sub -controllers for position, rotation and scale. To access the data of the node's transform controller you may use Class IKeyControl. The following code fragment shows an example of how this may be done for a PRS controller.
        Control *c;
        c = node->GetTMController()->GetPositionController();
        IKeyControl *ikeys = GetKeyControlInterface(c);
With this controller interface you can use its methods to get information about the keys. For example:
        int num = ikeys->GetNumKeys();

Implemented in INodeTransformed.

virtual BOOL SetTMController ( Control m3cont ) [pure virtual]
Remarks:
Sets the node's transform controller.
Parameters:
m3cont The Matrix3 transform controller to use. This controller must return a SuperClassID of CTRL_MATRIX3_CLASS_ID
Returns:
TRUE if the controller was a valid transform controller for this node, and the reference was successfully created, else FALSE.

Implemented in INodeTransformed.

virtual Control* GetVisController ( ) [pure virtual]
Remarks:
Returns the visibility controller for this node.

Implemented in INodeTransformed.

virtual void SetVisController ( Control cont ) [pure virtual]
Remarks:
Sets the visibility controller for this node.
Parameters:
cont The controller to use for visibility control.

Implemented in INodeTransformed.

virtual float GetVisibility ( TimeValue  t,
Interval valid = NULL 
) [pure virtual]
Remarks:
Retrieves the visibility of the node at the time passed and updates the validity interval passed. Values < 0 indicate off while values > 0 indicate on. The node is fully visible (opaque) when 1.0 and fully invisible (transparent) when 0.0.
Note:
this value may be inherited by the children of this node
Parameters:
t The time to get the visibility value.
valid The validity interval to update based on the validity of the visibility.

Implemented in INodeTransformed.

virtual float GetVisibility ( TimeValue  t,
View view,
Interval valid = NULL 
) [inline, virtual]
Remarks:
Gets the visibility for the node within the specified view at the time passed, and updates the validity. The visibility calculated includes the view dependent Level Of Detail visibility calculated by the Nodes visibility controller. See also Control::EvalVisibility for more info.
Parameters:
t The time to get the visibility value.
view This is the view to calculate the view-dependent LOD visibility from.
valid The validity interval to update based on the validity of the visibility.
Returns:
The visibilty of the node as rendered. Values <= 0 are invisible, and values >= 1 are fully opaque.
{return GetVisibility(t,valid);}
virtual void SetVisibility ( TimeValue  t,
float  vis 
) [pure virtual]
Remarks:
Sets the visibility of the node to the value passed at the time passed.
Parameters:
t The time to set the visibility value.
vis The visibility of the node to set. This is treated like a boolean value where < 0 means off and > 0 means on.

Implemented in INodeTransformed.

virtual float GetLocalVisibility ( TimeValue  t,
Interval valid = NULL 
) [pure virtual]
Remarks:
Returns the local visibility of the node. The value returned from this method is treated like a boolean value where < 0 means off and > 0 means on. If a node returns TRUE from GetInheritVisibility() then its visibility is determined by this method. If GetInheritVisibility() method returns FALSE then the visibility of the node is determined by GetVisibility().
Note:
This value does not take into account the parent nodes visibility, and is not inherited by the children of this node
Parameters:
t The time to get the local visibility value.
valid The validity interval to update based on the validity of the local visibility controller.

Implemented in INodeTransformed.

virtual BOOL GetInheritVisibility ( ) [pure virtual]
Remarks:
Returns TRUE if the node's visibility is determined by the visibility of the parent of the node; otherwise returns FALSE.

Implemented in INodeTransformed.

virtual void SetInheritVisibility ( BOOL  onOff ) [pure virtual]
Remarks:
This method is called to set the state of the node's inherit visibility flag.
Parameters:
onOff Pass TRUE to have the node inherit its visibility from its parent; otherwise pass FALSE and the node's visibility will be determine by the node itself (not its parent).

Implemented in INodeTransformed.

virtual void SetRenderOccluded ( BOOL  onOff ) [pure virtual]
Remarks:
Sets the state of the node's 'Render Occluded Object' flag.
Parameters:
onOff TRUE for on; FALSE for off.

Implemented in INodeTransformed.

virtual BOOL GetRenderOccluded ( ) [pure virtual]
Remarks:
Returns TRUE if the node's 'Render Occluded Object' flag is set; otherwise FALSE.

Implemented in INodeTransformed.

virtual Mtl* GetMtl ( ) [pure virtual]
Remarks:
Returns a pointer to the renderer material for the node. If the value returned is NULL the user has not assigned a material yet. See Class Mtl, Working with Materials and Textures.

Implemented in INodeTransformed.

virtual void SetMtl ( Mtl matl ) [pure virtual]
Remarks:
Sets the renderer material used by the node. If the value set is NULL it indicates a material has not been assigned. In this case, the renderer uses the wireframe color of the node for rendering. See Class Mtl, Working with Materials and Textures.
Parameters:
matl The materials used to render the node.

Implemented in INodeTransformed.

virtual Material* Mtls ( ) [pure virtual]
Remarks:
Returns a pointer to the GraphicsWindow materials. See NumMtls() below for the number of entries in this array.

Implemented in INodeTransformed.

virtual int NumMtls ( ) [pure virtual]
Remarks:
Returns the number of entries in the array of Materials returned by Mtls() above.

Implemented in INodeTransformed.

virtual void SetObjOffsetPos ( Point3  p ) [pure virtual]
Remarks:
Sets the position portion of the object offset from the node. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.
Parameters:
p Specifies the position portion of the object-offset.

Implemented in INodeTransformed.

virtual Point3 GetObjOffsetPos ( ) [pure virtual]
Remarks:
Returns the position portion of the object-offset from the node as a Point3. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.

Implemented in INodeTransformed.

virtual void SetObjOffsetRot ( Quat  q ) [pure virtual]
Remarks:
Sets the rotation portion of the object-offset from the node. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.
Parameters:
q The rotation offset.

Implemented in INodeTransformed.

virtual Quat GetObjOffsetRot ( ) [pure virtual]
Remarks:
Returns the rotation portion of the object-offset from the node. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.

Implemented in INodeTransformed.

virtual void SetObjOffsetScale ( ScaleValue  sv ) [pure virtual]
Remarks:
Sets the scale portion of the object-offset matrix. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.
Parameters:
sv The scale portion of the offset. See Class ScaleValue.

Implemented in INodeTransformed.

virtual ScaleValue GetObjOffsetScale ( ) [pure virtual]
Remarks:
Returns the scale portion of the object-offset from the node. See Class ScaleValue. See the Advanced Topics section on Node and Object Offset Transformations for an overview of the object offset transformation.

Implemented in INodeTransformed.

virtual void CenterPivot ( TimeValue  t,
BOOL  moveObject 
) [pure virtual]
Remarks:
Centers the pivot to the object. The effect is the same as Hierarchy Panel/Pivot - [Center to Object or Center to Pivot]
Parameters:
[in] t - not used
[in] moveObject - If true, the object is moved to be centered on the pivot. If false, the pivot is centered on the object

Implemented in INodeTransformed.

virtual void AlignPivot ( TimeValue  t,
BOOL  moveObject 
) [pure virtual]
Remarks:
Resets the pivot alignment. The effect is the same as Hierarchy Panel/Pivot - [Align to Object or Align to Pivot]
Parameters:
[in] t - not used
[in] moveObject - If true, the object is rotated to be aligned with the pivot. If false, the pivot rotation is reset to be realigned with the object

Implemented in INodeTransformed.

virtual void WorldAlignPivot ( TimeValue  t,
BOOL  moveObject 
) [pure virtual]
Remarks:
Aligns the object to the world . The effect is the same as Hierarchy Panel/Pivot/[Affect Pivot Only or Affect Object Only]/ - Align to World
Parameters:
[in] t - not used
[in] moveObject - If true, the object is rotated to be aligned with the world. If false, the pivot rotation is set to be aligned with the world

Implemented in INodeTransformed.

virtual void AlignToParent ( TimeValue  t ) [pure virtual]
Remarks:
Aligns the pivot to the node's parent's pivot, or to world if no parent.
Parameters:
[in] t - not used

Implemented in INodeTransformed.

virtual void AlignToWorld ( TimeValue  t ) [pure virtual]
Remarks:
Aligns the pivot to the to world
Parameters:
[in] t - not used

Implemented in INodeTransformed.

virtual void ResetTransform ( TimeValue  t,
BOOL  scaleOnly 
) [pure virtual]
Remarks:
Resets the pivot offset transform. The effect is the same as Hierarchy Panel/Pivot/[Reset Transform or Reset Scale]
Parameters:
[in] t - not used
[in] scaleOnly - If true, reset only the offset scale. Else reset the rotation and scale parts

Implemented in INodeTransformed.

virtual void ResetPivot ( TimeValue  t ) [pure virtual]
Remarks:
Resets the pivot transform. The effect is the same as Hierarchy Panel/Pivot/Reset Pivot
Parameters:
[in] t - not used

Implemented in INodeTransformed.

virtual bool MayResetTransform ( ) [pure virtual]
Remarks:
Indicates whether a call to ResetTransform() will succeed. The ResetTransform() method also checks this internally, so it's not necessary to check beforehand.
Returns:
true if ResetTransform will succeed, false if no change would occur

Implemented in INodeTransformed.

virtual void FlagForeground ( TimeValue  t,
BOOL  notify = TRUE 
) [pure virtual]
Remarks:
Flags the node to put it in the foreground. For additional information see Foreground / Background Planes.
Parameters:
t The time to put the node in the foreground.
notify If TRUE, the reference message REFMSG_FLAGDEPENDENTS with PART_PUT_IN_FG is sent.

Implemented in INodeTransformed.

virtual int IsActiveGrid ( ) [pure virtual]
Remarks:
Determines if this node is the active grid object.
Returns:
Nonzero indicates the node is the active grid object; zero indicates it is not.

Implemented in INodeTransformed.

virtual void SetNodeLong ( LONG_PTR  l ) [pure virtual]
Remarks:
This method provides temporary storage of data with the node. Data stored with the node is only valid before you return control.
Parameters:
l The data to store with the node.

Implemented in INodeTransformed.

virtual LONG_PTR GetNodeLong ( ) [pure virtual]
Remarks:
Returns the value set by SetNodeLong

Implemented in INodeTransformed.

virtual RenderData* GetRenderData ( ) [pure virtual]
Remarks:
Returns the render data for the node. See Class RenderData.

Implemented in INodeTransformed.

virtual void SetRenderData ( RenderData rd ) [pure virtual]
Remarks:
Sets the render data for the node.
Parameters:
rd The render data to set. For additional overview information on these methods, see Custom node properties and application data.

Implemented in INodeTransformed.

virtual void GetUserPropBuffer ( MSTR buf ) [pure virtual]
Remarks:
This method allows access to the entire user defined property text buffer.
Parameters:
buf The buffer to hold the user defined property text.

Implemented in INodeTransformed.

virtual void SetUserPropBuffer ( const MSTR buf ) [pure virtual]
Remarks:
This method allows a developer to set to the entire user defined property text buffer.
Parameters:
buf The buffer containing the user defined property text.

Implemented in INodeTransformed.

virtual BOOL GetUserPropString ( const MSTR key,
MSTR string 
) [pure virtual]
Remarks:
This method retrieves a string based on the key passed.
Parameters:
key The key (or name) of the user defined property text.
string Storage for the string to retrieve.
Returns:
TRUE if the key was found; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL GetUserPropInt ( const MSTR key,
int &  val 
) [pure virtual]
Remarks:
Retrieves an integer value from the node based on the key passed.
Parameters:
key The key (or name) of the data to retrieve.
val Storage for the integer value.
Returns:
TRUE if the key was found; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL GetUserPropFloat ( const MSTR key,
float &  val 
) [pure virtual]
Remarks:
Retrieves a floating point value from the node based on the key passed.
Parameters:
key The key (or name) of the data to retrieve.
val Storage for the float value.
Returns:
TRUE if the key was found; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL GetUserPropBool ( const MSTR key,
BOOL &  b 
) [pure virtual]
Remarks:
Retrieves a boolean value from the node based on the key passed.
Parameters:
key The key (or name) of the data to retrieve.
b Storage for the boolean value.
Returns:
TRUE if the key was found; otherwise FALSE.

Implemented in INodeTransformed.

virtual void SetUserPropString ( const MSTR key,
const MSTR string 
) [pure virtual]
Remarks:
Stores a string in the node using the key passed. If the key name already exists it is overwritten; otherwise it is created.
Parameters:
key The key (or name) of the data to store.
string The string to store.

Implemented in INodeTransformed.

virtual void SetUserPropInt ( const MSTR key,
int  val 
) [pure virtual]
Remarks:
Stores an integer value in the node using the key passed. If the key name already exists it is overwritten; otherwise it is created.
Parameters:
key The key (or name) of the data to store.
val The value to store.

Implemented in INodeTransformed.

virtual void SetUserPropFloat ( const MSTR key,
float  val 
) [pure virtual]
Remarks:
Stores a floating point value in the node using the key passed. If the key name already exists it is overwritten; otherwise it is created.
Parameters:
key The key (or name) of the data to store.
val The value to store.

Implemented in INodeTransformed.

virtual void SetUserPropBool ( const MSTR key,
BOOL  b 
) [pure virtual]
Remarks:
Stores a boolean value in the node using the key passed. If the key name already exists it is overwritten; otherwise it is created.
Parameters:
key The key (or name) of the data to store.
b The value to store.

Implemented in INodeTransformed.

virtual BOOL UserPropExists ( const MSTR key ) [pure virtual]
Remarks:
This method simply checks to see if a key exists.
Parameters:
key The key string to search for.
Returns:
TRUE if the key was found; otherwise FALSE.

Implemented in INodeTransformed.

virtual ULONG GetGBufID ( ) [pure virtual]
Remarks:
Returns the G-Buffer ID of this node. This is the ID available in the BMM_CHAN_NODE_ID channel. See Working with Bitmaps(G-Buffer) for additional details.

Implemented in INodeTransformed.

virtual void SetGBufID ( ULONG  id ) [pure virtual]
Remarks:
Sets the G-Buffer ID of this node. This is the ID available in the BMM_CHAN_NODE_ID channel. See Working with Bitmaps(G-Buffer) for additional details.
Parameters:
id The G-Buffer ID.

Implemented in INodeTransformed.

virtual UWORD GetRenderID ( ) [inline, virtual]
Remarks:
Returns the G-Buffer render ID of the node. This is set by the renderer during a video post render when the BMM_CHAN_NODE_RENDER_ID is requested.

Reimplemented in INodeTransformed.

{ return 0xffff; }
virtual void SetRenderID ( UWORD  id ) [inline, virtual]
Remarks:
Sets the G-Buffer render ID of the node. This is set by the renderer during a video post render when the BMM_CHAN_NODE_RENDER_ID is requested. The following methods deal with IK parameters associated with a node.

Reimplemented in INodeTransformed.

{}
virtual ULONG GetHandle ( ) [inline, virtual]
Remarks:
This method returns the unique node handle. Each node is assigned a unique node handle.
Returns:
Zero.
Note:
For additional information regarding transformation matrices, see the Advanced Topics section on Node and Object Offset Transformations.
{ return kNullHandle; }
virtual void Move ( TimeValue  t,
const Matrix3 tmAxis,
const Point3 val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [pure virtual]
Remarks:
This method may be called to move the node about the specified axis system. Either the pivot point, or the geometry of the object, or both the pivot and the object may be transformed. Optionally, any children of the node can be counter transformed so they don't move.
Parameters:
t The time to transform the node.
tmAxis The axis system about which the node is transformed.
val The amount of the transformation relative to the axis system.
localOrigin If TRUE the transformation takes place about the nodes local origin; otherwise about the world origin.
affectKids TRUE If TRUE any child nodes are transformed along with the parent node. If FALSE any children of the node are counter transformed so they don't move.
pivMode One of the following values:

PIV_NONE
Move both the pivot point and the geometry of the object.

PIV_PIVOT_ONLY
Move the pivot point only.

PIV_OBJECT_ONLY
Move the geometry of the object only.
ignoreLocks If TRUE any transform locks associated with the node are ignored; otherwise the locks govern the application of the transformation.

Implemented in INodeTransformed.

virtual void Rotate ( TimeValue  t,
const Matrix3 tmAxis,
const AngAxis val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [pure virtual]
Remarks:
This method may be called to rotate the node about the specified axis system. Either the pivot point, or the geometry of the object, or both the pivot and the object may be transformed. Optionally, any children of the node can be counter transformed so they don't rotate.
Parameters:
t The time to transform the node.
tmAxis The axis system about which the node is transformed.
val The amount of the transformation.
localOrigin If TRUE the transformation takes place about the nodes local origin; otherwise about the world origin.
affectKids If TRUE any child nodes are transformed along with the parent node. If FALSE any children of the node are counter transformed so they don't rotate.
pivMode One of the following values:

PIV_NONE
Move both the pivot point and the geometry of the object.

PIV_PIVOT_ONLY
Move the pivot point only.

PIV_OBJECT_ONLY
Move the geometry of the object only.
ignoreLocks If TRUE any transform locks associated with the node are ignored; otherwise the locks govern the application of the transformation.

Implemented in INodeTransformed.

virtual void Rotate ( TimeValue  t,
const Matrix3 tmAxis,
const Quat val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [pure virtual]
Remarks:
This method may be called to rotate the node about the specified axis system. Either the pivot point, or the geometry of the object, or both the pivot and the object may be transformed. Optionally, any children of the node can be counter transformed so they don't rotate.
Parameters:
t The time to transform the node.
tmAxis The axis system about which the node is transformed.
val The amount of the transformation.
localOrigin If TRUE the transformation takes place about the nodes local origin; otherwise about the world origin.
affectKids If TRUE any child nodes are transformed along with the parent node. If FALSE any children of the node are counter transformed so they don't rotate.
pivMode One of the following values:

PIV_NONE
Move both the pivot point and the geometry of the object.

PIV_PIVOT_ONLY
Move the pivot point only.

PIV_OBJECT_ONLY
Move the geometry of the object only.
ignoreLocks If TRUE any transform locks associated with the node are ignored; otherwise the locks govern the application of the transformation.

Implemented in INodeTransformed.

virtual void Scale ( TimeValue  t,
const Matrix3 tmAxis,
const Point3 val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [pure virtual]
Remarks:
This method may be called to scale the node about the specified axis system. Either the pivot point, or the geometry of the object, or both the pivot and the object may be transformed. Optionally, any children of the node can be counter transformed so they don't scale.
Parameters:
t The time to transform the node.
tmAxis The axis system about which the node is transformed.
val The amount of the transformation.
localOrigin If TRUE the transformation takes place about the nodes local origin; otherwise about the world origin.
affectKids If TRUE any child nodes are transformed along with the parent node. If FALSE any children of the node are counter transformed so they don't scale.
pivMode One of the following values:

PIV_NONE
Move both the pivot point and the geometry of the object.

PIV_PIVOT_ONLY
Move the pivot point only.

PIV_OBJECT_ONLY
Move the geometry of the object only.
ignoreLocks If TRUE any transform locks associated with the node are ignored; otherwise the locks govern the application of the transformation.

Implemented in INodeTransformed.

virtual BOOL IsGroupMember ( ) [pure virtual]
Remarks:
Returns TRUE if this node is a member of a group; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL IsGroupHead ( ) [pure virtual]
Remarks:
Returns TRUE if this node is the head of a group; otherwise FALSE.

Implemented in INodeTransformed.

virtual BOOL IsOpenGroupMember ( ) [inline, virtual]
Remarks:
Returns TRUE if this node is a member of an open group; otherwise FALSE.
Default Implementation:
{return 0; }

Reimplemented in INodeTransformed.

{return 0; }
virtual BOOL IsOpenGroupHead ( ) [inline, virtual]
Remarks:
Returns TRUE if this node is the head of a group and that group is open; otherwise FALSE.
Default Implementation:
{return 0; }

Reimplemented in INodeTransformed.

{return 0; }
virtual void SetGroupMember ( BOOL  b ) [inline, virtual]
Remarks:
A node is marked as a group member or not. This method sets this state.
Parameters:
b TRUE to mark the node as a group member; FALSE to indicate it's not in a group.

Reimplemented in INodeTransformed.

{}
virtual void SetGroupHead ( BOOL  b ) [inline, virtual]
Remarks:
A node is marked as the group head or not. This method sets this state.
Parameters:
b TRUE to mark the node as a group head; FALSE to indicate it's not a group head.

Reimplemented in INodeTransformed.

{}
virtual void SetGroupMemberOpen ( BOOL  b ) [inline, virtual]
Remarks:
A node is marked as an open group member or not. This method sets this state.
Parameters:
b TRUE to mark the node as a open; FALSE to indicate it's not open.

Reimplemented in INodeTransformed.

{}
virtual void SetGroupHeadOpen ( BOOL  b ) [inline, virtual]
Remarks:
A node is marked as being the head of a group and being open or not. This method sets this state.
Parameters:
b TRUE to mark the node as an open group head; FALSE to indicate it's not an open group head.

Reimplemented in INodeTransformed.

{}
virtual float GetPosTaskWeight ( ) [inline, virtual]
Remarks:
This method returns the position weight for the node.
{return 1.0f;}
virtual float GetRotTaskWeight ( ) [inline, virtual]
Remarks:
This method returns the rotation weight for the node.
{return 1.0f;}
virtual void SetPosTaskWeight ( float  w ) [inline, virtual]
Remarks:
This method sets the position weight for the node.
Parameters:
w The position weight for the node. This value is >= 0.0.
{}
virtual void SetRotTaskWeight ( float  w ) [inline, virtual]
Remarks:
This method sets the rotation weight for the node.
Parameters:
w The rotation weight for the node. This value is >= 0.0.
{}
virtual BOOL GetTaskAxisState ( int  which,
int  axis 
) [inline, virtual]
Remarks:
Returns TRUE of FALSE to indicate if the specified axis is set for position or rotation.
Parameters:
which Indicates if the method returns the position state or the rotation state:

0: specifies position;
1: specifies rotation.
axis The axis to check. Values are as follows:

0: specifies X
1: specifies Y
2: specifies Z.
{return TRUE;}
virtual void SetTaskAxisState ( int  which,
int  axis,
BOOL  onOff 
) [inline, virtual]
Remarks:
Sets the specified axis state for position or rotation.
Parameters:
which Indicates if the method returns the position state or the rotation state:

0: specifies position
1: specifies rotation.
axis The axis to check. Values are as follows:

0: specifies X
1 specifies Y
2 specifies Z
onOff TRUE for on; FALSE for off.
{}
virtual DWORD GetTaskAxisStateBits ( ) [inline, virtual]
Remarks:
This method returns the same information as GetTaskAxisState() above.
Returns:
The first three bits indicate position X, Y and Z. Then the next three bits indicate rotation X, Y, Z.
{return 127;}
virtual void CreateWSMDerivedObject ( ) [inline, virtual]
Remarks:
Calling this method will create a WSM derived object for this node if one doesn't already exist.
Default Implementation:
{}
{}
virtual IDerivedObject* GetWSMDerivedObject ( ) [inline, virtual]
Remarks:
This method pointer to the WSM Derived object for this node. Note that there is at most one WSM derived object per node.
Default Implementation:
{return NULL;}
{return NULL;}
virtual CoreExport MaxSDK::AssetManagement::AssetUser GetXRefFile ( int  i ) [virtual]
Remarks:
Returns the file asset of the scene xref whose index is passed.
Parameters:
i The zero based index of the scene xref (0 to GetXRefFileCount()-1). {return MaxSDK::AssetManagement::AssetUser();}
virtual void SetXRefFile ( int  i,
const MaxSDK::AssetManagement::AssetUser file,
BOOL  reload 
) [inline, virtual]
Remarks:
Sets the file asset of the scene xref whose index is passed.
Parameters:
i The zero based index of the scene xref (0 to GetXRefFileCount()-1).
file The file to set.
reload TRUE to reload; FALSE to not reload.
Default Implementation:
{}
{}
virtual int GetXRefFileCount ( ) [inline, virtual]
Remarks:
Returns the number of scene xrefs.
Default Implementation:
{return 0;}
{return 0;}
virtual BOOL AddNewXRefFile ( const MaxSDK::AssetManagement::AssetUser file,
BOOL  loadNow = TRUE,
BOOL  hideInManagerUI = FALSE 
) [inline, virtual]
Remarks:
Adds the specified file to the scene and optionally updates the scene now.
Parameters:
file The file asset to load.
loadNow If TRUE the file is loaded immediately and the scene updated; if FALSE the scene is now updated until the user requests it.
hideInManagerUI If TRUE (default value is FALSE) the scene xref flag XREF_SCENE_HIDEINMANAGERUI will be set, so that the scene xref will not be listed in the scene XRef manager UI.
Returns:
TRUE if the XRef was loaded; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual BOOL DeleteXRefFile ( int  i ) [inline, virtual]
Remarks:
This method removes the 'i-th' Scene XRef.
Parameters:
i The zero based index of the Scene XRef to load.
Returns:
TRUE if the file was deleted from the scene; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual BOOL BindXRefFile ( int  i ) [inline, virtual]
Remarks:
This methods binds the specified XRef. This deletes the XRef after merging it into the scene.
Parameters:
i The zero based index of the XRef to bind.
Returns:
TRUE if the file was deleted; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual void DeleteAllXRefs ( ) [inline, virtual]
Remarks:
This method deletes all the XRefs from the scene. This is called when loading a new file, reseting or clearing the scene.
Default Implementation:
{}
{}
virtual BOOL ReloadXRef ( int  i ) [inline, virtual]
Remarks:
This method will reload (updates from disk) the specified XRef.
Parameters:
i The zero based index of the XRef to reload.
Returns:
TRUE if the XRef was reloaded; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual void FlagXrefChanged ( int  i ) [inline, virtual]
Remarks:
This method indicates that the specified XRef has been changed and should be updated.
Parameters:
i The zero based index of the XRef to flag.
Default Implementation:
{}
{}
virtual BOOL UpdateChangedXRefs ( BOOL  redraw = TRUE ) [inline, virtual]
Remarks:
This method updates all XRefs which have their changed flag set.
Parameters:
redraw TRUE to redraw the scene; otherwise FALSE.
Returns:
TRUE if the XRefs were loaded okay; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual INode* GetXRefTree ( int  i ) [inline, virtual]
Remarks:
Returns the root node of the tree for the specified XRef. This method, when called on a root node, will access the various XRef scenes. Note that these can be nested so calling this on the root node of the scene will return the root node of one of the scene XRefs. Calling it on the root node of the scene XRef will get the root node of a nested XRef and so on. Note that this is not the parent of the XRef (see GetXRefParent() below).
Parameters:
i The zero based index of the XRef.
Default Implementation:
{return NULL;}
{return NULL;}
virtual INode* GetXRefParent ( int  i ) [inline, virtual]
Remarks:
Returns the parent node of the specified XRef. This is the node in the scene (if any) which the scene XRef is linked to through the special bind function in the scene XRef dialog.
Parameters:
i The zero based index of the XRef.
Default Implementation:
{return NULL;}
{return NULL;}
virtual void SetXRefParent ( int  i,
INode par,
BOOL  autoOffset = TRUE 
) [inline, virtual]
Remarks:
Sets the parent of the specified XRef to the node passed.
Parameters:
i The zero based index of the XRef.
par The parent node to set.
autoOffset Automatically offset XRef so that it keeps its world TM.
Default Implementation:
{}
{}
virtual BOOL FindUnresolvedXRefs ( Tab< MSTR * > &  fnames ) [inline, virtual]
Remarks:
Generates a table of names for the unresolved XRefs in the scene.
Parameters:
fnames The table of names. See Template Class Tab.
Returns:
Returns TRUE if there are still unresolved XRefs; otherwise FALSE.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual void AttemptToResolveUnresolvedXRefs ( ) [inline, virtual]
Remarks:
This method tries to load any XRefs that are currently unresolved.
Default Implementation:
{}
{}
virtual DWORD GetXRefFlags ( int  i ) [inline, virtual]
Remarks:
Returns the state of flags for the specified XRef.
Parameters:
i The zero based index of the XRef whose flags are returned.
Returns:
See XRef Flag Bits.
Default Implementation:
{return 0;}
{return 0;}
virtual void SetXRefFlags ( int  i,
DWORD  flag,
BOOL  onOff 
) [inline, virtual]
Remarks:
Sets the state of the specified flags in the specified XRef to on or off.
Parameters:
i The zero based index of the XRef whose flags are set.
flag See XRef Flag Bits.
onOff TRUE for on; FALSE for off.
Default Implementation:
{}
{}
virtual void SetBoneNodeOnOff ( BOOL  onOff,
TimeValue  t 
) [inline, virtual]
Remarks:
Sets the bone on/off property of the node.
Parameters:
onOff Pass TRUE for on; FALSE for off.
t The time at which to set the property.
Default Implementation:
{}
{}
virtual void SetBoneAutoAlign ( BOOL  onOff ) [inline, virtual]
Remarks:
Sets the bone auto-align property of the node.
Parameters:
onOff Pass TRUE for on; FALSE for off.
Default Implementation:
{}
{}
virtual void SetBoneFreezeLen ( BOOL  onOff ) [inline, virtual]
Remarks:
Sets the bone freeze length property of the node.
onOff Pass TRUE for on; FALSE for off.
Default Implementation:
{}
{}
virtual void SetBoneScaleType ( int  which ) [inline, virtual]
Remarks:
Sets the bone scale (stretch) type to the specified value.
Parameters:
which One of the following values:

BONE_SCALETYPE_SCALE
BONE_SCALETYPE_SQUASH
BONE_SCALETYPE_NONE
Default Implementation:
{}
{}
virtual void SetBoneAxis ( int  which ) [inline, virtual]
Remarks:
Sets the bone axis of the node to the specified value.
Parameters:
which One of the following values:

BONE_AXIS_X
BONE_AXIS_Y
BONE_AXIS_Z
Default Implementation:
{}
{}
virtual void SetBoneAxisFlip ( BOOL  onOff ) [inline, virtual]
Remarks:
Sets the state of the bone axis flip toggle.
Parameters:
onOff Pass TRUE for on; FALSE for off.
Default Implementation:
{}
{}
virtual BOOL GetBoneNodeOnOff ( ) [inline, virtual]
Remarks:
Returns TRUE if the bone property if on; FALSE if off.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual BOOL GetBoneNodeOnOff_T ( TimeValue  t ) [inline, virtual]
{ return GetBoneNodeOnOff(); } // for write property access via MXS
virtual BOOL GetBoneAutoAlign ( ) [inline, virtual]
Remarks:
Returns TRUE if the bone auto-align property is on; FALSE if off.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual BOOL GetBoneFreezeLen ( ) [inline, virtual]
Remarks:
Returns TRUE if the freeze length property is on; FALSE if off.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual int GetBoneScaleType ( ) [inline, virtual]
Remarks:
Returns a value which indicates the bone scale type.
Returns:
One of the following values:

BONE_SCALETYPE_SCALE
BONE_SCALETYPE_SQUASH
BONE_SCALETYPE_NONE
Default Implementation:
{return 0;}
{return 0;}
virtual int GetBoneAxis ( ) [inline, virtual]
Remarks:
Returns a value which indicates the bone axis.
Returns:
One of the following values:

BONE_AXIS_X
BONE_AXIS_Y
BONE_AXIS_Z
Default Implementation:
{return 0;}
{return 0;}
virtual BOOL GetBoneAxisFlip ( ) [inline, virtual]
Remarks:
Returns TRUE if the axis flip toggle is on; FALSE if off.
Default Implementation:
{return FALSE;}
{return FALSE;}
virtual void RealignBoneToChild ( TimeValue  t ) [inline, virtual]
Remarks:
Calling this method is the equivalent of pressing the Realign button in the UI.
Parameters:
t The time at which to reset the initial child position.
Default Implementation:
{}
{}
virtual void ResetBoneStretch ( TimeValue  t ) [inline, virtual]
Remarks:
Calling this method is the equivalent of pressing the Reset Stretch button in the UI. This will cause the X-axis of the bone to realign to point at the child bone (or average pivot of multiple children).
Parameters:
t The time at which to reset the bone stretch.
Default Implementation:
{}
{}
virtual Matrix3 GetStretchTM ( TimeValue  t,
Interval valid = NULL 
) [inline, virtual]
Remarks:
This method returns the strechTM without the object offset included. Normally matrix concatenation occurs in the following manner: objectTM = objectOffsetTM * stretchTM * nodeTM A plug-in that uses the objectTM will transparently inherit the effects of the stretchTM. However if a plug-in (such as skin) wants the stretchTM included but not the object offset, this method will return the stretchTM alone. If the node is not a bone or has no stretching, this method will return the identity.
Parameters:
t The time at which to obtain the strechtTM.
valid The interval.
Default Implementation:
{return Matrix3(1);}
{return Matrix3(1);}
BaseInterface* GetInterface ( Interface_ID  id ) [inline, virtual]
Remarks:
Returns a pointer to the interface whose ID is specified.
Parameters:
Interface_ID id

The ID of the interface to return.
Default Implementation:
{ return NULL; }

Reimplemented from FPMixinInterface.

{ return (id == INODE_INTERFACE) ? this : FPMixinInterface::GetInterface(id); }
FPInterfaceDesc* GetDesc ( ) [inline, virtual]
Remarks:
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

{ return (FPInterfaceDesc*)GetCOREInterface(INODE_INTERFACE); }
BEGIN_FUNCTION_MAP PROP_FNS ( getPosTaskWeight  ,
GetPosTaskWeight  ,
setPosTaskWeight  ,
SetPosTaskWeight  ,
TYPE_FLOAT   
)
PROP_FNS ( getRotTaskWeight  ,
GetRotTaskWeight  ,
setRotTaskWeight  ,
SetRotTaskWeight  ,
TYPE_FLOAT   
)
PROP_FNS ( getBoneAutoAlign  ,
GetBoneAutoAlign  ,
setBoneAutoAlign  ,
SetBoneAutoAlign  ,
TYPE_BOOL   
)
PROP_FNS ( getBoneFreezeLen  ,
GetBoneFreezeLen  ,
setBoneFreezeLen  ,
SetBoneFreezeLen  ,
TYPE_BOOL   
)
PROP_FNS ( getBoneScaleType  ,
GetBoneScaleType  ,
setBoneScaleType  ,
SetBoneScaleType  ,
TYPE_ENUM   
)
PROP_FNS ( getBoneAxis  ,
GetBoneAxis  ,
setBoneAxis  ,
SetBoneAxis  ,
TYPE_ENUM   
)
PROP_FNS ( getBoneAxisFlip  ,
GetBoneAxisFlip  ,
setBoneAxisFlip  ,
SetBoneAxisFlip  ,
TYPE_BOOL   
)
RO_PROP_TFN ( getStretchTM  ,
GetStretchTM  ,
TYPE_MATRIX3_BV   
)
PROP_TFNS ( getBoneNodeOnOff  ,
GetBoneNodeOnOff_T  ,
setBoneNodeOnOff  ,
SetBoneNodeOnOff  ,
TYPE_BOOL   
)
VFNT_1 ( setBoneNodeOnOffM  ,
SetBoneNodeOnOff  ,
TYPE_BOOL   
)
VFNT_0 ( realignBoneToChild  ,
RealignBoneToChild   
)
VFNT_0 ( resetBoneStretch  ,
ResetBoneStretch   
)
PROP_FNS ( getPrimaryVisibility  ,
GetPrimaryVisibility  ,
setPrimaryVisibility  ,
SetPrimaryVisibility  ,
TYPE_BOOL   
)
PROP_FNS ( getSecondaryVisibility  ,
GetSecondaryVisibility  ,
setSecondaryVisibility  ,
SetSecondaryVisibility  ,
TYPE_BOOL   
)
PROP_FNS ( getApplyAtmospherics  ,
ApplyAtmospherics  ,
setApplyAtmospherics  ,
SetApplyAtmospherics  ,
TYPE_BOOL   
)
PROP_FNS ( getCVertMode  ,
GetCVertMode  ,
setCVertMode  ,
SetCVertMode  ,
TYPE_INT   
)
PROP_FNS ( getShadeCVerts  ,
GetShadeCVerts  ,
setShadeCVerts  ,
SetShadeCVerts  ,
TYPE_INT   
)
PROP_FNS ( getVertexColorType  ,
GetVertexColorType  ,
setVertexColorType  ,
SetVertexColorType  ,
TYPE_ENUM   
)
PROP_FNS ( getVertexColorMapChannel  ,
GetVertexColorMapChannel  ,
setVertexColorMapChannel  ,
SetVertexColorMapChannel  ,
TYPE_INT   
)
RO_PROP_FN ( getNodeHandle  ,
GetHandle  ,
TYPE_DWORD   
)
END_FUNCTION_MAP CoreExport void CopyProperties ( INode from )
Remarks:
Calling this method copies the various display, rendering, bone and other general parameters from the "from" object. This is used in Edit(able) Spline and Edit(able) Patch to copy node settings into new nodes created by the "Detach" operations.
Parameters:
INode *frame A pointer to the INode to copy the properties from.

Reimplemented in INodeTransformed.


Member Data Documentation

const ULONG kNullHandle = 0 [static]

This represents the value of an invalid node handle.


INode INode INode INode INode INode INode INode INode INode
INode INode INode INode INode INode INode INode INode INode