mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-10 21:40:15 +00:00
Implement PcForce1stPerson, PcForce3rdPerson, PcGet3rdPerson (Bug #2078)
This commit is contained in:
parent
d955017079
commit
be16f1d0a5
@ -387,6 +387,7 @@ namespace MWBase
|
||||
virtual bool isOnGround(const MWWorld::Ptr &ptr) const = 0;
|
||||
|
||||
virtual void togglePOV() = 0;
|
||||
virtual bool isFirstPerson() const = 0;
|
||||
virtual void togglePreviewMode(bool enable) = 0;
|
||||
virtual bool toggleVanityMode(bool enable) = 0;
|
||||
virtual void allowVanityMode(bool allow) = 0;
|
||||
|
@ -433,5 +433,8 @@ op 0x20002c4-0x20002db: ModMagicEffect
|
||||
op 0x20002dc-0x20002f3: ModMagicEffect, explicit
|
||||
op 0x20002f4: ResetActors
|
||||
op 0x20002f5: ToggleWorld
|
||||
op 0x20002f6: PCForce1stPerson
|
||||
op 0x20002f7: PCForce3rdPerson
|
||||
op 0x20002f8: PCGet3rdPerson
|
||||
|
||||
opcodes 0x20002f6-0x3ffffff unused
|
||||
opcodes 0x20002f9-0x3ffffff unused
|
||||
|
@ -312,6 +312,35 @@ namespace MWScript
|
||||
}
|
||||
};
|
||||
|
||||
class OpPcForce1stPerson : public Interpreter::Opcode0
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void execute (Interpreter::Runtime& runtime)
|
||||
{
|
||||
if (!MWBase::Environment::get().getWorld()->isFirstPerson())
|
||||
MWBase::Environment::get().getWorld()->togglePOV();
|
||||
}
|
||||
};
|
||||
|
||||
class OpPcForce3rdPerson : public Interpreter::Opcode0
|
||||
{
|
||||
virtual void execute (Interpreter::Runtime& runtime)
|
||||
{
|
||||
if (MWBase::Environment::get().getWorld()->isFirstPerson())
|
||||
MWBase::Environment::get().getWorld()->togglePOV();
|
||||
}
|
||||
};
|
||||
|
||||
class OpPcGet3rdPerson : public Interpreter::Opcode0
|
||||
{
|
||||
public:
|
||||
virtual void execute(Interpreter::Runtime& runtime)
|
||||
{
|
||||
runtime.push(!MWBase::Environment::get().getWorld()->isFirstPerson());
|
||||
}
|
||||
};
|
||||
|
||||
class OpToggleVanityMode : public Interpreter::Opcode0
|
||||
{
|
||||
static bool sActivate;
|
||||
@ -1002,6 +1031,9 @@ namespace MWScript
|
||||
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::opcodePcForce1stPerson, new OpPcForce1stPerson);
|
||||
interpreter.installSegment5 (Compiler::Misc::opcodePcForce3rdPerson, new OpPcForce3rdPerson);
|
||||
interpreter.installSegment5 (Compiler::Misc::opcodePcGet3rdPerson, new OpPcGet3rdPerson);
|
||||
interpreter.installSegment5 (Compiler::Misc::opcodeToggleVanityMode, new OpToggleVanityMode);
|
||||
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcSleep, new OpGetPcSleep);
|
||||
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcJumping, new OpGetPcJumping);
|
||||
|
@ -451,6 +451,10 @@ namespace MWWorld
|
||||
mRendering->togglePOV();
|
||||
}
|
||||
|
||||
virtual bool isFirstPerson() const {
|
||||
return mRendering->getCamera()->isFirstPerson();
|
||||
}
|
||||
|
||||
virtual void togglePreviewMode(bool enable) {
|
||||
mRendering->togglePreviewMode(enable);
|
||||
}
|
||||
|
@ -261,6 +261,9 @@ namespace Compiler
|
||||
extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid);
|
||||
extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid);
|
||||
extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject);
|
||||
extensions.registerInstruction ("pcforce1stperson", "", opcodePcForce1stPerson);
|
||||
extensions.registerInstruction ("pcforce3rdperson", "", opcodePcForce3rdPerson);
|
||||
extensions.registerFunction ("pcget3rdperson", 'l', "", opcodePcGet3rdPerson);
|
||||
extensions.registerInstruction ("togglevanitymode", "", opcodeToggleVanityMode);
|
||||
extensions.registerInstruction ("tvm", "", opcodeToggleVanityMode);
|
||||
extensions.registerFunction ("getpcsleep", 'l', "", opcodeGetPcSleep);
|
||||
|
@ -215,6 +215,9 @@ namespace Compiler
|
||||
const int opcodeToggleWorld = 0x20002f5;
|
||||
const int opcodeTogglePathgrid = 0x2000146;
|
||||
const int opcodeDontSaveObject = 0x2000153;
|
||||
const int opcodePcForce1stPerson = 0x20002f6;
|
||||
const int opcodePcForce3rdPerson = 0x20002f7;
|
||||
const int opcodePcGet3rdPerson = 0x20002f8;
|
||||
const int opcodeToggleVanityMode = 0x2000174;
|
||||
const int opcodeGetPcSleep = 0x200019f;
|
||||
const int opcodeGetPcJumping = 0x2000233;
|
||||
|
Loading…
x
Reference in New Issue
Block a user