Hi Torben,
Sorry for the delay. I think that you have to override the className()
and libraryName() methods of your dataIO_transportContainer class,
which are used for searching recorded wrappers. A simpler way is to
use the META_Node macro:
namespace userNS
{
class dataIO_transportContainer : public osg::Group
{
public:
META_Node( userNS, dataIO_transportContainer );
...
};
}
Each of your classes should have a namespace ahead, which may be used
as the serializer plugin filename, too.
Wang Rui
2010/2/14 Torben Dannhauer <[email protected]>:
> Hi,
>
> Well, I have defined my wrapper for my testclass and it compiles,
> unfortunately it is not serialized.
>
> My testcall is:
>
> Code:
>
> dataIO_transportContainer* test = new dataIO_transportContainer();
> test->setFrameID( 22 );
>
> std::ofstream myOstream("test.txt" );
>
> osgDB::ReaderWriter* rw =
> osgDB::Registry::instance()->getReaderWriterForExtension("osgt");
> if ( rw )
> {
> OSG_NOTIFY( osg::ALWAYS ) << "Save testnode." << std::endl;
> osgDB::ReaderWriter::WriteResult wr = rw->writeNode( *test,
> myOstream, new osgDB::Options("Ascii") );
> if (wr.success() )
> OSG_NOTIFY( osg::ALWAYS ) << "Save successful." <<
> std::endl;
> else
> OSG_NOTIFY( osg::ALWAYS ) << "Save failed." <<
> std::endl;
> }
> else
> OSG_NOTIFY( osg::ALWAYS ) << "error getting readerWriter for
> osgt" << std::endl;
>
> myOstream.flush();
> myOstream.close();
>
>
>
>
> The outputfile contains:
>
> Code:
>
> #Ascii Scene
> #Version 2
> #Generator OpenSceneGraph 2.9.7
>
> osg::Group {
> UniqueID 1
> }
>
>
>
>
>
> The headerfile of the transport container is:
>
> Code:
>
> #pragma once
>
> #include <osg/Group>
> #include <osg/Matrixd>
>
> #include "dataIO_executer.h"
> #include "dataIO_slotContainer.h"
>
> #include <vector>
>
> class dataIO_transportContainer : public osg::Group
> {
> public:
> dataIO_transportContainer(){}
> virtual ~dataIO_transportContainer(){}
>
> typedef std::vector<osg::ref_ptr<dataIO_executer> > executerList;
> typedef std::vector<osg::ref_ptr<dataIO_slotContainer> > slotList;
>
> private:
> int frameID;
> osg::Matrixd viewMatrix;
> executerList executer;
> slotList ioSlots;
>
> // Access functions for Serializer
> public:
> int getFrameID() const {return frameID;}
> void setFrameID(int frameID_ ){frameID=frameID_;}
>
> void setViewMatrix(const osg::Matrixd&
> viewMatrix_){viewMatrix=viewMatrix_;}
> const osg::Matrixd& getViewMatrix() const {return viewMatrix;}
>
> void setExecuter(const executerList& executer_) {executer=executer_;}
> const executerList& getExecuter() const {return executer;}
>
> void setIOSlots(const slotList& ioSlots_) {ioSlots=ioSlots_;}
> const slotList& getIOSlots() const {return ioSlots;}
> };
>
>
> .. and the wrapper definition is:
>
>
>
>
>
>
>
>
> Code:
>
> #include "dataIO_transportContainer.h"
> #include <osgDB/ObjectWrapper>
> #include <osgDB/InputStream>
> #include <osgDB/OutputStream>
>
> REGISTER_OBJECT_WRAPPER( dataIO_transportContainer, //
> The unique wrapper name
> new dataIO_transportContainer, // The
> proto
> dataIO_transportContainer, // The
> class typename
> "osg::Object osg::Node
> osg::Group std::dataIO_transportContainer" ) // The inheritance relations
> {
> ADD_INT_SERIALIZER( FrameID, 0 );
> ADD_MATRIXD_SERIALIZER( ViewMatrix, osg::Matrixd() );
> ADD_LIST_SERIALIZER( Executer, dataIO_transportContainer::executerList
> );
> ADD_LIST_SERIALIZER( IOSlots, dataIO_transportContainer::slotList );
> }
>
>
>
>
>
>
> Why does serializer stop after defining the origin of this class? he onlsy
> write down that this class is inherited from osg::Group.
>
> Why does the serializer not dive into my class and serialzes all defined
> elements?
>
>
> Thank you for your help,
>
> Torben
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=24136#24136
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org