Fixed rendering of Popups
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14394 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -51,7 +51,7 @@ public:
|
||||
virtual osg::Node* createFrame(const osg::BoundingBox& extents, const FrameSettings* frameSettings, const osg::Vec4& colour);
|
||||
virtual osg::Node* createText(const osg::BoundingBox& extents, const AlignmentSettings* as, const TextSettings* textSettings, const std::string& text);
|
||||
virtual osg::Node* createIcon(const osg::BoundingBox& extents, const std::string& filename, const osg::Vec4& colour);
|
||||
virtual void setupDialogStateSet(osg::StateSet* stateset);
|
||||
virtual void setupDialogStateSet(osg::StateSet* stateset, int binNum);
|
||||
virtual void setupClipStateSet(const osg::BoundingBox& extents, osg::StateSet* stateset);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -242,9 +242,11 @@ void ComboBox::createGraphicsImplementation()
|
||||
// float itemWidth = (_extents.xMax()-_extents.xMin()) - 2.0f*frameWidth;
|
||||
float itemHeight = (_extents.yMax()-_extents.yMin()) - 2.0f*frameWidth;
|
||||
float popupHeight = (itemHeight)* _items.size() + margin*static_cast<float>(_items.size()-1) + 2.0f*frameWidth;
|
||||
float popupTop = _extents.yMin()-frameWidth-50.0f;
|
||||
float popupTop = _extents.yMin()-frameWidth-margin*1.0f;
|
||||
float popupLeft = _extents.xMin();
|
||||
float popupRight = _extents.xMax();
|
||||
|
||||
osg::BoundingBox popupExtents(_extents.xMin(), popupTop-popupHeight, _extents.zMin(), _extents.xMax(), popupTop, _extents.zMax());
|
||||
osg::BoundingBox popupExtents(popupLeft, popupTop-popupHeight, _extents.zMin(), popupRight, popupTop, _extents.zMax());
|
||||
_popup->setExtents(popupExtents);
|
||||
|
||||
osg::BoundingBox popupItemExtents(popupExtents.xMin()+frameWidth, popupTop-frameWidth-itemHeight, popupExtents.zMin(), popupExtents.xMax()-frameWidth, popupTop-frameWidth, popupExtents.zMax());
|
||||
|
||||
@@ -79,7 +79,7 @@ void Dialog::createGraphicsImplementation()
|
||||
_titleDrawable->setDataVariance(osg::Object::DYNAMIC);
|
||||
_group->addChild(_titleDrawable.get());
|
||||
|
||||
style->setupDialogStateSet(getOrCreateStateSet());
|
||||
style->setupDialogStateSet(getOrCreateStateSet(), 5);
|
||||
style->setupClipStateSet(dialogWithTileExtents, getOrCreateStateSet());
|
||||
|
||||
// render before the subgraph
|
||||
|
||||
@@ -77,7 +77,7 @@ void Popup::createGraphicsImplementation()
|
||||
bool requiresFrame = (getFrameSettings() && getFrameSettings()->getShape()!=osgUI::FrameSettings::NO_FRAME);
|
||||
if (requiresFrame) { _transform->addChild(style->createFrame(_extents, getFrameSettings(), dialogBackgroundColor)); }
|
||||
|
||||
style->setupDialogStateSet(getOrCreateStateSet());
|
||||
style->setupDialogStateSet(getOrCreateStateSet(), 6);
|
||||
style->setupClipStateSet(_extents, getOrCreateStateSet());
|
||||
|
||||
|
||||
|
||||
@@ -411,11 +411,12 @@ osg::Node* Style::createIcon(const osg::BoundingBox& extents, const std::string&
|
||||
}
|
||||
}
|
||||
|
||||
void Style::setupDialogStateSet(osg::StateSet* stateset)
|
||||
void Style::setupDialogStateSet(osg::StateSet* stateset, int binNum)
|
||||
{
|
||||
stateset->setRenderBinDetails(5, "TraversalOrderBin", osg::StateSet::OVERRIDE_RENDERBIN_DETAILS);
|
||||
stateset->setRenderBinDetails(binNum, "TraversalOrderBin", osg::StateSet::OVERRIDE_PROTECTED_RENDERBIN_DETAILS);
|
||||
stateset->setMode( GL_LIGHTING, osg::StateAttribute::OFF );
|
||||
stateset->setAttributeAndModes( _disabledDepthWrite.get(), osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE );
|
||||
stateset->setNestRenderBins(false);
|
||||
}
|
||||
|
||||
void Style::setupClipStateSet(const osg::BoundingBox& extents, osg::StateSet* stateset)
|
||||
|
||||
Reference in New Issue
Block a user