/*! Enable or disable selection highlighting. @param[in] enable Enable state. */ void xSelectionDecorator::setEnable(bool enable) { m_bEnable = enable; if (m_bEnable) setNodeMask(-1); else setNodeMask(0); }
//============================================================================== BoxShapeNode::BoxShapeNode(std::shared_ptr<dart::dynamics::BoxShape> shape, EntityNode* parent) : ShapeNode(shape, parent, this), mBoxShape(shape), mGeode(nullptr) { extractData(true); setNodeMask(mShape->isHidden()? 0x0 : ~0x0); }
//============================================================================== EllipsoidShapeNode::EllipsoidShapeNode( std::shared_ptr<dart::dynamics::EllipsoidShape> shape, ShapeFrameNode* parent) : ShapeNode(shape, parent, this), mEllipsoidShape(shape), mGeode(nullptr) { extractData(true); setNodeMask(mVisualAspect->isHidden()? 0x0 : ~0x0); }
HeightmapShapeNode<S>::HeightmapShapeNode( std::shared_ptr<dynamics::HeightmapShape<S>> shape, ShapeFrameNode* parent) : ShapeNode(shape, parent, this), mHeightmapShape(shape), mGeode(nullptr), mHeightmapVersion(dynamics::INVALID_INDEX) { extractData(true); setNodeMask(mVisualAspect->isHidden() ? 0x0u : ~0x0u); }
//============================================================================== void LineSegmentShapeNode::refresh() { mUtilized = true; setNodeMask(mShape->isHidden()? 0x0 : ~0x0); if(mShape->getDataVariance() == dart::dynamics::Shape::STATIC) return; extractData(false); }
//============================================================================== void EllipsoidShapeNode::refresh() { mUtilized = true; setNodeMask(mVisualAspect->isHidden()? 0x0 : ~0x0); if(mShape->getDataVariance() == dart::dynamics::Shape::STATIC) return; extractData(false); }
Refraction() { unsigned int rttSize = Settings::Manager::getInt("rtt size", "Water"); setRenderOrder(osg::Camera::PRE_RENDER); setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT); setReferenceFrame(osg::Camera::RELATIVE_RF); setSmallFeatureCullingPixelSize(Settings::Manager::getInt("small feature culling pixel size", "Water")); setName("RefractionCamera"); setCullMask(Mask_Effect|Mask_Scene|Mask_Terrain|Mask_Actor|Mask_ParticleSystem|Mask_Sky|Mask_Sun|Mask_Player|Mask_Lighting); setNodeMask(Mask_RenderToTexture); setViewport(0, 0, rttSize, rttSize); // No need for Update traversal since the scene is already updated as part of the main scene graph // A double update would mess with the light collection (in addition to being plain redundant) setUpdateCallback(new NoTraverseCallback); // No need for fog here, we are already applying fog on the water surface itself as well as underwater fog // assign large value to effectively turn off fog // shaders don't respect glDisable(GL_FOG) osg::ref_ptr<osg::Fog> fog (new osg::Fog); fog->setStart(10000000); fog->setEnd(10000000); getOrCreateStateSet()->setAttributeAndModes(fog, osg::StateAttribute::OFF|osg::StateAttribute::OVERRIDE); mClipCullNode = new ClipCullNode; addChild(mClipCullNode); mRefractionTexture = new osg::Texture2D; mRefractionTexture->setTextureSize(rttSize, rttSize); mRefractionTexture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); mRefractionTexture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); mRefractionTexture->setInternalFormat(GL_RGB); mRefractionTexture->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR); mRefractionTexture->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR); attach(osg::Camera::COLOR_BUFFER, mRefractionTexture); mRefractionDepthTexture = new osg::Texture2D; mRefractionDepthTexture->setSourceFormat(GL_DEPTH_COMPONENT); mRefractionDepthTexture->setInternalFormat(GL_DEPTH_COMPONENT24); mRefractionDepthTexture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); mRefractionDepthTexture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); mRefractionDepthTexture->setSourceType(GL_UNSIGNED_INT); mRefractionDepthTexture->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR); mRefractionDepthTexture->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR); attach(osg::Camera::DEPTH_BUFFER, mRefractionDepthTexture); }
void HeightmapShapeNode<S>::refresh() { mUtilized = true; setNodeMask(mVisualAspect->isHidden() ? 0x0u : ~0x0u); if (mShape->getDataVariance() == dynamics::Shape::STATIC && mHeightmapVersion == mHeightmapShape->getVersion()) return; extractData(false); mHeightmapVersion = mHeightmapShape->getVersion(); }
LinkPointActor::LinkPointActor() { //create _size = osg::Vec3(1.0f, 1.0f, 1.0f); osg::Box* pBox = new osg::Box(osg::Vec3(0, 0, 0), _size.x(), _size.y(), _size.z()); osg::ShapeDrawable* shapeDrawable = new osg::ShapeDrawable(pBox); osg::Geode* geode = new osg::Geode(); geode->addDrawable(shapeDrawable); osg::PositionAttitudeTransform* transformNode = new osg::PositionAttitudeTransform; transformNode->addChild(geode); addChild(transformNode); _transformNode = transformNode; initStateValue(); setLinkPointState(1); setNodeMask(NODE_MASK_HOTPOINT); addClassName(CLASS_LINKPOINT); }
void OsgForm::itemWasChangedInTree(QTreeWidgetItem *treewi, int col) { osg::Object *obj = VariantPtr<osg::Object>::asPtr(treewi->data(0, Qt::UserRole)); if (col == 0) { // user set name obj->setName(treewi->text(col).toStdString()); } else if ( col == 2) { // user set flags if (osg::Node *n = dynamic_cast<osg::Node *>(obj)) { bool ok = false; unsigned mask = treewi->text(col).toUInt(&ok, 16); if (ok) { setNodeMask(n, mask); } } } ui->osgPropertyTable->displayObject(obj); }
Reflection() { setRenderOrder(osg::Camera::PRE_RENDER); setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT); setReferenceFrame(osg::Camera::RELATIVE_RF); setSmallFeatureCullingPixelSize(Settings::Manager::getInt("small feature culling pixel size", "Water")); setName("ReflectionCamera"); bool reflectActors = Settings::Manager::getBool("reflect actors", "Water"); setCullMask(Mask_Effect|Mask_Scene|Mask_Terrain|Mask_ParticleSystem|Mask_Sky|Mask_Player|Mask_Lighting|(reflectActors ? Mask_Actor : 0)); setNodeMask(Mask_RenderToTexture); unsigned int rttSize = Settings::Manager::getInt("rtt size", "Water"); setViewport(0, 0, rttSize, rttSize); // No need for Update traversal since the mSceneRoot is already updated as part of the main scene graph // A double update would mess with the light collection (in addition to being plain redundant) setUpdateCallback(new NoTraverseCallback); mReflectionTexture = new osg::Texture2D; mReflectionTexture->setInternalFormat(GL_RGB); mReflectionTexture->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR); mReflectionTexture->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR); mReflectionTexture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); mReflectionTexture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); attach(osg::Camera::COLOR_BUFFER, mReflectionTexture); // XXX: should really flip the FrontFace on each renderable instead of forcing clockwise. osg::ref_ptr<osg::FrontFace> frontFace (new osg::FrontFace); frontFace->setMode(osg::FrontFace::CLOCKWISE); getOrCreateStateSet()->setAttributeAndModes(frontFace, osg::StateAttribute::ON); mClipCullNode = new ClipCullNode; addChild(mClipCullNode); }