Пример #1
0
SceneManager::visibility SceneManager::getVisibility(const vec4d *frustumPlanes, const box3d &b)
{
    visibility v0 = getVisibility(frustumPlanes[0], b);
    if (v0 == INVISIBLE) {
        return INVISIBLE;
    }
    visibility v1 = getVisibility(frustumPlanes[1], b);
    if (v1 == INVISIBLE) {
        return INVISIBLE;
    }
    visibility v2 = getVisibility(frustumPlanes[2], b);
    if (v2 == INVISIBLE) {
        return INVISIBLE;
    }
    visibility v3 = getVisibility(frustumPlanes[3], b);
    if (v3 == INVISIBLE) {
        return INVISIBLE;
    }
    visibility v4 = getVisibility(frustumPlanes[4], b);
    if (v4 == INVISIBLE) {
        return INVISIBLE;
    }
    if (v0 == FULLY_VISIBLE && v1 == FULLY_VISIBLE &&
        v2 == FULLY_VISIBLE && v3 == FULLY_VISIBLE &&
        v4 == FULLY_VISIBLE)
    {
        return FULLY_VISIBLE;
    }
    return PARTIALLY_VISIBLE;
}
Пример #2
0
QString WeatherPlugin::replace(const QString &text)
{
    QString res = text;
    QString sun_set, sun_raise, updated;
#if COMPAT_QT_VERSION >= 0x030000
    QTime tmp_time;
    QDateTime dt;
    int h,m;

    parseTime(getSun_set(),h,m);
    tmp_time.setHMS(h,m,0,0);
    sun_set = tmp_time.toString(Qt::LocalDate);
    sun_set = sun_set.left(sun_set.length() - 3);

    parseTime(getSun_raise(),h,m);
    tmp_time.setHMS(h,m,0,0);
    sun_raise = tmp_time.toString(Qt::LocalDate);
    sun_raise = sun_raise.left(sun_raise.length() - 3);

    parseDateTime(getUpdated(),dt);
    updated = dt.toString(Qt::LocalDate);
    updated = updated.left(updated.length() - 3);
#else
    sun_set = getSun_set();
    sun_raise = getSun_raise();
    updated = getUpdated();
#endif
    /* double Expressions *before* single or better RegExp ! */
    res = res.replace(QRegExp("\\%mp"), i18n("moonphase", getMoonPhase()));
    res = res.replace(QRegExp("\\%mi"), number(getMoonIcon()));
    res = res.replace(QRegExp("\\%pp"), number(getPrecipitation()));
	res = res.replace(QRegExp("\\%ut"), i18n("weather", getUV_Description()));
	res = res.replace(QRegExp("\\%ui"), number(getUV_Intensity()));
    res = res.replace(QRegExp("\\%t"), QString::number((int)getTemperature()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%f"), QString::number((int)getFeelsLike()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%d"), QString::number((int)getDewPoint()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%h"), number(getHumidity()) + "%");
    res = res.replace(QRegExp("\\%w"), number(getWind_speed()) + " " + i18n(getUS()));
    res = res.replace(QRegExp("\\%x"), QString::number(getWind_speed() * 10 / 36) + " " + i18n("m/s"));
    res = res.replace(QRegExp("\\%g"), getWindGust() ? QString("(") + i18n("gust ") + number(getWindGust()) + i18n(getUS()) + QString(")") : QString(""));
    res = res.replace(QRegExp("\\%y"), getWindGust() ? QString("(") + i18n("gust ") + number(getWindGust() * 10 / 36) + QString(" ") + i18n("m/s") + QString(")") : QString(""));
    res = res.replace(QRegExp("\\%p"), number(getPressure()) + " " + i18n(getUP()));
    res = res.replace(QRegExp("\\%a"), number(getPressure() * 75 / 100));
    res = res.replace(QRegExp("\\%q"), i18n("weather", getPressureD()));
    res = res.replace(QRegExp("\\%l"), getLocation());
    res = res.replace(QRegExp("\\%b"), i18n("weather", getWind()));
    res = res.replace(QRegExp("\\%u"), updated);
    res = res.replace(QRegExp("\\%r"), sun_raise);
    res = res.replace(QRegExp("\\%s"), sun_set);
    res = res.replace(QRegExp("\\%c"), i18n_conditions(getConditions()));
    res = res.replace(QRegExp("\\%v"), i18n("weather", getVisibility()) + (atol(getVisibility()) ? QString(" ") + i18n(getUD()) : QString("")));
    res = res.replace(QRegExp("\\%i"), number(getIcon()));
    return res;
}
Пример #3
0
void CustomLayer::setVisibility(VisibilityType value) {
    if (value == getVisibility())
        return;
    auto impl_ = mutableImpl();
    impl_->visibility = value;
    baseImpl = std::move(impl_);
    observer->onLayerChanged(*this);
}
Пример #4
0
void UMLRole::saveToXMI( QDomDocument & qDoc, QDomElement & qElement ) {
    QDomElement roleElement = UMLObject::save("UML:AssociationEnd", qDoc);
    if (m_pSecondary)
        roleElement.setAttribute( "type", ID2STR(m_pSecondary->getID()) );
    else
        kError() << "UMLRole::saveToXMI(id " << ID2STR(m_nId)
        << "): m_pSecondary is NULL" << endl;
    if (!m_Multi.isEmpty())
        roleElement.setAttribute("multiplicity", m_Multi);
    if (m_role == Uml::A) {  // role aggregation based on parent type
        // role A
        switch (m_pAssoc->getAssocType()) {
        case Uml::at_Composition:
            roleElement.setAttribute("aggregation", "composite");
            break;
        case Uml::at_Aggregation:
            roleElement.setAttribute("aggregation", "aggregate");
            break;
        default:
            roleElement.setAttribute("aggregation", "none");
            break;
        }
        if (m_pAssoc->getAssocType() == Uml::at_UniAssociation) {
            // Normally the isNavigable attribute is "true".
            // We set it to false on role A to indicate that
            // role B gets an explicit arrowhead.
            roleElement.setAttribute("isNavigable", "false");
        } else {
            roleElement.setAttribute("isNavigable", "true");
        }
    } else {
        roleElement.setAttribute("aggregation", "none");
        roleElement.setAttribute("isNavigable", "true");
        //FIXME obviously this isn't standard XMI
        if (m_pAssoc->getAssocType() == Uml::at_Relationship) {
            roleElement.setAttribute("relationship", "true");
        }
    }

    roleElement.setAttribute("visibility", getVisibility().toString(false));

    switch (m_Changeability) {
    case Uml::chg_Frozen:
        roleElement.setAttribute("changeability", "frozen");
        break;
    case Uml::chg_AddOnly:
        roleElement.setAttribute("changeability", "addOnly");
        break;
    case Uml::chg_Changeable:
        roleElement.setAttribute("changeability", "changeable");
        break;
    }
    qElement.appendChild( roleElement );
}
Пример #5
0
void SceneManager::computeVisibility(ptr<SceneNode> n, visibility v)
{
    if (v == PARTIALLY_VISIBLE) {
        v = getVisibility(n->getWorldBounds());
    }
    n->isVisible = v != INVISIBLE;

    for (unsigned int i = 0; i < n->getChildrenCount(); ++i) {
        computeVisibility(n->getChild(i), v);
    }
}
Пример #6
0
QString WeatherPlugin::replace(const QString &text)
{
    QString res = text;
    res = res.replace(QRegExp("\\%t"), number(getTemperature()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%f"), number(getFeelsLike()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%d"), number(getDewPoint()) + QChar((unsigned short)176) + getUT());
    res = res.replace(QRegExp("\\%h"), number(getHumidity()) + "%");
    res = res.replace(QRegExp("\\%w"), number(getWind_speed()) + " " + getUS());
    res = res.replace(QRegExp("\\%g"), getWindGust() ? QString("<") + i18n("gust ") + number(getWindGust()) + ")" : "");
    res = res.replace(QRegExp("\\%p"), number(getPressure()) + " " + getUP());
    res = res.replace(QRegExp("\\%a"), number(getPressure() * 75 / 100));
    res = res.replace(QRegExp("\\%q"), i18n("weather", getPressureD()));
    res = res.replace(QRegExp("\\%l"), getLocation());
    res = res.replace(QRegExp("\\%b"), getWind());
    res = res.replace(QRegExp("\\%u"), getUpdated());
    res = res.replace(QRegExp("\\%r"), getSun_raise());
    res = res.replace(QRegExp("\\%s"), getSun_set());
    res = res.replace(QRegExp("\\%c"), i18n_conditions(getConditions()));
    res = res.replace(QRegExp("\\%v"), i18n("weather", getVisibility()) + (atol(getVisibility()) ? QString(" ") + getUD() : ""));
    return res;
}
Пример #7
0
SceneManager::visibility CylindricalDeformation::getVisibility(const TerrainNode *t, const box3d &localBox) const
{
    vec3d deformedBox[4];
    deformedBox[0] = localToDeformed(vec3d(localBox.xmin, localBox.ymin, localBox.zmax));
    deformedBox[1] = localToDeformed(vec3d(localBox.xmax, localBox.ymin, localBox.zmax));
    deformedBox[2] = localToDeformed(vec3d(localBox.xmax, localBox.ymax, localBox.zmax));
    deformedBox[3] = localToDeformed(vec3d(localBox.xmin, localBox.ymax, localBox.zmax));
    double dy = localBox.ymax - localBox.ymin;
    float f = (float) ((R - localBox.zmin) / ((R - localBox.zmax) * cos(dy / (2.0 * R))));

    const vec4d *deformedFrustumPlanes = t->getDeformedFrustumPlanes();
    SceneManager::visibility v0 = getVisibility(deformedFrustumPlanes[0], deformedBox, f);
    if (v0 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v1 = getVisibility(deformedFrustumPlanes[1], deformedBox, f);
    if (v1 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v2 = getVisibility(deformedFrustumPlanes[2], deformedBox, f);
    if (v2 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v3 = getVisibility(deformedFrustumPlanes[3], deformedBox, f);
    if (v3 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v4 = getVisibility(deformedFrustumPlanes[4], deformedBox, f);
    if (v4 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    if (v0 == SceneManager::FULLY_VISIBLE && v1 == SceneManager::FULLY_VISIBLE &&
        v2 == SceneManager::FULLY_VISIBLE && v3 == SceneManager::FULLY_VISIBLE &&
        v4 == SceneManager::FULLY_VISIBLE)
    {
        return SceneManager::FULLY_VISIBLE;
    }
    return SceneManager::PARTIALLY_VISIBLE;
}
Пример #8
0
int caInclude::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    
#ifndef QT_NO_PROPERTIES
     if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast< QString*>(_v) = getMacro(); break;
        case 1: *reinterpret_cast< QString*>(_v) = getFileName(); break;
        case 2: *reinterpret_cast< Visibility*>(_v) = getVisibility(); break;
        case 3: *reinterpret_cast< QString*>(_v) = getVisibilityCalc(); break;
        case 4: *reinterpret_cast< QString*>(_v) = getChannelA(); break;
        case 5: *reinterpret_cast< QString*>(_v) = getChannelB(); break;
        case 6: *reinterpret_cast< QString*>(_v) = getChannelC(); break;
        case 7: *reinterpret_cast< QString*>(_v) = getChannelD(); break;
        }
        _id -= 8;
    } else if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: setMacro(*reinterpret_cast< QString*>(_v)); break;
        case 1: setFileName(*reinterpret_cast< QString*>(_v)); break;
        case 2: setVisibility(*reinterpret_cast< Visibility*>(_v)); break;
        case 3: setVisibilityCalc(*reinterpret_cast< QString*>(_v)); break;
        case 4: setChannelA(*reinterpret_cast< QString*>(_v)); break;
        case 5: setChannelB(*reinterpret_cast< QString*>(_v)); break;
        case 6: setChannelC(*reinterpret_cast< QString*>(_v)); break;
        case 7: setChannelD(*reinterpret_cast< QString*>(_v)); break;
        }
        _id -= 8;
    } else if (_c == QMetaObject::ResetProperty) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyDesignable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyScriptable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyStored) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyEditable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyUser) {
        _id -= 8;
    }
#endif // QT_NO_PROPERTIES
    return _id;
}
Пример #9
0
SceneManager::visibility SphericalDeformation::getVisibility(const TerrainNode *t, const box3d &localBox) const
{
    vec3d deformedBox[4];
    deformedBox[0] = localToDeformed(vec3d(localBox.xmin, localBox.ymin, localBox.zmin));
    deformedBox[1] = localToDeformed(vec3d(localBox.xmax, localBox.ymin, localBox.zmin));
    deformedBox[2] = localToDeformed(vec3d(localBox.xmax, localBox.ymax, localBox.zmin));
    deformedBox[3] = localToDeformed(vec3d(localBox.xmin, localBox.ymax, localBox.zmin));
    double a = (localBox.zmax + R) / (localBox.zmin + R);
    double dx = (localBox.xmax - localBox.xmin) / 2 * a;
    double dy = (localBox.ymax - localBox.ymin) / 2 * a;
    double dz = localBox.zmax + R;
    double f = sqrt(dx * dx + dy * dy + dz * dz) / (localBox.zmin + R);

    const vec4d *deformedFrustumPlanes = t->getDeformedFrustumPlanes();
    SceneManager::visibility v0 = getVisibility(deformedFrustumPlanes[0], deformedBox, f);
    if (v0 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v1 = getVisibility(deformedFrustumPlanes[1], deformedBox, f);
    if (v1 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v2 = getVisibility(deformedFrustumPlanes[2], deformedBox, f);
    if (v2 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v3 = getVisibility(deformedFrustumPlanes[3], deformedBox, f);
    if (v3 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }
    SceneManager::visibility v4 = getVisibility(deformedFrustumPlanes[4], deformedBox, f);
    if (v4 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }

    vec3d c = t->getDeformedCamera();
    double lSq = c.squaredLength();
    double rm = R + min(0.0, localBox.zmin);
    double rM = R + localBox.zmax;
    double rmSq = rm * rm;
    double rMSq = rM * rM;
    vec4d farPlane = vec4d(c.x, c.y, c.z, sqrt((lSq - rmSq) * (rMSq - rmSq)) - rmSq);

    SceneManager::visibility v5 = getVisibility(farPlane, deformedBox, f);
    if (v5 == SceneManager::INVISIBLE) {
        return SceneManager::INVISIBLE;
    }

    if (v0 == SceneManager::FULLY_VISIBLE && v1 == SceneManager::FULLY_VISIBLE &&
        v2 == SceneManager::FULLY_VISIBLE && v3 == SceneManager::FULLY_VISIBLE &&
        v4 == SceneManager::FULLY_VISIBLE && v5 == SceneManager::FULLY_VISIBLE)
    {
        return SceneManager::FULLY_VISIBLE;
    }
    return SceneManager::PARTIALLY_VISIBLE;
}
    bool WindowsManager::setVisibility (const char* nodeNameCorba,
            const char* visibilityModeCorba)
    {
        const std::string nodeName (nodeNameCorba);
        const std::string visibilityMode (visibilityModeCorba);
        VisibilityMode visibility =  getVisibility (visibilityMode);
        if (nodes_.find (nodeName) == nodes_.end ()) {
            std::cout << "Node \"" << nodeName << "\" doesn't exist."
                << std::endl;
            return false;
        }
	mtx_.lock();
        nodes_[nodeName]->setVisibilityMode (visibility);
	mtx_.unlock();
        return true;
    }
Пример #11
0
void NodeBase::print(){
    if( getVisibility()){
        //std::string indent = " ";
        //int len = indent.length() * iIndent;
        
      // cout << "Name: " << mName << " | Children: " << mChildren.size() << endl;

        int tChildCount = getChildCount();
        
        for (int i=0; i < tChildCount; i++){
            mChildren[i]->print();
        }
        
        
    }
}
Пример #12
0
void NodeGeom::draw(){
    if (getVisibility()) {
        
        gl::pushMatrices();
        
        gl::translate(mPosition.x, mPosition.y, mPosition.z);
        
        gl::scale(mScale.x, mScale.y, mScale.z);
        
        gl::rotate( Vec3f( mRotation.x, mRotation.y, mRotation.z ) );
        
        //draw node's contents
        
        gl::color(mColor);
        
        Rectf rect( -mSideLength/2.0, -mSideLength/2.0, mSideLength, mSideLength);
        
        // gl::Texture mTex;
        
        //mTex.enableAndBind();
        
        gl::drawSolidRect( rect);
       
        //mTex.unbind();
        
        
        //draw children
        
        int tChildCount = getChildCount();
        
        
        for (int i=0; i<tChildCount; i++){
            cout<<"i'm now going to draw this child: " << mName << "w/ children # " << mChildren.size() << endl;
            
            //mChildren[i]->draw();
            
            mChildren.at(i)->draw();
        }
        
        gl::popMatrices();
        
        
        
        
    }
}
Пример #13
0
float Environment::getVisibility( Point p )
{
    return getVisibility( p.x, p.y );
}
Пример #14
0
QtDockRegion::QtDockRegion(IComponentContext& context, QtWindow& qtWindow, QDockWidget& qDockWidget)
    : Depends(context), qtWindow_(qtWindow), qDockWidget_(qDockWidget), hidden_(false)
{
	auto qMainWindow = qtWindow_.window();
	assert(qMainWindow != nullptr);

	// Walk our parent hierarchy and make sure we are tabified with the topmost dock widget.
	// Dock widgets as children of anything but the main window are not supported.
	// We support this in the Qt designer so that we can override the properties of a tab or collection of tabs within a
	// dock region
	QWidget* qWidget = &qDockWidget_;
	while (qWidget != nullptr)
	{
		qWidget = qWidget->parentWidget();
		if (qWidget == nullptr)
		{
			break;
		}
		auto qDockWidget = qobject_cast<QDockWidget*>(qWidget);
		if (qDockWidget != nullptr)
		{
			qMainWindow->tabifyDockWidget(qDockWidget, &qDockWidget_);
		}
	}
	qDockWidget_.setVisible(false);

	auto layoutTagsProperty = qDockWidget_.property("layoutTags");
	if (layoutTagsProperty.isValid())
	{
		auto tags = layoutTagsProperty.toStringList();
		for (auto it = tags.cbegin(); it != tags.cend(); ++it)
		{
			tags_.tags_.push_back(std::string(it->toUtf8()));
		}
	}

	auto hiddenProperty = qDockWidget_.property("hidden");
	if (hiddenProperty.isValid())
	{
		hidden_ = hiddenProperty.toBool();
	}

	QObject::connect(&qtWindow_, &QtWindow::windowReady, [&]() {
		if (needToRestorePreference_.empty())
		{
			return;
		}
		auto qtFramework = get<IQtFramework>();
		assert(qtFramework != nullptr);
		auto qMainWindow = qtWindow_.window();
		for (auto& it : needToRestorePreference_)
		{
			auto qtDockWidget = it.first;
			assert(qtDockWidget != nullptr);
			auto pView = it.second;
			assert(pView != nullptr);
			bool isOk = qMainWindow->restoreDockWidget(qtDockWidget);
			if (!isOk)
			{
				setDefaultPreferenceForDockWidget(qtDockWidget);
			}
			auto pQWidget = qtFramework->toQWidget(*pView);
			assert(pQWidget != nullptr);
			qtDockWidget->setWidget(pQWidget);
			QmlView* qmlView = dynamic_cast<QmlView*>(pView);
			if (qmlView == nullptr)
			{
				return;
			}
			auto ngtDockWidget = dynamic_cast<NGTDockWidget*>(qtDockWidget);
			if (ngtDockWidget == nullptr)
			{
				return;
			}
			if (ngtDockWidget->isVisible() && ngtDockWidget->getVisibility())
			{
				qmlView->setNeedsToLoad(true);
			}
		}
		needToRestorePreference_.clear();
	});
}
Пример #15
0
void SceneGraphComponent::executeEvent(GameEvent *event)
{
	switch (event->id())
	{
	case GameEvent::E_SET_TRANSFORMATION:
		setTransformation(static_cast<const float*>(event->data()));
		break;
	case GameEvent::E_TRANSFORMATION:
		memcpy(static_cast<float*>(event->data()), m_transformation, sizeof(float) * 16);
		break;
	case GameEvent::E_SET_TRANSLATION:
		{
			Vec3f* translation = static_cast<Vec3f*>(event->data());
			m_transformation[12] = translation->x;
			m_transformation[13] = translation->y;
			m_transformation[14] = translation->z;
			sendTransformation();
		}
		break;
	case GameEvent::E_SET_SCALE:
		setScale(static_cast<Vec3f*>(event->data()));
		break;
	case GameEvent::E_MESH_DATA:
		getMeshData(static_cast<MeshData*>(event->data()));
		break;
	case GameEvent::E_TRANSLATE_LOCAL:
		translateLocal(static_cast<Vec3f*>(event->data()));
		break;
	case GameEvent::E_TRANSLATE_GLOBAL:
		translateGlobal(static_cast<Vec3f*>(event->data()));
		break;
	case GameEvent::E_ROTATE_LOCAL:
		rotate(static_cast<Vec3f*>(event->data()));
		break;
	case GameEvent::E_SET_ROTATION:
		setRotation(static_cast<Vec3f*>(event->data()));
		break;
	case GameEvent::E_ATTACH:
		attach(static_cast<Attach*>(event->data()));
		break;	
	case GameEvent::E_SET_NODE_PARENT:
		setParentNode(static_cast<Attach*>(event->data()));
		break;
	case GameEvent::E_MORPH_TARGET:
		if (m_hordeID > 0)
		{
			h3dSetModelMorpher(m_hordeID, static_cast<MorphTarget*>(event->data())->Name, static_cast<MorphTarget*>(event->data())->Value);
			h3dUpdateModel(m_hordeID, H3DModelUpdateFlags::Geometry );		
		}
		break;
	case GameEvent::E_ACTIVATE_CAM:
		if (m_hordeID > 0 && h3dGetNodeType(m_hordeID) == H3DNodeTypes::Camera)
			SceneGraphManager::instance()->setActiveCam( m_hordeID );
		break;
	case GameEvent::E_SET_ANIM_FRAME:
		{
			if (m_hordeID > 0)
			{
				const SetAnimFrame* const data = static_cast<SetAnimFrame*>(event->data());			
				h3dSetModelAnimParams(m_hordeID, data->Stage, data->Time, data->Weight);	
				h3dUpdateModel(m_hordeID, H3DModelUpdateFlags::Animation | H3DModelUpdateFlags::Geometry );		
			}
		}
		break;
	case GameEvent::E_SET_ENABLED:
		setEnabled(*static_cast<bool*>(event->data()));
		break;
	case GameEvent::E_GET_VISIBILITY:
		{
			bool* visible = static_cast<bool*>(event->data());
			if (visible)
				*visible = getVisibility();
		}
		break;
	case GameEvent::E_GET_PROJECTION_MATRIX:
		{
			float* mat = static_cast<float*>(event->data());
			SceneGraphManager::instance()->getCameraProjectionMatrix(mat);
		}
		break;
	case GameEvent::E_GET_ACTIVE_CAM:
		if (SceneGraphManager::instance()->getActiveCam() == m_hordeID)
		{
			unsigned int* id = static_cast<unsigned int*>(event->data());
			if (id)
				*id = m_owner->worldId();
		}
		break;
	case GameEvent::E_GET_SCENEGRAPH_ID:
		{
			int* id = static_cast<int*>(event->data());
			if (id)
				*id = m_hordeID;
		}
		break;
	}
}
Пример #16
0
void QtDockRegion::addView(IView& view)
{
	auto qMainWindow = qtWindow_.window();
	assert(qMainWindow != nullptr);

	auto findIt = dockWidgetMap_.find(&view);
	if (findIt != dockWidgetMap_.end())
	{
		// already added into the dockWidget
		return;
	}
	// IView will not control qWidget's life-cycle after this call.
	auto qtFramework = get<IQtFramework>();
	assert(qtFramework != nullptr);
	auto qWidget = qtFramework->toQWidget(view);
	if (qWidget == nullptr)
	{
		return;
	}
	auto centralWidget = qMainWindow->centralWidget();
	if (centralWidget != nullptr)
	{
		centralWidget->layout()->addWidget(qWidget);
	}
	qWidget->setSizePolicy(qDockWidget_.sizePolicy());
	qWidget->setMinimumSize(qDockWidget_.minimumSize());
	qWidget->setMaximumSize(qDockWidget_.maximumSize());
	qWidget->setSizeIncrement(qDockWidget_.sizeIncrement());
	qWidget->setBaseSize(qDockWidget_.baseSize());
	qWidget->resize(qWidget->baseSize());

	auto qDockWidget = new NGTDockWidget(&view);
	qDockWidget->setObjectName(view.id());
	IView* pView = &view;
	QtWindow* pWindow = &qtWindow_;
	QObject::connect(qDockWidget, &QDockWidget::visibilityChanged, [qDockWidget, pWindow](bool visible) {
		qDockWidget->visibilityChanged(visible);
		if (visible)
		{
			if (pWindow->isLoadingPreferences())
			{
				return;
			}
			QCoreApplication::postEvent(qDockWidget, new QEvent(QEvent::FocusIn));
		}

	});

	if (qtWindow_.isReady())
	{
		bool isOk = qMainWindow->restoreDockWidget(qDockWidget);
		if (!isOk)
		{
			setDefaultPreferenceForDockWidget(qDockWidget);
		}
		QmlView* qmlView = dynamic_cast<QmlView*>(pView);
		if (qmlView != nullptr)
		{
			if (qDockWidget->isVisible() && qDockWidget->getVisibility())
			{
				qmlView->setNeedsToLoad(true);
			}
		}
	}
	else
	{
		needToRestorePreference_.push_back(std::make_pair(qDockWidget, pView));
	}
	qDockWidget->setWidget(qWidget);

	std::string actionId("View.");
	actionId += view.title();

	auto action = qtFramework->createAction(actionId.c_str(), view.title(), "View", [pView, qDockWidget](IAction*) {
		qDockWidget->show();
		qDockWidget->raise();
		pView->focusInEvent();
	});
	auto application = get<IUIApplication>();
	assert(application != nullptr);
	application->addAction(*action);

	dockWidgetMap_[&view] = std::make_pair(std::unique_ptr<QDockWidget>(qDockWidget), std::move(action));
}
Пример #17
0
SceneManager::visibility SceneManager::getVisibility(const box3d &worldBounds)
{
    return getVisibility(worldFrustumPlanes, worldBounds);
}