This reference page is linked to from the following overview topics: Lesson 3: the reference system, Writing Reference Makers, Writing Reference Targets, Implementing Clone in a Plug-in, Creating and Changing References, Reference System Best Practices, Supporting Save to Previous, Handling Reference Messages, Reference Hierarchy Functions, Cloning Reference Targets, Incremental Improvements, Reference Messages During Animation.
#include "BuildWarnings.h"
#include "maxheap.h"
#include "strbasic.h"
#include "noncopyable.h"
#include "autoptr.h"
#include <WTypes.h>
#include "CoreExport.h"
#include "Animatable.h"
#include "AnimatableFlags.h"
#include "hold.h"
#include "channels.h"
Classes |
|
class | RemapDir |
For remapping references during a Clone.
More... |
|
class | PostPatchProc |
class | DependentEnumProc |
A callback class for enumerating dependents.
More... |
|
class | SaveEnumProc |
A callback class for saving dependents.
More... |
|
class | DefaultRemapDir |
Implements a default version of a RemapDir. More... |
|
class | ReferenceMaker |
A scene entity that owns other scene
entities and listens to messages from them. More... |
|
class | ReferenceTarget |
A scene entity that is being owned and
listened to by other scene entities. More... |
|
class | ReferenceTarget::RefListItem |
Reference list link-node. |
|
class | ReferenceTarget::RefList |
Stores the list of dependents for a
ReferenceTargets, i.e. the list of references to a
ReferenceTarget. |
|
class | DependentIterator |
Iterates through all direct dependents of a
given
ReferenceTarget. More... |
|
class | DeletedRestore |
class | RefEnumProc |
A callback class for ReferenceMaker::EnumRefHierarchy.
More... |
|
class | GlobalReferenceMaker |
This class lets you tap in to ALL reference
messages in the entire system. More... |
|
class | GlobalReferenceMaker::GlobalReferenceDisableGuard |
This class is used to temporarily disable
global reference makers.
More... |
|
class | SingleRefMaker |
Reference Maker to single entity. More... |
|
class | AnimateSuspend |
Suspends the "animate" mode in an exception
safe manner. More... |
|
class | SuspendAll |
Suspends various system states in an
exception safe manner. More... |
|
Namespaces |
|
namespace | MaxSDK |
Defines |
|
#define | PART_TOPO TOPO_CHANNEL |
See TOPO_CHANNEL.
|
|
#define | PART_GEOM GEOM_CHANNEL |
See GEOM_CHANNEL.
|
|
#define | PART_TEXMAP TEXMAP_CHANNEL |
See TEXMAP_CHANNEL.
|
|
#define | PART_MTL MTL_CHANNEL |
See MTL_CHANNEL.
|
|
#define | PART_SELECT SELECT_CHANNEL |
See SELECT_CHANNEL.
|
|
#define | PART_SUBSEL_TYPE SUBSEL_TYPE_CHANNEL |
See SUBSEL_TYPE_CHANNEL.
|
|
#define | PART_DISPLAY DISP_ATTRIB_CHANNEL |
See DISP_ATTRIB_CHANNEL.
|
|
#define | PART_VERTCOLOR VERTCOLOR_CHANNEL |
See VERTCOLOR_CHANNEL.
|
|
#define | PART_GFX_DATA GFX_DATA_CHANNEL |
See GFX_DATA_CHANNEL.
|
|
#define | PART_DISP_APPROX DISP_APPROX_CHANNEL |
See DISP_APPROX_CHANNEL.
|
|
#define | PART_EXTENSION EXTENSION_CHANNEL |
See EXTENSION_CHANNEL.
|
|
#define | PART_TM_CHAN TM_CHANNEL |
Transform Channel.
|
|
#define | PART_MTL_CHAN GLOBMTL_CHANNEL |
Material Channel.
|
|
#define | PART_OBJECT_TYPE (1<<11) |
The type of object in the pipeline changed.
|
|
#define | PART_TM (1<<12) |
node transform matrix
|
|
#define | PART_OBJ (PART_TOPO|PART_GEOM) |
Combination of PART_TOPO and PART_GEOM.
|
|
#define | PART_ALL (ALL_CHANNELS|PART_TM) |
Combination of ALL_CHANNELS and PART_TM.
|
|
#define | PART_GI_EXCLUDED (1<<0) |
Excluded.
|
|
#define | PART_GI_OCCLUDER (1<<1) |
Excluder.
|
|
#define | PART_GI_RECEIVER (1<<2) |
Receiver.
|
|
#define | PART_GI_DIFFUSE (1<<3) |
Diffuse.
|
|
#define | PART_GI_SPECULAR (1<<4) |
Specular.
|
|
#define | PART_GI_NBREFINESTEPS (1<<5) |
Refine Steps.
|
|
#define | PART_GI_MESHSIZE (1<<6) |
Mesh Size.
|
|
#define | PART_GI_MESHINGENABLED (1<<7) |
Meshing Enabled.
|
|
#define | PART_GI_USEGLOBALMESHING (1<<8) |
Use Global Meshing.
|
|
#define | PART_GI_EXCLUDEFROMREGATHERING (1<<9) |
Exclude From Regathering.
|
|
#define | PART_GI_STOREILLUMMESH (1<<10) |
Store Illumination
Mesh.
|
|
#define | PART_GI_RAYMULT (1<<11) |
Ray
Multiplier.
|
|
#define | PART_GI_USE_ADAPTIVE_SUBDIVISION (1<<12) |
Use Adaptive Subdivision.
|
|
#define | PART_GI_MIN_MESH_SIZE (1<<13) |
Minium
Mesh size.
|
|
#define | PART_GI_INITIAL_MESH_SIZE (1<<14) |
Initial
Mesh size.
|
|
#define | PART_GI_CONTRAST_THRESHOLD (1<<15) |
Contrast Threshold.
|
|
#define | PART_REND_PROP_RENDERABLE (1<<0) |
Renderable.
|
|
#define | PART_REND_PROP_CAST_SHADOW (1<<1) |
Cast Shadow.
|
|
#define | PART_REND_PROP_RCV_SHADOW (1<<2) |
Recieve Shadow.
|
|
#define | PART_REND_PROP_RENDER_OCCLUDED (1<<3) |
Render Occluded.
|
|
#define | PART_REND_PROP_VISIBILITY (1<<4) |
Visibility.
|
|
#define | PART_REND_PROP_INHERIT_VIS (1<<5) |
Inherit Visibility.
|
|
#define | PART_REND_PROP_PRIMARY_INVISIBILITY (1<<6) |
Primary Visibility.
|
|
#define | PART_REND_PROP_SECONDARY_INVISIBILITY (1<<7) |
Secondary Visibility.
|
|
#define | PART_DISP_PROP_IS_HIDDEN (1<<0) |
Is hidden.
|
|
#define | PART_DISP_PROP_IS_FROZEN (1<<1) |
Is frozen.
|
|
#define | PART_DISP_PROP_SHOW_FRZN_WITH_MTL (1<<2) |
Show frozen with material.
|
|
#define | PART_DISP_PROP_BOX_MODE (1<<3) |
Box mode.
|
|
#define | PART_DISP_PROP_BACKCULL (1<<4) |
Backface culling.
|
|
#define | PART_DISP_PROP_ALL_EDGES (1<<5) |
All edges.
|
|
#define | PART_DISP_PROP_BONE_ONLY (1<<6) |
Bones only.
|
|
#define | PART_DISP_PROP_BONE_AS_LINE (1<<7) |
Bones as lines.
|
|
#define | PART_DISP_PROP_SHOW_PATH (1<<8) |
Show path.
|
|
#define | PART_DISP_PROP_VERT_TICKS (1<<9) |
Vertex ticks.
|
|
#define | PART_DISP_PROP_XRAY_MTL (1<<10) |
XRay material.
|
|
#define | PART_DISP_PROP_IGNORE_EXTENTS (1<<11) |
Ignore extents.
|
|
#define | PART_DISP_PROP_COLOR_VERTS (1<<12) |
Vertex colors.
|
|
#define | PART_EXCLUDE_RADIOSITY (1<<29) |
Special part ID that prevents the radiosity
engine from processing the change. |
|
#define | PART_HIDESTATE (1<<30) |
Special part ID sent by visibility
controllers. |
|
#define | PART_MXS_PROPCHANGE (1<<16) |
Special part ID sent by MAXScript when it
changes an object's parameter. |
|
#define | REFMSG_LOOPTEST 0x00000010 |
This tests for a cyclic reference. It will
return REF_FAIL if there is a loop.
|
|
#define | REFMSG_TARGET_DELETED 0x00000020 |
This message is sent when a
ReferenceTarget is deleted.
|
|
#define | REFMSG_MODAPP_DELETING 0x00000021 |
Used Internally.
|
|
#define | REFMSG_EVAL 0x00000030 |
Used Internally.
|
|
#define | REFMSG_RESET_ORIGIN 0x00000040 |
Used Internally.
|
|
#define | REFMSG_CHANGE 0x00000050 |
Sent to dependents of a
ReferenceTarget that has changed in some way.
|
|
#define | REFMSG_FLAGDEPENDENTS 0x00000070 |
Used Internally.
|
|
#define | REFMSG_TARGET_SELECTIONCHANGE 0x00000080 |
Used Internally.
|
|
#define | REFMSG_BEGIN_EDIT 0x00000090 |
This is used by modifiers to indicate when
they are beginning an edit.
|
|
#define | REFMSG_END_EDIT 0x000000A0 |
This is used by modifiers to indicate when
they are ending an edit.
|
|
#define | REFMSG_DISABLE 0x000000B0 |
Used Internally.
|
|
#define | REFMSG_ENABLE 0x000000C0 |
Used Internally.
|
|
#define | REFMSG_TURNON 0x000000D0 |
Used Internally.
|
|
#define | REFMSG_TURNOFF 0x000000E0 |
Used Internally.
|
|
#define | REFMSG_LOOKAT_TARGET_DELETED 0x000000F0 |
Used Internally.
|
|
#define | REFMSG_INVALIDATE_IF_BG 0x000000F1 |
Used Internally.
|
|
#define | REFMSG_MOD_DISPLAY_ON 0x000000F2 |
This is used by modifiers to indicate that
their apparatus (gizmo) is displayed.
|
|
#define | REFMSG_MOD_DISPLAY_OFF 0x000000F3 |
This is used by modifiers to indicate that
their apparatus (gizmo) is no longer displayed.
|
|
#define | REFMSG_MOD_EVAL 0x000000F4 |
Modifier uses this to tell Modapps to call their Eval()
procedure.
|
|
#define | REFMSG_IS_OK_TO_CHANGE_TOPOLOGY 0x000000F5 |
Ask if it is ok to change topology.
|
|
#define | REFMSG_NODE_LINK 0x000000F6 |
Sent by a node when it has a child linked to
it or unlinked from it.
|
|
#define | REFMSG_NODE_NAMECHANGE 0x000000F7 |
Sent by a node when it's name has been
changed.
|
|
#define | REFMSG_OBREF_CHANGE 0x000000F8 |
DEPRECATED Sent by a node (or derived
object) when the object it references changes.
|
|
#define | REFMSG_MODIFIER_ADDED 0x000000F9 |
Sent by a derived object when a modifier is
a added or deleted.
|
|
#define | REFMSG_CONTROLREF_CHANGE 0x000000FA |
Sent when an animatable switches controllers
for one of it's parameters.
|
|
#define | REFMSG_GET_PARAM_NAME 0x000000FB |
A parameter block sends the message to it's
client when it needs the anim name of the ith parameter.
|
|
#define | REFMSG_GET_PARAM_DIM 0x000000FC |
A parameter block sends this message to it's
client when it needs to know the dimension type of the ith
parameter.
|
|
#define | REFMSG_GET_CONTROL_DIM 0x000000FD |
A controller can send this to it's client to
get it's param dimension.
|
|
#define | REFMSG_TM_CHANGE 0x000000FE |
Sent when a Nodes transform matrix (TM) has
changed in a different time.
|
|
#define | REFMSG_RANGE_CHANGE 0x000000FF |
A node sends this message when it's
animation range changes.
|
|
#define | REFMSG_LINEHEIGHT_CHANGE 0x00000100 |
Sent to the tree view when an animatable's
line height changes.
|
|
#define | REFMSG_BECOMING_ANIMATED 0x00000101 |
A controller should send this message to the
track view when it becomes animated.
|
|
#define | REFMSG_SUBANIM_STRUCTURE_CHANGED 0x00000102 |
Used in the TrackView to regenerate an
objects sub components.
|
|
#define | REFMSG_REF_DELETED 0x00000103 |
A target has had a reference deleted.
|
|
#define | REFMSG_REF_ADDED 0x00000104 |
A target has had a reference added.
|
|
#define | REFMSG_BRANCHED_HISTORY_CHANGED 0x00000105 |
Sent by an object that provides branching in
the history to notify that the structure of the branches changed.
|
|
#define | REFMSG_NODEINSELSET_CHANGED 0x00000106 |
The selection set sends this notification
when it receives
REFMSG_CHANGE from an item in the selection set.
|
|
#define | REFMSG_TEST_DEPENDENCY 0x00000107 |
This method is used to see if this reference
target depends on something.
|
|
#define | REFMSG_WANT_SHOWPARAMLEVEL 0x00000108 |
Queries whether to display "Parameters" in
the track view.
|
|
#define | REFMSG_BEFORE_PASTE 0x00000109 |
Sent before a paste has been done.
|
|
#define | REFMSG_NOTIFY_PASTE 0x0000010A |
Sent after a paste has been done.
|
|
#define | REFMSG_UV_SYM_CHANGE 0x0000010B |
Sent when a UV Generator changes symmetry,
so interactive texture display updates.
|
|
#define | REFMSG_GET_NODE_NAME 0x0000010C |
Gets the node's name.
|
|
#define | REFMSG_SEL_NODES_DELETED 0x0000010D |
Sent by the selection set whenever it has
just deleted nodes.
|
|
#define | REFMSG_PRENOTIFY_PASTE 0x0000010E |
Sent before a reference target is pasted.
Sent by the target about to be replaced.
|
|
#define | REFMSG_SHAPE_START_CHANGE 0x0000010F |
Sent when a shape starts changing.
|
|
#define | REFMSG_SHAPE_END_CHANGE 0x00000110 |
Sent when a shape stops changing.
|
|
#define | REFMSG_TEXMAP_REMOVED 0x00000111 |
A texture map has been removed.
|
|
#define | REFMSG_FLAG_NODES_WITH_SEL_DEPENDENTS 0x00000112 |
Sent by an unselected node to see if any
selected nodes depend on it.
|
|
#define | REFMSG_CONTAINED_SHAPE_POS_CHANGE 0x00000120 |
Sent by objects which contain shapes when
the shape position changes.
|
|
#define | REFMSG_CONTAINED_SHAPE_SEL_CHANGE 0x00000121 |
Sent by objects which contain shapes when
the shape position changes.
|
|
#define | REFMSG_CONTAINED_SHAPE_GENERAL_CHANGE 0x00000122 |
Sent by objects which contain shapes when
general changes occur.
|
|
#define | REFMSG_SELECT_BRANCH 0x00000130 |
Select sub-object branch.
|
|
#define | REFMSG_MOUSE_CYCLE_STARTED 0x00000140 |
Sent when a user begins a mouse operation in
the viewport.
|
|
#define | REFMSG_MOUSE_CYCLE_COMPLETED 0x00000150 |
Sent when a user ends a mouse operation in
the viewport.
|
|
#define | REFMSG_CHECK_FOR_INVALID_BIND 0x00000161 |
Sent when linking nodes.
|
|
#define | REFMSG_OBJECT_CACHE_DUMPED 0x00000162 |
Sent when a cache is dumped in the pipeline.
|
|
#define | REFMSG_SFX_CHANGE 0x00000170 |
Sent by Atmospheric or Effect when it makes or deletes a reference
to a node.
|
|
#define | REFMSG_OBJXREF_UPDATEMAT 0x00000180 |
For internal use only.
|
|
#define | REFMSG_OBJXREF_UPDATECTRL 0x00000181 |
For internal use only.
|
|
#define | REFMSG_OBJECT_REPLACED 0x00000200 |
Sent when objects are replaced from another
scene (File->Replace).
|
|
#define | REFMSG_NODE_WIRECOLOR_CHANGED 0x00000210 |
Sent when nodes wireframe color is changed.
|
|
#define | REFMSG_NUM_SUBOBJECTTYPES_CHANGED 0x00000211 |
Indicates that the subobject types have
changed and that the StackView should be updated.
|
|
#define | REFMSG_GET_NODE_HANDLE 0x00000220 |
Returns a unique (per session) node handle
integer.
|
|
#define | REFMSG_END_MODIFY_PARAMS 0x00000230 |
This will cause EndEditParams to be called
on the object displayed in the modify panel.
|
|
#define | REFMSG_BEGIN_MODIFY_PARAMS 0x00000231 |
This will cause BeginEditParams to be called
on the object displayed in the modify panel.
|
|
#define | REFMSG_TAB_ELEMENT_NULLED 0x00000232 |
Sent when a Tab<> is deleted.
|
|
#define | REFMSG_NODE_HANDLE_CHANGED 0x00000233 |
Sent to merged objects so that they can
convert node handles.
|
|
#define | REFMSG_NODE_WSCACHE_UPDATED 0x00000234 |
The pipeline was reevaluated and the wscache
was updated.
|
|
#define | REFMSG_NODE_MATERIAL_CHANGED 0x00000235 |
This notification is sent after a new
material was assigned to a node.
|
|
#define | REFMSG_SUBANIM_NUMBER_CHANGED 0x00000236 |
This notification is sent to dependents when
a subanim's changes order.
|
|
#define | REFMSG_NODE_FLAGOMB_RENDER 0x00000237 |
A Node is rendered with motion blur.
|
|
#define | REFMSG_NODE_GI_PROP_CHANGED 0x00000238 |
For Internal use only.
|
|
#define | REFMSG_KEY_SELECTION_CHANGED 0x00000239 |
Sent when key selection changes.
|
|
#define | REFMSG_NODE_RENDERING_PROP_CHANGED 0x00000240 |
Sent AFTER the Node Rendering Properties
have changed The part id will contain information about the
property that has changed.
|
|
#define | REFMSG_NODE_DISPLAY_PROP_CHANGED 0x00000241 |
Notification sent AFTER the Node Display
Properties have changed.
|
|
#define | REFMSG_MXS_CUSTATTRIB_CHANGE 0x00000250 |
Message type propagated to dependents of
scripted Custom Attribute (CA) when CA gets a
REFMSG_CHANGE.
|
|
#define | REFMSG_NODE_PRE_DELETE 0x00000255 |
This message is sent immediately prior to a
node being deleted.
|
|
#define | REFMSG_LOCKED 0x00000260 |
This message is sent after an item has been
locked.
|
|
#define | REFMSG_UNLOCKED 0x00000261 |
This message is sent after an item has been
unlocked.
|
|
#define | REFMSG_OBJECT_DEFINITION_CHANGE_BEGIN 0x00000270 |
This message is sent immediately before an
object instance is updated to a new object definition.
|
|
#define | REFMSG_OBJECT_DEFINITION_CHANGE_END 0x00000271 |
This message is sent immediately after an
object instance is updated to a new object definition.
|
|
#define | REFMSG_DISPLAY_MATERIAL_CHANGE 0x00000300 |
Notification sent when any parameters of the
material or texture map changed.
|
|
#define | REFMSG_USER 0x00010000 |
Message numbers above this value can be
defined for use by sub-classes, below are reserved.
|
|
#define | VALID(x) (x) |
#define | NOTIFY_ALL 0xfffffff0 |
If this super class is passed to
NotifyDependents() all dependents will be notified. |
|
#define | REFERENCE_MAKER_INTERFACE 0x2f96f73 |
A ULONG Interface Id to determine if an
Animatable is a
Reference Maker or
Target. |
|
#define | REFERENCE_TARGET_INTERFACE 0x66b073ea |
A ULONG Interface Id to determine if an
Animatable is a
Reference Maker or
Target. |
|
PartIDs when notify dependents is called
with REFMSG_FLAGDEPENDENTS
|
|
|
|
#define | PART_PUT_IN_FG (1<<0) |
Put in Foreground. |
|
#define | PART_SHOW_DEPENDENCIES (1<<1) |
Show dependencies. |
|
#define | PART_SHOWDEP_ON (1<<2) |
Show dependencies on. |
|
Defines XRef Messages
|
|
Sent to build a list of nodes which use a particular XRef object. |
|
#define | REFMSG_OBJXREF_GETNODES 0x00000190 |
For Internal use only.
|
|
#define | REFMSG_CTRLXREF_GETNODES 0x00000191 |
For internal use only.
|
|
#define | REFMSG_MTLXREF_GETNODES 0x00000192 |
For internal use only.
|
|
Messages sent from ReferenceMaker to
ReferenceTarget
|
|
#define | TARGETMSG_USER 0x00010000 |
Codes used by a
ReferenceMaker to send 'reverse' notification messages to a
RefTarget.
|
|
#define | TARGETMSG_ATTACHING_NODE 0x00000010 |
Send to a Node's ObjectRef when the node is
attaching the object to itself.
|
|
#define | TARGETMSG_DELETING_NODE 0x00000020 |
Send to a Node's ObjectRef when the node is
about to be explicitly deleted.
|
|
#define | TARGETMSG_DETACHING_NODE 0x00000030 |
Send to a Node's ObjectRef when the node is
detaching the object from itself.
|
|
Defines enumeration return values
|
|
Possible return values for RefEnumProc::proc() |
|
#define | DEP_ENUM_CONTINUE 0 |
Continues enumeration. |
|
#define | DEP_ENUM_HALT 1 |
Halts enumeration. |
|
#define | DEP_ENUM_SKIP 2 |
Skip enumeration. |
|
#define | REF_ENUM_CONTINUE 0 |
Continues enumeration. |
|
#define | REF_ENUM_HALT 1 |
Halts enumeration. |
|
#define | REF_ENUM_SKIP 2 |
Skip enumeration. |
|
Typedefs |
|
typedef void * | ReferenceData |
typedef unsigned int | TargetParam |
typedef ULONG_PTR | PartID |
This is NOT just a bitmask, the parameter is
also used to stuff pointers, hence the ULONG_PTR. |
|
typedef unsigned int | RefMessage |
The message passed to notify and evaluate.
|
|
typedef ReferenceTarget * | RefTargetHandle |
Creates a typename for
ReferenceTarget pointers. |
|
typedef ReferenceMaker * | RefMakerHandle |
Creates a typename for
ReferenceMaker pointers. |
|
Enumerations |
|
enum | RefResult
{ REF_FAIL = 0, REF_HALT = 0, REF_SUCCEED, REF_DONTCARE, REF_STOP, REF_INVALID, REF_AUTO_DELETE } |
Return codes for reference handling and
message processing methods. More... |
|
Functions |
|
CoreExport RemapDir * | NewRemapDir (BOOL use_A_WORK2_flag=FALSE) |
Gets a pointer to a default version of a
RemapDir. |
|
CoreExport ReferenceTarget * | CloneRefHierarchy (ReferenceTarget *rm) |
This function is used to clone a single
ReferenceTarget. |
|
CoreExport void | RegisterGlobalReference (GlobalReferenceMaker *maker) |
Registers an instance of this class whose
NotifyRefChanged() method will receive the messages. |
|
CoreExport void | UnRegisterGlobalReference (GlobalReferenceMaker *maker) |
Unregisters the class so it won't be called
anymore. |
|
CoreExport void | ClearAFlagInHierarchy (RefMakerHandle rm, DWORD mask) |
Clears the specified Animatable Flag bits in a reference
hierarchy. |
|
CoreExport void | ClearAFlagInAllAnimatables (DWORD mask) |
Clears the specified Animatable Flag bits on all
Animatables. |
|
CoreExport BOOL | DependsOn (RefMakerHandle mkr, RefMakerHandle targ) |
Checks if there is a path of references from
a
ReferenceMaker to a
ReferenceTarget. |
|
CoreExport DWORD | GetSavingVersion () |
Function to find out if we are saving an old
version of a .MAX file. |
|
CoreExport DWORD | SetSavingVersion (DWORD version) |
Function used internally to maintain the
SavingVersion number, which should not be called by plugins.
|
|
CoreExport void | DisableRefMsgs () |
Disable reference messages globally.
|
|
CoreExport void | EnableRefMsgs () |
Enable reference messages globally. |
#define NOTIFY_ALL 0xfffffff0 |
If this super class is passed to NotifyDependents() all dependents will be notified.
#define DEP_ENUM_CONTINUE 0 |
Continues enumeration.
#define DEP_ENUM_HALT 1 |
Halts enumeration.
#define DEP_ENUM_SKIP 2 |
Skip enumeration.
#define REFERENCE_MAKER_INTERFACE 0x2f96f73 |
A ULONG Interface Id to determine if an Animatable is a Reference Maker or Target.
#define REFERENCE_TARGET_INTERFACE 0x66b073ea |
A ULONG Interface Id to determine if an Animatable is a Reference Maker or Target.
#define REF_ENUM_CONTINUE 0 |
Continues enumeration.
#define REF_ENUM_HALT 1 |
Halts enumeration.
#define REF_ENUM_SKIP 2 |
Skip enumeration.
typedef void* ReferenceData |
typedef unsigned int TargetParam |
typedef ReferenceTarget* RefTargetHandle |
Creates a typename for ReferenceTarget pointers.
typedef ReferenceMaker* RefMakerHandle |
Creates a typename for ReferenceMaker pointers.
enum RefResult |
Return codes for reference handling and message processing methods.
REF_FAIL |
The operation failed. |
REF_HALT |
Return this from your implementation of ReferenceMaker::NotifyRefChanged() in order to immediately stop sending the reference message to dependents of the RefereneTarget the message originates from. |
REF_SUCCEED |
The operation succeeded. |
REF_DONTCARE |
The results of the operation don't matter. |
REF_STOP |
Return this from your implementation of ReferenceMaker::NotifyRefChanged() to stop propagating the reference message to your dependents, but allow it to be sent to the other dependents of the ReferenceTarget the message originates from. |
REF_INVALID |
Attempts to delete an invalid reference will return this value. |
REF_AUTO_DELETE |
Return this from your implementation of ReferenceMaker::NotifyRefChanged() in response to a REFMGS_TAGET_DELETED message to indicate that all the reference targets you depended on have been deleted, and you also wish to be deleted from the scene. |
{ REF_FAIL = 0, REF_HALT = 0, REF_SUCCEED, REF_DONTCARE, REF_STOP, REF_INVALID, REF_AUTO_DELETE };
CoreExport RemapDir* NewRemapDir | ( | BOOL | use_A_WORK2_flag =
FALSE |
) |
Gets a pointer to a default version of a RemapDir.
use_A_WORK2_flag | - used to set this flag on all entries in the remap directory. |
CoreExport ReferenceTarget* CloneRefHierarchy | ( | ReferenceTarget * | rm | ) |
This function is used to clone a single ReferenceTarget.
ReplaceReference(IPBLOCK,ipblock->Clone(DefaultRemapDir()));
you should say:
ReplaceReference(IPBLOCK,CloneRefHierarchy(ipblock));
If you are cloning multiple ReferenceTargets, you should be creating a RemapDir and cloning the ReferenceTargets using RemapDir::CloneRef. Otherwise, any common ReferenceTarget under the ReferenceTargets being cloned would be cloned as separate ReferenceTargets, rather than a single ReferenceTarget that is shared. So, for example:
RemapDir *remap = NewRemapDir(); ReplaceReference(ES_MASTER_CONTROL_REF, remap->CloneRef(from.masterCont)); ReplaceReference(ES_SLAVE_CONTROL_REF, remap->CloneRef(from.slaveCont)); remap->Backpatch(); remap->DeleteThis();
rm | - A pointer to the reference target to clone. |
CoreExport void RegisterGlobalReference | ( | GlobalReferenceMaker * | maker | ) |
Registers an instance of this class whose NotifyRefChanged() method will receive the messages.
maker | - Points to an instance of this class whose NotifyRefChanged() method will receive the messages |
CoreExport void UnRegisterGlobalReference | ( | GlobalReferenceMaker * | maker | ) |
Unregisters the class so it won't be called anymore.
maker | - Points to an instance of this class whose NotifyRefChanged() method will no longer receive the messages |
CoreExport void ClearAFlagInHierarchy | ( | RefMakerHandle | rm, |
DWORD | mask | ||
) |
Clears the specified Animatable Flag bits in a reference hierarchy.
This method calls ClearAFlag on the ReferenceMaker and all references from it, recursively, with the specified mask
rm | - The handle to the root ReferenceMaker to enumerate from |
mask | The bits to turn off in the Animatable flags |
CoreExport void ClearAFlagInAllAnimatables | ( | DWORD | mask | ) |
Clears the specified Animatable Flag bits on all Animatables.
This method calls ClearAFlag on all Animatables with the specified mask
mask | The bits to turn off in the Animatable flags |
CoreExport BOOL DependsOn | ( | RefMakerHandle | mkr, |
RefMakerHandle | targ | ||
) |
Checks if there is a path of references from a ReferenceMaker to a ReferenceTarget.
mkr | - The handle to the ReferenceMaker |
targ | - The handle to the ReferenceTarget |
CoreExport DWORD GetSavingVersion | ( | ) |
Function to find out if we are saving an old version of a .MAX file.
CoreExport DWORD SetSavingVersion | ( | DWORD | version | ) |
Function used internally to maintain the SavingVersion number, which should not be called by plugins.
CoreExport void DisableRefMsgs | ( | ) |
Disable reference messages globally.
Beware Use with extreme caution. Used for speeding up File/Reset, but not recommended anywhere else. (DS 3/16/00) Note: the following reference notification messages are not disabled when reference messages are globally disabled: REFMSG_GET_PARAM_NAME and REFMSG_TARGET_DELETED
CoreExport void EnableRefMsgs | ( | ) |
Enable reference messages globally.
Beware: Use with extreme caution. Used for speeding up File/Reset, but not recommended anywhere else. (DS 3/16/00)