PDA

View Full Version : Help with VizExtension.command?


shivanangel
04-25-2014, 07:53 AM
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

#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

#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();
}

farshizzo
04-25-2014, 08:58 AM
It sounds like you are compiling the plugin with an incompatible version of Visual Studio. If you are not compiling with Visual Studio 2008, then you most likely will encounter issues like this due to mismatched C++ runtime versions.

shivanangel
04-25-2014, 09:04 AM
Ugh... I was afraid of that. Everything was working so well with Visual Studio 2012 until this little hick-up.

Thank you,
~George

shivanangel
04-29-2014, 06:58 AM
Just confirming for anyone else who searches for this answer, the problem was indeed the Compiler using later C++ runtimes.
I installed and compiled the .dle using Visual Studio 2008 and the problems and crashes disappeared.