2012-01-31 19:41:34 +00:00
|
|
|
/*
|
|
|
|
===========================================================================
|
|
|
|
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
|
|
|
|
===========================================================================
|
|
|
|
*/
|
2005-08-26 04:48:05 +00:00
|
|
|
// 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_)
|