Ticket #2842: allow_reregistering_of_globals.diff

File allow_reregistering_of_globals.diff, 2.0 KB (added by Radagast, 10 years ago)

a proposal

  • source/simulation2/system/ComponentManager.cpp

    diff --git a/source/simulation2/system/ComponentManager.cpp b/source/simulation2/system/ComponentManager.cpp
    index aa9d2f0..5709a38 100644
    a b CComponentManager::CComponentManager(CSimContext& context, shared_ptr<ScriptRunt  
    7676        m_ScriptInterface.RegisterFunction<void, std::string, CComponentManager::Script_RegisterInterface> ("RegisterInterface");
    7777        m_ScriptInterface.RegisterFunction<void, std::string, CComponentManager::Script_RegisterMessageType> ("RegisterMessageType");
    7878        m_ScriptInterface.RegisterFunction<void, std::string, CScriptVal, CComponentManager::Script_RegisterGlobal> ("RegisterGlobal");
     79        m_ScriptInterface.RegisterFunction<void, std::string, CScriptVal, CComponentManager::Script_ReRegisterGlobal> ("ReRegisterGlobal");
    7980        m_ScriptInterface.RegisterFunction<IComponent*, int, int, CComponentManager::Script_QueryInterface> ("QueryInterface");
    8081        m_ScriptInterface.RegisterFunction<std::vector<int>, int, CComponentManager::Script_GetEntitiesWithInterface> ("GetEntitiesWithInterface");
    8182        m_ScriptInterface.RegisterFunction<std::vector<IComponent*>, int, CComponentManager::Script_GetComponentsWithInterface> ("GetComponentsWithInterface");
    void CComponentManager::Script_RegisterGlobal(ScriptInterface::CxPrivate* pCxPri  
    385386    componentManager->m_ScriptInterface.SetGlobal(name.c_str(), value, componentManager->m_CurrentlyHotloading);
    386387}
    387388
     389void CComponentManager::Script_ReRegisterGlobal(ScriptInterface::CxPrivate* pCxPrivate, std::string name, CScriptVal value)
     390{
     391    CComponentManager* componentManager = static_cast<CComponentManager*> (pCxPrivate->pCBData);
     392
     393    componentManager->m_ScriptInterface.SetGlobal(name.c_str(), value, true);
     394}
     395
    388396IComponent* CComponentManager::Script_QueryInterface(ScriptInterface::CxPrivate* pCxPrivate, int ent, int iid)
    389397{
    390398    CComponentManager* componentManager = static_cast<CComponentManager*> (pCxPrivate->pCBData);