Hi Carsten and Gerrit,

Ok I will give it a try.

Attached you can find a first version of the changes. I have added a osgGLId field to the ref property classes. I still use the inherited GLId field, but I have added an getOglGLId/setOglGLId API. I have still an issue with the implementation since in the former cpp-files you can find a few statements with getGLId() != 0 and I'm unsure how to handle these correctly. I have replace these calls by (getOsgGLId() != 0 || getOglGLId() != 0). Can I safely use this->getOpenGLId(pEnv) != 0 instead. Especially, in the integral ref property implementation of the changeFrom function, their is a call to a GeoIntegralProperty::getGLId() (line 165) that can not be replaced with my schema since getOsgGLId()/getOglGLId() are unknown here.

Do you have an idea how I should implement this reasonably?

Best,
Johannes

P.S.: I also have the ShaderStorageBufferObjRef finished. This does not have any unclear issues. But since I was recently forced to introduce a common base class for the ShaderStorageBufferObj chunk classes and one for the UniformBufferObj chunk classes, I will send them separately. This ssbo/ubo patch exceeds the 200kB limit of the mailing list and therefore I allow me to send this patch directly to Carsten. Hope that this is fine for you.



diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.cpp
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.cpp
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.cpp
      2017-05-11 11:33:54.387564100 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.cpp
      2017-05-11 11:11:59.379763500 +0200
@@ -117,22 +117,47 @@ void GeoIntegralBufferRefProperty::dump(
     SLOG << "Dump GeoIntegralBufferRefProperty NI" << std::endl;

 }

 

+/*------------------------------ tools --------------------------------------*/

+

+void GeoIntegralBufferRefProperty::validate(DrawEnv *pEnv)

+{

+    if(this->getOsgGLId() != 0)

+    {

+        pEnv->getWindow()->validateGLObject(this->getOsgGLId(),

+                                            pEnv              );

+    }

+}

+

+Int32 GeoIntegralBufferRefProperty::getOpenGLId(DrawEnv *pEnv)

+{

+    if(this->getOsgGLId() != 0)

+    {

+        return pEnv->getWindow()->getGLObjectId(this->getOsgGLId());

+    }

+    else

+    {

+        return this->getOglGLId();

+    }

+}

+

 void GeoIntegralBufferRefProperty::activate(DrawEnv *pEnv, UInt32 slot)

 {

-    Window *win = pEnv->getWindow();

-    

-    if(!win->hasExtOrVersion(_extVertexBufferObject, 0x0105, 0x0200))

+    Window *pWin = pEnv->getWindow();

+

+    if(!pWin->hasExtOrVersion(_extVertexBufferObject, 0x0105, 0x0200))

         return;

 

-    if(getGLId() != 0 && getUseVBO()) // Do we have a VBO?

+    if((getOsgGLId() != 0 || getOglGLId() != 0) && getUseVBO()) // Do we have 
a VBO?

     {

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

         OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

                                  osgGlBindBuffer,

                                 _funcBindBuffer, 

-                                 win);

+                                 pWin);

 

-        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 

-                        getGLId());

+        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, id);

     }

 }

 

@@ -145,22 +170,24 @@ void GeoIntegralBufferRefProperty::chang
     if(old == this)

         return;

 

-    Window *win = pEnv->getWindow();

+    Window *pWin = pEnv->getWindow();

 

     GeoIntegralProperty *o = dynamic_cast<GeoIntegralProperty*>(old);

     

-    if(!win->hasExtOrVersion(_extVertexBufferObject, 0x0105, 0x0200))

+    if(!pWin->hasExtOrVersion(_extVertexBufferObject, 0x0105, 0x0200))

         return;

 

     OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

                              osgGlBindBuffer,

                             _funcBindBuffer, 

-                             win);

+                             pWin);

 

-    if(getGLId() != 0 && getUseVBO()) // Do we have a VBO?

+    if((getOsgGLId() != 0 || getOglGLId() != 0) && getUseVBO()) // Do we have 
a VBO?

     {

-        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 

-                        getGLId());

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

+        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, id);

     }

     else if(o != NULL && o->getGLId() != 0 && o->getUseVBO())

     {

@@ -172,10 +199,13 @@ void *GeoIntegralBufferRefProperty::mapB
 {

     void *returnValue = NULL;

 

-    if((getUseVBO() == true) && (getGLId() != 0))

+    if((getUseVBO() == true) && (getOsgGLId() != 0 || getOglGLId() != 0))

     {

         Window *pWin = pEnv->getWindow();

 

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

         osgSinkUnusedWarning(pWin);

 

         OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

@@ -188,8 +218,7 @@ void *GeoIntegralBufferRefProperty::mapB
                                 _funcMapBuffer, 

                                  pWin);

       

-        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,

-                        getGLId());

+        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, id);

 

         returnValue = osgGlMapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, eAccess);

 

