Public Member Functions | Public Attributes

INodeTransformed Class Reference

Search for all occurrences

Detailed Description

See also:
Class INode, Modifier Stack Branching
Description:
This class provides a layer that will add in a transformation to the node's objectTM. Most methods pass through to the INode, except for the objectTM methods which pre-multiply in the given matrix. The methods of this class are the same as INode. See Class INode for details. Specifically see the methods related to INodeTransformed in INode - INodeTransformed methods. All methods of this class are implemented by the system.
Data Members:
INode *node;

The original INode pointer.

Matrix3 tm;

The additional transformation.

BOOL deleteMe;

If set to FALSE this INodeTransformed will not get deleted. This may be used if the object is not allocated dynamically. If you create an INodeTransformed on the stack you'll want to set deleteMe to FALSE.

#include <inode.h>

Inheritance diagram for INodeTransformed:
Inheritance graph
[legend]

List of all members.

Public Member Functions

  INodeTransformed (INode *n, Matrix3 tm, BOOL dm=TRUE)
void  DisposeTemporary ()
INode GetActualINode ()
MCHAR *  GetName ()
void  SetName (MCHAR *s)
Matrix3  GetNodeTM (TimeValue t, Interval *valid=NULL)
void  SetNodeTM (TimeValue t, Matrix3 &tm)
void  InvalidateTreeTM ()
void  InvalidateTM ()
void  InvalidateWS ()
void  InvalidateRect (TimeValue t, bool oldRect)
Matrix3  GetObjectTM (TimeValue time, Interval *valid=NULL)
Matrix3  GetObjTMBeforeWSM (TimeValue time, Interval *valid=NULL)
Matrix3  GetObjTMAfterWSM (TimeValue time, Interval *valid=NULL)
const ObjectState EvalWorldState (TimeValue time, BOOL evalHidden=TRUE)
INode GetParentNode ()
void  AttachChild (INode *node, int keepTM=1)
void  Detach (TimeValue t, int keepTM=1)
int  NumberOfChildren ()
INode GetChildNode (int i)
void  Delete (TimeValue t, int keepChildPosition)
void  Hide (BOOL onOff)
  Controls the hidden state of the node in the scene.
int  IsHidden (DWORD hflags=0, BOOL forRenderer=FALSE)
  Determines if the node is hidden in the scene.
int  IsNodeHidden (BOOL forRenderer=FALSE)
  Returns nonzero if the node is hidden in any way.
void  Freeze (BOOL onOff)
  Controls the frozen state of the node in the scene.
int  IsFrozen ()
  Determines if the node is frozen in any way in the scene.
void  SetShowFrozenWithMtl (BOOL onOff)
int  ShowFrozenWithMtl ()
void  XRayMtl (BOOL onOff)
  Set the X-Ray node property
int  HasXRayMtl ()
  Returns nonzero if the X-Ray Material display property is on for the node; otherwise zero.
void  IgnoreExtents (BOOL onOff)
  Ignore this node during zoom extents.
int  GetIgnoreExtents ()
  Is this node ignored during zoom extents.
