quake3/q3radiant/PlugInManager.h
2005-08-19 00:00:00 +00:00

100 lines
3.7 KiB
C++
Executable file

/*
===========================================================================
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_)