@@ -203,10 +232,13 @@ bool GeoIntegralBufferRefProperty::unmap
 {

     bool returnValue = true;

 

-    if((getUseVBO() == true) && (getGLId() != 0))

+    if((getUseVBO() == true) && (getOsgGLId() != 0 || getOglGLId() != 0))

     {

         Window *pWin = pEnv->getWindow();

 

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

         osgSinkUnusedWarning(pWin);

 

         OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

@@ -219,8 +251,7 @@ bool GeoIntegralBufferRefProperty::unmap
                                 _funcUnmapBuffer, 

                                  pWin);

 

-        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,

-                        getGLId());

+        osgGlBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, id);

 

         returnValue = osgGlUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB) != 0;

 

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.fcd
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.fcd
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.fcd
      2017-05-11 11:33:54.388564100 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.fcd
      2017-05-11 10:47:15.291179500 +0200
@@ -12,4 +12,20 @@
    childFields="both"

    docGroupBase="GrpDrawablesGeometry"

    >

+

+    <Field

+        name="osgGLId"

+        type="UInt32"

+        cardinality="single"

+        visibility="internal"

+        access="public"

+        defaultValue="0"

+        fieldFlags="FClusterLocal"

+       >

+            The OpenSG GL object id for this geo property buffer object. If 
osgGLId is set, the GL object id

+            is determined by OpenSG. If osgGLId equals 0, the GLId is used 
directly as the GL object id.

+            An API getOglGLId()/setOglGLId() is provided to get/set the 
inherited GLId. This brings the

+            interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk

+            classes.

+    </Field>

 </FieldContainer>

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.h
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.h
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.h
        2017-05-11 11:33:54.388564100 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.h
        2017-05-11 10:52:51.819676500 +0200
@@ -78,7 +78,10 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
     /*! \name                    State Commands                            */

     /*! \{                                                                 */

 

-    void setGLId(UInt32 uiGLId);

+    void         setGLId         (UInt32 uiGLId);

+

+    UInt32       getOglGLId      (void) const;

+    void         setOglGLId      (UInt32 uiGLId);

 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

@@ -101,6 +104,14 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

+    /*! \name             OpenGL handling                                  */

+    /*! \{                                                                 */

+

+    virtual void   validate               (DrawEnv *pEnv);

+    virtual Int32  getOpenGLId            (DrawEnv *pEnv);

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                     Output                                   */

     /*! \{                                                                 */

 

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.inl
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.inl
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.inl
      2017-05-11 11:33:54.389564200 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefProperty.inl
      2017-05-11 11:00:17.927742900 +0200
@@ -46,4 +46,16 @@ void GeoIntegralBufferRefProperty::setGL
     Inherited::setGLId(uiGLId);

 }

 

+inline

+UInt32 GeoIntegralBufferRefProperty::getOglGLId(void) const

+{

+    return Inherited::getGLId();

+}

+

+inline

+void GeoIntegralBufferRefProperty::setOglGLId(UInt32 uiGLId)

+{

+    Inherited::setGLId(uiGLId);

+}

+

 OSG_END_NAMESPACE

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.cpp
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.cpp
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.cpp
  2017-05-11 11:33:54.389564200 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.cpp
  2017-05-11 10:51:06.666413500 +0200
@@ -82,6 +82,14 @@ OSG_BEGIN_NAMESPACE
  *                        Field Documentation                              *

 \***************************************************************************/

 

+/*! \var UInt32          GeoIntegralBufferRefPropertyBase::_sfOsgGLId

+    The OpenSG GL object id for this geo property buffer object. If osgGLId is 
set, the GL object id
+    is determined by OpenSG. If osgGLId equals 0, the GLId is used directly as 
the GL object id.
+    An API getOglGLId()/setOglGLId() is provided to get/set the inherited 
GLId. This brings the
+    interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk
+    classes.

+*/

