Overview
This example shows how to register a creator function using a plugin. In this example, a new creator function is added for creating channels, but the concept applies for adding any kind of creator with a plugin.
Expected Result
Channel Plugin Result
Example details
The files DtExampleChannel.h and DtExampleChannel.cxx declare and define, respectively, the new type of channel to be created.
{
public:
friend class DtExampleChannelCreator;
virtual ~DtExampleChannel();
protected:
DtExampleChannel(DtDe& de, DtOsgWindow* window, DtChannelConfiguration& channelConfig);
virtual bool initialize();
};
DtExampleChannel::DtExampleChannel( DtDe& de, DtOsgWindow* window, DtChannelConfiguration& channelConfig )
: DtOsgChannel(de, window, channelConfig)
{
}
DtExampleChannel::~DtExampleChannel()
{
}
They also declare and define the creator function that will be registered by the plugin.
{
public:
virtual DtChannel* create(DtDe& de, DtWindow* window, DtChannelConfiguration& config);
};
DtChannel* DtExampleChannelCreator::create( DtDe& de, DtWindow* window, DtChannelConfiguration& config )
{
DtOsgWindow* osgWindow = dynamic_cast<DtOsgWindow*>(window);
if (!osgWindow)
{
return 0;
}
exampleChannelPluginInit.h declares the plugin initialization method.
Finally, exampleChannelPluginInit.cxx performs the standard plugin initialization in its init() method and registers the creator function for DtExampleChannel.
try
{
DtChannelCreator::registerInstance(de, new DtExampleChannelCreator);
}
DtCATCH_AND_PROPAGATE(DtCorruptedState)
Building the Example
VR-Vantage includes pre-built versions of the example plug-in. To build it yourself, follow the instructions at Building VR-Vantage Examples, Applications, and Plug-ins.
Running the Example
This example is a plug-in. You can run it by running ./bin64/exampleChannelPlugin_stealth.bat (on Windows) or ./bin64/exampleChannelPlugin_stealth.sh (on Linux). Select the menu "view->Display Engine Configuration Editor Panel", this will display the created channel with the custom name. For more information about running examples, please see Running Applications and Examples.
Example Source Files
exampleChannelPluginInit.h
#pragma once
#define DT_DE_PLUGIN_EXPORT_MACRO DT_DLL_EXAMPLECHANNELPLUGIN
namespace makVrv
{
class DtDe;
namespace vrvExampleChannelPlugin
{
}
}
exampleChannelPlugin.h
#ifndef exampleChannelPlugin_H_
#define exampleChannelPlugin_H_
#ifdef _WIN32
#ifdef EXAMPLECHANNELPLUGIN_EXPORTS
#define DT_DLL_EXAMPLECHANNELPLUGIN __declspec ( dllexport )
#else
#define DT_DLL_EXAMPLECHANNELPLUGIN __declspec ( dllimport )
#endif
#else
#define DT_DLL_EXAMPLECHANNELPLUGIN
#endif
#endif
exampleChannelPluginInit.cxx
{
return true;
}
namespace makVrv
{
namespace vrvExampleChannelPlugin
{
{
try
{
}
DtCATCH_AND_PROPAGATE(DtCorruptedState)
}
}
}
[<< Examples] [Home] [Top of Page]