181 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //-----------------------------------------------------------------------------
 | |
| // ----------------
 | |
| // File ....: gup.h
 | |
| // ----------------
 | |
| // Author...: Gus Grubba
 | |
| // Date ....: September 1998
 | |
| //
 | |
| // History .: Sep, 30 1998 - Started
 | |
| //
 | |
| //-----------------------------------------------------------------------------
 | |
| 		
 | |
| #ifndef	GUP_H_DEFINED
 | |
| #define	GUP_H_DEFINED
 | |
| 
 | |
| #include <gupapi.h>
 | |
| 
 | |
| //-- Just to make it shorter
 | |
| 
 | |
| #define	dVirtual GUPExport virtual
 | |
| 
 | |
| //-- Forward References
 | |
| 
 | |
| class GUP;
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- Plug-Ins Handler
 | |
| //
 | |
| 	
 | |
| class GUPHandler {
 | |
| 
 | |
| 		//-- DLL Handler ----------------------------------
 | |
| 		
 | |
| 		ClassDesc*	cd;
 | |
| 		Class_ID	id;
 | |
| 		GUP*		instance;
 | |
| 		
 | |
| 	public:
 | |
| 
 | |
| 								GUPHandler		( );
 | |
| 
 | |
| 		GUPExport	void		SetCD			( ClassDesc *dll )	{ cd = dll;	}
 | |
| 		GUPExport	ClassDesc*	GetCD			( )					{ return cd;}
 | |
| 		GUPExport	void		SetID			( Class_ID cid )	{ id = cid;	}
 | |
| 		GUPExport	Class_ID	GetID			( )					{ return id;}
 | |
| 		GUPExport	void		SetInstance		( GUP *ins )		{ instance = ins;  }
 | |
| 		GUPExport	GUP*		GetInstance		( )					{ return instance; }
 | |
| 
 | |
| 		GUPExport	GUP*		Gup				( )					{ return instance; }
 | |
| 
 | |
| };
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- List of Loaded Plug-Ins
 | |
| //
 | |
| 	
 | |
| class GUPList: public Tab<GUPHandler> {
 | |
| 
 | |
| 	public:
 | |
| 
 | |
| 		GUPExport			GUPList				( )	{ ; }
 | |
| 		GUPExport	int		FindGup				( const Class_ID id );
 | |
| 		GUPExport	GUP*	CreateInstance		( const Class_ID id );
 | |
| 
 | |
| };
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- Global Utility Plug-In Class
 | |
| //
 | |
| 
 | |
| class GUP {
 | |
| 	
 | |
| 	public:
 | |
| 	
 | |
| 		GUPExport	GUP								( );
 | |
| 		dVirtual	~GUP							( );
 | |
| 
 | |
| 		//-----------------------------------------------------------
 | |
| 		//-- Plug-In Service Methods
 | |
| 		
 | |
| 		dVirtual	HINSTANCE		MaxInst			( );
 | |
| 		dVirtual	HWND			MaxWnd			( );
 | |
| 		dVirtual	DllDir*			MaxDllDir		( );
 | |
| 		dVirtual	Interface*		Max				( );
 | |
| 		dVirtual	BitmapManager*	Bmi				( );
 | |
| 		dVirtual	int				EnumTree		( ITreeEnumProc *proc );
 | |
| 
 | |
| 		//-----------------------------------------------------------
 | |
| 		//-- Plug-In Service Methods (Scripting)
 | |
| 		
 | |
| 		dVirtual	bool			ExecuteStringScript	( TCHAR *string );
 | |
| 		dVirtual	bool			ExecuteFileScript	( TCHAR *file );
 | |
| 
 | |
| 		//-----------------------------------------------------------
 | |
| 		//-----------------------------------------------------------
 | |
| 		//-- Plug-In Implementation Methods
 | |
| 		
 | |
| 		//-----------------------------------------------------------
 | |
| 		// Start() is called at boot time. If the plug-in
 | |
| 		// desires to remain loaded, it returns GUPRESULT_KEEP. If
 | |
| 		// it returns GUPRESULT_NOKEEP, it will be discarded. If it
 | |
| 		// returns GUPRESULT_ABORT MAX will be shut down.
 | |
| 
 | |
| 		#define GUPRESULT_KEEP		0x00
 | |
| 		#define GUPRESULT_NOKEEP	0x01
 | |
| 		#define GUPRESULT_ABORT		0x03
 | |
| 
 | |
| 		dVirtual	DWORD			Start		( ) = 0;
 | |
| 		
 | |
| 		//-------------------------------------------------
 | |
| 		// Stop is called prior to discarding the plug-in
 | |
| 		// for persistent plug-ins (i.e. only those that 
 | |
| 		// returned GUPRESULT_KEEP for Start() above).
 | |
| 		
 | |
| 		dVirtual	void			Stop		( ) = 0;
 | |
| 
 | |
| 		//-------------------------------------------------
 | |
| 		// Control is an entry point for external access to
 | |
| 		// GUP plug-ins. For instance, Utility plugins can
 | |
| 		// invoke their GUP plugin counterpart and have 
 | |
| 		// direct access to them.
 | |
| 		//
 | |
| 		
 | |
| 		dVirtual	DWORD			Control		( DWORD parameter ) { return 0;}
 | |
| 
 | |
| 		//-------------------------------------------------
 | |
| 		// Optional Methods for saving the plug-in state
 | |
| 		// within a scene file.
 | |
| 
 | |
| 		dVirtual	IOResult		Save		( ISave *isave );
 | |
| 		dVirtual	IOResult		Load		( ILoad *iload );
 | |
| 
 | |
| };
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- Main GUP Manager Class
 | |
| //
 | |
| //
 | |
| 
 | |
| class GUPManager    {
 | |
| 	
 | |
| 		GUPInterface*	iface;
 | |
| 
 | |
| 		int				InitList		( );
 | |
| 		bool			listed;
 | |
| 		
 | |
| 	public:
 | |
| 	
 | |
| 		GUPExport					GUPManager		( GUPInterface *i );
 | |
| 		GUPExport					~GUPManager		( );
 | |
| 		
 | |
| 		GUPList		gupList;
 | |
| 		
 | |
| 		GUPExport	bool			Ready			( );
 | |
| 		GUPExport	bool			Init			( );
 | |
| 		GUPExport	GUPInterface*	Interface		( ) { return iface; }
 | |
| 		GUPExport	IOResult		Save			( ISave *isave );
 | |
| 		GUPExport	IOResult		Load			( ILoad *iload );
 | |
| 
 | |
| };
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- Exported
 | |
| //
 | |
| 
 | |
| extern GUPExport	void			OpenGUP			(  GUPInterface *i );
 | |
| extern GUPExport	void			CloseGUP		(  );
 | |
| extern GUPExport	GUPManager*		gupManager; 
 | |
| extern GUPExport	GUP*			OpenGupPlugIn	( const Class_ID id); 
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| //-- Cleanup
 | |
| 
 | |
| #undef	dVirtual
 | |
| #endif	GUP_H_DEFINED
 | |
| 
 | |
| //-- EOF: gup.h ---------------------------------------------------------------
 | 
