Пример #1
0
void AnimatedSprite::addMessageRule(int msg, AnimateMessage* rule) {
	RIter p = rules.find(msg);
	if (p != rules.end()) {
		return;
	}
	rules.insert(RPair(msg, rule));
}
Пример #2
0
  void NumberData::post_step() {
    int ntypes = Base::simData->ntypes();

    if (numberData.empty()) numberData = vector<vector<RPair> >(ntypes);
    vector<int> nums(ntypes, 0);

    int size = Base::simData->size();
    for (int n=0; n<size; ++n) {
      int type = Base::simData->Type(n);
      if (-1<type && type<ntypes)
        ++nums[type];
    }

    // Store data
    RealType time = Base::gflow->getElapsedTime();
    for (int i=0; i<ntypes; ++i)
      numberData[i].push_back(RPair(time, static_cast<RealType>(nums[i])));
  }
Пример #3
0
 void KineticEnergyTypesData::post_step() {
   // Only record if enough time has gone by
   if (!DataObject::_check()) return;
   RealType time = Base::gflow->getElapsedTime();
   // Create an entry
   for (int ty=0; ty<ntypes; ++ty) keData[ty].push_back(RPair(time, 0));
   // Get and store data
   RealType ke = 0;
   RealType **v = Base::simData->V();
   RealType *im = Base::simData->Im();
   int size = Base::simData->size();
   for (int n=0; n<size; ++n) {
     int type = Base::simData->Type(n);
     if (-1<type && type<ntypes && im[n]>0)
       keData[type].rbegin()->second += sqr(v[n], sim_dimensions)/im[n];
   }
   // Multiply by 1/2
   for (int ty=0; ty<ntypes; ++ty) {
     keData[ty].rbegin()->second *= 0.5;
     if (useAve) keData[ty].rbegin()->second /= Base::simData->number();
   }
 }