69 lines
2.8 KiB
C++
Executable File
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
|