qerplugin.h

来自「quake3工具源码。包括生成bsp文件」· C头文件 代码 · 共 545 行 · 第 1/2 页

H
545
字号
#define QERAPP_REGISTER_VERTEXMAKER "QERApp_Register_VertexMaker"
#define QERAPP_ADDPRIMITIVE "QERApp_AddPrimitive"

// v1.70
#define QERAPP_GETENTITYCOUNT "QERApp_GetEntityCount"
#define QERAPP_GETENTITYHANDLE "QERApp_GetEntityHandle"
//++timo not implemented for the moment
// #define QERAPP_GETENTITYINFO "QERApp_GetEntityInfo"
//++timo does the keyval need some more funcs to add/remove ?
// get the pointer and do the changes yourself
#define QERAPP_GETENTITYKEYVALLIST "QERApp_GetKeyValList"
#define QERAPP_ALLOCATEEPAIR "QERApp_AllocateEpair"
// will check current KeyVal list is NULL, otherwise use GetKeyValList
#define QERAPP_SETENTITYKEYVALLIST "QERApp_SetKeyValList"
#define QERAPP_ALLOCATEENTITYBRUSHHANDLES "QERApp_AllocateEntityBrushHandles"
#define QERAPP_RELEASEENTITYBRUSHHANDLES "QERApp_ReleaseEntityBrushHandles"
#define QERAPP_GETENTITYBRUSHHANDLE "QERApp_GetEntityBrushHandle"
#define QERAPP_CREATEENTITYHANDLE "QERApp_CreateEntityHandle"
#define QERAPP_COMMITBRUSHHANDLETOENTITY "QERApp_CommitBrushHandleToEntity"
#define QERAPP_COMMITENTITYHANDLETOMAP "QERApp_CommitEntityHandleToMap"
#define QERAPP_SETSCREENUPDATE "QERApp_SetScreenUpdate"
#define QERAPP_BUILDBRUSH2 "QERApp_BuildBrush2"

struct _QERPointData
{
  int     m_nCount;
  vec3_t *m_pVectors;
};

struct _QERFaceData
{
  char  m_TextureName[QER_MAX_NAMELEN];
  int   m_nContents;
  int   m_nFlags;
  int   m_nValue;
  float m_fShift[2];
  float m_fRotate;
  float m_fScale[2];
  vec3_t m_v1, m_v2, m_v3;
  // brush primitive additions
  qboolean m_bBPrimit;
  brushprimit_texdef_t brushprimit_texdef;
};

typedef void (WINAPI* PFN_QERAPP_CREATEBRUSH)(vec3_t vMin, vec3_t vMax);

typedef LPVOID (WINAPI* PFN_QERAPP_CREATEBRUSHHANDLE)();
typedef void (WINAPI* PFN_QERAPP_DELETEBRUSHHANDLE)(LPVOID pv);
typedef void (WINAPI* PFN_QERAPP_COMMITBRUSHHANDLETOMAP)(LPVOID pv);
typedef void (WINAPI* PFN_QERAPP_ADDFACE)(LPVOID pv, vec3_t v1, vec3_t v2, vec3_t v3);

typedef void (WINAPI* PFN_QERAPP_ADDFACEDATA)(LPVOID pv, _QERFaceData *pData);
typedef int  (WINAPI* PFN_QERAPP_GETFACECOUNT)(LPVOID pv);
typedef _QERFaceData* (WINAPI* PFN_QERAPP_GETFACEDATA)(LPVOID pv, int nFaceIndex);
typedef void (WINAPI* PFN_QERAPP_SETFACEDATA)(LPVOID pv, int nFaceIndex, _QERFaceData *pData);
typedef void (WINAPI* PFN_QERAPP_DELETEFACE)(LPVOID pv, int nFaceIndex);
typedef void (WINAPI* PFN_QERAPP_TEXTUREBRUSH)(LPVOID pv, LPCSTR pName);
typedef void (WINAPI* PFN_QERAPP_BUILDBRUSH)(LPVOID pv);		// PGM
typedef void (WINAPI* PFN_QERAPP_SELECTBRUSH)(LPVOID pv);		// PGM
typedef void (WINAPI* PFN_QERAPP_DESELECTBRUSH)(LPVOID pv);		// PGM
typedef void (WINAPI* PFN_QERAPP_DESELECTALLBRUSHES)();			// PGM

