tge/lib/maxsdk70/include/CS/delegexp.h
2017-04-17 06:17:10 -06:00

97 lines
3.8 KiB
C++
Executable File

/******************************************************************************
*<
FILE: delegexp.h
DESCRIPTION: Export Interface Functionality for Crowd Delegate
CREATED BY: Susan Amkraut
HISTORY: created December, 1999
*> Copyright (c) Unreal Pictures, Inc. 1999 All Rights Reserved.
*******************************************************************************/
#ifndef DELEGEXP_H
#define DELEGEXP_H
#ifdef BLD_DELEG
#define DELEGexport __declspec( dllexport )
#else
#define DELEGexport __declspec( dllimport )
#endif
#include "max.h"
// This is the interface ID for a Delegate Interface
#define I_DELEGINTERFACE 0x00100101
// This is the Class ID for Vector Field Objects.
#ifndef BLD_DELEG
#define DELEG_CLASSID Class_ID(0x40c07baa, 0x245c7fe6)
#define CROWD_CLASS_ID Class_ID(0x60144302, 0x43455584) // to avoid selecting a crowd
#endif
// Sample Code, starting with an INode(node)
//
// Object *o = node->GetObjectRef();
// if ((o->ClassID() == DELEG_CLASS_ID)
// {
//
// // Get the Delegate Export Interface from the node
// IDelegate *Iface = (IDelegate *) o->GetInterface(I_DELEGINTERFACE);
//
// // Get the delegate's average speed at time t
// float AverageSpeed = Iface->GetAverageSpeed(t);
// }
//
// // Release the interface. NOTE that this function is currently inactive under MAX.
// //o->ReleaseInterface(I_DELEGINTERFACE,Iface);
// }
// IDelegate: This class can be returned by calling the method GetInterface() from a Delegate node
class IDelegate
{
public:
DELEGexport virtual ~IDelegate() {}
DELEGexport virtual BOOL IsComputing() {return FALSE;}
DELEGexport virtual BOOL IsConstrainedInZ() {return FALSE;}
DELEGexport virtual Point3 GetCurrentPosition() {return Point3(0.0,0.0,0.0);}
DELEGexport virtual Point3 GetCurrentVelocity() {return Point3(0.0,0.0,0.0);}
DELEGexport virtual Point3 GetPreviousVelocity() {return Point3(0.0,0.0,0.0);}
DELEGexport virtual float GetCurrentSpeed() {return 1.0;}
DELEGexport virtual float GetAverageSpeed(TimeValue t) {return 1.0;}
DELEGexport virtual float GetMaxAccel(TimeValue t){return 1.0;}
DELEGexport virtual float GetMaxHeadingVel(TimeValue t) {return 1.0;}
DELEGexport virtual float GetMaxHeadingAccel(TimeValue t){return 1.0;}
DELEGexport virtual float GetMaxPitchVel(TimeValue t) {return 1.0;}
DELEGexport virtual float GetMaxPitchAccel(TimeValue t){return 1.0;}
DELEGexport virtual float GetMaxIncline(TimeValue t){return 1.0;}
DELEGexport virtual float GetMaxDecline(TimeValue t){return 1.0;}
DELEGexport virtual Point3 GetSimStartVelocity(INode *n, TimeValue StartTime) {return Point3(0.0,0.0,0.0);}
DELEGexport virtual int GetIndex() {return 0;}
DELEGexport virtual BOOL OkToDisplayMyForces() {return 1;}
DELEGexport virtual BOOL OkToDisplayMyVelocity() {return 1;}
DELEGexport virtual BOOL OkToDisplayMyCogStates() {return 1;}
DELEGexport virtual void LineDisplay(Point3& pt1, Point3& pt2, Color clr, BOOL scale) {}
DELEGexport virtual void BboxDisplay(Point3& pt1, Point3& pt2, Color clr) {}
DELEGexport virtual void SphereDisplay(Point3& pt1, float radius, Color clr) {}
DELEGexport virtual void TextDisplay(Point3& pt1, Color clr, TCHAR *str) {}
DELEGexport virtual BOOL IsAssignmentActive(int AssignIndex, TimeValue t) {return TRUE;}
DELEGexport virtual void ClearBacktracking() {}
DELEGexport virtual BOOL NeedsBacktracking() {return FALSE;}
DELEGexport virtual void SetBacktracking(int frame) {}
DELEGexport virtual int GetRandId() {return 0;}
DELEGexport virtual Matrix3 GetTM(INode *node,TimeValue t){return Matrix3();}
DELEGexport virtual BOOL ComputingBiped() {return FALSE;}
DELEGexport virtual BOOL ReactToMe() {return FALSE;}
};
#endif