VR-Vantage 1.4.1 API Class Documentation
exampleCreator

The exampleCreator example uses the creator pattern to cause a derived channel to get created when the display engine creates a channel. Here is the object class:

class MyExampleChannel : public DtOsgChannel
{

public:

   friend class MyExampleChannelCreator;

   virtual ~MyExampleChannel()
   {
   }
protected:

   MyExampleChannel(DtDe& de, DtWindow* window, DtChannelConfiguration& channelConfig)
      : DtOsgChannel(de, window, channelConfig)
   {
      // Do nothing. This is an example of registering a class using the creator pattern.

      // osgViewer::View* view = view();      
      // osg::Camera* camera = camera();
   }
};

Notice the protected constructor. This is because we are going to use a creator to create our channel. Here is the creator for the object class:

class MyExampleChannelCreator : public DtChannelCreator
{

public:

   virtual DtChannel* create(DtDe& de, DtWindow* window, DtChannelConfiguration& config)
   {
      return new MyExampleChannel(de, window, config);
   }
};

This creator is derived from the DtChannelCreator (DtChannel.h):

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/exampleCreator.exe (on Windows) or ./bin/exampleCreator (on Linux). For more information about running examples, please see Running Applications and Examples.


exampleCreator.cxx

// /****************************************************************************** 
// ** Copyright (c) 2008 MAK Technologies, Inc. 
// ** All rights reserved. 
// ******************************************************************************/ 
// /****************************************************************************** 
// ** $RCSfile: exampleCreator.cxx,v $ $Revision: 1.7 $ $State: Exp $ 
// ******************************************************************************/ 

#include <vrvCore/DtVrvApplication.h>
#include <vrvOsg/DtOsgChannel.h>

// Use the VR-Vantage namespace. All classes in VR-Vantage are in this namespace.
using namespace makVrv;

// An example derived channel. 
// This shows how to create and register your own channel with the DtDisplayEngine.
// This example demonstrates the Creator Pattern.
class MyExampleChannel : public DtOsgChannel
{

public:

   friend class MyExampleChannelCreator;

   virtual ~MyExampleChannel()
   {
   }

protected:

   MyExampleChannel(DtDe& de, DtWindow* window, DtChannelConfiguration& channelConfig)
      : DtOsgChannel(de, window, channelConfig)
   {
      // Do nothing. This is an example of registering a class using the creator pattern.

      // osgViewer::View* view = view();      
      // osg::Camera* camera = camera();
   }

};

class MyExampleChannelCreator : public DtChannelCreator
{

public:

   virtual DtChannel* create(DtDe& de, DtWindow* window, DtChannelConfiguration& config)
   {
      return new MyExampleChannel(de, window, config);
   }

};

// A DtVrvApplication wraps up all the components required to build a complete
// VR-Vantage application (DtDe, DtPluginManager, DtEventLoop, and a 
// DtVrvApplicationConfiguration).
//
// This derived application simply overrides the postLoadPluginModules() call
// to register our example channel after the plugins are loaded.
class MyExampleApplication : public DtVrvApplication
{

public:

   MyExampleApplication()
   : DtVrvApplication()
   {
   }

protected:

   virtual void postLoadPluginModules()
   {
      // Register the channel creator
      DtChannelCreator::registerInstance(*myDe, new MyExampleChannelCreator);
   }

};

int main(int argc,char** argv)
{
   // Create the example application class.
   MyExampleApplication application;

   // This causes the plugin manager to load plugins, cause a Display Configuration
   // to be realized, creates the default environment, etc.
   application.initialize(argc, argv);

   // Creates an event loop and begins running it, causing the creation of frames.
   application.run();
}


Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)