mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-12-08 19:08:31 +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);
|
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)
|
if (!iface)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -170,6 +173,8 @@ void *CSmmAPI::MetaFactory(const char *iface, int *_ret)
|
|||||||
{
|
{
|
||||||
if (_ret)
|
if (_ret)
|
||||||
*_ret = ret;
|
*_ret = ret;
|
||||||
|
if (id)
|
||||||
|
*id = pl->m_Id;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,7 @@ namespace SourceMM
|
|||||||
virtual void GetApiVersions(int &major, int &minor, int &plvers, int &plmin);
|
virtual void GetApiVersions(int &major, int &minor, int &plvers, int &plmin);
|
||||||
virtual void GetShVersions(int &shvers, int &shimpl);
|
virtual void GetShVersions(int &shvers, int &shimpl);
|
||||||
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener);
|
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:
|
public:
|
||||||
bool CacheCmds();
|
bool CacheCmds();
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -16,6 +16,8 @@
|
|||||||
* @file IPluginManager.h
|
* @file IPluginManager.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef int PluginId;
|
||||||
|
|
||||||
#include "ISmmPlugin.h"
|
#include "ISmmPlugin.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -68,8 +68,15 @@ public: //Added in 1.10 (1:0)
|
|||||||
virtual void GetShVersions(int &shvers, int &shimpl) =0;
|
virtual void GetShVersions(int &shvers, int &shimpl) =0;
|
||||||
//Binds an event listener to your plugin
|
//Binds an event listener to your plugin
|
||||||
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener) =0;
|
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"
|
#define PLAPI_NAME "ISmmPlugin"
|
||||||
|
|
||||||
class ISmmAPI;
|
class ISmmAPI;
|
||||||
typedef int PluginId;
|
|
||||||
|
|
||||||
class ISmmPlugin
|
class ISmmPlugin
|
||||||
{
|
{
|
||||||
@ -224,10 +223,6 @@ public:
|
|||||||
g_PLAPI = static_cast<ISmmPlugin *>(this); \
|
g_PLAPI = static_cast<ISmmPlugin *>(this); \
|
||||||
g_PLID = id;
|
g_PLID = id;
|
||||||
|
|
||||||
#define FACTORY_RETURN(mres, value) \
|
|
||||||
g_SMAPI->SetLastMetaReturn(mres); \
|
|
||||||
return value;
|
|
||||||
|
|
||||||
#define META_LOG g_SMAPI->LogMsg
|
#define META_LOG g_SMAPI->LogMsg
|
||||||
#define META_REGCMD(name) g_SMAPI->RegisterConCmdBase(g_PLAPI, name##_command)
|
#define META_REGCMD(name) g_SMAPI->RegisterConCmdBase(g_PLAPI, name##_command)
|
||||||
#define META_REGCVAR(var) g_SMAPI->RegisterConCmdBase(g_PLAPI, var)
|
#define META_REGCVAR(var) g_SMAPI->RegisterConCmdBase(g_PLAPI, var)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user