Ignore:
Timestamp:
01/14/10 00:05:49 (2 years ago)
Author:
ddangelo
Message:

Field for setting the 2D texture of the Quad added. To be backward compatible and to avoid confusion, a bool field which controls the functionality to load a texture directly from an image file added. Default is true, so no existing code should break. If set to false, the field Filename will be ignored and the Texture field must be used to set the texture of the Quad.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-osg/src/avango/osg/TexturedQuad.cpp

    r1 r336  
    4646  mNormals(new ::osg::Vec3Array(1)), 
    4747  mColors(new ::osg::Vec4Array(1)), 
    48   mTexCoords(new ::osg::Vec2Array(4)), 
    49   mOsgTexture(new ::osg::Texture2D) 
    50 { 
     48  mTexCoords(new ::osg::Vec2Array(4)) 
     49{ 
     50  av::osg::Texture2D *texture = new av::osg::Texture2D(); 
     51 
    5152  AV_FC_ADD_FIELD(Width, 1.0f); 
    5253  AV_FC_ADD_FIELD(Height, 1.0f); 
    5354  AV_FC_ADD_FIELD(Color, ::osg::Vec4(1,1,1,1)); 
    5455  AV_FC_ADD_FIELD(Position, ::osg::Vec3(0,0,0)); 
     56  AV_FC_ADD_FIELD(UseFilename, true); 
    5557  AV_FC_ADD_FIELD(Filename, ""); 
     58  AV_FC_ADD_FIELD(Texture, texture); 
     59 
    5660 
    5761  AV_FC_ADD_ADAPTOR_FIELD(MinFilter, 
     
    8084  (*mTexCoords)[3].set(1.0f,1.0f); 
    8185  getOsgGeometry()->setTexCoordArray(0,mTexCoords.get()); 
    82   getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,mOsgTexture.get(),::osg::StateAttribute::ON); 
     86  getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
    8387 
    8488  // set up texture 
    85   mOsgTexture->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
    86   mOsgTexture->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
     89  Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
     90  Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
    8791} 
    8892 
     
    156160::osg::ref_ptr< ::osg::Texture2D> 
    157161av::osg::TexturedQuad::getOsgTexture() const { 
    158   return mOsgTexture; 
     162  ::osg::ref_ptr< ::osg::Texture2D> tex = Texture.getValue()->getOsgTexture2D(); 
     163  return tex; 
    159164} 
    160165 
     
    179184av::osg::TexturedQuad::updateTexture() 
    180185{ 
    181   if(Filename.getValue().size() != 0) 
    182   { 
    183     mOsgTexture->setImage(::osgDB::readImageFile(Filename.getValue())); 
     186  if(Filename.getValue().size() != 0 && UseFilename.getValue()) 
     187  { 
     188    Texture.getValue()->getOsgTexture2D()->setImage(::osgDB::readImageFile(Filename.getValue())); 
    184189  } 
    185190} 
     
    196201av::osg::TexturedQuad::getMinFilterCB(const av::SFInt::GetValueEvent& event) 
    197202{ 
    198   *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MIN_FILTER); 
     203  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MIN_FILTER); 
    199204} 
    200205 
     
    202207av::osg::TexturedQuad::setMinFilterCB(const av::SFInt::SetValueEvent& event) 
    203208{ 
    204   mOsgTexture->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     209        Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
    205210} 
    206211 
     
    208213av::osg::TexturedQuad::getMagFilterCB(const av::SFInt::GetValueEvent& event) 
    209214{ 
    210   *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MAG_FILTER); 
     215  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MAG_FILTER); 
    211216} 
    212217 
     
    214219av::osg::TexturedQuad::setMagFilterCB(const av::SFInt::SetValueEvent& event) 
    215220{ 
    216   mOsgTexture->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     221  Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
    217222} 
    218223 
     
    220225av::osg::TexturedQuad::getMaxAnisotropyCB(const av::SFFloat::GetValueEvent& event) 
    221226{ 
    222   *(event.getValuePtr()) = mOsgTexture->getMaxAnisotropy(); 
     227  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getMaxAnisotropy(); 
    223228} 
    224229 
     
    226231av::osg::TexturedQuad::setMaxAnisotropyCB(const av::SFFloat::SetValueEvent& event) 
    227232{ 
    228   mOsgTexture->setMaxAnisotropy(event.getValue()); 
    229 } 
     233  Texture.getValue()->getOsgTexture2D()->setMaxAnisotropy(event.getValue()); 
     234} 
Note: See TracChangeset for help on using the changeset viewer.