VR-Forces 4.1 Class Documentation
exampleKeyMap

This example shows how to register a function with the Key Map Manager, and bind it to a key event in a key map.

In this example we use the DtDisplayEngine method toggleWireframeMode(), and bind the key event F [Down] in the "Observer Frame" key map (the default).

  1. Get a reference to the input driver, which we need to access the Key Map Manager:

DtInputDriver& inputDriver =

  1. Get a reference to the Key Map Manager:

DtKeyMapManager& keyMapManager = DtKeyMapManager::instance(igApp.de());

  1. Register the toggleWireframeMode() method of DtDisplayEngine (and the application's instance of DtDisplayEngine) with the Key Map Manager, telling it to use "Toggle Wireframe" as the name of this function:

keyMapManager.addKeyFunction( "Toggle Wireframe", boost::bind(
&toggleWireframe, &igApp.de()), DtKeyMapManager::Rendering );

  1. Since the default key map is Observer Frame, add a key binding to that map. Of course, these last two steps could be omitted and instead use the Key Map Editor to create the key binding. Look up the key map:

DtKeyMap* obsFrame = keyMapManager.findKeyMap( "Observer Frame" );

  1. If the key map was found, bind the F key to the function named Toggle Wireframe. Note that the DtKeyMap (DtKeyMap.h) class has an addKeyMap() method that we could use directly, but the wrapper provided by the input driver provides some useful default parameters, making it a little easier to use:

if ( obsFrame )
{
inputDriver.addKeyBinding( obsFrame, DtKeyState::KEY_F,
"Toggle Wireframe" );
}

Building the Example

VR-Vantage includes pre-built versions of the example application. To build it yourself, follow the instructions at Building VR-Vantage Examples, Applications, and Plug-ins.

Running the Example

This example is an application. You can run it by running ./bin/exampleKeyMappage.exe (on Windows) or ./bin/exampleKeyMappage (on Linux). For more information about running examples, please see Running Applications and Examples.

Example Source Files


exampleKeyMap.cxx

// /******************************************************************************
// ** Copyright (c) 2008 MAK Technologies, Inc.
// ** All rights reserved.
// ******************************************************************************/
// /******************************************************************************
// ** $RCSfile: exampleKeyMap.cxx,v $ $Revision: 1.13 $ $State: Exp $
// ******************************************************************************/
#include <boost/bind.hpp>
#include <vrvCore/DtDe.h>
// Use the VR-Vantage namespace. All classes in VR-Vantage are in this namespace.
using namespace makVrv;
void toggleWireframe(DtDe* de)
{
}
int main(int argc,char** argv)
{
// A DtVrvApplication wraps up all the components required to build a complete
// VR-Vantage application (DtDe, DtPluginManager, DtEventLoop, and a
// DtVrvApplicationConfiguration).
// This causes the plugin manager to load plugins, cause a Display Configuration
// to be realized, creates the default environment, etc.
igApp.initialize(argc, argv);
DtInputDriver& inputDriver =
DtKeyMapManager& keyMapManager = DtKeyMapManager::instance(igApp.de());
keyMapManager.addKeyFunction( "Toggle Wireframe", boost::bind(
&toggleWireframe, &igApp.de()), DtKeyMapManager::Rendering );
DtKeyMap* obsFrame = keyMapManager.findKeyMap( "Observer Frame" );
if ( obsFrame )
{
inputDriver.addKeyBinding( obsFrame, DtKeyState::KEY_F,
"Toggle Wireframe" );
}
// Creates an event loop and begins running it, causing the creation of frames.
igApp.run();
}

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)