mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-01 02:39:46 +00:00
Implement Fixme script instruction
This commit is contained in:
parent
ce9a18fb87
commit
f0971ee8ad
5 changed files with 22 additions and 2 deletions
|
@ -447,5 +447,7 @@ op 0x20002fe: RemoveFromLevItem
|
|||
op 0x20002ff: SetFactionReaction
|
||||
op 0x2000300: EnableLevelupMenu
|
||||
op 0x2000301: ToggleScripts
|
||||
op 0x2000302: Fixme
|
||||
op 0x2000303: Fixme, explicit
|
||||
|
||||
opcodes 0x2000302-0x3ffffff unused
|
||||
opcodes 0x2000304-0x3ffffff unused
|
||||
|
|
|
@ -734,6 +734,18 @@ namespace MWScript
|
|||
}
|
||||
};
|
||||
|
||||
template <class R>
|
||||
class OpFixme : public Interpreter::Opcode0
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void execute (Interpreter::Runtime& runtime)
|
||||
{
|
||||
MWWorld::Ptr ptr = R()(runtime);
|
||||
MWBase::Environment::get().getWorld()->fixPosition(ptr);
|
||||
}
|
||||
};
|
||||
|
||||
void installOpcodes (Interpreter::Interpreter& interpreter)
|
||||
{
|
||||
interpreter.installSegment5(Compiler::Transformation::opcodeSetScale,new OpSetScale<ImplicitRef>);
|
||||
|
@ -774,6 +786,8 @@ namespace MWScript
|
|||
interpreter.installSegment5(Compiler::Transformation::opcodeGetStartingAngle, new OpGetStartingAngle<ImplicitRef>);
|
||||
interpreter.installSegment5(Compiler::Transformation::opcodeGetStartingAngleExplicit, new OpGetStartingAngle<ExplicitRef>);
|
||||
interpreter.installSegment5(Compiler::Transformation::opcodeResetActors, new OpResetActors);
|
||||
interpreter.installSegment5(Compiler::Transformation::opcodeFixme, new OpFixme<ImplicitRef>);
|
||||
interpreter.installSegment5(Compiler::Transformation::opcodeFixmeExplicit, new OpFixme<ExplicitRef>);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1311,7 +1311,8 @@ namespace MWWorld
|
|||
actor.getRefData().setPosition(pos);
|
||||
|
||||
osg::Vec3f traced = mPhysics->traceDown(actor, dist*1.1f);
|
||||
moveObject(actor, actor.getCell(), traced.x(), traced.y(), traced.z());
|
||||
if (traced != pos.asVec3())
|
||||
moveObject(actor, actor.getCell(), traced.x(), traced.y(), traced.z());
|
||||
}
|
||||
|
||||
void World::rotateObject (const Ptr& ptr,float x,float y,float z, bool adjust)
|
||||
|
|
|
@ -541,6 +541,7 @@ namespace Compiler
|
|||
extensions.registerInstruction("moveworld","cf",opcodeMoveWorld,opcodeMoveWorldExplicit);
|
||||
extensions.registerFunction("getstartingangle",'f',"c",opcodeGetStartingAngle,opcodeGetStartingAngleExplicit);
|
||||
extensions.registerInstruction("resetactors","",opcodeResetActors);
|
||||
extensions.registerInstruction("fixme","",opcodeFixme, opcodeFixmeExplicit);
|
||||
extensions.registerInstruction("ra","",opcodeResetActors);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -498,6 +498,8 @@ namespace Compiler
|
|||
const int opcodeMoveWorld = 0x2000208;
|
||||
const int opcodeMoveWorldExplicit = 0x2000209;
|
||||
const int opcodeResetActors = 0x20002f4;
|
||||
const int opcodeFixme = 0x2000302;
|
||||
const int opcodeFixmeExplicit = 0x2000303;
|
||||
}
|
||||
|
||||
namespace User
|
||||
|
|
Loading…
Reference in a new issue