https://github.com/id-Software/Quake-III-Arena
Tip revision: dbe4ddb10315479fc00086f08e25d968b4b43c49 authored by Travis Bradshaw on 31 January 2012, 19:41:34 UTC
The Quake III Arena sources as originally released under the GPL license on August 20, 2005.
The Quake III Arena sources as originally released under the GPL license on August 20, 2005.
Tip revision: dbe4ddb
PlugInManager.h
/*
===========================================================================
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_)