mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-21 10:09:39 +00:00
disabling and enabling containers causes scripts on contents to be disabled and enabled accordingly
This commit is contained in:
parent
665a530e10
commit
28c580d280
1 changed files with 35 additions and 0 deletions
|
@ -406,6 +406,24 @@ namespace MWWorld
|
||||||
if (!reference.getRefData().isEnabled())
|
if (!reference.getRefData().isEnabled())
|
||||||
{
|
{
|
||||||
reference.getRefData().enable();
|
reference.getRefData().enable();
|
||||||
|
|
||||||
|
/* run scripts on container contents */
|
||||||
|
if( reference.getTypeName()==typeid (ESM::Container).name() ||
|
||||||
|
reference.getTypeName()==typeid (ESM::NPC).name() ||
|
||||||
|
reference.getTypeName()==typeid (ESM::Creature).name())
|
||||||
|
{
|
||||||
|
MWWorld::ContainerStore& container = MWWorld::Class::get(reference).getContainerStore(reference);
|
||||||
|
for(MWWorld::ContainerStoreIterator it = container.begin(); it != container.end(); ++it)
|
||||||
|
{
|
||||||
|
std::string script = MWWorld::Class::get(*it).getScript(*it);
|
||||||
|
if(script != "")
|
||||||
|
{
|
||||||
|
MWWorld::Ptr item = *it;
|
||||||
|
item.mCell = reference.getCell();
|
||||||
|
mLocalScripts.add (script, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||||
mWorldScene->addObjectToScene (reference);
|
mWorldScene->addObjectToScene (reference);
|
||||||
|
@ -417,6 +435,23 @@ namespace MWWorld
|
||||||
if (reference.getRefData().isEnabled())
|
if (reference.getRefData().isEnabled())
|
||||||
{
|
{
|
||||||
reference.getRefData().disable();
|
reference.getRefData().disable();
|
||||||
|
|
||||||
|
/* remove scripts on container contents */
|
||||||
|
if( reference.getTypeName()==typeid (ESM::Container).name() ||
|
||||||
|
reference.getTypeName()==typeid (ESM::NPC).name() ||
|
||||||
|
reference.getTypeName()==typeid (ESM::Creature).name())
|
||||||
|
{
|
||||||
|
MWWorld::ContainerStore& container = MWWorld::Class::get(reference).getContainerStore(reference);
|
||||||
|
for(MWWorld::ContainerStoreIterator it = container.begin(); it != container.end(); ++it)
|
||||||
|
{
|
||||||
|
std::string script = MWWorld::Class::get(*it).getScript(*it);
|
||||||
|
if(script != "")
|
||||||
|
{
|
||||||
|
MWWorld::Ptr item = *it;
|
||||||
|
mLocalScripts.remove (item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||||
mWorldScene->removeObjectFromScene (reference);
|
mWorldScene->removeObjectFromScene (reference);
|
||||||
|
|
Loading…
Reference in a new issue