示例#1
0
void CellularAutomata::onSimulation(double currentSampleCount, double sampleDelta) {
    SimTime deltaTime = float(sampleDelta) / m_sampleRate;
    m_displayInterpolationFactor = slew(m_displayInterpolationFactor, m_displayMode, deltaTime, 0.8f);
    if (m_paused) {
        m_currentTime = floor(m_currentTime / stepTime())*stepTime();
        return;
    }
    int oldBeatNum = beatNum();
    m_currentTime += deltaTime;
    int newBeatNum = beatNum();
    if (newBeatNum != oldBeatNum) {
        step();
    }
    for (const HeadWallCollision& c : m_wallCollisions) {
        int index = isVert(c.d) ? c.pos.x : c.pos.y;
        Synthesizer::global->queueSound(m_soundBank[index]);
    }
}
示例#2
0
void Map::update (uint32_t deltaTime)
{
	_pointCount = 0;

	if (_pause)
		return;

	_timeManager.update(deltaTime);

	if (_restartDue > 0 && _restartDue <= _time) {
		const std::string currentName = getName();
		info(LOG_MAP, "restarting map " + currentName);
		if (isFailed()) {
			const Map::PlayerList& players = getPlayers();
			for (Map::PlayerListConstIter i = players.begin(); i != players.end(); ++i) {
				const Player* p = *i;
				GameEvent.failedMap(p->getClientId(), currentName, getFailReason(p), getTheme());
			}
			System.track("mapstate", "failed:" + currentName);
		} else {
			load(currentName);
		}
		return;
	}

	if (_world) {
		_time += deltaTime;
		while (_time - _physicsTime >= Constant::DELTA_PHYSICS_MILLIS) {
			_physicsTime += Constant::DELTA_PHYSICS_MILLIS;
			{
				ExecutionTime visitTime("VisitTime", 2000L);
				visitEntities(this);
			}

			handleFlyingNPC();
			handleFishNPC();

			if (_time >= _warmupPhase) {
				_entityRemovalAllowed = false;
				ExecutionTime stepTime("StepTime", 2000L);
				_world->Step(Constant::DELTA_PHYSICS_SECONDS, 8, 3);
				_entityRemovalAllowed = true;
			}
		}

		const int t = _referenceTime - _time / 1000;
		if (t < 0)
			return;

		static int lastT = 0;
		if (lastT != t) {
			GameEvent.sendTimeRemaining(t);
			lastT = t;
		}
	}
}
示例#3
0
void BulletObject::MoveAction::step(float dt) {
    if (done()) return;
    stepTime(dt);
    const float a = fracElapsed();

    // linear interpolation of pos
    btVector3 newpos = (1-a)*start.getOrigin() + a*end.getOrigin();
    btQuaternion newrot = start.getRotation().slerp(end.getRotation(), a);
    btTransform newtrans(newrot, newpos);
    obj->motionState->setWorldTransform(newtrans);
}
示例#4
0
int main()
{
  uint32 i;
  SM_guardTest_Handle      sMachine;
  GuardTest_IfaceHandle*   interfaceHandle=0;

  uint32                   statesCount[st_GuardTest_MAX];

  SimElement*          simListe = NULL;
  ResElement*          resListe = NULL;

  /* create some triggers */

  /* Loop 1: trigger1 is set and value is correct */
  addSimElementVar(&simListe, 100, gValue, 3);
  addSimElementVar(&simListe, 100, out, 0);
  addSimElementTrig(&simListe, 100, trigger1);

  /* back */
  addSimElementTrig(&simListe, 200, trigger4);

  addResElementVar(&resListe, 100, startState, 0);
  addResElementVar(&resListe, 100, state1, 1);
  addResElementVar(&resListe, 100, state2, 0);
  addResElementVar(&resListe, 100, state3, 0);
  addResElementVar(&resListe, 100, state4, 0);
  addResElementVar(&resListe, 100, state5, 0);
  addResElementVar(&resListe, 100, state6, 0);
  addResElementVar(&resListe, 100, out, 0);



  /* Loop 2: trigger1 is set value is 1 */
  addSimElementVar(&simListe, 300, gValue, 5);
  addSimElementVar(&simListe, 300, out, 0);
  addSimElementTrig(&simListe, 300, trigger1);

  /* back */
  addSimElementTrig(&simListe, 400, trigger4);

  addResElementVar(&resListe, 300, startState, 0);
  addResElementVar(&resListe, 300, state1, 0);
  addResElementVar(&resListe, 300, state2, 1);
  addResElementVar(&resListe, 300, state3, 0);
  addResElementVar(&resListe, 300, state4, 0);
  addResElementVar(&resListe, 300, state5, 0);
  addResElementVar(&resListe, 300, state6, 0);
  addResElementVar(&resListe, 300, out, 0);



  /* Loop 3: trigger1 is set, value is 1 */
  addSimElementVar(&simListe, 500, gValue, 1);
  addSimElementVar(&simListe, 500, out, 0);
  addSimElementTrig(&simListe, 500, trigger2);

  /* back */
  addSimElementTrig(&simListe, 600, trigger4);

  addResElementVar(&resListe, 500, startState, 0);
  addResElementVar(&resListe, 500, state1, 0);
  addResElementVar(&resListe, 500, state2, 0);
  addResElementVar(&resListe, 500, state3, 1);
  addResElementVar(&resListe, 500, state4, 0);
  addResElementVar(&resListe, 500, state5, 0);
  addResElementVar(&resListe, 500, state6, 0);
  addResElementVar(&resListe, 500, out, 4);


  /* Loop 4: trigger1 is set and value is correct */
  addSimElementVar(&simListe, 700, gValue, 3);
  addSimElementVar(&simListe, 700, out, 0);
  addSimElementTrig(&simListe, 700, trigger2);

  /* back */
  addSimElementTrig(&simListe, 800, trigger4);

  addResElementVar(&resListe, 700, startState, 0);
  addResElementVar(&resListe, 700, state1, 1);
  addResElementVar(&resListe, 700, state2, 0);
  addResElementVar(&resListe, 700, state3, 0);
  addResElementVar(&resListe, 700, state4, 0);
  addResElementVar(&resListe, 700, state5, 0);
  addResElementVar(&resListe, 700, state6, 0);
  addResElementVar(&resListe, 700, out, 1);



  /* Loop 5: trigger1 is set value is 1 */
  addSimElementVar(&simListe, 900, gValue, 5);
  addSimElementVar(&simListe, 900, out, 0);
  addSimElementTrig(&simListe, 900, trigger2);

  /* back */
  addSimElementTrig(&simListe, 1000, trigger4);

  addResElementVar(&resListe, 900, startState, 0);
  addResElementVar(&resListe, 900, state1, 0);
  addResElementVar(&resListe, 900, state2, 1);
  addResElementVar(&resListe, 900, state3, 0);
  addResElementVar(&resListe, 900, state4, 0);
  addResElementVar(&resListe, 900, state5, 0);
  addResElementVar(&resListe, 900, state6, 0);
  addResElementVar(&resListe, 900, out, 2);



  /* Loop 6: trigger1 is set, value is 1 */
  addSimElementVar(&simListe, 1100, gValue, 2);
  addSimElementVar(&simListe, 1100, out, 0);
  addSimElementTrig(&simListe, 1100, trigger3);

  /* back */
  addSimElementTrig(&simListe, 1200, trigger4);

  addResElementVar(&resListe, 1100, startState, 0);
  addResElementVar(&resListe, 1100, state1, 0);
  addResElementVar(&resListe, 1100, state2, 0);
  addResElementVar(&resListe, 1100, state3, 1);
  addResElementVar(&resListe, 1100, state4, 0);
  addResElementVar(&resListe, 1100, state5, 0);
  addResElementVar(&resListe, 1100, state6, 0);
  addResElementVar(&resListe, 1100, out, 3);



  /* Loop 7: Test for wrong triggers */
  addSimElementVar(&simListe, 1300, gValue, 0);
  addSimElementVar(&simListe, 1300, out, 0);
  addSimElementTrig(&simListe, 1300, trigger4);

  addResElementVar(&resListe, 1300, startState, 1);
  addResElementVar(&resListe, 1300, state1, 0);
  addResElementVar(&resListe, 1300, state2, 0);
  addResElementVar(&resListe, 1300, state3, 0);
  addResElementVar(&resListe, 1300, state4, 0);
  addResElementVar(&resListe, 1300, state5, 0);
  addResElementVar(&resListe, 1300, state6, 0);
  addResElementVar(&resListe, 1300, out, 0);



  /* Loop 8: Test for wrong triggers */
  addSimElementVar(&simListe, 1400, gValue, 0);
  addSimElementVar(&simListe, 1400, out, 0);
  addSimElementTrig(&simListe, 1400, trigger5);

  addResElementVar(&resListe, 1400, startState, 1);
  addResElementVar(&resListe, 1400, state1, 0);
  addResElementVar(&resListe, 1400, state2, 0);
  addResElementVar(&resListe, 1400, state3, 0);
  addResElementVar(&resListe, 1400, state4, 0);
  addResElementVar(&resListe, 1400, state5, 0);
  addResElementVar(&resListe, 1400, state6, 0);
  addResElementVar(&resListe, 1400, out, 0);


  /* Loop 9: Test for reachability of state4 */
  addSimElementVar(&simListe, 1600, value1, 11);
  addSimElementVar(&simListe, 1600, value2, 3);
  /* addSimElementTrig(&simListe, 1600, trigger1); */
  addSimElementTrig(&simListe, 1800, trigger4);

  addResElementVar(&resListe, 1700, startState, 0);
  addResElementVar(&resListe, 1700, state1, 0);
  addResElementVar(&resListe, 1700, state2, 0);
  addResElementVar(&resListe, 1700, state3, 0);
  addResElementVar(&resListe, 1700, state4, 1);
  addResElementVar(&resListe, 1700, state5, 0);
  addResElementVar(&resListe, 1700, state6, 0);

  /* does the state machine returns back after trigger */
  addResElementVar(&resListe, 1900, startState, 1);
  addResElementVar(&resListe, 1900, state1, 0);
  addResElementVar(&resListe, 1900, state2, 0);
  addResElementVar(&resListe, 1900, state3, 0);
  addResElementVar(&resListe, 1900, state4, 0);
  addResElementVar(&resListe, 1900, state5, 0);
  addResElementVar(&resListe, 1900, state6, 0);



  /* Loop 10: Test for unreachability of state4 */
  addSimElementVar(&simListe, 2000, value1, 10);
  addSimElementVar(&simListe, 2000, value2, 3);

  addResElementVar(&resListe, 2000, startState, 1);
  addResElementVar(&resListe, 2000, state1, 0);
  addResElementVar(&resListe, 2000, state2, 0);
  addResElementVar(&resListe, 2000, state3, 0);
  addResElementVar(&resListe, 2000, state4, 0);
  addResElementVar(&resListe, 2000, state5, 0);
  addResElementVar(&resListe, 2000, state6, 0);



  /* Loop 11: Test for unreachability of state4 */
  addSimElementVar(&simListe, 2100, value1, 11);
  addSimElementVar(&simListe, 2100, value2, 2);

  addResElementVar(&resListe, 2100, startState, 1);
  addResElementVar(&resListe, 2100, state1, 0);
  addResElementVar(&resListe, 2100, state2, 0);
  addResElementVar(&resListe, 2100, state3, 0);
  addResElementVar(&resListe, 2100, state4, 0);
  addResElementVar(&resListe, 2100, state5, 0);
  addResElementVar(&resListe, 2100, state6, 0);




  /* Loop 12: Test Choice first path ( value1 > 100 ) */
  addSimElementVar(&simListe, 2200, value1, 110);
  addSimElementVar(&simListe, 2200, value2, 10);

  addResElementVar(&resListe, 2200, startState, 0);
  addResElementVar(&resListe, 2200, state1, 0);
  addResElementVar(&resListe, 2200, state2, 0);
  addResElementVar(&resListe, 2200, state3, 0);
  addResElementVar(&resListe, 2200, state4, 0);
  addResElementVar(&resListe, 2200, state5, 1);
  addResElementVar(&resListe, 2200, state6, 0);




  /* Loop 13: Test for Junction back to state 1 */
  addSimElementTrig(&simListe, 2300, trigger4);
  addSimElementVar(&simListe, 2300, value2, 0); /* should not met the value again */

  addResElementVar(&resListe, 2300, startState, 1);
  addResElementVar(&resListe, 2300, state1, 0);
  addResElementVar(&resListe, 2300, state2, 0);
  addResElementVar(&resListe, 2300, state3, 0);
  addResElementVar(&resListe, 2300, state4, 0);
  addResElementVar(&resListe, 2300, state5, 0);
  addResElementVar(&resListe, 2300, state6, 0);




  /* Loop 12: Test Choice first path ( value1 < 100 ) */
  addSimElementVar(&simListe, 2400, value1, 80);
  addSimElementVar(&simListe, 2400, value2, 10);

  addResElementVar(&resListe, 2400, startState, 0);
  addResElementVar(&resListe, 2400, state1, 0);
  addResElementVar(&resListe, 2400, state2, 0);
  addResElementVar(&resListe, 2400, state3, 0);
  addResElementVar(&resListe, 2400, state4, 0);
  addResElementVar(&resListe, 2400, state5, 0);
  addResElementVar(&resListe, 2400, state6, 1);




  /* Loop 13: Test for Junction back to state 1 */
  addSimElementTrig(&simListe, 2500, trigger4);
  addSimElementVar(&simListe, 2500, value2, 0); /* should not met the value again */

  addResElementVar(&resListe, 2500, startState, 1);
  addResElementVar(&resListe, 2500, state1, 0);
  addResElementVar(&resListe, 2500, state2, 0);
  addResElementVar(&resListe, 2500, state3, 0);
  addResElementVar(&resListe, 2500, state4, 0);
  addResElementVar(&resListe, 2500, state5, 0);
  addResElementVar(&resListe, 2500, state6, 0);


  /* carries the information, which state has been reached, and how often */
  for(i=0; i<st_GuardTest_MAX; ++i)
	  statesCount[i] = 0;

  guardTest_init(&sMachine, &interfaceHandle);

  guardTest_Iface_cleanTriggers(interfaceHandle);
  guardTest_Iface_cleanVariables(interfaceHandle);


  for(i=0; i<MAX_SIM_CYCLES; ++i) {

	  BOOL        stateMachineFinished = FALSE;

	  installChange(simListe, interfaceHandle,  sys_time());

	  GuardTest_timerIface_trigger(sys_time());

	  while (stateMachineFinished == FALSE) {
 		  stateMachineFinished = guardTest_runCycle(&sMachine);
		  guardTest_Iface_cleanInputTriggers(interfaceHandle);
	  }

	  compareResults(resListe, interfaceHandle, sys_time());

	  guardTest_Iface_cleanTriggers(interfaceHandle);

      statesCount[sMachine.state]++;

#ifdef DEBUG
      printf("\r  %d     ", i);
#endif

/*      printf(" %d ", *stateIDVar); */

      stepTime(10); /* add 10ms for the next cycle */
  }

  printf("\n\nFinished\n\n");

  for(i=0; i<st_GuardTest_MAX; ++i) {
	  printf(" State No. %d   -> %d\n",i, statesCount[i]);
  }

  printStatistics(resListe);

  return(0);
}