mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 20:29:57 +00:00
Implement ToggleWorld instruction
This commit is contained in:
parent
3e153d0a9b
commit
c010c28337
9 changed files with 37 additions and 1 deletions
|
@ -119,6 +119,7 @@ namespace MWBase
|
||||||
virtual void setWaterHeight(const float height) = 0;
|
virtual void setWaterHeight(const float height) = 0;
|
||||||
|
|
||||||
virtual bool toggleWater() = 0;
|
virtual bool toggleWater() = 0;
|
||||||
|
virtual bool toggleWorld() = 0;
|
||||||
|
|
||||||
virtual void adjustSky() = 0;
|
virtual void adjustSky() = 0;
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,7 @@ RenderingManager::RenderingManager(OEngine::Render::OgreRenderer& _rend, const b
|
||||||
, mPhysicsEngine(engine)
|
, mPhysicsEngine(engine)
|
||||||
, mTerrain(NULL)
|
, mTerrain(NULL)
|
||||||
, mEffectManager(NULL)
|
, mEffectManager(NULL)
|
||||||
|
, mRenderWorld(true)
|
||||||
{
|
{
|
||||||
mActors = new MWRender::Actors(mRendering, this);
|
mActors = new MWRender::Actors(mRendering, this);
|
||||||
mObjects = new MWRender::Objects(mRendering);
|
mObjects = new MWRender::Objects(mRendering);
|
||||||
|
@ -232,6 +233,15 @@ bool RenderingManager::toggleWater()
|
||||||
return mWater->toggle();
|
return mWater->toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RenderingManager::toggleWorld()
|
||||||
|
{
|
||||||
|
mRenderWorld = !mRenderWorld;
|
||||||
|
|
||||||
|
int visibilityMask = mRenderWorld ? ~int(0) : 0;
|
||||||
|
mRendering.getViewport()->setVisibilityMask(visibilityMask);
|
||||||
|
return mRenderWorld;
|
||||||
|
}
|
||||||
|
|
||||||
void RenderingManager::cellAdded (MWWorld::CellStore *store)
|
void RenderingManager::cellAdded (MWWorld::CellStore *store)
|
||||||
{
|
{
|
||||||
if (store->isExterior())
|
if (store->isExterior())
|
||||||
|
|
|
@ -123,6 +123,7 @@ public:
|
||||||
|
|
||||||
void setWaterHeight(const float height);
|
void setWaterHeight(const float height);
|
||||||
bool toggleWater();
|
bool toggleWater();
|
||||||
|
bool toggleWorld();
|
||||||
|
|
||||||
/// Updates object rendering after cell change
|
/// Updates object rendering after cell change
|
||||||
/// \param old Object reference in previous cell
|
/// \param old Object reference in previous cell
|
||||||
|
@ -266,6 +267,8 @@ private:
|
||||||
MWRender::LocalMap* mLocalMap;
|
MWRender::LocalMap* mLocalMap;
|
||||||
|
|
||||||
MWRender::Shadows* mShadows;
|
MWRender::Shadows* mShadows;
|
||||||
|
|
||||||
|
bool mRenderWorld;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -432,5 +432,6 @@ op 0x20002ac-0x20002c3: SetMagicEffect, explicit
|
||||||
op 0x20002c4-0x20002db: ModMagicEffect
|
op 0x20002c4-0x20002db: ModMagicEffect
|
||||||
op 0x20002dc-0x20002f3: ModMagicEffect, explicit
|
op 0x20002dc-0x20002f3: ModMagicEffect, explicit
|
||||||
op 0x20002f4: ResetActors
|
op 0x20002f4: ResetActors
|
||||||
|
op 0x20002f5: ToggleWorld
|
||||||
|
|
||||||
opcodes 0x20002f5-0x3ffffff unused
|
opcodes 0x20002f6-0x3ffffff unused
|
||||||
|
|
|
@ -290,6 +290,17 @@ namespace MWScript
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class OpToggleWorld : public Interpreter::Opcode0
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual void execute (Interpreter::Runtime& runtime)
|
||||||
|
{
|
||||||
|
runtime.getContext().report(MWBase::Environment::get().getWorld()->toggleWorld() ? "World -> On"
|
||||||
|
: "World -> Off");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class OpDontSaveObject : public Interpreter::Opcode0
|
class OpDontSaveObject : public Interpreter::Opcode0
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -979,6 +990,7 @@ namespace MWScript
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeFadeTo, new OpFadeTo);
|
interpreter.installSegment5 (Compiler::Misc::opcodeFadeTo, new OpFadeTo);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeTogglePathgrid, new OpTogglePathgrid);
|
interpreter.installSegment5 (Compiler::Misc::opcodeTogglePathgrid, new OpTogglePathgrid);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeToggleWater, new OpToggleWater);
|
interpreter.installSegment5 (Compiler::Misc::opcodeToggleWater, new OpToggleWater);
|
||||||
|
interpreter.installSegment5 (Compiler::Misc::opcodeToggleWorld, new OpToggleWorld);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeDontSaveObject, new OpDontSaveObject);
|
interpreter.installSegment5 (Compiler::Misc::opcodeDontSaveObject, new OpDontSaveObject);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeToggleVanityMode, new OpToggleVanityMode);
|
interpreter.installSegment5 (Compiler::Misc::opcodeToggleVanityMode, new OpToggleVanityMode);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcSleep, new OpGetPcSleep);
|
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcSleep, new OpGetPcSleep);
|
||||||
|
|
|
@ -1663,6 +1663,11 @@ namespace MWWorld
|
||||||
return mRendering->toggleWater();
|
return mRendering->toggleWater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool World::toggleWorld()
|
||||||
|
{
|
||||||
|
return mRendering->toggleWorld();
|
||||||
|
}
|
||||||
|
|
||||||
void World::PCDropped (const Ptr& item)
|
void World::PCDropped (const Ptr& item)
|
||||||
{
|
{
|
||||||
std::string script = item.getClass().getScript(item);
|
std::string script = item.getClass().getScript(item);
|
||||||
|
|
|
@ -180,6 +180,7 @@ namespace MWWorld
|
||||||
virtual void setWaterHeight(const float height);
|
virtual void setWaterHeight(const float height);
|
||||||
|
|
||||||
virtual bool toggleWater();
|
virtual bool toggleWater();
|
||||||
|
virtual bool toggleWorld();
|
||||||
|
|
||||||
virtual void adjustSky();
|
virtual void adjustSky();
|
||||||
|
|
||||||
|
|
|
@ -256,6 +256,8 @@ namespace Compiler
|
||||||
extensions.registerInstruction ("fadeto", "ff", opcodeFadeTo);
|
extensions.registerInstruction ("fadeto", "ff", opcodeFadeTo);
|
||||||
extensions.registerInstruction ("togglewater", "", opcodeToggleWater);
|
extensions.registerInstruction ("togglewater", "", opcodeToggleWater);
|
||||||
extensions.registerInstruction ("twa", "", opcodeToggleWater);
|
extensions.registerInstruction ("twa", "", opcodeToggleWater);
|
||||||
|
extensions.registerInstruction ("toggleworld", "", opcodeToggleWorld);
|
||||||
|
extensions.registerInstruction ("tw", "", opcodeToggleWorld);
|
||||||
extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid);
|
extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid);
|
||||||
extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid);
|
extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid);
|
||||||
extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject);
|
extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject);
|
||||||
|
|
|
@ -212,6 +212,7 @@ namespace Compiler
|
||||||
const int opcodeFadeOut = 0x200013d;
|
const int opcodeFadeOut = 0x200013d;
|
||||||
const int opcodeFadeTo = 0x200013e;
|
const int opcodeFadeTo = 0x200013e;
|
||||||
const int opcodeToggleWater = 0x2000144;
|
const int opcodeToggleWater = 0x2000144;
|
||||||
|
const int opcodeToggleWorld = 0x20002f5;
|
||||||
const int opcodeTogglePathgrid = 0x2000146;
|
const int opcodeTogglePathgrid = 0x2000146;
|
||||||
const int opcodeDontSaveObject = 0x2000153;
|
const int opcodeDontSaveObject = 0x2000153;
|
||||||
const int opcodeToggleVanityMode = 0x2000174;
|
const int opcodeToggleVanityMode = 0x2000174;
|
||||||
|
|
Loading…
Reference in a new issue