void  BoxMode (BOOL onOff)
int  GetBoxMode ()
void  AllEdges (BOOL onOff)
int  GetAllEdges ()
void  VertTicks (int onOff)
int  GetVertTicks ()
void  BackCull (BOOL onOff)
int  GetBackCull ()
void  SetCastShadows (BOOL onOff)
int  CastShadows ()
void  SetRcvShadows (BOOL onOff)
int  RcvShadows ()
void  SetGenerateCaustics (BOOL onOff)
int  GenerateCaustics ()
void  SetRcvCaustics (BOOL onOff)
int  RcvCaustics ()
void  SetApplyAtmospherics (BOOL onOff)
int  ApplyAtmospherics ()
void  SetGenerateGlobalIllum (BOOL onOff)
int  GenerateGlobalIllum ()
void  SetRcvGlobalIllum (BOOL onOff)
int  RcvGlobalIllum ()
void  SetMotBlur (BOOL onOff)
int  MotBlur ()
float  GetImageBlurMultiplier (TimeValue t)
void  SetImageBlurMultiplier (TimeValue t, float m)
void  SetImageBlurMultController (Control *cont)
Control GetImageBlurMultController ()
BOOL  GetMotBlurOnOff (TimeValue t)
void  SetMotBlurOnOff (TimeValue t, BOOL m)
Control GetMotBlurOnOffController ()
void  SetMotBlurOnOffController (Control *cont)
void  SetRenderable (BOOL onOff)
int  Renderable ()
void  SetPrimaryVisibility (BOOL onOff)
int  GetPrimaryVisibility ()
void  SetSecondaryVisibility (BOOL onOff)
int  GetSecondaryVisibility ()
void  ShowBone (int boneVis)
void  BoneAsLine (int onOff)
BOOL  IsBoneShowing ()
BOOL  IsBoneOnly ()
DWORD  GetWireColor ()
void  SetWireColor (DWORD newcol)
int  IsRootNode ()
int  Selected ()
int  Dependent ()
int  IsTarget ()
void  SetIsTarget (BOOL b)
BOOL  GetTransformLock (int type, int axis)
void  SetTransformLock (int type, int axis, BOOL onOff)
INode GetTarget ()
INode GetLookatNode ()
Matrix3  GetParentTM (TimeValue t)
int  GetTargetTM (TimeValue t, Matrix3 &m)
Object GetObjectRef ()
void  SetObjectRef (Object *o)
Object GetObjOrWSMRef ()
Control GetTMController ()
BOOL  SetTMController (Control *m3cont)
Control GetVisController ()
void  SetVisController (Control *cont)
float  GetVisibility (TimeValue t, Interval *valid=NULL)
void  SetVisibility (TimeValue t, float vis)
float  GetLocalVisibility (TimeValue t, Interval *valid)
BOOL  GetInheritVisibility ()
void  SetInheritVisibility (BOOL onOff)
virtual void  SetRenderOccluded (BOOL onOff)
virtual BOOL  GetRenderOccluded ()
Mtl GetMtl ()
void  SetMtl (Mtl *matl)
Material Mtls ()
int  NumMtls ()
RenderData GetRenderData ()
void  SetRenderData (RenderData *rd)
void  SetObjOffsetPos (Point3 p)
Point3  GetObjOffsetPos ()
void  SetObjOffsetRot (Quat q)
Quat  GetObjOffsetRot ()
void  FlagForeground (TimeValue t, BOOL notify=TRUE)
int  IsActiveGrid ()
void  SetNodeLong (LONG_PTR l)
LONG_PTR  GetNodeLong ()
void  GetUserPropBuffer (MSTR &buf)
void  SetUserPropBuffer (const MSTR &buf)
BOOL  GetUserPropString (const MSTR &key, MSTR &string)
BOOL  GetUserPropInt (const MSTR &key, int &val)
BOOL  GetUserPropFloat (const MSTR &key, float &val)
BOOL  GetUserPropBool (const MSTR &key, BOOL &b)
void  SetUserPropString (const MSTR &key, const MSTR &string)
void  SetUserPropInt (const MSTR &key, int val)
void  SetUserPropFloat (const MSTR &key, float val)
void  SetUserPropBool (const MSTR &key, BOOL b)
BOOL  UserPropExists (const MSTR &key)
ULONG  GetGBufID ()
void  SetGBufID (ULONG id)
UWORD  GetRenderID ()
void  SetRenderID (UWORD id)
CoreExport void  SetObjOffsetScale (ScaleValue sv)
CoreExport ScaleValue  GetObjOffsetScale ()
void  CenterPivot (TimeValue t, BOOL moveObject)
void  AlignPivot (TimeValue t, BOOL moveObject)
void  WorldAlignPivot (TimeValue t, BOOL moveObject)
void  AlignToParent (TimeValue t)
void  AlignToWorld (TimeValue t)
void  ResetTransform (TimeValue t, BOOL scaleOnly)
void  ResetPivot (TimeValue t)
bool  MayResetTransform ()
void  Move (TimeValue t, const Matrix3 &tmAxis, const Point3 &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)
void  Rotate (TimeValue t, const Matrix3 &tmAxis, const AngAxis &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)
void  Rotate (TimeValue t, const Matrix3 &tmAxis, const Quat &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)
void  Scale (TimeValue t, const Matrix3 &tmAxis, const Point3 &val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)
BOOL  IsGroupMember ()
BOOL  IsGroupHead ()
BOOL  IsOpenGroupMember ()
BOOL  IsOpenGroupHead ()
void  SetGroupMember (BOOL b)
void  SetGroupHead (BOOL b)
void  SetGroupMemberOpen (BOOL b)
void  SetGroupHeadOpen (BOOL b)
RefResult  NotifyRefChanged (Interval changeInt, RefTargetHandle hTarget, PartID &partID, RefMessage message)
  Receives and responds to messages.
