aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/PlugInManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'q3radiant/PlugInManager.h')
-rwxr-xr-xq3radiant/PlugInManager.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/q3radiant/PlugInManager.h b/q3radiant/PlugInManager.h
new file mode 100755
index 0000000..1b77e94
--- /dev/null
+++ b/q3radiant/PlugInManager.h
@@ -0,0 +1,100 @@
+/*
+===========================================================================
+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_)