+

 

 /***************************************************************************\

  *                      FieldType/FieldTrait Instantiation                 *

@@ -129,6 +137,24 @@ OSG_EXPORT_PTR_MFIELD(ChildPointerMField
 

 void GeoIntegralBufferRefPropertyBase::classDescInserter(TypeObject &oType)

 {

+    FieldDescriptionBase *pDesc = NULL;

+

+

+    pDesc = new SFUInt32::Description(

+        SFUInt32::getClassType(),

+        "osgGLId",

+        "The OpenSG GL object id for this geo property buffer object. If 
osgGLId is set, the GL object id\n"
+        "is determined by OpenSG. If osgGLId equals 0, the GLId is used 
directly as the GL object id.\n"
+        "An API getOglGLId()/setOglGLId() is provided to get/set the inherited 
GLId. This brings the\n"
+        "interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk\n"
+        "classes.\n",

+        OsgGLIdFieldId, OsgGLIdFieldMask,

+        true,

+        (Field::FClusterLocal),

+        
static_cast<FieldEditMethodSig>(&GeoIntegralBufferRefProperty::editHandleOsgGLId),

+        static_cast<FieldGetMethodSig 
>(&GeoIntegralBufferRefProperty::getHandleOsgGLId));

+

+    oType.addInitialDesc(pDesc);

 }

 

 

@@ -143,20 +169,36 @@ GeoIntegralBufferRefPropertyBase::TypeOb
     
reinterpret_cast<InitalInsertDescFunc>(&GeoIntegralBufferRefProperty::classDescInserter),

     false,

     0,

-    "<?xml version=\"1.0\"?>\n"

-    "\n"

-    "<FieldContainer\n"

-    "   name=\"GeoIntegralBufferRefProperty\"\n"

-    "   parent=\"GeoIntegralBufferProperty\"\n"

-    "   library=\"Drawable\"\n"

-    "   pointerfieldtypes=\"both\"\n"

-    "   structure=\"concrete\"\n"

-    "   systemcomponent=\"true\"\n"

-    "   parentsystemcomponent=\"true\"\n"

-    "   decoratable=\"false\"\n"

-    "   childFields=\"both\"\n"

-    "   docGroupBase=\"GrpDrawablesGeometry\"\n"

-    "   >\n"

+    "<?xml version=\"1.0\"?>\n"
+    "\n"
+    "<FieldContainer\n"
+    "   name=\"GeoIntegralBufferRefProperty\"\n"
+    "   parent=\"GeoIntegralBufferProperty\"\n"
+    "   library=\"Drawable\"\n"
+    "   pointerfieldtypes=\"both\"\n"
+    "   structure=\"concrete\"\n"
+    "   systemcomponent=\"true\"\n"
+    "   parentsystemcomponent=\"true\"\n"
+    "   decoratable=\"false\"\n"
+    "   childFields=\"both\"\n"
+    "   docGroupBase=\"GrpDrawablesGeometry\"\n"
+    "   >\n"
+    "\n"
+    "    <Field\n"
+    "        name=\"osgGLId\"\n"
+    "        type=\"UInt32\"\n"
+    "        cardinality=\"single\"\n"
+    "        visibility=\"internal\"\n"
+    "        access=\"public\"\n"
+    "        defaultValue=\"0\"\n"
+    "        fieldFlags=\"FClusterLocal\"\n"
+    "\t>\n"
+    "            The OpenSG GL object id for this geo property buffer object. 
If osgGLId is set, the GL object id\n"
+    "            is determined by OpenSG. If osgGLId equals 0, the GLId is 
used directly as the GL object id.\n"
+    "            An API getOglGLId()/setOglGLId() is provided to get/set the 
inherited GLId. This brings the\n"
+    "            interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk\n"
+    "            classes.\n"
+    "    </Field>\n"
     "</FieldContainer>\n",

     ""

     );

@@ -181,6 +223,19 @@ UInt32 GeoIntegralBufferRefPropertyBase:
 /*------------------------- decorator get ------------------------------*/

 

 

+SFUInt32 *GeoIntegralBufferRefPropertyBase::editSFOsgGLId(void)

+{

+    editSField(OsgGLIdFieldMask);

+

+    return &_sfOsgGLId;

+}

+

+const SFUInt32 *GeoIntegralBufferRefPropertyBase::getSFOsgGLId(void) const

+{

+    return &_sfOsgGLId;

+}

+

+

 

 

 

@@ -191,6 +246,10 @@ SizeT GeoIntegralBufferRefPropertyBase::
 {

     SizeT returnValue = Inherited::getBinSize(whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        returnValue += _sfOsgGLId.getBinSize();

+    }

 

     return returnValue;

 }

@@ -200,6 +259,10 @@ void GeoIntegralBufferRefPropertyBase::c
 {

     Inherited::copyToBin(pMem, whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        _sfOsgGLId.copyToBin(pMem);

+    }

 }

 

 void GeoIntegralBufferRefPropertyBase::copyFromBin(BinaryDataHandler &pMem,

@@ -207,6 +270,11 @@ void GeoIntegralBufferRefPropertyBase::c
 {

     Inherited::copyFromBin(pMem, whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        editSField(OsgGLIdFieldMask);

+        _sfOsgGLId.copyFromBin(pMem);

+    }

 }

 

 //! create a new instance of the class

@@ -331,12 +399,14 @@ FieldContainerTransitPtr GeoIntegralBuff
 /*------------------------- constructors ----------------------------------*/

 

 GeoIntegralBufferRefPropertyBase::GeoIntegralBufferRefPropertyBase(void) :

-    Inherited()

+    Inherited(),

+    _sfOsgGLId                (UInt32(0))

 {

 }

 

 GeoIntegralBufferRefPropertyBase::GeoIntegralBufferRefPropertyBase(const 
GeoIntegralBufferRefPropertyBase &source) :

-    Inherited(source)

+    Inherited(source),

+    _sfOsgGLId                (source._sfOsgGLId                )

 {

 }

 

@@ -348,6 +418,31 @@ GeoIntegralBufferRefPropertyBase::~GeoIn
 }

 

 

+GetFieldHandlePtr GeoIntegralBufferRefPropertyBase::getHandleOsgGLId         
(void) const

