예제 #1
0
파일: sos.c 프로젝트: cvphelps/courseware
void s(void)
{
    dit();
    dit();
    dit();
    delay_ms(LETTERSPACE);
}
예제 #2
0
void
setToExactDivFLD(LevelData<EBCellFAB>&       a_soln,
                 const EBISLayout&           a_ebisl,
                 const DisjointBoxLayout&    a_dbl,
                 const Real&                 a_dx)
{
    for (DataIterator dit= a_dbl.dataIterator(); dit.ok(); ++dit)
    {
        setToExactDivF(a_soln[dit()],
                       a_ebisl[dit()],
                       a_dbl.get(dit()),
                       a_dx);
    }
}
예제 #3
0
void
setToExactFluxLD(LevelData<EBFluxFAB>&       a_flux,
                 const EBISLayout&           a_ebisl,
                 const DisjointBoxLayout&    a_dbl,
                 const Real&                 a_dx)
{
    for (DataIterator dit= a_dbl.dataIterator(); dit.ok(); ++dit)
    {
        setToExactFlux(a_flux[dit()],
                       a_ebisl[dit()],
                       a_dbl.get(dit()),
                       a_dx);
    }
}
예제 #4
0
파일: server.cpp 프로젝트: opieproject/opie
void Server :: readStatusFile(  QList<Destination> &destList )
{
    cleanUp();

    Destination *dest;
    QListIterator<Destination> dit( destList );
    bool rootRead = false;
    for ( ; dit.current(); ++dit )
    {
        dest = dit.current();
        bool installingToRoot = false;

        QString path = dest->getDestinationPath();
        if ( path.right( 1 ) != "/" )
            path.append( "/" );

        if ( path == "/" )
        {
            rootRead = true;
            installingToRoot = true;
        }

        packageFile = path;
        packageFile.append( "usr/lib/ipkg/status" );
        readPackageFile( 0, false, installingToRoot, &( *dest ) );
    }

    // Ensure that the root status file is read
    if ( !rootRead )
    {
        packageFile = "/usr/lib/ipkg/status";
        readPackageFile( 0, false, true );
    }
}
예제 #5
0
bool GoEyeUtil::CanBecomeSinglePointEye (const GoBoard& board, SgPoint p, 
                              const SgPointSet& oppSafe)
{
    SG_ASSERT(! oppSafe[p]);

    for (SgNb4Iterator it(p); it; ++it)
    {
        if (oppSafe[*it])
            return false;
    }

    int nu = 0;
    for (SgNb4DiagIterator dit(p); dit; ++dit)
    {
        if (oppSafe[*dit])
        {
            if (board.Line(p) == 1)
                return false;
            ++nu;
            if (nu > 1)
                return false;
        }
    }
    
    return true;
}
예제 #6
0
void
divergenceTest()
{
    int maxsize;
    ParmParse pp;
    pp.get("max_grid_size", maxsize);

    //make layouts == domain
    Box domainBoxFine, domainBoxCoar;
    Real dxFine, dxCoar;
    sphereGeometry(domainBoxFine, dxFine);
    domainBoxCoar = coarsen(domainBoxFine, 2);

    //debug
    dxFine = 1.0;
    dxCoar = 2.*dxFine;
    Vector<Box> boxFine;
    domainSplit(domainBoxFine, boxFine, maxsize);

    Vector<int> proc(boxFine.size(), 0);
    DisjointBoxLayout dblFine(boxFine, proc);
    DisjointBoxLayout dblCoar;
    coarsen(dblCoar, dblFine, 2);
    LevelData<EBCellFAB> errorFine, errorCoar;

    EBISLayout ebislFine, ebislCoar;
    const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance();
    ebisPtr->fillEBISLayout(ebislFine, dblFine, domainBoxFine, 2);
    ebisPtr->fillEBISLayout(ebislCoar, dblCoar, domainBoxCoar, 2);

    getError(errorFine, ebislFine, dblFine, dxFine);
    getError(errorCoar, ebislCoar, dblCoar, dxCoar);

    for (DataIterator dit= dblFine.dataIterator(); dit.ok(); ++dit)
    {
        const EBCellFAB& errorFineFAB = errorFine[dit()];
        const EBCellFAB& errorCoarFAB = errorCoar[dit()];
        int i1 = errorFineFAB.getMultiCells().numPts();
        int i2 = errorCoarFAB.getMultiCells().numPts();
        pout() << i1 << i2 << endl;
    }

    compareError(errorFine, ebislFine, dblFine, domainBoxFine,
                 errorCoar, ebislCoar, dblCoar, domainBoxCoar);

}
예제 #7
0
void
kappaDivergenceLD(LevelData<EBCellFAB>&       a_divF,
                  const LevelData<EBFluxFAB>& a_flux,
                  const EBISLayout&           a_ebisl,
                  const DisjointBoxLayout&    a_dbl,
                  const Real&                 a_dx)
{
    for (DataIterator dit= a_dbl.dataIterator(); dit.ok(); ++dit)
    {
        kappaDivergence(a_divF[dit()],
                        a_flux[dit()],
                        a_ebisl[dit()],
                        a_dbl.get(dit()),
                        a_dx);
    }

}
예제 #8
0
파일: main.cpp 프로젝트: JaonLin/Manalyze
/**
 *	@brief	Returns all the input files of the application
 *
 *	When the recursive option is specified, this function returns all the files in
 *	the requested directory (or directories).
 *
 *	@param	po::variables_map& vm The (parsed) arguments of the application.
 *
 *	@return	A set (to weed out duplicates) containing all the files to analyze.
 */
std::set<std::string> get_input_files(po::variables_map& vm)
{
	std::set<std::string> targets;
	if (vm.count("recursive"))
	{
		std::vector<std::string> input = vm["pe"].as<std::vector<std::string> >();
		for (auto it = input.begin() ; it != input.end() ; ++it)
		{
			if (!bfs::is_directory(*it))
			{
				#if defined BOOST_WINDOWS_API
					std::string path = bfs::absolute(*it).string();
					std::replace(path.begin(), path.end(), '\\', '/');
					targets.insert(path);
				#else
					targets.insert(bfs::absolute(*it).string());
				#endif
			}
			else
			{
				bfs::directory_iterator end;
				for (bfs::directory_iterator dit(*it) ; dit != end ; ++dit)
				{
					if (!bfs::is_directory(*dit)) { // Ignore subdirectories
					#if defined BOOST_WINDOWS_API
						std::string path = bfs::absolute(dit->path()).string();
						std::replace(path.begin(), path.end(), '\\', '/');
						targets.insert(path);
					#else
						targets.insert(bfs::absolute(dit->path()).string());
					#endif
					}
				}
			}
		}
	}
	else
	{
		auto vect = vm["pe"].as<std::vector<std::string> >();
		for (auto it = vect.begin() ; it != vect.end() ; ++it)
		{
			if (!bfs::is_directory(*it)) {
				#if defined BOOST_WINDOWS_API
					std::string path = bfs::absolute(*it).string();
					std::replace(path.begin(), path.end(), '\\', '/');
					targets.insert(path);
				#else
					targets.insert(bfs::absolute(*it).string());
				#endif
			}
			else {
				PRINT_WARNING << *it << " is a directory. Skipping (use the -r option for recursive analyses)." << std::endl;
			}
		}
	}
	return targets;
}
예제 #9
0
  int SlaterDetBuilder::putDeterminant(xmlNodePtr cur, int firstIndex) {

    string basisName("invalid");
    string detname("NONE"), refname("NONE");
    OhmmsAttributeSet aAttrib;
    aAttrib.add(basisName,basisset_tag);
    aAttrib.add(detname,"id");
    aAttrib.add(refname,"ref");
    aAttrib.put(cur);

    xmlNodePtr c_ptr = NULL, o_ptr=NULL;

    Det_t* adet=0;

    //index of the last SlaterDeterminant
    int dIndex=DetSet.size();

    if(refname == "NONE") { //create one and use detname
      if(detname =="NONE") { //no id is given, assign one
        char newname[8];
        sprintf(newname,"det%d",dIndex);
        detname=newname;
      }
    }

    map<string,SPOSetBasePtr>::iterator lit(SPOSet.find(detname));
    SPOSetBasePtr psi;
    if(lit == SPOSet.end()) {
#if defined(ENABLE_SMARTPOINTER)
      psi.reset(myBasisSetFactory->createSPOSet(cur)); 
#else
      psi = myBasisSetFactory->createSPOSet(cur); 
#endif
      psi->put(cur);
      psi->checkObject();
      SPOSet[detname]=psi;
    } else {
      psi = (*lit).second;
    }

    if(psi->getOrbitalSetSize()) {
      map<string,Det_t*>::iterator dit(DetSet.find(detname));
      if(dit == DetSet.end()) {
        adet = new Det_t(psi,firstIndex);
        adet->set(firstIndex,psi->getOrbitalSetSize());
        DetSet[detname]=adet;
      } else {
        adet = (*dit).second;
      }
      firstIndex += psi->getOrbitalSetSize();
    }

    //only if a determinant is not 0
    if(adet) SlaterDetSet.back()->add(adet);
    return firstIndex;
  }
예제 #10
0
    inline void apply_diff(TIterator it, TIterator end, THandlers&... handlers) {
        using diff_iterator = osmium::DiffIterator<TIterator>;

        diff_iterator dit(it, end);
        diff_iterator dend(end, end);

        for (; dit != dend; ++dit) {
            detail::apply_diff_iterator_recurse(*dit, handlers...);
        }
    }
예제 #11
0
void DrGroup::clearConflict()
{
    QDictIterator< DrBase > dit(m_options);
    for(; dit.current(); ++dit)
        dit.current()->setConflict(false);

    QPtrListIterator< DrGroup > lit(m_subgroups);
    for(; lit.current(); ++lit)
        lit.current()->clearConflict();
}
예제 #12
0
void DrGroup::setOptions(const QMap< QString, QString > &opts)
{
    QDictIterator< DrBase > dit(m_options);
    for(; dit.current(); ++dit)
        dit.current()->setOptions(opts);

    QPtrListIterator< DrGroup > lit(m_subgroups);
    for(; lit.current(); ++lit)
        lit.current()->setOptions(opts);
}
예제 #13
0
void DrGroup::getOptions(QMap< QString, QString > &opts, bool incldef)
{
    QDictIterator< DrBase > dit(m_options);
    for(; dit.current(); ++dit)
        dit.current()->getOptions(opts, incldef);

    QPtrListIterator< DrGroup > lit(m_subgroups);
    for(; lit.current(); ++lit)
        lit.current()->getOptions(opts, incldef);
}
예제 #14
0
void loop()
{
  dah();
  dit();
  dah();
  dah();
  pause();
  dah();
  dit();
  dah();
  dah();
  pause();
  dah();
  dah();
  dit();
  dit();
  pause();
  pause();
}
예제 #15
0
파일: morse.c 프로젝트: shimniok/lma
void number(uint8_t n) 
{
	// Beep out the current warning time
	while (n >= 10) {
		dah();
		n -= 10;
	}
	if (n > 0) {
		dit();
	}
}
예제 #16
0
파일: path.cpp 프로젝트: soshiant1992/libqi
  PathVector Path::dirs() const
  {
    PathVector ret;
    bfs::directory_iterator dit(_p->path);

    for (; dit != bfs::directory_iterator(); ++dit) {
      if (bfs::is_directory(*dit))
        ret.push_back(Path(new PrivatePath(*dit)));
    }
    return ret;
  }
예제 #17
0
파일: path.cpp 프로젝트: soshiant1992/libqi
  PathVector Path::recursiveFiles() const
  {
    PathVector ret;
    bfs::recursive_directory_iterator dit(_p->path);

    for (; dit != bfs::recursive_directory_iterator(); ++dit) {
      if (bfs::is_regular_file(*dit))
        ret.push_back(Path(new PrivatePath(*dit)));
    }
    return ret;
  }
예제 #18
0
void DrGroup::createTree(DriverItem *parent)
{
    DriverItem *item(0);

    QPtrListIterator< DrGroup > lit(m_subgroups);
    for(; lit.current(); ++lit)
        item = lit.current()->createItem(parent, item);

    QPtrListIterator< DrBase > dit(m_listoptions);
    for(; dit.current(); ++dit)
        item = dit.current()->createItem(parent, item);
}
예제 #19
0
QScriptValue ScriptEngine::js_loadExtension(QScriptContext *context, QScriptEngine *qtengine)
{
    ScriptEngine *engine = static_cast<ScriptEngine *>(qtengine);
    if (context->argumentCount() < 1) {
        return context->throwError(
                    ScriptEngine::tr("The loadExtension function requires "
                                     "an extension name."));
    }

    if (engine->m_extensionSearchPathsStack.isEmpty())
        return context->throwError(
                    ScriptEngine::tr("loadExtension: internal error. No search paths."));

    const QString uri = context->argument(0).toVariant().toString();
    if (engine->m_logger.debugEnabled()) {
        engine->m_logger.qbsDebug()
                << "[loadExtension] loading extension " << uri;
    }

    QString uriAsPath = uri;
    uriAsPath.replace(QLatin1Char('.'), QLatin1Char('/'));
    const QStringList searchPaths = engine->m_extensionSearchPathsStack.top();
    const QString dirPath = findExtensionDir(searchPaths, uriAsPath);
    if (dirPath.isEmpty()) {
        if (uri.startsWith(QLatin1String("qbs.")))
            return loadInternalExtension(context, engine, uri);

        return context->throwError(
                    ScriptEngine::tr("loadExtension: Cannot find extension '%1'. "
                                     "Search paths: %2.").arg(uri, searchPaths.join(
                                                                  QLatin1String(", "))));
    }

    QDirIterator dit(dirPath, QDir::Files | QDir::Readable);
    QScriptValueList values;
    try {
        while (dit.hasNext()) {
            const QString filePath = dit.next();
            if (engine->m_logger.debugEnabled()) {
                engine->m_logger.qbsDebug()
                        << "[loadExtension] importing file " << filePath;
            }
            values << engine->importFile(filePath, QScriptValue());
        }
    } catch (const ErrorInfo &e) {
        return context->throwError(e.toString());
    }

    return mergeExtensionObjects(values);
}
예제 #20
0
파일: morse.c 프로젝트: russells/dclock
static void send_morse_char(const Q_ROM struct MorseChar *mc)
{
	uint8_t nsymbols = Q_ROM_BYTE(mc->nsymbols);
	uint8_t symbols = Q_ROM_BYTE(mc->symbols);

	while (nsymbols) {
		if (symbols & 0b10000000)
			dah();
		else
			dit();
		BSP_delay_ms( DIT_LENGTH );
		symbols <<= 1;
		nsymbols--;
	}
}
예제 #21
0
void setup()
{

  Serial.begin(9600);
  DDRB=0xFF;  //Port B all outputs
  //Do one dit to determine approximate frequency
  millisAtStart=millis();
  dit();
  millisAtEnd=millis();
  Serial.print(millisAtEnd-millisAtStart);
  Serial.print(" ");
  Serial.print((length_dit+pause_dit)*period_broadcast*256/(millisAtEnd-millisAtStart)/2);
  Serial.print("kHz ");
  Serial.println();
}
예제 #22
0
void Telegraph::output_code(const char* code) {
    const unsigned int code_length = strlen(code);

    for (unsigned int i = 0; i < code_length; i++) {
        if (code[i] == '.') {
            dit();
        } else {
            dah();
        }

        if (i != code_length - 1) {
            delay(_dit_length);
        }
    }
}
예제 #23
0
void Morse::send(char c)
{
  byte _i;
  byte _p;

  // Send space
  if (c == ' ') {
    delay(7*_dotlen) ;
    return ;
  }
  
  // Do a table lookup to get morse data
  else {
    _i = ((byte) c) - 33;
    _p = _morsetab[_i];
  }

  // Main algoritm for each morse sign
  while (_p != 1) {
    if (_p & 1)
      switch (_beep) {
	case 0:
	  dash();
	  break;
        case 1:
          bdash();
          break;
        default:
          break;
      }
    else
      switch (_beep) {
	case 0:
	  dit();
	  break;
        case 1:
          bdit();
          break;
        default:
          break;
      }
    _p = _p / 2;
  }
  // Letterspace
  delay(2*_dotlen);
}
예제 #24
0
static void createModules(Profile &profile, Settings *settings,
                               const QtEnvironment &qtEnvironment)
{
    const QList<QtModuleInfo> modules = qtEnvironment.qtMajorVersion < 5
            ? allQt4Modules(qtEnvironment)
            : allQt5Modules(profile, qtEnvironment);
    const QString profileBaseDir = QString::fromLocal8Bit("%1/qbs/profiles/%2")
            .arg(QFileInfo(settings->fileName()).dir().absolutePath(), profile.name());
    const QString qbsQtModuleBaseDir = profileBaseDir + QLatin1String("/modules/Qt");
    QStringList allFiles;
    copyTemplateFile(QLatin1String("QtModule.qbs"), qbsQtModuleBaseDir, profile, qtEnvironment,
                     &allFiles);
    copyTemplateFile(QLatin1String("QtPlugin.qbs"), qbsQtModuleBaseDir, profile, qtEnvironment,
                     &allFiles);
    foreach (const QtModuleInfo &module, modules) {
        const QString qbsQtModuleDir = qbsQtModuleBaseDir + QLatin1Char('/') + module.qbsName;
        QString moduleTemplateFileName;
        if (module.qbsName == QLatin1String("core")) {
            moduleTemplateFileName = QLatin1String("core.qbs");
            copyTemplateFile(QLatin1String("moc.js"), qbsQtModuleDir, profile, qtEnvironment,
                             &allFiles);
        } else if (module.qbsName == QLatin1String("gui")) {
            moduleTemplateFileName = QLatin1String("gui.qbs");
        } else if (module.qbsName == QLatin1String("phonon")) {
            moduleTemplateFileName = QLatin1String("phonon.qbs");
        } else if (module.isPlugin) {
            moduleTemplateFileName = QLatin1String("plugin.qbs");
        } else {
            moduleTemplateFileName = QLatin1String("module.qbs");
        }
        copyTemplateFile(moduleTemplateFileName, qbsQtModuleDir, profile, qtEnvironment, &allFiles,
                         &module);
    }
    QDirIterator dit(qbsQtModuleBaseDir, QDirIterator::Subdirectories);
    while (dit.hasNext()) {
        dit.next();
        const QFileInfo &fi = dit.fileInfo();
        if (!fi.isFile())
            continue;
        const QString filePath = fi.absoluteFilePath();
        if (!allFiles.contains(filePath) && !QFile::remove(filePath))
                qDebug("Warning: Failed to remove outdated file '%s'.", qPrintable(filePath));
    }
    profile.setValue(QLatin1String("preferences.qbsSearchPaths"), profileBaseDir);
}
예제 #25
0
void SnapshotsFile::_processDirectory(const QString& sessionId, const QDir& rootDir, QMap<QString,Snapshot>& snapshotList) const {
    if (!rootDir.exists()) {
        return;
    }

    QDirIterator dit(rootDir.absolutePath(), QDir::NoFilter);
    while (dit.hasNext()) {
        dit.next();
        // skip "." and ".." entries
        if (dit.fileName() == "." || dit.fileName() == "..") {
            continue;
        }

        QString fileName = dit.fileInfo().fileName();
        if (dit.fileInfo().isFile()) {
            if (fileName.endsWith(SUFFIX)) {
                QString strippedFileName = fileName.left( fileName.length() - SUFFIX.length());
                if ( !snapshotList.contains( strippedFileName ) ){
                    snapshotList.insert(strippedFileName, Snapshot(strippedFileName));
                }
                QString dirName = rootDir.dirName();
                if ( dirName == BASE_DIR ){
                    QDateTime lastModify = dit.fileInfo().lastModified();
                    QString lastModifyStr = lastModify.toString("ddd MMMM d yyyy");
                    snapshotList[strippedFileName].setCreatedDate( lastModifyStr );

                    QString description = read( sessionId, Carta::State::CartaObject::SNAPSHOT_INFO, strippedFileName);
                    snapshotList[strippedFileName].setDescription( description );
                }
                else {
                    //Add in the state interfaces
                    QString rootName = rootDir.dirName();
                    snapshotList[strippedFileName].setState(rootName, true);
                }
            }
        }
        else if (dit.fileInfo().isDir()){
            QString subDirPath = dit.fileInfo().absoluteFilePath();
            QDir subDir( subDirPath );
            _processDirectory( sessionId, subDir, snapshotList);
        }
    }
}
예제 #26
0
//
// Slot to find if a specified program is available in the environment path
bool Settings::isProgramAvailable(const QString& prog_name)
{
	// get search paths
	QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
  QStringList sl_dirs = env.value("PATH").split(':');
	
	// return false if there are no paths to search	
	if (sl_dirs.size() < 1) return false;
	
	// iterate over the search paths 
	for (int i = 0; i < sl_dirs.size(); ++i) { 
		QDirIterator dit(QString(sl_dirs.at(i) ), QDirIterator::Subdirectories);
		while (dit.hasNext()) {
			QFileInfo fi(dit.next());
			if (fi.completeBaseName() == prog_name) return true;
		}	// while
	}	// for

	// no found, return false
	return false;
}
예제 #27
0
파일: applnk.cpp 프로젝트: opieproject/opie
/*!
  Constructs a DocLnkSet that contains DocLnk objects representing all
  the files in the \a directory (and any subdirectories, recursively).

  If \a mimefilter is not null,
  only documents with a MIME type matching \a mimefilter are selected.
  The value may contain multiple wild-card patterns separated by ";",
  such as \c{*o/mpeg;audio/x-wav}.

  See also \link applnk.html#files-and-links Files and Links\endlink.

*/
DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) :
    AppLnkSet()
{
    QDir dir( directory );
    mFile = dir.dirName();
    QDict<void> reference(1021);

    QStringList subFilter = QStringList::split(";", mimefilter);
    QValueList<QRegExp> mimeFilters;
    for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it )
  mimeFilters.append( QRegExp(*it, FALSE, TRUE) );

    findChildren(directory, mimeFilters, reference);

    const QList<DocLnk> &list = children();
    for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) {
  reference.remove( (*it)->file() );
    }
    for ( QDictIterator<void> dit(reference); dit.current(); ++dit ) {
  if ( dit.current() == (void*)2 ) {
      // Unreferenced, make an unwritten link
      DocLnk* dl = new DocLnk;
      QFileInfo fi( dit.currentKey() );
      dl->setFile(fi.filePath());
      dl->setName(fi.baseName());
      // #### default to current path?
      // dl->setCategories( ... );
      bool match = mimefilter.isNull();
      if ( !match )
    for( QValueList<QRegExp>::Iterator it = mimeFilters.begin(); it != mimeFilters.end() && !match; ++ it )
        if ( (*it).match(dl->type()) >= 0 )
      match = TRUE;
      if ( match /* && dl->type() != "application/octet-stream" */
        && !!dl->exec() )
    add(dl);
      else
    delete dl;
  }
    }
}
예제 #28
0
void KU::KGroups::commit()
{
    kdDebug() << "KU::KGroups::commit()" << endl;
    KU::KGroup *group;
    DelIt dit( mDelSucc );
    AddIt ait( mAddSucc );
    ModIt mit = mModSucc.begin();

    while ( mit != mModSucc.end() ) {
        *(mit.key()) = mit.data();
        mit++;
    }
    while ( (group = dit.current()) != 0 ) {
        ++dit;
        mGroups.remove( group );
    }
    while ( (group = ait.current()) != 0 ) {
        ++ait;
        mGroups.append( group );
    }
    cancelMods();
}
예제 #29
0
void UpdateNoCampaignParentObjectsWakeState (float px, float py, float range){
	// Traverse the list of asleep detached objects and wake those in range
	float			dsq,rsq = range*range;
	SimBaseClass	*object;
	VuListIterator	dit(SimDriver.ObjsWithNoCampaignParentList);
	object = (SimBaseClass*)dit.GetFirst();
	while (object){
		if (object->IsLocal()){
			// All local objects should be awake (we need to manage them)
			if (!object->IsAwake()){
				object->Wake();
			}
		}
		else {
			// Only wake remote objects which are within a reasonable range
			dsq = (px-object->XPos())*(px-object->XPos()) + (py-object->YPos())*(py-object->YPos());
			if (dsq < rsq){
				// KCK: Probably should remove objects from this list when they're dead -
				// But I wasn't sure how ACMI uses the unset dead functionality
				if (!object->IsAwake() && !object->IsDead())
					object->Wake();
			}
			else if (dsq > rsq*1.2F){
				if (object->IsAwake() && //me123 host needs to drive missiles and bombs
				(
					!vuLocalSessionEntity->Game()->IsLocal() ||
					vuLocalSessionEntity->Game()->IsLocal() && 
					!object->IsBomb() && 
					!object->IsMissile())
				){
					object->Sleep();
				}
			}
		}
		object = (SimBaseClass*)dit.GetNext();
	}
}
예제 #30
0
파일: lwf_movie.cpp 프로젝트: KitoHo/lwf
void Movie::Update(const Matrix *m, const ColorTransform *c)
{
	if (!active)
		return;

	bool matrixChanged;
	bool colorTransformChanged;

	if (m_overriding) {
		matrixChanged = true;
		colorTransformChanged = true;
	} else {
		matrixChanged = matrix.SetWithComparing(m);
		colorTransformChanged = colorTransform.SetWithComparing(c);
	}

	if (!m_handler.Empty())
		m_handler.Call(METype::UPDATE, this);

	if (m_property->hasMatrix) {
		matrixChanged = true;
		m = Utility::CalcMatrix(&m_matrix0, &matrix, &m_property->matrix);
	} else {
		m = &matrix;
	}

	if (m_property->hasColorTransform) {
		colorTransformChanged = true;
		c = Utility::CalcColorTransform(
			&m_colorTransform0, &colorTransform, &m_property->colorTransform);
	} else {
		c = &colorTransform;
	}

	for (int dlDepth = 0; dlDepth < data->depths; ++dlDepth) {
		Object *obj = m_displayList[dlDepth].get();
		if (obj)
			UpdateObject(obj, m, c, matrixChanged, colorTransformChanged);
	}

	if (!m_attachedMovies.empty()) {
		AttachedMovieList::iterator it(m_attachedMovieList.begin()),
			itend(m_attachedMovieList.end());
		for (; it != itend; ++it)
			if (it->second)
				it->second->UpdateObject(it->second.get(),
					m, c, matrixChanged, colorTransformChanged);
	}

	if (!m_attachedLWFs.empty()) {
		DetachDict::const_iterator
			dit(m_detachedLWFs.begin()), ditend(m_detachedLWFs.end());
		for (; dit != ditend; ++dit) {
			AttachedLWFs::iterator it = m_attachedLWFs.find(dit->first);
			if (it != m_attachedLWFs.end())
				DeleteAttachedLWF(this, it->second, true, false);
		}
		m_detachedLWFs.clear();

		AttachedLWFList::iterator
			it(m_attachedLWFList.begin()), itend(m_attachedLWFList.end());
		for (; it != itend; ++it) {
			if (it->second)
				lwf->RenderObject(
					it->second->child->Exec(lwf->thisTick, m, c));
		}
	}
}