summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h')
-rw-r--r--src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h
index c52b1ee..e96a4e9 100644
--- a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h
+++ b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.h
@@ -2,6 +2,8 @@
#define OSGCONVERTER_H_W09J90F0
#include <uscxml/Interpreter.h>
+#include <osg/Node>
+#include <osgViewer/ViewerEventHandlers>
#ifdef BUILD_AS_PLUGINS
#include "uscxml/plugins/Plugins.h"
@@ -29,7 +31,35 @@ public:
virtual void cancel(const std::string sendId);
virtual void invoke(const InvokeRequest& req);
+ osg::Matrix requestToModelPose(const SendRequest& req);
+ osg::Matrix requestToCamPose(const SendRequest& req);
+
+ static osg::Matrix eulerToMatrix(double pitch, double roll, double yaw);
+ static void matrixToEuler(const osg::Matrix& m, double& pitch, double& roll, double& yaw);
+
protected:
+ class NameRespectingWriteToFile : public osgViewer::ScreenCaptureHandler::WriteToFile {
+ public:
+ NameRespectingWriteToFile(const std::string& filename,
+ const std::string& extension,
+ SavePolicy savePolicy) : osgViewer::ScreenCaptureHandler::WriteToFile(filename, extension, savePolicy) {
+ }
+
+ virtual void operator()(const osg::Image& image, const unsigned int context_id);
+ };
+
+ uscxml::concurrency::BlockingQueue<SendRequest> _workQueue;
+ osg::ref_ptr<osg::Node> setupGraph(const std::string filename);
+
+ std::map<std::string, std::pair<long, osg::ref_ptr<osg::Node> > > _models;
+ tthread::recursive_mutex _cacheMutex;
+
+ std::set<tthread::thread*> _threads;
+
+ static void run(void*);
+ void process(const SendRequest& req);
+
+ bool _isRunning;
};
#ifdef BUILD_AS_PLUGINS