+{

+    SFUInt32::GetHandlePtr returnValue(

+        new  SFUInt32::GetHandle(

+             &_sfOsgGLId,

+             this->getType().getFieldDesc(OsgGLIdFieldId),

+             const_cast<GeoIntegralBufferRefPropertyBase *>(this)));

+

+    return returnValue;

+}

+

+EditFieldHandlePtr GeoIntegralBufferRefPropertyBase::editHandleOsgGLId        
(void)

+{

+    SFUInt32::EditHandlePtr returnValue(

+        new  SFUInt32::EditHandle(

+             &_sfOsgGLId,

+             this->getType().getFieldDesc(OsgGLIdFieldId),

+             this));

+

+

+    editSField(OsgGLIdFieldMask);

+

+    return returnValue;

+}

+

 

 #ifdef OSG_MT_CPTR_ASPECT

 void GeoIntegralBufferRefPropertyBase::execSyncV(      FieldContainer    
&oFrom,

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.h
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.h
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.h
    2017-05-11 11:33:54.389564200 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.h
    2017-05-11 10:51:06.672413800 +0200
@@ -65,6 +65,7 @@
 

 #include "OSGGeoIntegralBufferProperty.h" // Parent

 

+#include "OSGSysFields.h"               // OsgGLId type

 

 #include "OSGGeoIntegralBufferRefPropertyFields.h"

 

@@ -91,6 +92,18 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
 

   public:

 

+    enum

+    {

+        OsgGLIdFieldId = Inherited::NextFieldId,

+        NextFieldId = OsgGLIdFieldId + 1

+    };

+

+    static const OSG::BitVector OsgGLIdFieldMask =

+        (TypeTraits<BitVector>::One << OsgGLIdFieldId);

+    static const OSG::BitVector NextFieldMask =

+        (TypeTraits<BitVector>::One << NextFieldId);

+        

+    typedef SFUInt32          SFOsgGLIdType;

 

     /*---------------------------------------------------------------------*/

     /*! \name                    Class Get                                 */

@@ -112,6 +125,31 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

+    /*! \name                    Field Get                                 */

+    /*! \{                                                                 */

+

+

+                  SFUInt32            *editSFOsgGLId        (void);

+            const SFUInt32            *getSFOsgGLId         (void) const;

+

+

+                  UInt32              &editOsgGLId        (void);

+                  UInt32               getOsgGLId         (void) const;

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

+    /*! \name                    Field Set                                 */

+    /*! \{                                                                 */

+

+            void setOsgGLId        (const UInt32 value);

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

+    /*! \name                Ptr MField Set                                */

+    /*! \{                                                                 */

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                   Binary Access                              */

     /*! \{                                                                 */

 

@@ -160,6 +198,13 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
     static const Char8 *getClassname     (void             );

 

     /*---------------------------------------------------------------------*/

+    /*! \name                      Fields                                  */

+    /*! \{                                                                 */

+

+    SFUInt32          _sfOsgGLId;

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                   Constructors                               */

     /*! \{                                                                 */

 

@@ -184,6 +229,8 @@ class OSG_DRAWABLE_DLLMAPPING GeoIntegra
     /*! \name                    Generic Field Access                      */

     /*! \{                                                                 */

 

+     GetFieldHandlePtr  getHandleOsgGLId         (void) const;

+     EditFieldHandlePtr editHandleOsgGLId        (void);

 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.inl
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.inl
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.inl
  2017-05-11 11:33:54.390564300 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoIntegralBufferRefPropertyBase.inl
  2017-05-11 10:51:06.667413500 +0200
@@ -74,6 +74,31 @@ OSG::UInt16 GeoIntegralBufferRefProperty
 

 /*------------------------------ get -----------------------------------*/

 

+//! Get the value of the GeoIntegralBufferRefProperty::_sfOsgGLId field.

+

+inline

+UInt32 &GeoIntegralBufferRefPropertyBase::editOsgGLId(void)

+{

+    editSField(OsgGLIdFieldMask);

+

+    return _sfOsgGLId.getValue();

+}

+

+//! Get the value of the GeoIntegralBufferRefProperty::_sfOsgGLId field.

+inline

+      UInt32  GeoIntegralBufferRefPropertyBase::getOsgGLId(void) const

+{

+    return _sfOsgGLId.getValue();

+}

+

+//! Set the value of the GeoIntegralBufferRefProperty::_sfOsgGLId field.

+inline

+void GeoIntegralBufferRefPropertyBase::setOsgGLId(const UInt32 value)

+{

+    editSField(OsgGLIdFieldMask);

+

+    _sfOsgGLId.setValue(value);

+}

 

 

 #ifdef OSG_MT_CPTR_ASPECT

@@ -85,6 +110,9 @@ void GeoIntegralBufferRefPropertyBase::e
                                   const UInt32             uiSyncInfo)

 {

     Inherited::execSync(pFrom, whichField, oOffsets, syncMode, uiSyncInfo);

+

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+        _sfOsgGLId.syncWith(pFrom->_sfOsgGLId);

 }

 #endif

 

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.cpp
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.cpp
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.cpp
        2017-05-11 11:33:54.407565200 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.cpp
        2017-05-11 11:13:03.402493500 +0200
