123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- ===========================================================================
- Copyright (C) 1999-2005 Id Software, Inc.
- This file is part of Quake III Arena source code.
- Quake III Arena source code is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the License,
- or (at your option) any later version.
- Quake III Arena source code is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Foobar; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- ===========================================================================
- */
- // PlugInManager.h: interface for the CPlugInManager class.
- //
- //////////////////////////////////////////////////////////////////////
- #if !defined(AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_)
- #define AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- #include "plugin.h"
- class CPlugInManager
- {
- private:
- CObArray m_PlugIns;
- CPtrArray m_BrushHandles;
- CPtrArray m_SelectedBrushHandles;
- CPtrArray m_ActiveBrushHandles;
- CPlugIn *m_pTexturePlug;
- CPlugIn *m_pSurfaceListPlug;
- // v1.70
- // brushes of the current entity ( see m_SelectedBrushHandles and m_ActiveBrushHandles )
- CPtrArray m_EntityBrushHandles;
- // allocated entities, not commited yet ( see m_BrushHandles )
- CPtrArray m_EntityHandles;
- // tells in which array to look when given a patch index
- enum EPatchesMode { EActivePatches, ESelectedPatches, EAllocatedPatches } PatchesMode;
- // patches handles (brush_t*)
- CPtrArray m_PatchesHandles;
- // plugin-allocated patches, not commited yet (patchMesh_t*)
- CPtrArray m_PluginPatches;
- public:
- CPlugIn * PluginForModule( HMODULE hPlug );
- CPtrArray& GetActiveHandles() {return m_ActiveBrushHandles; };
- CPtrArray& GetSelectedHandles() {return m_SelectedBrushHandles; };
- CPtrArray& GetPluginPatches() {return m_PluginPatches; };
- brush_t* FindBrushHandle(void *vp);
- patchMesh_t* FindPatchHandle(int index);
- int CreatePatchHandle();
- int AllocateActivePatchHandles();
- int AllocateSelectedPatchHandles();
- void CommitPatchHandleToMap(int index, patchMesh_t *pMesh, char *texName);
- void ReleasePatchesHandles() { m_PatchesHandles.RemoveAll(); m_PluginPatches.RemoveAll(); }
- void AddFaceToBrushHandle(void *vp, vec3_t v1, vec3_t v2, vec3_t v3);
- void CommitBrushHandleToMap(void *vp);
- void DeleteBrushHandle(LPVOID vp);
- LPVOID CreateBrushHandle();
- void Dispatch(int n, const char *p);
- void Cleanup();
- void Init(const char* pPath);
- CPlugInManager();
- virtual ~CPlugInManager();
-
- // the texture manager front ends the single load
- // addins (texture, model, map formats.. etc.)
- _QERTextureInfo* GetTextureInfo();
- void LoadTexture(const char *pFilename);
-
- LPVOID GetSurfaceFlags();
-
- // v1.70
- CPtrArray& GetEntityBrushHandles() {return m_EntityBrushHandles; };
- CPtrArray& GetEntityHandles() {return m_EntityHandles; };
- // the vpBrush needs to be in m_BrushHandles
- void CommitBrushHandleToEntity( LPVOID vpBrush, LPVOID vpEntity );
- // the vpEntity needs to be in m_EntityHandles
- void CommitEntityHandleToMap( LPVOID vpEntity );
- protected:
- int FillFuncTable(CPlugIn *pPlug); // PGM
- };
- #endif // !defined(AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_)
|