/** * Resets the simulation to the initial conditions. * This especially involves the PhysicalSimulationAlgorithm and updating * the CollisionManager. * * @return true if successful. */ bool PhysicsManager::resetSimulation() { TRACE("PhysicsManager::resetSimulation"); if(mDisablePhysics->get()) { //keep simulation time //reset current time mCurrentRealTime->set(0.0); return true; } bool measurePerformance = Core::getInstance()->isPerformanceMeasuringEnabled(); QTime time; if(measurePerformance) { time.start(); } bool resetOk = true; if(mPhysicalSimulationAlgorithm == 0) { Core::log("PhyiscsManager: PhysicalSimulationAlgorithm is NULL."); return false; } QMutexLocker resetMutexLocker(&mResetMutex); clearPhysics(); mResetSettingsEvent->trigger(); mResetSettingsTerminatedEvent->trigger(); mPhysicalSimulationAlgorithm->resetPhysics(); for(int i = 0; i < mSimObjects.size(); i++) { mSimObjects.at(i)->setup(); } if(mPhysicalSimulationAlgorithm->finalizeSetup() == false) { Core::log("PhysicsManager: Problems finalizing setup in physical" " simulation algorithm."); resetOk = false; } Physics::getCollisionManager()->updateCollisionModel(); if(resetOk) { mInitialResetDone = true; } if(measurePerformance) { mResetDuration->set(time.elapsed()); mCurrentRealTime->set(0.0); } mCurrentSimulationTime->set(0.0); mStopwatch.start(); return resetOk; }
Map::~Map () { Commands.removeCommand(CMD_MAP_DEBUG); Commands.removeCommand(CMD_MAP_PAUSE); Commands.removeCommand(CMD_MAP_RESTART); Commands.removeCommand(CMD_KILL); Commands.removeCommand(CMD_FINISHMAP); clearPhysics(); }
int calc_schizo( Uint32 steps ) { //Finish? if ( spGetInput()->button[SP_BUTTON_START] ) return 1; //Ingame controls if (do_control_stuff()) //result is non zero => level change levelFade = -FADE_TIME; if ( levelFade > 0 ) //Fade in { levelFade -= steps; if (levelFade < 0) levelFade = 0; else return 0; } if ( levelFade < 0 ) //Fade out { levelFade += steps; if (levelFade > 0) { levelFade = FADE_TIME; clearPhysics(); deleteLevel((*levelPointer)); (*levelPointer) = loadLevel(get_saved_level()); createPhysicsFromLevel((*levelPointer)); } else return 0; } //Physics int i; for (i = 0; i < steps; i++) doPhysics(*levelPointer); //Visualization stuff rotation+=steps*16; updateLevelObjects(); updateLevelSprites((*levelPointer),steps); calcCamera((*levelPointer),steps); return 0; }
void Map::resetCurrentMap () { _timeManager.reset(); if (!_name.empty()) { GameEvent.closeMap(); info(LOG_MAP, "reset map: " + _name); } _pointCount = 0; _traceCount = 0; _gamePoints = 0; _finishPoints = 0; _referenceTime = 0; _warmupPhase = 0; _restartDue = 0; _pause = false; _transferedPackages = 0; _transferedPackageLimit = 0; _nextFriendlyNPCSpawn = 0; _spawnFlyingNPCTime = 0; _activateflyingNPC = false; _spawnFishNPCTime = 0; _initialGeyserDelay = 0; _activateFishNPC = false; _mapRunning = false; _wind = 0.0f; _width = 0; _height = 0; _gravity = 0.0f; _time = 0; _physicsTime = 0; _waterHeight = 0.0f; _waterChangeSpeed = 0.0f; _waterRisingDelay = 0; _waterFallingDelay = 0; _allPlayers = 0; _entityRemovalAllowed = true; clearPhysics(); if (!_name.empty()) info(LOG_MAP, "done with resetting: " + _name); _name.clear(); }
int main( int argc, char **argv ) { //sparrow3D Init spInitCore(); //spSetDefaultWindowSize(800,480); //Setup #if (defined ZOOMUP || defined ZOOMDOWN) && !(defined ZOOMUP && defined ZOOMDOWN) real_screen = spCreateDefaultWindow(); resize( real_screen->w, real_screen->h ); #else screen = spCreateDefaultWindow(); resize( screen->w, screen->h ); #endif //Setting the first level levelPointer = getLevelOverPointer(); if (argc < 2) sprintf(get_saved_level(),"./level/tile_test.tmx"); else sprintf(get_saved_level(),"%s",argv[1]); levelFade = FADE_TIME; (*levelPointer) = loadLevel(get_saved_level()); createPhysicsFromLevel((*levelPointer)); //All glory the main loop spLoop( draw_schizo, calc_schizo, 10, resize, NULL ); //Winter Wrap up, Winter Wrap up … clearPhysics(); deleteLevel((*levelPointer)); spFontDelete( font ); spDeleteSurface(screen); spQuitCore(); return 0; }