From 40e23fe26fd09bff2aff7d40d6cd7ba02d4aa710 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 18 Feb 2012 16:06:03 +0100 Subject: [PATCH] added twf console command --- apps/openmw/mwrender/renderingmanager.cpp | 20 ++++++++++++++++++-- apps/openmw/mwscript/docs/vmformat.txt | 3 ++- apps/openmw/mwscript/miscextensions.cpp | 22 +++++++++++++++++++++- apps/openmw/mwworld/world.hpp | 3 ++- 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 3b495dd3c..2b670f3f2 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -157,8 +157,24 @@ void RenderingManager::skySetMoonColour (bool red) { mSkyManager->setMoonColour(red); } -bool RenderingManager::toggleRenderMode(int mode){ - return mDebugging.toggleRenderMode(mode); + +bool RenderingManager::toggleRenderMode(int mode) +{ + if (mode == MWWorld::World::Render_CollisionDebug) + return mDebugging.toggleRenderMode(mode); + else // if (mode == MWWorld::World::Render_Wireframe) + { + if (mRendering.getCamera()->getPolygonMode() == PM_SOLID) + { + mRendering.getCamera()->setPolygonMode(PM_WIREFRAME); + return true; + } + else + { + mRendering.getCamera()->setPolygonMode(PM_SOLID); + return false; + } + } } void RenderingManager::configureFog(ESMS::CellStore &mCell) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 183605328..dd63ce775 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -115,4 +115,5 @@ op 0x2000136: GetPCCell op 0x2000137: GetButtonPressed op 0x2000138: SkipAnim op 0x2000139: SkipAnim, expplicit reference -opcodes 0x200013a-0x3ffffff unused +op 0x200013b: twf +opcodes 0x200013c-0x3ffffff unused diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index d8dfbdde4..64491e912 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -103,7 +103,24 @@ namespace MWScript context.getWorld().toggleRenderMode (MWWorld::World::Render_CollisionDebug); context.report (enabled ? - "Collsion Mesh Rendering -> On" : "Collision Mesh Rendering -> Off"); + "Collision Mesh Rendering -> On" : "Collision Mesh Rendering -> Off"); + } + }; + + class OpToggleWireframe : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context = + static_cast (runtime.getContext()); + + bool enabled = + context.getWorld().toggleRenderMode (MWWorld::World::Render_Wireframe); + + context.report (enabled ? + "Wireframe Rendering -> On" : "Wireframe Rendering -> Off"); } }; @@ -115,6 +132,7 @@ namespace MWScript const int opcodeUnlock = 0x200008c; const int opcodeUnlockExplicit = 0x200008d; const int opcodeToggleCollisionDebug = 0x2000132; + const int opcodeToggleWireframe = 0x200013b; void registerExtensions (Compiler::Extensions& extensions) { @@ -127,6 +145,7 @@ namespace MWScript extensions.registerInstruction ("togglecollisiongrid", "", opcodeToggleCollisionDebug); extensions.registerInstruction ("tcb", "", opcodeToggleCollisionDebug); extensions.registerInstruction ("tcg", "", opcodeToggleCollisionDebug); + extensions.registerInstruction ("twf", "", opcodeToggleWireframe); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -139,6 +158,7 @@ namespace MWScript interpreter.installSegment5 (opcodeUnlock, new OpUnlock); interpreter.installSegment5 (opcodeUnlockExplicit, new OpUnlock); interpreter.installSegment5 (opcodeToggleCollisionDebug, new OpToggleCollisionDebug); + interpreter.installSegment5 (opcodeToggleWireframe, new OpToggleWireframe); } } } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 893980456..68c09ce14 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -60,7 +60,8 @@ namespace MWWorld enum RenderMode { - Render_CollisionDebug + Render_CollisionDebug, + Render_Wireframe }; private: