LibraryUI::LibraryUI( const QString & name , SApplication *parent ) : SPage( name , parent ) { this->setAcceptDrops( true ); QDir conf_dir( Silicon::config() + "/Library" ); conf_dir.mkpath( conf_dir.path() ); QString path = conf_dir.path() + "/library"; library = new Librarydb( path ); item_list = new ItemList(); item_list->setLibrary( library ); item_list->setIconSize( QSize(32,32) ); item_list->setContextMenuPolicy( Qt::CustomContextMenu ); tags_list = new TagsList(); tags_list->setLibrary( library ); //tags_list->setFixedWidth( 235 ); char_list = new CharList(); char_list->setFixedWidth( 43 ); char_list->setLibrary( library ); char_list->setFilterList( tags_list ); format_list = new FormatList(); format_list->setFixedWidth( 73 ); format_list->setFilterList( char_list ); filters_box = new QGroupBox( tr("Filters") ); filters_box->setFixedWidth( 313 ); filters_layout = new QHBoxLayout( filters_box ); filters_layout->addWidget( format_list ); filters_layout->addWidget( char_list ); filters_layout->addWidget( tags_list ); list_widget_box = new QGroupBox( "Result List" ); list_widget_layout = new QVBoxLayout( list_widget_box ); list_widget_layout->addWidget( item_list ); item_preview = new ItemPreview(); toolbar = new QToolBar(); toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); toolbar->setStyleSheet( "QToolBar{border-style:solid}" ); lists_layout = new QHBoxLayout(); lists_layout->addWidget( filters_box ); lists_layout->addWidget( list_widget_box ); base_layout = new QVBoxLayout( this ); //base_layout->addWidget( toolbar ); base_layout->addLayout( lists_layout ); base_layout->addWidget( item_preview ); mounter = SiDiTools::createImageMounter( this ); isoinfo = new SIsoInfo( this ); QObject::connect( isoinfo , SIGNAL(copyrightUpdated(QString)) , item_preview , SLOT(setCopyright(QString)) ); QObject::connect( isoinfo , SIGNAL(volumeUpdated(QString)) , item_preview , SLOT(setVolumeID(QString)) ); QObject::connect( isoinfo , SIGNAL(applicationIdReaded(QString)) , item_preview , SLOT(setApplicationID(QString)) ); QObject::connect( isoinfo , SIGNAL(systemUpdated(QString)) , item_preview , SLOT(setSystemID(QString)) ); QObject::connect( isoinfo , SIGNAL(publisherUpdated(QString)) , item_preview , SLOT(setPublisher(QString)) ); QObject::connect( isoinfo , SIGNAL(formatUpdated(QString)) , item_preview , SLOT(setFormat(QString)) ); QObject::connect( tags_list , SIGNAL(rowChenged(QStringList)) , item_list , SLOT(setItems(QStringList)) ); QObject::connect( item_list , SIGNAL(currentRowChanged(int)) , this , SLOT(itemChanged(int)) ); QObject::connect( item_list , SIGNAL(itemDoubleClicked(QListWidgetItem*)) , this , SLOT(mountCurrentItem()) ); setupActions(); reload(); setToolBar( toolbar ); setMinimumSize( QSize(720,350) ); }
//------------------------------------------------------------------------------ // entityState2Nib() -- (Input support) // Transfers data from the incoming entity attributes to the basic // NIB class variables. //------------------------------------------------------------------------------ void Nib::entityState2Nib() { if (isAttributeUpdateRequired(NetIO::ENTITY_IDENTIFIER_AI)) { setPlayerID(baseEntity->entityIdentifier.entityNumber); setSiteID(baseEntity->entityIdentifier.federateIdentifier.siteID); setApplicationID(baseEntity->entityIdentifier.federateIdentifier.applicationID); setAttributeUpdateRequiredFlag(NetIO::ENTITY_IDENTIFIER_AI, false); haveEntityIdFlg = true; } if (isAttributeUpdateRequired(NetIO::ENTITY_TYPE_AI)) { setEntityType( baseEntity->entityType.entityKind, baseEntity->entityType.domain, baseEntity->entityType.countryCode, baseEntity->entityType.category, baseEntity->entityType.subcategory, baseEntity->entityType.specific, baseEntity->entityType.extra ); setAttributeUpdateRequiredFlag(NetIO::ENTITY_TYPE_AI, false); haveEntityTypeFlg = true; } if (isAttributeUpdateRequired(NetIO::SPATIAL_AI)) { // NIB's base entity structures //SpatialStruct* spatial = &(baseEntity->spatial); SpatialRVStruct* spatialRvw = &(baseEntity->spatialRvw); // Set the freeze flag freeze(spatialRvw->isFrozen != 0); // Get the geocentric position, velocity and acceleration osg::Vec3d geocPos; geocPos[base::Nav::IX] = spatialRvw->worldLocation.x; geocPos[base::Nav::IY] = spatialRvw->worldLocation.y; geocPos[base::Nav::IZ] = spatialRvw->worldLocation.z; osg::Vec3d geocVel; geocVel[base::Nav::IX] = spatialRvw->velocityVector.xVelocity; geocVel[base::Nav::IY] = spatialRvw->velocityVector.yVelocity; geocVel[base::Nav::IZ] = spatialRvw->velocityVector.zVelocity; osg::Vec3d geocAcc; geocAcc[base::Nav::IX] = spatialRvw->accelerationVector.xAcceleration; geocAcc[base::Nav::IY] = spatialRvw->accelerationVector.yAcceleration; geocAcc[base::Nav::IZ] = spatialRvw->accelerationVector.zAcceleration; // Get orientation orientation and rates osg::Vec3d geocAngles; geocAngles[base::Nav::IPHI] = spatialRvw->orientation.phi; geocAngles[base::Nav::ITHETA] = spatialRvw->orientation.theta; geocAngles[base::Nav::IPSI] = spatialRvw->orientation.psi; osg::Vec3d arates(0.0, 0.0, 0.0); // (re)initialize the dead reckoning function double diffTime(0.0); resetDeadReckoning( RVW_DRM, geocPos, geocVel, geocAcc, geocAngles, arates, diffTime); haveWorldLocationFlg = true; haveOrientationFlg = true; setAttributeUpdateRequiredFlag(NetIO::SPATIAL_AI, false); } // PhysicalEntity pointer PhysicalEntity* physicalEntity = dynamic_cast<PhysicalEntity*>(baseEntity); if (physicalEntity != nullptr) { if (isAttributeUpdateRequired(NetIO::FORCE_IDENTIFIER_AI)) { // Side: When mapping Force ID to Player Side ... if (physicalEntity->forceIdentifier == FRIENDLY) { // Friendly's are blue, ... setSide(simulation::Player::BLUE); } else if (physicalEntity->forceIdentifier == OPPOSING) { // opposing side is red, ... setSide(simulation::Player::RED); } else if (physicalEntity->forceIdentifier == NEUTRAL) { // Neutrals are white, ... setSide(simulation::Player::WHITE); } else { // and everyone else is gray. setSide(simulation::Player::GRAY); } setAttributeUpdateRequiredFlag(NetIO::FORCE_IDENTIFIER_AI, false); } } setMode(simulation::Player::ACTIVE); setTimeExec( (double) getNetIO()->getCurrentTime() ); }