diff -r dde65b1e5ab5 -r 73d3fcf9bbd1 core/systems/PluginSys.cpp --- a/core/systems/PluginSys.cpp Sat Dec 16 22:30:58 2006 +0000 +++ b/core/systems/PluginSys.cpp Sat Dec 16 22:31:32 2006 +0000 @@ -1,11 +1,13 @@ #include #include "PluginSys.h" #include "LibrarySys.h" +#include "HandleSys.h" #include "sourcemm_api.h" #include "sourcemod.h" #include "CTextParsers.h" CPluginManager g_PluginSys; +HandleType_t g_PluginType = 0; CPlugin::CPlugin(const char *file) { @@ -20,6 +22,8 @@ m_pub_funcs = NULL; m_errormsg[256] = '\0'; snprintf(m_filename, sizeof(m_filename), "%s", file); + /* :TODO: ShareSys token */ + m_handle = g_HandleSys.CreateHandle(g_PluginType, this, DEFAULT_IDENTITY, 1); } CPlugin::~CPlugin() @@ -441,6 +445,11 @@ return true; } +IdentityToken_t CPlugin::GetIdentity() +{ + return 0; +} + /******************* * PLUGIN ITERATOR * *******************/ @@ -1078,3 +1087,25 @@ { return (m_AllPluginsLoaded || g_SourceMod.IsLateLoadInMap()); } + +void CPluginManager::OnSourceModAllInitialized() +{ + HandleSecurity sec; + + sec.owner = 1; /* :TODO: implement ShareSys */ + sec.all.canCreate = false; + sec.all.canDelete = false; + sec.all.canInherit = false; + + g_PluginType = g_HandleSys.CreateTypeEx("IPlugin", this, 0, &sec); +} + +void CPluginManager::OnSourceModShutdown() +{ + g_HandleSys.RemoveType(g_PluginType, 1); +} + +void CPluginManager::OnHandleDestroy(HandleType_t type, void *object) +{ + /* We don't care about the internal object, actually */ +}