@@ -117,6 +117,29 @@ void GeoVectorBufferRefProperty::dump(
     SLOG << "Dump GeoVectorBufferRefProperty NI" << std::endl;

 }

 

+/*------------------------------ tools --------------------------------------*/

+

+void GeoVectorBufferRefProperty::validate(DrawEnv *pEnv)

+{

+    if(this->getOsgGLId() != 0)

+    {

+        pEnv->getWindow()->validateGLObject(this->getOsgGLId(),

+                                            pEnv              );

+    }

+}

+

+Int32 GeoVectorBufferRefProperty::getOpenGLId(DrawEnv *pEnv)

+{

+    if(this->getOsgGLId() != 0)

+    {

+        return pEnv->getWindow()->getGLObjectId(this->getOsgGLId());

+    }

+    else

+    {

+        return this->getOglGLId();

+    }

+}

+

 void GeoVectorBufferRefProperty::activate(DrawEnv *pEnv, UInt32 slot)

 {

     Window *pWin = pEnv->getWindow();

@@ -128,6 +151,9 @@ void GeoVectorBufferRefProperty::activat
 

     osgSinkUnusedWarning(pWin);

 

+    validate(pEnv);

+    GLuint id = this->getOpenGLId(pEnv);

+

     if(hasVBO && isGeneric == true)

     {

         OSGGETGLFUNCBYID_GL3_ES( glVertexAttribPointer, 

@@ -135,15 +161,14 @@ void GeoVectorBufferRefProperty::activat
                                 _funcVertexAttribPointerARB,

                                  pWin);

 

-        if(getGLId() != 0 && getUseVBO()) // Do we have a VBO?

+        if((getOsgGLId() != 0 || getOglGLId() != 0) && getUseVBO()) // Do we 
have a VBO?

         {

             OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

                                      osgGlBindBuffer,

                                     _funcBindBuffer, 

                                      pWin);

             

-            osgGlBindBuffer(GL_ARRAY_BUFFER_ARB,

-                            getGLId());

+            osgGlBindBuffer(GL_ARRAY_BUFFER_ARB, id);

             

             osgGlVertexAttribPointer(slot, 

                                      getDimension(),

@@ -188,12 +213,11 @@ void GeoVectorBufferRefProperty::activat
                                 _funcBindBuffer, 

                                  pWin);

 

-        hasVBO &= getUseVBO() && (getGLId() != 0);

+        hasVBO &= getUseVBO() && (getOsgGLId() != 0 || getOglGLId() != 0);

 

         if(hasVBO == true) // Do we have a VBO?

         {

-            osgGlBindBuffer(GL_ARRAY_BUFFER_ARB,

-                            getGLId());

+            osgGlBindBuffer(GL_ARRAY_BUFFER_ARB, id);

         }

         else

         {

@@ -292,10 +316,13 @@ void *GeoVectorBufferRefProperty::mapBuf
 {

     void *returnValue = NULL;

 

-    if((getUseVBO() == true) && (getGLId() != 0))

+    if((getUseVBO() == true) && (getOsgGLId() != 0 || getOglGLId() != 0))

     {

         Window *pWin = pEnv->getWindow();

 

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

         osgSinkUnusedWarning(pWin);

 

         OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

@@ -308,8 +335,7 @@ void *GeoVectorBufferRefProperty::mapBuf
                                 _funcMapBuffer, 

                                  pWin);

        

-        osgGlBindBuffer(GL_ARRAY_BUFFER_ARB,

-                        getGLId());

+        osgGlBindBuffer(GL_ARRAY_BUFFER_ARB, id);

 

         returnValue = osgGlMapBuffer(GL_ARRAY_BUFFER_ARB, eAccess);

 

@@ -323,10 +349,13 @@ bool GeoVectorBufferRefProperty::unmapBu
 {

     bool returnValue = true;

 

-    if((getUseVBO() == true) && (getGLId() != 0))

+    if((getUseVBO() == true) && (getOsgGLId() != 0 || getOglGLId() != 0))

     {

         Window *pWin = pEnv->getWindow();

 

+        validate(pEnv);

+        GLuint id = this->getOpenGLId(pEnv);

+

         osgSinkUnusedWarning(pWin);

 

         OSGGETGLFUNCBYID_GL3_ES( glBindBuffer, 

@@ -339,8 +368,7 @@ bool GeoVectorBufferRefProperty::unmapBu
                                 _funcUnmapBuffer, 

                                  pWin);

 

-        osgGlBindBuffer(GL_ARRAY_BUFFER_ARB,

-                        getGLId());

+        osgGlBindBuffer(GL_ARRAY_BUFFER_ARB, id);

 

         returnValue = osgGlUnmapBuffer(GL_ARRAY_BUFFER_ARB) != 0;

 

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.fcd
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.fcd
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.fcd
        2017-05-11 11:33:54.407565200 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.fcd
        2017-05-11 10:47:12.042993800 +0200
@@ -12,4 +12,20 @@
    childFields="both"

    docGroupBase="GrpDrawablesGeometry"

    >

+

+    <Field

+        name="osgGLId"

+        type="UInt32"

+        cardinality="single"

+        visibility="internal"

+        access="public"

+        defaultValue="0"

+        fieldFlags="FClusterLocal"

+       >

+            The OpenSG GL object id for this geo property buffer object. If 
osgGLId is set, the GL object id

+            is determined by OpenSG. If osgGLId equals 0, the GLId is used 
directly as the GL object id.

+            An API getOglGLId()/setOglGLId() is provided to get/set the 
inherited GLId. This brings the

+            interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk

+            classes.

+    </Field>

 </FieldContainer>

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.h
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.h
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.h
  2017-05-11 11:33:54.408565300 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.h
  2017-05-11 10:52:50.478074200 +0200
@@ -78,7 +78,10 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
     /*! \name                    State Commands                            */

     /*! \{                                                                 */

 

-    void setGLId(UInt32 uiGLId);

+    void         setGLId         (UInt32 uiGLId);

+

+    UInt32       getOglGLId      (void) const;

+    void         setOglGLId      (UInt32 uiGLId);

 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

@@ -98,6 +101,14 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

+    /*! \name             OpenGL handling                                  */

+    /*! \{                                                                 */

+

+    virtual void   validate               (DrawEnv *pEnv);

+    virtual Int32  getOpenGLId            (DrawEnv *pEnv);

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                     Output                                   */

     /*! \{                                                                 */

 

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.inl
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.inl
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.inl
        2017-05-11 11:33:54.408565300 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefProperty.inl
        2017-05-11 11:00:17.894741000 +0200
@@ -46,4 +46,16 @@ void GeoVectorBufferRefProperty::setGLId
     Inherited::setGLId(uiGLId);

 }

 

+inline

+UInt32 GeoVectorBufferRefProperty::getOglGLId(void) const

+{

+    return Inherited::getGLId();

+}

+

+inline

+void GeoVectorBufferRefProperty::setOglGLId(UInt32 uiGLId)

+{

+    Inherited::setGLId(uiGLId);

+}

+

 OSG_END_NAMESPACE

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.cpp
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.cpp
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.cpp
    2017-05-11 11:33:54.409565300 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.cpp
    2017-05-11 10:51:06.763419000 +0200
@@ -82,6 +82,14 @@ OSG_BEGIN_NAMESPACE
  *                        Field Documentation                              *

 \***************************************************************************/

 

+/*! \var UInt32          GeoVectorBufferRefPropertyBase::_sfOsgGLId

+    The OpenSG GL object id for this geo property buffer object. If osgGLId is 
set, the GL object id
+    is determined by OpenSG. If osgGLId equals 0, the GLId is used directly as 
the GL object id.
+    An API getOglGLId()/setOglGLId() is provided to get/set the inherited 
GLId. This brings the
+    interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk
+    classes.

+*/

+

 

 /***************************************************************************\

  *                      FieldType/FieldTrait Instantiation                 *

@@ -129,6 +137,24 @@ OSG_EXPORT_PTR_MFIELD(ChildPointerMField
 

 void GeoVectorBufferRefPropertyBase::classDescInserter(TypeObject &oType)

 {

+    FieldDescriptionBase *pDesc = NULL;

+

+

+    pDesc = new SFUInt32::Description(

+        SFUInt32::getClassType(),

+        "osgGLId",

+        "The OpenSG GL object id for this geo property buffer object. If 
osgGLId is set, the GL object id\n"
+        "is determined by OpenSG. If osgGLId equals 0, the GLId is used 
directly as the GL object id.\n"
+        "An API getOglGLId()/setOglGLId() is provided to get/set the inherited 
GLId. This brings the\n"
+        "interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk\n"
+        "classes.\n",

+        OsgGLIdFieldId, OsgGLIdFieldMask,

+        true,

+        (Field::FClusterLocal),

+        
static_cast<FieldEditMethodSig>(&GeoVectorBufferRefProperty::editHandleOsgGLId),

+        static_cast<FieldGetMethodSig 
>(&GeoVectorBufferRefProperty::getHandleOsgGLId));

+

+    oType.addInitialDesc(pDesc);

 }

 

 

@@ -143,20 +169,36 @@ GeoVectorBufferRefPropertyBase::TypeObje
     
reinterpret_cast<InitalInsertDescFunc>(&GeoVectorBufferRefProperty::classDescInserter),

     false,

     0,

-    "<?xml version=\"1.0\"?>\n"

-    "\n"

-    "<FieldContainer\n"

-    "   name=\"GeoVectorBufferRefProperty\"\n"

-    "   parent=\"GeoVectorBufferProperty\"\n"

-    "   library=\"Drawable\"\n"

-    "   pointerfieldtypes=\"both\"\n"

-    "   structure=\"concrete\"\n"

-    "   systemcomponent=\"true\"\n"

-    "   parentsystemcomponent=\"true\"\n"

-    "   decoratable=\"false\"\n"

-    "   childFields=\"both\"\n"

-    "   docGroupBase=\"GrpDrawablesGeometry\"\n"

-    "   >\n"

+    "<?xml version=\"1.0\"?>\n"
+    "\n"
+    "<FieldContainer\n"
+    "   name=\"GeoVectorBufferRefProperty\"\n"
+    "   parent=\"GeoVectorBufferProperty\"\n"
+    "   library=\"Drawable\"\n"
+    "   pointerfieldtypes=\"both\"\n"
+    "   structure=\"concrete\"\n"
+    "   systemcomponent=\"true\"\n"
+    "   parentsystemcomponent=\"true\"\n"
+    "   decoratable=\"false\"\n"
+    "   childFields=\"both\"\n"
+    "   docGroupBase=\"GrpDrawablesGeometry\"\n"
+    "   >\n"
+    "\n"
+    "    <Field\n"
+    "        name=\"osgGLId\"\n"
+    "        type=\"UInt32\"\n"
+    "        cardinality=\"single\"\n"
+    "        visibility=\"internal\"\n"
+    "        access=\"public\"\n"
+    "        defaultValue=\"0\"\n"
+    "        fieldFlags=\"FClusterLocal\"\n"
+    "\t>\n"
+    "            The OpenSG GL object id for this geo property buffer object. 
If osgGLId is set, the GL object id\n"
+    "            is determined by OpenSG. If osgGLId equals 0, the GLId is 
used directly as the GL object id.\n"
+    "            An API getOglGLId()/setOglGLId() is provided to get/set the 
inherited GLId. This brings the\n"
+    "            interface more in line to the TextureObjRefChunk and the 
ShaderStorageBufferRefObjChunk\n"
+    "            classes.\n"
+    "    </Field>\n"
     "</FieldContainer>\n",

     ""

     );

@@ -181,6 +223,19 @@ UInt32 GeoVectorBufferRefPropertyBase::g
 /*------------------------- decorator get ------------------------------*/

 

 

+SFUInt32 *GeoVectorBufferRefPropertyBase::editSFOsgGLId(void)

+{

+    editSField(OsgGLIdFieldMask);

+

+    return &_sfOsgGLId;

+}

+

+const SFUInt32 *GeoVectorBufferRefPropertyBase::getSFOsgGLId(void) const

+{

+    return &_sfOsgGLId;

+}

+

+

 

 

 

@@ -191,6 +246,10 @@ SizeT GeoVectorBufferRefPropertyBase::ge
 {

     SizeT returnValue = Inherited::getBinSize(whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        returnValue += _sfOsgGLId.getBinSize();

+    }

 

     return returnValue;

 }

@@ -200,6 +259,10 @@ void GeoVectorBufferRefPropertyBase::cop
 {

     Inherited::copyToBin(pMem, whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        _sfOsgGLId.copyToBin(pMem);

+    }

 }

 

 void GeoVectorBufferRefPropertyBase::copyFromBin(BinaryDataHandler &pMem,

@@ -207,6 +270,11 @@ void GeoVectorBufferRefPropertyBase::cop
 {

     Inherited::copyFromBin(pMem, whichField);

 

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+    {

+        editSField(OsgGLIdFieldMask);

+        _sfOsgGLId.copyFromBin(pMem);

+    }

 }

 

 //! create a new instance of the class

@@ -331,12 +399,14 @@ FieldContainerTransitPtr GeoVectorBuffer
 /*------------------------- constructors ----------------------------------*/

 

 GeoVectorBufferRefPropertyBase::GeoVectorBufferRefPropertyBase(void) :

-    Inherited()

+    Inherited(),

+    _sfOsgGLId                (UInt32(0))

 {

 }

 

 GeoVectorBufferRefPropertyBase::GeoVectorBufferRefPropertyBase(const 
GeoVectorBufferRefPropertyBase &source) :

-    Inherited(source)

+    Inherited(source),

+    _sfOsgGLId                (source._sfOsgGLId                )

 {

 }

 

@@ -348,6 +418,31 @@ GeoVectorBufferRefPropertyBase::~GeoVect
 }

 

 

+GetFieldHandlePtr GeoVectorBufferRefPropertyBase::getHandleOsgGLId         
(void) const

+{

+    SFUInt32::GetHandlePtr returnValue(

+        new  SFUInt32::GetHandle(

+             &_sfOsgGLId,

+             this->getType().getFieldDesc(OsgGLIdFieldId),

+             const_cast<GeoVectorBufferRefPropertyBase *>(this)));

+

+    return returnValue;

+}

+

+EditFieldHandlePtr GeoVectorBufferRefPropertyBase::editHandleOsgGLId        
(void)

+{

+    SFUInt32::EditHandlePtr returnValue(

+        new  SFUInt32::EditHandle(

+             &_sfOsgGLId,

+             this->getType().getFieldDesc(OsgGLIdFieldId),

+             this));

+

+

+    editSField(OsgGLIdFieldMask);

+

+    return returnValue;

+}

+

 

 #ifdef OSG_MT_CPTR_ASPECT

 void GeoVectorBufferRefPropertyBase::execSyncV(      FieldContainer    &oFrom,

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.h
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.h
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.h
      2017-05-11 11:33:54.409565300 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.h
      2017-05-11 10:51:06.771419500 +0200
@@ -65,6 +65,7 @@
 

 #include "OSGGeoVectorBufferProperty.h" // Parent

 

+#include "OSGSysFields.h"               // OsgGLId type

 

 #include "OSGGeoVectorBufferRefPropertyFields.h"

 

@@ -91,6 +92,18 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
 

   public:

 

+    enum

+    {

+        OsgGLIdFieldId = Inherited::NextFieldId,

+        NextFieldId = OsgGLIdFieldId + 1

+    };

+

+    static const OSG::BitVector OsgGLIdFieldMask =

+        (TypeTraits<BitVector>::One << OsgGLIdFieldId);

+    static const OSG::BitVector NextFieldMask =

+        (TypeTraits<BitVector>::One << NextFieldId);

+        

+    typedef SFUInt32          SFOsgGLIdType;

 

     /*---------------------------------------------------------------------*/

     /*! \name                    Class Get                                 */

@@ -112,6 +125,31 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

+    /*! \name                    Field Get                                 */

+    /*! \{                                                                 */

+

+

+                  SFUInt32            *editSFOsgGLId        (void);

+            const SFUInt32            *getSFOsgGLId         (void) const;

+

+

+                  UInt32              &editOsgGLId        (void);

+                  UInt32               getOsgGLId         (void) const;

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

+    /*! \name                    Field Set                                 */

+    /*! \{                                                                 */

+

+            void setOsgGLId        (const UInt32 value);

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

+    /*! \name                Ptr MField Set                                */

+    /*! \{                                                                 */

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                   Binary Access                              */

     /*! \{                                                                 */

 

@@ -160,6 +198,13 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
     static const Char8 *getClassname     (void             );

 

     /*---------------------------------------------------------------------*/

+    /*! \name                      Fields                                  */

+    /*! \{                                                                 */

+

+    SFUInt32          _sfOsgGLId;

+

+    /*! \}                                                                 */

+    /*---------------------------------------------------------------------*/

     /*! \name                   Constructors                               */

     /*! \{                                                                 */

 

@@ -184,6 +229,8 @@ class OSG_DRAWABLE_DLLMAPPING GeoVectorB
     /*! \name                    Generic Field Access                      */

     /*! \{                                                                 */

 

+     GetFieldHandlePtr  getHandleOsgGLId         (void) const;

+     EditFieldHandlePtr editHandleOsgGLId        (void);

 

     /*! \}                                                                 */

     /*---------------------------------------------------------------------*/

diff -rupN 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.inl
 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.inl
--- 
d:/_opensg_clone/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.inl
    2017-05-11 11:33:54.410565400 +0200
+++ 
d:/_opensg_merge/Comp/builder/support/opensg/Source/System/NodeCores/Drawables/Geometry/Properties/OSGGeoVectorBufferRefPropertyBase.inl
    2017-05-11 10:51:06.764419100 +0200
@@ -74,6 +74,31 @@ OSG::UInt16 GeoVectorBufferRefPropertyBa
 

 /*------------------------------ get -----------------------------------*/

 

+//! Get the value of the GeoVectorBufferRefProperty::_sfOsgGLId field.

+

+inline

+UInt32 &GeoVectorBufferRefPropertyBase::editOsgGLId(void)

+{

+    editSField(OsgGLIdFieldMask);

+

+    return _sfOsgGLId.getValue();

+}

+

+//! Get the value of the GeoVectorBufferRefProperty::_sfOsgGLId field.

+inline

+      UInt32  GeoVectorBufferRefPropertyBase::getOsgGLId(void) const

+{

+    return _sfOsgGLId.getValue();

+}

+

+//! Set the value of the GeoVectorBufferRefProperty::_sfOsgGLId field.

+inline

+void GeoVectorBufferRefPropertyBase::setOsgGLId(const UInt32 value)

+{

+    editSField(OsgGLIdFieldMask);

+

+    _sfOsgGLId.setValue(value);

+}

 

 

 #ifdef OSG_MT_CPTR_ASPECT

@@ -85,6 +110,9 @@ void GeoVectorBufferRefPropertyBase::exe
                                   const UInt32             uiSyncInfo)

 {

     Inherited::execSync(pFrom, whichField, oOffsets, syncMode, uiSyncInfo);

+

+    if(FieldBits::NoField != (OsgGLIdFieldMask & whichField))

+        _sfOsgGLId.syncWith(pFrom->_sfOsgGLId);

 }

 #endif

 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to