typedef void (WINAPI* PFN_QERAPP_DELETESELECTION)();
typedef void (WINAPI* PFN_QERAPP_GETPOINTS)(int nMax, _QERPointData *pData, LPCSTR pMsg);
typedef void (WINAPI* PFN_QERAPP_SYSMSG)(LPCSTR pMsg);
typedef void (WINAPI* PFN_QERAPP_INFOMSG)(LPCSTR pMsg);
typedef void (WINAPI* PFN_QERAPP_HIDEINFOMSG)();
typedef void (WINAPI* PFN_QERAPP_POSITIONVIEW)(vec3_t v1, vec3_t v2);	//PGM

typedef int  (WINAPI* PFN_QERAPP_SELECTEDBRUSHCOUNT)();
typedef int (WINAPI* PFN_QERAPP_ALLOCATESELECTEDBRUSHHANDLES)();
typedef void (WINAPI* PFN_QERAPP_RELEASESELECTEDBRUSHHANDLES)();
typedef LPVOID (WINAPI* PFN_QERAPP_GETSELECTEDBRUSHHANDLE)(int nIndex);

typedef int  (WINAPI* PFN_QERAPP_ACTIVEBRUSHCOUNT)();
typedef int (WINAPI* PFN_QERAPP_ALLOCATEACTIVEBRUSHHANDLES)();
typedef void (WINAPI* PFN_QERAPP_RELEASEACTIVEBRUSHHANDLES)();
typedef LPVOID (WINAPI* PFN_QERAPP_GETACTIVEBRUSHHANDLE)(int nIndex);

typedef int  (WINAPI* PFN_QERAPP_TEXTURECOUNT)();
typedef LPCSTR (WINAPI* PFN_QERAPP_GETTEXTURE)(int nIndex);
typedef LPCSTR (WINAPI* PFN_QERAPP_GETCURRENTTEXTURE)();
typedef void (WINAPI* PFN_QERAPP_SETCURRENTTEXTURE)(LPCSTR pName);

typedef void (WINAPI* PFN_QERAPP_REGISTERMAPLOAD)(LPVOID vp);
typedef void (WINAPI* PFN_QERAPP_REGISTERMAPSAVE)(LPVOID vp);

typedef int (WINAPI* PFN_QERAPP_GETECLASSCOUNT)();
typedef LPCSTR (WINAPI* PFN_QERAPP_GETECLASS)(int nIndex);

typedef void (WINAPI* PFN_QERAPP_RESETPLUGINS)();
//--typedef int (WINAPI* PFN_QERAPP_GETENTITYCOUNT)();


// called by texture loaders for each texture loaded
typedef void (WINAPI* PFN_QERAPP_LOADTEXTURERGBA)(LPVOID vp);

//--typedef LPCSTR (WINAPI* PFN_QERAPP_GETENTITY)(int nIndex);

