97 lines
3.8 KiB
C++
Executable File
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
|
|
|