mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-14 15:40:18 +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 bool isOnGround(const MWWorld::Ptr &ptr) const = 0;
|
||||||
|
|
||||||
virtual void togglePOV() = 0;
|
virtual void togglePOV() = 0;
|
||||||
|
virtual bool isFirstPerson() const = 0;
|
||||||
virtual void togglePreviewMode(bool enable) = 0;
|
virtual void togglePreviewMode(bool enable) = 0;
|
||||||
virtual bool toggleVanityMode(bool enable) = 0;
|
virtual bool toggleVanityMode(bool enable) = 0;
|
||||||
virtual void allowVanityMode(bool allow) = 0;
|
virtual void allowVanityMode(bool allow) = 0;
|
||||||
|
@ -433,5 +433,8 @@ op 0x20002c4-0x20002db: ModMagicEffect
|
|||||||
op 0x20002dc-0x20002f3: ModMagicEffect, explicit
|
op 0x20002dc-0x20002f3: ModMagicEffect, explicit
|
||||||
op 0x20002f4: ResetActors
|
op 0x20002f4: ResetActors
|
||||||
op 0x20002f5: ToggleWorld
|
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
|
class OpToggleVanityMode : public Interpreter::Opcode0
|
||||||
{
|
{
|
||||||
static bool sActivate;
|
static bool sActivate;
|
||||||
@ -1002,6 +1031,9 @@ namespace MWScript
|
|||||||
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::opcodeToggleWorld, new OpToggleWorld);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeDontSaveObject, new OpDontSaveObject);
|
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::opcodeToggleVanityMode, new OpToggleVanityMode);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcSleep, new OpGetPcSleep);
|
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcSleep, new OpGetPcSleep);
|
||||||
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcJumping, new OpGetPcJumping);
|
interpreter.installSegment5 (Compiler::Misc::opcodeGetPcJumping, new OpGetPcJumping);
|
||||||
|
@ -451,6 +451,10 @@ namespace MWWorld
|
|||||||
mRendering->togglePOV();
|
mRendering->togglePOV();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool isFirstPerson() const {
|
||||||
|
return mRendering->getCamera()->isFirstPerson();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void togglePreviewMode(bool enable) {
|
virtual void togglePreviewMode(bool enable) {
|
||||||
mRendering->togglePreviewMode(enable);
|
mRendering->togglePreviewMode(enable);
|
||||||
}
|
}
|
||||||
|
@ -261,6 +261,9 @@ namespace Compiler
|
|||||||
extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid);
|
extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid);
|
||||||
extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid);
|
extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid);
|
||||||
extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject);
|
extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject);
|
||||||
|
extensions.registerInstruction ("pcforce1stperson", "", opcodePcForce1stPerson);
|
||||||
|
extensions.registerInstruction ("pcforce3rdperson", "", opcodePcForce3rdPerson);
|
||||||
|
extensions.registerFunction ("pcget3rdperson", 'l', "", opcodePcGet3rdPerson);
|
||||||
extensions.registerInstruction ("togglevanitymode", "", opcodeToggleVanityMode);
|
extensions.registerInstruction ("togglevanitymode", "", opcodeToggleVanityMode);
|
||||||
extensions.registerInstruction ("tvm", "", opcodeToggleVanityMode);
|
extensions.registerInstruction ("tvm", "", opcodeToggleVanityMode);
|
||||||
extensions.registerFunction ("getpcsleep", 'l', "", opcodeGetPcSleep);
|
extensions.registerFunction ("getpcsleep", 'l', "", opcodeGetPcSleep);
|
||||||
|
@ -215,6 +215,9 @@ namespace Compiler
|
|||||||
const int opcodeToggleWorld = 0x20002f5;
|
const int opcodeToggleWorld = 0x20002f5;
|
||||||
const int opcodeTogglePathgrid = 0x2000146;
|
const int opcodeTogglePathgrid = 0x2000146;
|
||||||
const int opcodeDontSaveObject = 0x2000153;
|
const int opcodeDontSaveObject = 0x2000153;
|
||||||
|
const int opcodePcForce1stPerson = 0x20002f6;
|
||||||
|
const int opcodePcForce3rdPerson = 0x20002f7;
|
||||||
|
const int opcodePcGet3rdPerson = 0x20002f8;
|
||||||
const int opcodeToggleVanityMode = 0x2000174;
|
const int opcodeToggleVanityMode = 0x2000174;
|
||||||
const int opcodeGetPcSleep = 0x200019f;
|
const int opcodeGetPcSleep = 0x200019f;
|
||||||
const int opcodeGetPcJumping = 0x2000233;
|
const int opcodeGetPcJumping = 0x2000233;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user