Re: [osg-users] Register object wrapper for osg::Geode

2015-03-24 Thread Robert Osfield
Hi John and Rui,

Well spotted.  I am not sure what to do about this one.  I think fixing the
REGISTER_OBJECT_WRAPPER to include osg::Group may well break the parsing of
.osgb files as the current serializers aren't versioned for the associates
list.

Having two separate wrappers might be the way forward.  Or adding some for
of versioning for the associate list.

Any thoughts Rui?

Cheers,
Robert.

On 24 March 2015 at 08:33, John Ivar Haugland john.haugl...@gmail.com
wrote:

 Hi,

 I notice that osg::Geode now inherits osg::Group instead of osg::Node.

 However, in the corresponsing serializer osg::Group is not mentioned in
 REGISTER_OBJECT_WRAPPER( Geode,
  new osg::Geode,
  osg::Geode,
  osg::Object osg::Node osg::Geode )


 Is this correct ? or should it be changed to

 REGISTER_OBJECT_WRAPPER( Geode,
  new osg::Geode,
  osg::Geode,
  osg::Object osg::Node osg::Group osg::Geode )


 Kind regards
 John Ivar Haugland



 ___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Register object wrapper for osg::Geode

2015-03-24 Thread Wang Rui
Hi Robert and John,


As Geode and Group serializers both contain only one user macro for storing 
children nodes, I think we can simply rewrite the Geode serializer like this:
REGISTER_OBJECT_WRAPPER( Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Geode )
{
ADD_USER_SERIALIZER( Drawables );  // _drawables‍

{
UPDATE_TO_VERSION_SCOPED( 115 )
REMOVE_SERIALIZER( Drawables‍ );‍
ADD_USER_SERIALIZER( Children );  // _children‍
}
}


Similar work should be done on osg::Drawable serializers as well to support 
some important attributes like NodeMask and CullingActive. This is the fastest 
way to update serializers and keep back-compatibility in my opinion, without 
changes to the core modules.


An alternative way is to have a new REGISTER_VERSIONED_OBJECT_WRAPPER macro to 
submit a new ObjectWrapper to the registry, in which only wrapper with newer 
version number can be accepted, such like:‍
REGISTER_VERSIONED_OBJECT_WRAPPER( 115, Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Group osg::Geode )‍

{
...
}


The second way might be easier and more readable for further use.


Cheers,


Wang Rui


-- Original --
From:  Robert Osfield;robert.osfi...@gmail.com;
Date:  Tue, Mar 24, 2015 05:37 PM
To:  OpenSceneGraph Usersosg-users@lists.openscenegraph.org; Wang 
Ruiwangra...@gmail.com; 

Subject:  Re: [osg-users] Register object wrapper for osg::Geode



Hi John and Rui,


Well spotted.  I am not sure what to do about this one.  I think fixing the 
REGISTER_OBJECT_WRAPPER to include osg::Group may well break the parsing of 
.osgb files as the current serializers aren't versioned for the associates list.


Having two separate wrappers might be the way forward.  Or adding some for of 
versioning for the associate list.


Any thoughts Rui?



Cheers,

Robert.


On 24 March 2015 at 08:33, John Ivar Haugland john.haugl...@gmail.com wrote:
Hi, 

I notice that osg::Geode now inherits osg::Group instead of osg::Node. 


However, in the corresponsing serializer osg::Group is not mentioned in 
REGISTER_OBJECT_WRAPPER( Geode,

 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Geode )





Is this correct ? or should it be changed to 


REGISTER_OBJECT_WRAPPER( Geode,

 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Group osg::Geode )






Kind regards
John Ivar Haugland





 
___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Register object wrapper for osg::Geode

2015-03-24 Thread Robert Osfield
HI Rui,

Thanks for your input.  I think the version wrapper would be the best way
forward.

Robert.

On 24 March 2015 at 14:39, Wang Rui wangra...@gmail.com wrote:

 Hi Robert and John,

 As Geode and Group serializers both contain only one user macro for
 storing children nodes, I think we can simply rewrite the Geode serializer
 like this:
 REGISTER_OBJECT_WRAPPER( Geode,
  new osg::Geode,
  osg::Geode,
  osg::Object osg::Node osg::Geode )
 {
 ADD_USER_SERIALIZER( Drawables );  // _drawables
 {
 UPDATE_TO_VERSION_SCOPED( 115 )
 REMOVE_SERIALIZER( Drawables );
 ADD_USER_SERIALIZER( Children );  // _children
 }
 }

 Similar work should be done on osg::Drawable serializers as well to
 support some important attributes like NodeMask and CullingActive. This is
 the fastest way to update serializers and keep back-compatibility in my
 opinion, without changes to the core modules.

 An alternative way is to have a new REGISTER_VERSIONED_OBJECT_WRAPPER
 macro to submit a new ObjectWrapper to the registry, in which only wrapper
 with newer version number can be accepted, such like:
 REGISTER_VERSIONED_OBJECT_WRAPPER( 115, Geode,
  new osg::Geode,
  osg::Geode,
  osg::Object osg::Group osg::Geode )
 {
 ...
 }

 The second way might be easier and more readable for further use.

 Cheers,

 Wang Rui

 -- Original --
 *From: * Robert Osfield;robert.osfi...@gmail.com;
 *Date: * Tue, Mar 24, 2015 05:37 PM
 *To: * OpenSceneGraph Usersosg-users@lists.openscenegraph.org; Wang
 Ruiwangra...@gmail.com;
 *Subject: * Re: [osg-users] Register object wrapper for osg::Geode

 Hi John and Rui,

 Well spotted. I am not sure what to do about this one. I think fixing the
 REGISTER_OBJECT_WRAPPER to include osg::Group may well break the parsing of
 .osgb files as the current serializers aren't versioned for the associates
 list.

 Having two separate wrappers might be the way forward. Or adding some for
 of versioning for the associate list.

 Any thoughts Rui?

 Cheers,
 Robert.

 On 24 March 2015 at 08:33, John Ivar Haugland john.haugl...@gmail.com
 wrote:

 Hi,

 I notice that osg::Geode now inherits osg::Group instead of osg::Node.

 However, in the corresponsing serializer osg::Group is not mentioned in
 REGISTER_OBJECT_WRAPPER( Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Geode )


 Is this correct ? or should it be changed to

 REGISTER_OBJECT_WRAPPER( Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Group osg::Geode )


 Kind regards
 John Ivar Haugland



 ___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org



___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Register object wrapper for osg::Geode

2015-03-24 Thread John Ivar Haugland
Hi,

I notice that osg::Geode now inherits osg::Group instead of osg::Node.

However, in the corresponsing serializer osg::Group is not mentioned in
REGISTER_OBJECT_WRAPPER( Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Geode )


Is this correct ? or should it be changed to

REGISTER_OBJECT_WRAPPER( Geode,
 new osg::Geode,
 osg::Geode,
 osg::Object osg::Node osg::Group osg::Geode )


Kind regards
John Ivar Haugland
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org