tge/lib/maxsdk40/nodeDisp.h
2025-02-17 23:17:30 -06:00

69 lines
2.8 KiB
C++
Executable File

/*********************************************************************
*<
FILE: nodeDisp.h
DESCRIPTION: Interface for node display callbacks
CREATED BY: Cleve Ard
HISTORY: Created April 3, 2000
*> Copyright (c) 2000, All Rights Reserved.
**********************************************************************/
#ifndef __NODEDISP__
#define __NODEDISP__
// A callback to allow plug-ins that aren't actually objects (such as utilities)
// to control a Node's display
class NodeDisplayCallback : public InterfaceServer {
public:
// StartDisplay is called right before the tree of nodes is drawn
virtual void StartDisplay(TimeValue t, ViewExp *vpt, int flags)=0;
// EndDisplay is called right after the tree of nodes is drawn
virtual void EndDisplay(TimeValue t, ViewExp *vpt, int flags)=0;
// Display: Called for every node
virtual bool Display(TimeValue t, ViewExp *vpt, int flags, INode *node,Object *pObj)=0;
// HideObject: Queries if the normal node mesh should be displayed
virtual bool SuspendObjectDisplay(TimeValue t,INode *node)=0;
// AddNodeCallbackBox: Asks the callback to participate in the bounding box calculation
virtual void AddNodeCallbackBox(TimeValue t, INode *node, ViewExp *vpt, Box3& box,Object *pObj)=0;
// HitTest: Hit testing on the callback's mesh
virtual bool HitTest(TimeValue t, INode *node, int type, int crossing, int flags, IPoint2 *p, ViewExp* vpt,Object *pObj)=0;
// Activate: Called when the callback gets activated, it's up to the callback to invalidate the screen
virtual void Activate()=0;
// Deactivate: Called when the callback is deactivated
virtual void Deactivate()=0;
// GetName: Queries the name of the callback. (Used for display in the menu)
virtual TSTR GetName() const = 0;// user must delete the string
};
#define I_NODEDISPLAYCONTROL 0x00001000
// Gets a pointer to the INodeDisplayControl interface, the caller should pass a pointer to "Interface"
#define GetNodeDisplayControl(i) ((INodeDisplayControl*)i->GetInterface(I_NODEDISPLAYCONTROL))
// An interface that is used to register the node display callback.
class INodeDisplayControl : public InterfaceServer
{
public:
// Register a NodeDisplayCallback
virtual void RegisterNodeDisplayCallback(NodeDisplayCallback *cb)=0;
virtual void UnRegisterNodeDisplayCallback(NodeDisplayCallback *cb)=0;
//Set and get the current current callback, the callback must be registered
virtual bool SetNodeCallback(NodeDisplayCallback* hook)=0;
virtual NodeDisplayCallback* GetNodeCallback()=0;
// Viewport refresh routine
// this function only invalidates the display, it's up to the callback to select the correct redraw technique.
virtual void InvalidateNodeDisplay()=0;
};
#endif