Hi Rui,

Very cool!!! :-)

Changes now merged and submitted to svn/trunk.

Cheers,
Robert.

On 22 June 2013 05:13, Wang Rui <[email protected]> wrote:
> Hi Robert,
>
> The file attached includes two new features for the serialization IO
> functionality. First, custom serializer version control should work now,
> just by defining a new REGISTER_CUSTOM_OBJECT_WRAPPER macro. For example:
>
> // A custom class
> namespace CustomDomain {
>
> class MyGroup : public osg::Group
> {
> public:
>     META_Node( CustomDomain, MyGroup );
>
>     void setMyName( const std::string& n );
>     const std::string& getMyName() const;
>
>     void setMyID( int id );
>     int getMyID() const;
>
>     ...
> };
>
> }
>
> // The serialization wrapper using a custom domain name
> REGISTER_CUSTOM_OBJECT_WRAPPER( MyDomain,
>                                 CustomDomain_MyGroup,
>                                 new CustomDomain::MyGroup,
>                                 CustomDomain::MyGroup,
>                                 "osg::Object osg::Node osg::Group
> CustomDomain::MyGroup" )
> {
>     ADD_STRING_SERIALIZER( MyName, std::string() );
>     {
>         UPDATE_TO_VERSION_SCOPED( 1 );  // Updated for a new domain version
>         ADD_INT_SERIALIZER( MyID, 0 );
>     }
> }
>
> Save the class instance as follows:
> osgDB::writeNodeFile( *myGroup, "serializer_test.osgt", new
> osgDB::Options("CustomDomains=MyDomain:1") );
>
> The output file will include the domain version definition and all the class
> data, and can be read back. We can also force setting the domain version by
> the CustomDomains option while reading the saved files. If we save the class
> instance without any options, MyID will be ignored because the default
> domain version is 0.
>
> This may help third-party libraries like osgEarth to maintain their own
> serializers without regarding to the OSG soversion changes.
>
> Another feature added is a more robust binary format, which in fact adds a
> size-offset at each block's beginning. When there are problems or
> unsupported data types while reading, we can now directly jump to the block
> end indicated by the offset value. So a .osgb file will automatically ignore
> bad data and read remains as normal (at present it will fail at all). This
> feature will not break the backward compatibility, and can be disabled by
> setting "RobustBinaryFormat=false" while writing out.
>
> Hope these changes can work smoothly with present and future community
> projects. Maybe we should also consider have an osgserializer example to
> test and demonstrate all things we can do now.
>
> Cheers,
>
> Wang Rui
>
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to