I'm working to port a new version of our volume rendered over to C++ as a Vizard extension, but I'm running into some issues using the VizExtension.command method.
I followed your documentation, and I can construct a simple cube when I call my extensions .addNode() method.
However, when I try to use the .command method Vizard crashes on me every time.
Specifically, I'm just trying to send back bogus data from the C++ extension to Python using the data.set() method.
MyExtension Header
Code:
#pragma once
#include <viz\Extension>
#include <viz\python>
#include "MyNode.h"
class MyExtension : public viz::Extension
{
public:
MyExtension(void);
virtual const char* getName() const;
virtual viz::Referenced* createNode(viz::Data &data);
virtual void command( viz::Data& data);
protected:
virtual ~MyExtension(void);
protected:
osg::ref_ptr<viz::ExtensionOSGNode> node_;
};
MyExtension .ccp
Code:
#include "MyExtension.h"
MyExtension::MyExtension(void)
{
}
MyExtension::~MyExtension(void)
{
}
const char* MyExtension::getName() const
{
return "My Extension";
}
viz::Referenced* MyExtension::createNode(viz::Data &data)
{
node_ = new DummyNode;
return node_.get();
}
void MyExtension::command( viz::Data& data )
{
int command = data.getInt( "command" );
switch(command)
{
case 1: //Passing in the camera's normal
float tempX = data.getFloat("x");
data.set( PYTHON_RETURN_OBJECT, PYTHON_STRING("This is a test.") );
break;
}
}
extern "C" __declspec(dllexport) viz::Extension* CreateVizardExtension(viz::Data &data)
{
return new MyExtension();
}