// v1.70
typedef int (WINAPI* PFN_QERAPP_GETENTITYCOUNT)();
typedef LPVOID (WINAPI* PFN_QERAPP_GETENTITYHANDLE)(int nIndex);
typedef epair_t** (WINAPI* PFN_QERAPP_GETENTITYKEYVALLIST)(LPVOID vp);
typedef epair_t* (WINAPI* PFN_QERAPP_ALLOCATEEPAIR)( char*, char* );
typedef void (WINAPI* PFN_QERAPP_SETENTITYKEYVALLIST)(LPVOID vp, epair_t* ep);
typedef int (WINAPI* PFN_QERAPP_ALLOCATEENTITYBRUSHHANDLES)(LPVOID vp);
typedef void (WINAPI* PFN_QERAPP_RELEASEENTITYBRUSHHANDLES)();
typedef LPVOID (WINAPI* PFN_QERAPP_GETENTITYBRUSHHANDLE)(int nIndex);
typedef LPVOID (WINAPI* PFN_QERAPP_CREATEENTITYHANDLE)();
typedef void (WINAPI* PFN_QERAPP_COMMITBRUSHHANDLETOENTITY)( LPVOID vpBrush, LPVOID vpEntity);
typedef void (WINAPI* PFN_QERAPP_COMMITENTITYHANDLETOMAP)(LPVOID vp);
typedef void (WINAPI* PFN_QERAPP_SETSCREENUPDATE)(int bScreenUpdate);
// this one uses window flags defined in qertypes.h
typedef void (WINAPI* PFN_QERAPP_SYSUPDATEWINDOWS)(int bits);
//++timo remove this one
typedef void (WINAPI* PFN_QERAPP_BUILDBRUSH2)(LPVOID vp, int bConvert);
// Radiant functions for Plugin Entities
// will look for the value of the correponding key in the project epairs
typedef char* (WINAPI* PFN_QERAPP_READPROJECTKEY)(char* );
// will scan the file, parse the first EClass found, and associate it to the caller plugin
// will only read first EClass in the file, and return true/false
typedef int (WINAPI* PFN_QERAPP_SCANFILEFORECLASS)(char* );
// plugins can request additional interfaces from the editor when they need specific services
typedef int (WINAPI* PFN_QERAPP_REQUESTINTERFACE)( REFGUID, LPVOID );
// use this one for errors, Radiant will stop after the "edit preferences" dialog
typedef void (WINAPI* PFN_QERAPP_ERRORMSG)(LPCSTR pMsg);
// use to gain read access to the project epairs
// FIXME: removed, accessed through QERPlug_RegisterPluginEntities with the IEpair interface
// typedef void (WINAPI* PFN_QERAPP_GETPROJECTEPAIR)(epair_t **);
// used to allocate and read a buffer
//++timo NOTE: perhaps this would need moving to some kind of dedicated interface
typedef int (WINAPI* PFN_QERAPP_LOADFILE)(const char *pLocation, void ** buffer);
typedef char* (WINAPI* PFN_QERAPP_EXPANDRELETIVEPATH)(char *);
typedef void (WINAPI* PFN_QERAPP_QECONVERTDOSTOUNIXNAME)( char *dst, const char *src );
typedef int (WINAPI* PFN_QERAPP_HASSHADER)(const char *);
typedef int (WINAPI* PFN_QERAPP_TEXTURELOADSKIN)(char *pName, int *pnWidth, int *pnHeight);
// free memory previously allocated by Radiant
// NOTE: this is dirty
typedef void (WINAPI* PFN_QERAPP_RADIANTFREE)( void * );
// retrieves the path to the engine from the preferences dialog box
typedef char* (WINAPI* PFN_QERAPP_GETGAMEPATH)();
// retrieves full Radiant path
typedef char* (WINAPI* PFN_QERAPP_GETQERPATH)();

// patches in/out
// NOTE: this is a bit different from the brushes in/out, no LPVOID handles this time
// use int indexes instead
// if you call AllocateActivePatchHandles, you'll be playing with active patches
// AllocateSelectedPatcheHandles for selected stuff
// a call to CreatePatchHandle will move you to a seperate index table
typedef int				(WINAPI* PFN_QERAPP_ALLOCATEACTIVEPATCHHANDLES)		();
typedef int				(WINAPI* PFN_QERAPP_ALLOCATESELECTEDPATCHHANDLES)	();
typedef void			(WINAPI* PFN_QERAPP_RELEASEPATCHHANDLES)			();
typedef patchMesh_t*	(WINAPI* PFN_QERAPP_GETPATCHDATA)					(int);
typedef void			(WINAPI* PFN_QERAPP_DELETEPATCH)					(int);
typedef int				(WINAPI* PFN_QERAPP_CREATEPATCHHANDLE)				();
// when commiting, only a few patchMesh_t members are relevant:
//  int	width, height;		// in control points, not patches
//  int   contents, flags, value, type;
//  drawVert_t ctrl[MAX_PATCH_WIDTH][MAX_PATCH_HEIGHT];
// once you have commited the index is still available, if the patch handle was allocated by you
//   then you can re-use the index to commit other patches .. otherwise you can change existing patches
// NOTE: the handle thing for plugin-allocated patches is a bit silly (nobody's perfect)
// TODO: change current behaviour to an index = 0 to tell Radiant to allocate, other indexes to existing patches
// patch is selected after a commit
// you can add an optional texture / shader name .. if NULL will use the current texture
typedef void			(WINAPI* PFN_QERAPP_COMMITPATCHHANDLETOMAP)			(int, patchMesh_t* pMesh, char *texName);

