mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-12-08 02:48:30 +00:00
you can now see which plugin returned the iface
--HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40140
This commit is contained in:
parent
2cabdcf3da
commit
c1fb10cbf0
@ -136,8 +136,11 @@ void CSmmAPI::AddListener(ISmmPlugin *plugin, IMetamodListener *pListener)
|
||||
pl->m_Events.push_back(pListener);
|
||||
}
|
||||
|
||||
void *CSmmAPI::MetaFactory(const char *iface, int *_ret)
|
||||
void *CSmmAPI::MetaFactory(const char *iface, int *_ret, PluginId *id)
|
||||
{
|
||||
if (id)
|
||||
*id = 0;
|
||||
|
||||
if (!iface)
|
||||
return NULL;
|
||||
|
||||
@ -170,6 +173,8 @@ void *CSmmAPI::MetaFactory(const char *iface, int *_ret)
|
||||
{
|
||||
if (_ret)
|
||||
*_ret = ret;
|
||||
if (id)
|
||||
*id = pl->m_Id;
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ namespace SourceMM
|
||||
virtual void GetApiVersions(int &major, int &minor, int &plvers, int &plmin);
|
||||
virtual void GetShVersions(int &shvers, int &shimpl);
|
||||
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener);
|
||||
virtual void *MetaFactory(const char *iface, int *ret);
|
||||
virtual void *MetaFactory(const char *iface, int *ret, PluginId *id);
|
||||
public:
|
||||
bool CacheCmds();
|
||||
private:
|
||||
|
||||
@ -16,6 +16,8 @@
|
||||
* @file IPluginManager.h
|
||||
*/
|
||||
|
||||
typedef int PluginId;
|
||||
|
||||
#include "ISmmPlugin.h"
|
||||
|
||||
/**
|
||||
|
||||
@ -68,8 +68,15 @@ public: //Added in 1.10 (1:0)
|
||||
virtual void GetShVersions(int &shvers, int &shimpl) =0;
|
||||
//Binds an event listener to your plugin
|
||||
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener) =0;
|
||||
//Queries the metamod factory
|
||||
virtual void *MetaFactory(const char *iface, int *ret) =0;
|
||||
/**
|
||||
* @brief Queries the metamod factory
|
||||
*
|
||||
* @param iface String containing interface name
|
||||
* @param ret Optional pointer to store return status
|
||||
* @param id Optional pointer to store id of plugin that overrode interface, 0 if none
|
||||
* @return Returned pointer
|
||||
*/
|
||||
virtual void *MetaFactory(const char *iface, int *ret, PluginId *id) =0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -24,7 +24,6 @@
|
||||
#define PLAPI_NAME "ISmmPlugin"
|
||||
|
||||
class ISmmAPI;
|
||||
typedef int PluginId;
|
||||
|
||||
class ISmmPlugin
|
||||
{
|
||||
@ -224,10 +223,6 @@ public:
|
||||
g_PLAPI = static_cast<ISmmPlugin *>(this); \
|
||||
g_PLID = id;
|
||||
|
||||
#define FACTORY_RETURN(mres, value) \
|
||||
g_SMAPI->SetLastMetaReturn(mres); \
|
||||
return value;
|
||||
|
||||
#define META_LOG g_SMAPI->LogMsg
|
||||
#define META_REGCMD(name) g_SMAPI->RegisterConCmdBase(g_PLAPI, name##_command)
|
||||
#define META_REGCVAR(var) g_SMAPI->RegisterConCmdBase(g_PLAPI, var)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user