From David Callu, serializer support for new Vec* and Vec*Array classes
This commit is contained in:
@@ -58,6 +58,11 @@ const int ID_VEC4_ARRAY = 17;
|
||||
const int ID_VEC2D_ARRAY = 18;
|
||||
const int ID_VEC3D_ARRAY = 19;
|
||||
const int ID_VEC4D_ARRAY = 20;
|
||||
const int ID_VEC2UB_ARRAY = 21;
|
||||
const int ID_VEC3UB_ARRAY = 22;
|
||||
const int ID_VEC2US_ARRAY = 23;
|
||||
const int ID_VEC3US_ARRAY = 24;
|
||||
const int ID_VEC4US_ARRAY = 25;
|
||||
|
||||
const int ID_DRAWARRAYS = 50;
|
||||
const int ID_DRAWARRAY_LENGTH = 51;
|
||||
|
||||
@@ -105,10 +105,15 @@ public:
|
||||
InputStream& operator>>( osg::Vec2b& v );
|
||||
InputStream& operator>>( osg::Vec3b& v );
|
||||
InputStream& operator>>( osg::Vec4b& v );
|
||||
InputStream& operator>>( osg::Vec2ub& v );
|
||||
InputStream& operator>>( osg::Vec3ub& v );
|
||||
InputStream& operator>>( osg::Vec4ub& v );
|
||||
InputStream& operator>>( osg::Vec2s& v );
|
||||
InputStream& operator>>( osg::Vec3s& v );
|
||||
InputStream& operator>>( osg::Vec4s& v );
|
||||
InputStream& operator>>( osg::Vec2us& v );
|
||||
InputStream& operator>>( osg::Vec3us& v );
|
||||
InputStream& operator>>( osg::Vec4us& v );
|
||||
InputStream& operator>>( osg::Vec2i& v );
|
||||
InputStream& operator>>( osg::Vec3i& v );
|
||||
InputStream& operator>>( osg::Vec4i& v );
|
||||
|
||||
@@ -110,10 +110,15 @@ public:
|
||||
OutputStream& operator<<( const osg::Vec2b& v );
|
||||
OutputStream& operator<<( const osg::Vec3b& v );
|
||||
OutputStream& operator<<( const osg::Vec4b& v );
|
||||
OutputStream& operator<<( const osg::Vec2ub& v );
|
||||
OutputStream& operator<<( const osg::Vec3ub& v );
|
||||
OutputStream& operator<<( const osg::Vec4ub& v );
|
||||
OutputStream& operator<<( const osg::Vec2s& v );
|
||||
OutputStream& operator<<( const osg::Vec3s& v );
|
||||
OutputStream& operator<<( const osg::Vec4s& v );
|
||||
OutputStream& operator<<( const osg::Vec2us& v );
|
||||
OutputStream& operator<<( const osg::Vec3us& v );
|
||||
OutputStream& operator<<( const osg::Vec4us& v );
|
||||
OutputStream& operator<<( const osg::Vec2i& v );
|
||||
OutputStream& operator<<( const osg::Vec3i& v );
|
||||
OutputStream& operator<<( const osg::Vec4i& v );
|
||||
|
||||
@@ -125,9 +125,9 @@ public:
|
||||
RW_BOOL, RW_CHAR, RW_UCHAR, RW_SHORT, RW_USHORT, RW_INT, RW_UINT, RW_FLOAT, RW_DOUBLE,
|
||||
RW_VEC2F, RW_VEC2D, RW_VEC3F, RW_VEC3D, RW_VEC4F, RW_VEC4D, RW_QUAT, RW_PLANE,
|
||||
RW_MATRIXF, RW_MATRIXD, RW_MATRIX, RW_GLENUM, RW_STRING, RW_ENUM,
|
||||
RW_VEC2B, RW_VEC2S, RW_VEC2I, RW_VEC2UI,
|
||||
RW_VEC3B, RW_VEC3S, RW_VEC3I, RW_VEC3UI,
|
||||
RW_VEC4B, RW_VEC4UB, RW_VEC4S, RW_VEC4I, RE_VEC4UI
|
||||
RW_VEC2B, RW_VEC2UB, RW_VEC2S, RW_VEC2US, RW_VEC2I, RW_VEC2UI,
|
||||
RW_VEC3B, RW_VEC3UB, RW_VEC3S, RW_VEC3US, RW_VEC3I, RW_VEC3UI,
|
||||
RW_VEC4B, RW_VEC4UB, RW_VEC4S, RW_VEC4US, RW_VEC4I, RE_VEC4UI
|
||||
};
|
||||
|
||||
BaseSerializer() : _firstVersion(0), _lastVersion(INT_MAX) {}
|
||||
@@ -880,12 +880,20 @@ public:
|
||||
|
||||
#define ADD_VEC2B_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2b >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2B1 )
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2B )
|
||||
|
||||
#define ADD_VEC2UB_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2ub >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2UB )
|
||||
|
||||
#define ADD_VEC2S_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2s >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2S )
|
||||
|
||||
#define ADD_VEC2US_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2us >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2US )
|
||||
|
||||
#define ADD_VEC2I_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2i >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2I )
|
||||
@@ -909,10 +917,18 @@ public:
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3b >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3B )
|
||||
|
||||
#define ADD_VEC3UB_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3ub >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3UB )
|
||||
|
||||
#define ADD_VEC3S_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3s >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3S )
|
||||
|
||||
#define ADD_VEC3US_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3us >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3US )
|
||||
|
||||
#define ADD_VEC3I_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3i >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3I )
|
||||
@@ -943,6 +959,10 @@ public:
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4s >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4S )
|
||||
|
||||
#define ADD_VEC4US_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4us >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4US )
|
||||
|
||||
#define ADD_VEC4I_SERIALIZER(PROP, DEF) \
|
||||
wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4i >( \
|
||||
#PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4I )
|
||||
|
||||
@@ -101,9 +101,23 @@ InputStream& InputStream::operator>>( osg::Vec4b& v )
|
||||
return *this;
|
||||
}
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec2ub& v )
|
||||
{
|
||||
unsigned char x, y; *this >> x >> y;
|
||||
v.set( x, y );
|
||||
return *this;
|
||||
}
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec3ub& v )
|
||||
{
|
||||
unsigned char x, y, z; *this >> x >> y >> z;
|
||||
v.set( x, y, z );
|
||||
return *this;
|
||||
}
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec4ub& v )
|
||||
{
|
||||
char r, g, b, a; *this >> r >> g >> b >> a;
|
||||
unsigned char r, g, b, a; *this >> r >> g >> b >> a;
|
||||
v.set( r, g, b, a );
|
||||
return *this;
|
||||
}
|
||||
@@ -117,6 +131,15 @@ InputStream& InputStream::operator>>( osg::Vec3s& v )
|
||||
InputStream& InputStream::operator>>( osg::Vec4s& v )
|
||||
{ *this >> v.x() >> v.y() >> v.z() >> v.w(); return *this; }
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec2us& v )
|
||||
{ *this >> v.x() >> v.y(); return *this; }
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec3us& v )
|
||||
{ *this >> v.x() >> v.y() >> v.z(); return *this; }
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec4us& v )
|
||||
{ *this >> v.x() >> v.y() >> v.z() >> v.w(); return *this; }
|
||||
|
||||
|
||||
InputStream& InputStream::operator>>( osg::Vec2i& v )
|
||||
{ *this >> v.x() >> v.y(); return *this; }
|
||||
@@ -360,6 +383,20 @@ osg::Array* InputStream::readArray()
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC2UB_ARRAY:
|
||||
{
|
||||
osg::Vec2ubArray* va = new osg::Vec2ubArray;
|
||||
readArrayImplementation( va, 2, CHAR_SIZE );
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC3UB_ARRAY:
|
||||
{
|
||||
osg::Vec3ubArray* va = new osg::Vec3ubArray;
|
||||
readArrayImplementation( va, 3, CHAR_SIZE );
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC4UB_ARRAY:
|
||||
{
|
||||
osg::Vec4ubArray* va = new osg::Vec4ubArray;
|
||||
@@ -388,6 +425,27 @@ osg::Array* InputStream::readArray()
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC2US_ARRAY:
|
||||
{
|
||||
osg::Vec2usArray* va = new osg::Vec2usArray;
|
||||
readArrayImplementation( va, 2, SHORT_SIZE );
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC3US_ARRAY:
|
||||
{
|
||||
osg::Vec3usArray* va = new osg::Vec3usArray;
|
||||
readArrayImplementation( va, 3, SHORT_SIZE );
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC4US_ARRAY:
|
||||
{
|
||||
osg::Vec4usArray* va = new osg::Vec4usArray;
|
||||
readArrayImplementation( va, 4, SHORT_SIZE );
|
||||
array = va;
|
||||
}
|
||||
break;
|
||||
case ID_VEC2_ARRAY:
|
||||
{
|
||||
osg::Vec2Array* va = new osg::Vec2Array;
|
||||
|
||||
@@ -519,10 +519,15 @@ ObjectWrapperManager::ObjectWrapperManager()
|
||||
arrayTable.add( "Vec2bArray", ID_VEC2B_ARRAY );
|
||||
arrayTable.add( "Vec3bArray", ID_VEC3B_ARRAY );
|
||||
arrayTable.add( "Vec4bArray", ID_VEC4B_ARRAY );
|
||||
arrayTable.add( "Vec2ubArray", ID_VEC2UB_ARRAY );
|
||||
arrayTable.add( "Vec3ubArray", ID_VEC3UB_ARRAY );
|
||||
arrayTable.add( "Vec4ubArray", ID_VEC4UB_ARRAY );
|
||||
arrayTable.add( "Vec2sArray", ID_VEC2S_ARRAY );
|
||||
arrayTable.add( "Vec3sArray", ID_VEC3S_ARRAY );
|
||||
arrayTable.add( "Vec4sArray", ID_VEC4S_ARRAY );
|
||||
arrayTable.add( "Vec2usArray", ID_VEC2US_ARRAY );
|
||||
arrayTable.add( "Vec3usArray", ID_VEC3US_ARRAY );
|
||||
arrayTable.add( "Vec4usArray", ID_VEC4US_ARRAY );
|
||||
arrayTable.add( "Vec2fArray", ID_VEC2_ARRAY );
|
||||
arrayTable.add( "Vec3fArray", ID_VEC3_ARRAY );
|
||||
arrayTable.add( "Vec4fArray", ID_VEC4_ARRAY );
|
||||
|
||||
@@ -81,6 +81,12 @@ OutputStream& OutputStream::operator<<( const osg::Vec3b& v )
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec4b& v )
|
||||
{ *this << v.x() << v.y() << v.z() << v.w(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec2ub& v )
|
||||
{ *this << v.x() << v.y(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec3ub& v )
|
||||
{ *this << v.x() << v.y() << v.z(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec4ub& v )
|
||||
{ *this << v.r() << v.g() << v.b() << v.a(); return *this; }
|
||||
|
||||
@@ -93,6 +99,15 @@ OutputStream& OutputStream::operator<<( const osg::Vec3s& v )
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec4s& v )
|
||||
{ *this << v.x() << v.y() << v.z() << v.w(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec2us& v )
|
||||
{ *this << v.x() << v.y(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec3us& v )
|
||||
{ *this << v.x() << v.y() << v.z(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec4us& v )
|
||||
{ *this << v.x() << v.y() << v.z() << v.w(); return *this; }
|
||||
|
||||
OutputStream& OutputStream::operator<<( const osg::Vec2f& v )
|
||||
{ *this << v.x() << v.y(); return *this; }
|
||||
|
||||
@@ -227,6 +242,14 @@ void OutputStream::writeArray( const osg::Array* a )
|
||||
*this << MAPPEE(ArrayType, ID_VEC4B_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec4bArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec2ubArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC2UB_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec2ubArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec3ubArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC3UB_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec3ubArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec4ubArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC4UB_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec4ubArray*>(a), a->getNumElements() );
|
||||
@@ -243,6 +266,18 @@ void OutputStream::writeArray( const osg::Array* a )
|
||||
*this << MAPPEE(ArrayType, ID_VEC4S_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec4sArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec2usArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC2US_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec2usArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec3usArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC3US_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec3usArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec4usArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC4US_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec4usArray*>(a), a->getNumElements() );
|
||||
break;
|
||||
case osg::Array::Vec2ArrayType:
|
||||
*this << MAPPEE(ArrayType, ID_VEC2_ARRAY);
|
||||
writeArrayImplementation( static_cast<const osg::Vec2Array*>(a), a->getNumElements() );
|
||||
|
||||
Reference in New Issue
Block a user