// FIXME:
// add map format extensions
// add texture format handlers
// add surface dialog handler
// add model handler/displayer

// v1 func table
// Plugins need to declare one of these and implement the getfunctable as described above
struct _QERFuncTable_1
{
  float m_fVersion;
  int   m_nSize;
  PFN_QERAPP_CREATEBRUSH            m_pfnCreateBrush;
  PFN_QERAPP_CREATEBRUSHHANDLE      m_pfnCreateBrushHandle;
  PFN_QERAPP_DELETEBRUSHHANDLE      m_pfnDeleteBrushHandle;
  PFN_QERAPP_COMMITBRUSHHANDLETOMAP m_pfnCommitBrushHandle;
  PFN_QERAPP_ADDFACE                m_pfnAddFace;
  PFN_QERAPP_ADDFACEDATA            m_pfnAddFaceData;
  PFN_QERAPP_GETFACEDATA            m_pfnGetFaceData;
  PFN_QERAPP_GETFACECOUNT           m_pfnGetFaceCount;
  PFN_QERAPP_SETFACEDATA            m_pfnSetFaceData;
  PFN_QERAPP_DELETEFACE             m_pfnDeleteFace;
  PFN_QERAPP_TEXTUREBRUSH           m_pfnTextureBrush;
  PFN_QERAPP_BUILDBRUSH				m_pfnBuildBrush;				// PGM
  PFN_QERAPP_SELECTBRUSH			m_pfnSelectBrush;				// PGM
  PFN_QERAPP_DESELECTBRUSH			m_pfnDeselectBrush;				// PGM
  PFN_QERAPP_DESELECTALLBRUSHES		m_pfnDeselectAllBrushes;		// PGM

  PFN_QERAPP_DELETESELECTION        m_pfnDeleteSelection;
  PFN_QERAPP_GETPOINTS              m_pfnGetPoints;
  PFN_QERAPP_SYSMSG                 m_pfnSysMsg;
  PFN_QERAPP_INFOMSG                m_pfnInfoMsg;
  PFN_QERAPP_HIDEINFOMSG            m_pfnHideInfoMsg;
  PFN_QERAPP_POSITIONVIEW			m_pfnPositionView;				// PGM

  PFN_QERAPP_SELECTEDBRUSHCOUNT           m_pfnSelectedBrushCount;
  PFN_QERAPP_ALLOCATESELECTEDBRUSHHANDLES m_pfnAllocateSelectedBrushHandles;
  PFN_QERAPP_RELEASESELECTEDBRUSHHANDLES  m_pfnReleaseSelectedBrushHandles;
  PFN_QERAPP_GETSELECTEDBRUSHHANDLE       m_pfnGetSelectedBrushHandle;

  PFN_QERAPP_ACTIVEBRUSHCOUNT             m_pfnActiveBrushCount;
  PFN_QERAPP_ALLOCATEACTIVEBRUSHHANDLES   m_pfnAllocateActiveBrushHandles;
  PFN_QERAPP_RELEASEACTIVEBRUSHHANDLES    m_pfnReleaseActiveBrushHandles;
  PFN_QERAPP_GETACTIVEBRUSHHANDLE         m_pfnGetActiveBrushHandle;

  //++timo this would need to be removed and replaced by the IShaders interface
  PFN_QERAPP_TEXTURECOUNT                 m_pfnTextureCount;
  PFN_QERAPP_GETTEXTURE                   m_pfnGetTexture;
  PFN_QERAPP_GETCURRENTTEXTURE            m_pfnGetCurrentTexture;
  PFN_QERAPP_SETCURRENTTEXTURE            m_pfnSetCurrentTexture;