void  CopyProperties (INode *from)

Public Attributes

INode node
Matrix3  tm
BOOL  deleteMe

Constructor & Destructor Documentation

INodeTransformed ( INode n,
Matrix3  tm,
BOOL  dm = TRUE 
) [inline]
{node = n;this->tm = tm;deleteMe = dm;}

Member Function Documentation

void DisposeTemporary ( ) [inline, virtual]
Remarks:
Deletes this INodeTransformed.

Reimplemented from INode.

{node->DisposeTemporary(); if (deleteMe) DeleteINodeTransformed(this);}
INode* GetActualINode ( ) [inline, virtual]
Remarks:
Returns the actual INode pointer of this INodeTransformed.

These functions are not part of this class but are available for use:

INodeTransformed can be allocated on the stack, but if you need to create one dynamically, use these methods to create and delete them.

Reimplemented from INode.

{return node->GetActualINode();}
MCHAR* GetName ( ) [inline, virtual]
Remarks:
Returns the name of the node.

Implements INode.

{return node->GetName();}
void SetName ( MCHAR *  s ) [inline, virtual]
Remarks:
Sets the name of the node.
Parameters:
s The name of the node.

Implements INode.

{node->SetName(s);}
Matrix3 GetNodeTM ( TimeValue  t,
Interval valid = NULL 
) [inline, 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.

Implements INode.

{return node->GetNodeTM(t,valid);}
void SetNodeTM ( TimeValue  t,
Matrix3 tm 
) [inline, 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.

Implements INode.

{node->SetNodeTM(t,tm);}
void InvalidateTreeTM ( ) [inline, virtual]
Remarks:
This method will notify the node's subtree that the transformation matrix has changed. NotifyDependents() is called with the message REFMSG_CHANGE.

Implements INode.

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

Implements INode.

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

Implements INode.

void InvalidateRect ( TimeValue  t,
bool  oldRect 
) [inline, 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.

Implements INode.

{ node->InvalidateRect(t,oldRect); }
Matrix3 GetObjectTM ( TimeValue  time,
Interval valid = NULL 
) [inline, 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.

Implements INode.

{return tm*node->GetObjectTM(time,valid);}
Matrix3 GetObjTMBeforeWSM ( TimeValue  time,
Interval valid = NULL 
) [inline, 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.

Implements INode.

{return tm*node->GetObjTMBeforeWSM(time,valid);}
Matrix3 GetObjTMAfterWSM ( TimeValue  time,
Interval valid = NULL 
) [inline, 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.

Implements INode.

{return tm*node->GetObjTMAfterWSM(time,valid);}
const ObjectState& EvalWorldState ( TimeValue  time,
BOOL  evalHidden = TRUE 
) [inline, 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;
           }
        }

Implements INode.

{return node->EvalWorldState(time,evalHidden);}
INode* GetParentNode ( ) [inline, 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().

Implements INode.

{return node->GetParentNode();}
void AttachChild ( INode node,
int  keepTM = 1 
) [inline, 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.

Implements INode.

{node->AttachChild(node,keepTM);}
void Detach ( TimeValue  t,
int  keepTM = 1 
) [inline, 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.

Implements INode.

{node->Detach(t,keepTM);}
int NumberOfChildren ( ) [inline, virtual]
Remarks:
Returns the number of children of this node.

Implements INode.

{return node->NumberOfChildren();}
INode* GetChildNode ( int  i ) [inline, virtual]
Remarks:
Retrieves the 'i-th' child node of this node.
Parameters:
i Specifies the child node to retrieve.

Implements INode.

{return node->GetChildNode(i);}
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 from INode.

{ node->Delete(t,keepChildPosition); } 
void Hide ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->Hide(onOff);}
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 from INode.

{return node->IsHidden(hflags,forRenderer);}
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 from INode.

{ return node->IsNodeHidden(forRenderer); }
void Freeze ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->Freeze(onOff);}
int IsFrozen ( ) [inline, 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.

Implements INode.

{return node->IsFrozen();}
void SetShowFrozenWithMtl ( BOOL  onOff ) [inline, 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.

Implements INode.

int ShowFrozenWithMtl ( ) [inline, 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.

Implements INode.

{return node->ShowFrozenWithMtl();}
void XRayMtl ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->XRayMtl(onOff);}
int HasXRayMtl ( ) [inline, virtual]

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

Implements INode.

{return node->HasXRayMtl();}
void IgnoreExtents ( BOOL  onOff ) [inline, virtual]

Ignore this node during zoom extents.

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

Implements INode.

{node->IgnoreExtents(onOff);}
int GetIgnoreExtents ( ) [inline, virtual]

Is this node ignored during zoom extents.

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

Implements INode.

{return node->GetIgnoreExtents();}
void BoxMode ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->BoxMode(onOff);}
int GetBoxMode ( ) [inline, 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.

Implements INode.

{return node->GetBoxMode();}
void AllEdges ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->AllEdges(onOff);}
int GetAllEdges ( ) [inline, 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.

Implements INode.

{return node->GetAllEdges();}
void VertTicks ( int  onOff ) [inline, 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.

Implements INode.

{node->VertTicks(onOff);}
int GetVertTicks ( ) [inline, virtual]
Remarks:
This method returns the state of the vertex ticks display. TRUE if enabled; FALSE if disabled.

Implements INode.

{return node->GetVertTicks();}
void BackCull ( BOOL  onOff ) [inline, 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.

Implements INode.

{node->BackCull(onOff);}
int GetBackCull ( ) [inline, virtual]
Remarks:
Determines if back-face culling is being used to draw the node.
Returns:
Nonzero if back-face culling is used; otherwise 0.

Implements INode.

{return node->GetBackCull();}
void SetCastShadows ( BOOL  onOff ) [inline, 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.

Implements INode.

{ node->SetCastShadows(onOff); } 
int CastShadows ( ) [inline, 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.

Implements INode.

{ return node->CastShadows(); }
void SetRcvShadows ( BOOL  onOff ) [inline, 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.

Implements INode.

{ node->SetRcvShadows(onOff); }
int RcvShadows ( ) [inline, 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.

Implements INode.

{ return node->RcvShadows(); }
void SetGenerateCaustics ( BOOL  onOff ) [inline, virtual]

Reimplemented from INode.

{ node->SetGenerateCaustics(onOff); } 
int GenerateCaustics ( ) [inline, virtual]

Reimplemented from INode.

{ return node->GenerateCaustics(); }
void SetRcvCaustics ( BOOL  onOff ) [inline, virtual]

Reimplemented from INode.

{ node->SetRcvCaustics(onOff); }
int RcvCaustics ( ) [inline, virtual]

Reimplemented from INode.

{ return node->RcvCaustics(); }
void SetApplyAtmospherics ( BOOL  onOff ) [inline, 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.

Implements INode.

{ node->SetApplyAtmospherics(onOff); }
int ApplyAtmospherics ( ) [inline, virtual]
Remarks:
This method returns the on/off state of the "apply atmospherics" flag.

Implements INode.

{ return node->ApplyAtmospherics(); }
void SetGenerateGlobalIllum ( BOOL  onOff ) [inline, virtual]

Reimplemented from INode.

int GenerateGlobalIllum ( ) [inline, virtual]

Reimplemented from INode.

{ return node->GenerateGlobalIllum(); }
void SetRcvGlobalIllum ( BOOL  onOff ) [inline, virtual]

Reimplemented from INode.

{ node->SetRcvGlobalIllum(onOff); }
int RcvGlobalIllum ( ) [inline, virtual]

Reimplemented from INode.

{ return node->RcvGlobalIllum(); }
void SetMotBlur ( BOOL  onOff ) [inline]
int MotBlur ( ) [inline, 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.

Implements INode.

{ return node->MotBlur(); }
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 from INode.

{ return node->GetImageBlurMultiplier(t);}
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 from INode.

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 from INode.

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

Reimplemented from INode.

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 from INode.

{ return node->GetMotBlurOnOff(t); }
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 from INode.

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

Reimplemented from INode.

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 from INode.

void SetRenderable ( BOOL  onOff ) [inline, 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.

Implements INode.

{ node->SetRenderable(onOff); }
int Renderable ( ) [inline, virtual]
Remarks:
Returns nonzero if the renderable flag is on; zero if off.

Implements INode.

{ return node->Renderable(); }
void SetPrimaryVisibility ( BOOL  onOff ) [inline, 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.

Implements INode.

{ node->SetPrimaryVisibility(onOff); }
int GetPrimaryVisibility ( ) [inline, 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.

Implements INode.

{ return node->GetPrimaryVisibility(); }
void SetSecondaryVisibility ( BOOL  onOff ) [inline, 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.

Implements INode.

int GetSecondaryVisibility ( ) [inline, 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.

Implements INode.

{ return node->GetSecondaryVisibility(); }
void ShowBone ( int  boneVis ) [inline, 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.

Implements INode.

{node->ShowBone(boneVis);}
void BoneAsLine ( int  onOff ) [inline, 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.

Implements INode.

{node->BoneAsLine(onOff);}
BOOL IsBoneShowing ( ) [inline, virtual]
Remarks:
Returns TRUE if the node's bone is turned on; otherwise FALSE.

Implements INode.

{return node->IsBoneShowing();}
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 from INode.

{ return node->IsBoneOnly(); }
DWORD GetWireColor ( ) [inline, virtual]
Remarks:
Retrieves the node's wire-frame color. See COLORREF-DWORD format.

Implements INode.

{return node->GetWireColor();}
void SetWireColor ( DWORD  newcol ) [inline, 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);

Implements INode.

{node->SetWireColor(newcol);}
int IsRootNode ( ) [inline, 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.

Implements INode.

{return node->IsRootNode();}
int Selected ( ) [inline, virtual]
Remarks:
Determines if the node is selected.
Returns:
Nonzero if the node is selected; otherwise 0.

Implements INode.

{return node->Selected();}
int Dependent ( ) [inline, 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.

Implements INode.

{return node->Dependent();}
int IsTarget ( ) [inline, virtual]
Remarks:
Determines if the node is a target node of a lookat controller.
Returns:
Nonzero if the node is a target; otherwise 0.

Implements INode.

{return node->IsTarget();}
void SetIsTarget ( BOOL  b ) [inline, 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.

Implements INode.

{ node->SetIsTarget(b);}
BOOL GetTransformLock ( int  type,
int  axis 
) [inline, 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.

Implements INode.

{return node->GetTransformLock(type,axis);}
void SetTransformLock ( int  type,
int  axis,
BOOL  onOff 
) [inline, 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.

Implements INode.

{node->SetTransformLock(type,axis,onOff);}
INode* GetTarget ( ) [inline, virtual]
Remarks:
Retrieves this node's target node if any.
Returns:
NULL if this node has no target.

Implements INode.

{return node->GetTarget();}
INode* GetLookatNode ( ) [inline, 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.

Implements INode.

{return node->GetLookatNode();}
Matrix3 GetParentTM ( TimeValue  t ) [inline, 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.

Implements INode.

{return node->GetParentTM(t);}
int GetTargetTM ( TimeValue  t,
Matrix3 m 
) [inline, 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.

Implements INode.

{return node->GetTargetTM(t,m);}
Object* GetObjectRef ( ) [inline, 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.

Implements INode.

{return node->GetObjectRef();}
void SetObjectRef ( Object o ) [inline, 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.

Implements INode.

Object* GetObjOrWSMRef ( ) [inline, 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.

Implements INode.

{ return node->GetObjOrWSMRef();}  
Control* GetTMController ( ) [inline, 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. With this controller interface you can use its methods to get information about the keys. For example:
        int num = ikeys->GetNumKeys();

Implements INode.

{return node->GetTMController();}
BOOL SetTMController ( Control m3cont ) [inline, 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.

Implements INode.

{ return node->SetTMController(m3cont);}        
Control* GetVisController ( ) [inline, virtual]
Remarks:
Returns the visibility controller for this node.

Implements INode.

{return node->GetVisController();}
void SetVisController ( Control cont ) [inline, virtual]
Remarks:
Sets the visibility controller for this node.
Parameters:
cont The controller to use for visibility control.

Implements INode.

float GetVisibility ( TimeValue  t,
Interval valid = NULL 
) [inline, 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.

Implements INode.

{return node->GetVisibility(t,valid);}
void SetVisibility ( TimeValue  t,
float  vis 
) [inline, 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.

Implements INode.

{ node->SetVisibility(t,vis); }
float GetLocalVisibility ( TimeValue  t,
Interval valid 
) [inline, 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.

Implements INode.

{ return node->GetLocalVisibility(t,valid); }
BOOL GetInheritVisibility ( ) [inline, virtual]
Remarks:
Returns TRUE if the node's visibility is determined by the visibility of the parent of the node; otherwise returns FALSE.

Implements INode.

{ return node->GetInheritVisibility(); }
void SetInheritVisibility ( BOOL  onOff ) [inline, 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).

Implements INode.

{ node->SetInheritVisibility(onOff); }
virtual void SetRenderOccluded ( BOOL  onOff ) [inline, virtual]
Remarks:
Sets the state of the node's 'Render Occluded Object' flag.
Parameters:
onOff TRUE for on; FALSE for off.

Implements INode.

{ node->SetRenderOccluded(onOff); }
virtual BOOL GetRenderOccluded ( ) [inline, virtual]
Remarks:
Returns TRUE if the node's 'Render Occluded Object' flag is set; otherwise FALSE.

Implements INode.

{ return node->GetRenderOccluded(); }
Mtl* GetMtl ( ) [inline, 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.

Implements INode.

{ return node->GetMtl(); }
void SetMtl ( Mtl matl ) [inline, 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.

Implements INode.

{ node->SetMtl(matl); }
Material* Mtls ( ) [inline, virtual]
Remarks:
Returns a pointer to the GraphicsWindow materials. See NumMtls() below for the number of entries in this array.

Implements INode.

{ return node->Mtls(); }    
int NumMtls ( ) [inline, virtual]
Remarks:
Returns the number of entries in the array of Materials returned by Mtls() above.

Implements INode.

{ return node->NumMtls(); }
RenderData* GetRenderData ( ) [inline, virtual]
Remarks:
Returns the render data for the node. See Class RenderData.

Implements INode.

{return node->GetRenderData();}
void SetRenderData ( RenderData rd ) [inline, 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.

Implements INode.

void SetObjOffsetPos ( Point3  p ) [inline, 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.

Implements INode.

Point3 GetObjOffsetPos ( ) [inline, 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.

Implements INode.

{return node->GetObjOffsetPos();}
void SetObjOffsetRot ( Quat  q ) [inline, 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.

Implements INode.

Quat GetObjOffsetRot ( ) [inline, 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.

Implements INode.

{return node->GetObjOffsetRot();}       
void FlagForeground ( TimeValue  t,
BOOL  notify = TRUE 
) [inline, 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.

Implements INode.

{node->FlagForeground(t,notify);}
int IsActiveGrid ( ) [inline, 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.

Implements INode.

{return node->IsActiveGrid();}
void SetNodeLong ( LONG_PTR  l ) [inline, 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.

Implements INode.

{node->SetNodeLong(l);}
LONG_PTR GetNodeLong ( ) [inline, virtual]
Remarks:
Returns the value set by SetNodeLong

Implements INode.

{return node->GetNodeLong();}
void GetUserPropBuffer ( MSTR buf ) [inline, 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.

Implements INode.

void SetUserPropBuffer ( const MSTR buf ) [inline, 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.

Implements INode.

BOOL GetUserPropString ( const MSTR key,
MSTR string 
) [inline, 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.

Implements INode.

{return node->GetUserPropString(key,string);}
BOOL GetUserPropInt ( const MSTR key,
int &  val 
) [inline, 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.

Implements INode.

{return node->GetUserPropInt(key,val);}
BOOL GetUserPropFloat ( const MSTR key,
float &  val 
) [inline, 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.

Implements INode.

{return node->GetUserPropFloat(key,val);}
BOOL GetUserPropBool ( const MSTR key,
BOOL &  b 
) [inline, 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.

Implements INode.

{return node->GetUserPropBool(key,b);}
void SetUserPropString ( const MSTR key,
const MSTR string 
) [inline, 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.

Implements INode.

{node->SetUserPropString(key,string);}
void SetUserPropInt ( const MSTR key,
int  val 
) [inline, 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.

Implements INode.

{node->SetUserPropInt(key,val);}
void SetUserPropFloat ( const MSTR key,
float  val 
) [inline, 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.

Implements INode.

{node->SetUserPropFloat(key,val);}
void SetUserPropBool ( const MSTR key,
BOOL  b 
) [inline, 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.

Implements INode.

{node->SetUserPropBool(key,b);}
BOOL UserPropExists ( const MSTR key ) [inline, 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.

Implements INode.

{return node->UserPropExists(key);}
ULONG GetGBufID ( ) [inline, 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.

Implements INode.

{ return node->GetGBufID(); }
void SetGBufID ( ULONG  id ) [inline, 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.

Implements INode.

{ node->SetGBufID(id); }
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 from INode.

{ return node->GetRenderID(); }
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 from INode.

{ node->SetRenderID(id); }
CoreExport void SetObjOffsetScale ( ScaleValue  sv ) [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.

Implements INode.

CoreExport ScaleValue GetObjOffsetScale ( ) [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.

Implements INode.

void CenterPivot ( TimeValue  t,
BOOL  moveObject 
) [inline, 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

Implements INode.

{ node->CenterPivot(t,moveObject); }
void AlignPivot ( TimeValue  t,
BOOL  moveObject 
) [inline, 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

Implements INode.

{ node->AlignPivot(t,moveObject); }
void WorldAlignPivot ( TimeValue  t,
BOOL  moveObject 
) [inline, 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

Implements INode.

{ node->WorldAlignPivot(t,moveObject); }
void AlignToParent ( TimeValue  t ) [inline, virtual]
Remarks:
Aligns the pivot to the node's parent's pivot, or to world if no parent.
Parameters:
[in] t - not used

Implements INode.

{ node->AlignToParent(t); }
void AlignToWorld ( TimeValue  t ) [inline, virtual]
Remarks:
Aligns the pivot to the to world
Parameters:
[in] t - not used

Implements INode.

{ node->AlignToWorld(t); }
void ResetTransform ( TimeValue  t,
BOOL  scaleOnly 
) [inline, 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

Implements INode.

{ node->ResetTransform(t,scaleOnly); }
void ResetPivot ( TimeValue  t ) [inline, virtual]
Remarks:
Resets the pivot transform. The effect is the same as Hierarchy Panel/Pivot/Reset Pivot
Parameters:
[in] t - not used

Implements INode.

{ node->ResetPivot(t); }
bool MayResetTransform ( ) [inline, 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

Implements INode.

{ return node->MayResetTransform(); }
void Move ( TimeValue  t,
const Matrix3 tmAxis,
const Point3 val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [inline, 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.

Implements INode.

{node->Move(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
void Rotate ( TimeValue  t,
const Matrix3 tmAxis,
const AngAxis val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [inline, 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.

Implements INode.

{node->Rotate(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
void Rotate ( TimeValue  t,
const Matrix3 tmAxis,
const Quat val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [inline, 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.

Implements INode.

{node->Rotate(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
void Scale ( TimeValue  t,
const Matrix3 tmAxis,
const Point3 val,
BOOL  localOrigin = FALSE,
BOOL  affectKids = TRUE,
int  pivMode = PIV_NONE,
BOOL  ignoreLocks = FALSE 
) [inline, 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.

Implements INode.

{node->Scale(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
BOOL IsGroupMember ( ) [inline, virtual]
Remarks:
Returns TRUE if this node is a member of a group; otherwise FALSE.

Implements INode.

{return node->IsGroupMember();}
BOOL IsGroupHead ( ) [inline, virtual]
Remarks:
Returns TRUE if this node is the head of a group; otherwise FALSE.

Implements INode.

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

Reimplemented from INode.

{return node->IsOpenGroupMember();}
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 from INode.

{return node->IsOpenGroupHead();}
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 from INode.

{ node->SetGroupMember(b); }
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 from INode.

{ node->SetGroupHead(b); }
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 from INode.

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 from INode.

RefResult NotifyRefChanged ( Interval  changeInt,
RefTargetHandle  hTarget,
PartID partID,
RefMessage  message 
) [inline, virtual]

Receives and responds to messages.

A plugin which makes references must implement a method to receive and respond to messages broadcast by its dependents. This is done by implementing NotifyRefChanged(). The plugin developer usually implements this method as a switch statement where each case is one of the messages the plugin needs to respond to. The Method StdNotifyRefChanged calls this, which can change the partID to new value. If it doesn't depend on the particular message& partID, it should return REF_DONTCARE.

  • For developer that need to update a dialog box with data about an object you reference note the following related to this method: This method may be called many times. For instance, say you have a dialog box that displays data about an object you reference. This method will get called many time during the drag operations on that object. If you updated the display every time you'd wind up with a lot of 'flicker' in the dialog box. Rather than updating the dialog box each time, you should just invalidate the window in response to the NotifyRefChanged() call. Then, as the user drags the mouse your window will still receive paint messages. If the scene is complex the user may have to pause (but not let up on the mouse) to allow the paint message to go through since they have a low priority. This is the way many windows in 3ds Max work.
Parameters:
changeInt - This is the interval of time over which the message is active. Currently, all plug-ins will receive FOREVER for this interval.
hTarget - This is the handle of the reference target the message was sent by. The reference maker uses this handle to know specifically which reference target sent the message.
partID - This contains information specific to the message passed in. Some messages don't use the partID at all. See the section List of Reference Messages for more information about the meaning of the partID for some common messages.
message - The message parameters passed into this method is the specific message which needs to be handled.
Returns:
The return value from this method is of type RefResult. This is usually REF_SUCCEED indicating the message was processed. Sometimes, the return value may be REF_STOP. This return value is used to stop the message from being propagated to the dependents of the item.

Implements ReferenceMaker.

                                             {return REF_SUCCEED;}
void CopyProperties ( INode from ) [inline]
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 from INode.

{node->CopyProperties(from);}

Member Data Documentation

BOOL deleteMe

INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed
INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed INodeTransformed