  PFN_QERAPP_GETECLASSCOUNT         m_pfnGetEClassCount;
  PFN_QERAPP_GETECLASS              m_pfnGetEClass;
  PFN_QERAPP_RESETPLUGINS           m_pfnResetPlugins;
  // v1.00 ends here
  // v1.50 starts here
  PFN_QERAPP_LOADTEXTURERGBA        m_pfnLoadTextureRGBA;
  // v1.50 ends here
  // v1.70 starts here
  PFN_QERAPP_GETENTITYCOUNT			m_pfnGetEntityCount;
  PFN_QERAPP_GETENTITYHANDLE		m_pfnGetEntityHandle;
  PFN_QERAPP_GETENTITYKEYVALLIST	m_pfnGetEntityKeyValList;
  PFN_QERAPP_SETENTITYKEYVALLIST	m_pfnSetEntityKeyValList;
  PFN_QERAPP_ALLOCATEENTITYBRUSHHANDLES	m_pfnAllocateEntityBrushHandles;
  PFN_QERAPP_RELEASEENTITYBRUSHHANDLES	m_pfnReleaseEntityBrushHandles;
  PFN_QERAPP_GETENTITYBRUSHHANDLE	m_pfnGetEntityBrushHandle;
  PFN_QERAPP_CREATEENTITYHANDLE		m_pfnCreateEntityHandle;
  PFN_QERAPP_COMMITBRUSHHANDLETOENTITY	m_pfnCommitBrushHandleToEntity;
  PFN_QERAPP_COMMITENTITYHANDLETOMAP	m_pfnCommitEntityHandleToMap;
  PFN_QERAPP_ALLOCATEEPAIR			m_pfnAllocateEpair;
  PFN_QERAPP_SETSCREENUPDATE		m_pfnSetScreenUpdate;
  PFN_QERAPP_SYSUPDATEWINDOWS		m_pfnSysUpdateWindows;
  PFN_QERAPP_BUILDBRUSH2			m_pfnBuildBrush2;
  // Radiant functions for Plugin Entities
  PFN_QERAPP_READPROJECTKEY			m_pfnReadProjectKey;
  PFN_QERAPP_SCANFILEFORECLASS		m_pfnScanFileForEClass;
  // plugins can request additional interfaces
  PFN_QERAPP_REQUESTINTERFACE		m_pfnRequestInterface;
  PFN_QERAPP_ERRORMSG				m_pfnErrorMsg;
  // loading a file into a buffer
  PFN_QERAPP_LOADFILE				m_pfnLoadFile;
  PFN_QERAPP_EXPANDRELETIVEPATH		m_pfnExpandReletivePath;
  PFN_QERAPP_QECONVERTDOSTOUNIXNAME	m_pfnQE_ConvertDOSToUnixName;
  PFN_QERAPP_HASSHADER				m_pfnHasShader;
  PFN_QERAPP_TEXTURELOADSKIN		m_pfnTexture_LoadSkin;
  PFN_QERAPP_RADIANTFREE			m_pfnRadiantFree;
  PFN_QERAPP_GETGAMEPATH			m_pfnGetGamePath;
  PFN_QERAPP_GETQERPATH				m_pfnGetQERPath;
  // patches in / out
  PFN_QERAPP_ALLOCATEACTIVEPATCHHANDLES		m_pfnAllocateActivePatchHandles;
  PFN_QERAPP_ALLOCATESELECTEDPATCHHANDLES	m_pfnAllocateSelectedPatchHandles;
  PFN_QERAPP_RELEASEPATCHHANDLES			m_pfnReleasePatchHandles;
  PFN_QERAPP_GETPATCHDATA					m_pfnGetPatchData;
  PFN_QERAPP_DELETEPATCH					m_pfnDeletePatch;
  PFN_QERAPP_CREATEPATCHHANDLE				m_pfnCreatePatchHandle;
  PFN_QERAPP_COMMITPATCHHANDLETOMAP			m_pfnCommitPatchHandleToMap;
};


//--typedef int (WINAPI*      PFN_QERAPP_BRUSHCOUNT     )();
//--typedef brush_t* (WINAPI* PFN_QERAPP_GETBRUSH       )();
//--typedef void (WINAPI*     PFN_QERAPP_DELETEBRUSH    )();

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?