X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fscripting%2Ftime_scheduler.cpp;h=836c1840352fe003b0f2c491526dba55be94b214;hb=59d76147a1b09fca2d2b4a1780ab47509c1e47ff;hp=41a4d6f4bac577bfd2ebddb3b46840f4ec2153b2;hpb=dd793c93ac07637402de084f20c0e17d57fb069e;p=supertux.git diff --git a/src/scripting/time_scheduler.cpp b/src/scripting/time_scheduler.cpp index 41a4d6f4b..836c18403 100644 --- a/src/scripting/time_scheduler.cpp +++ b/src/scripting/time_scheduler.cpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux // Copyright (C) 2006 Matthias Braun // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,24 +12,21 @@ // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA. -#include +// along with this program. If not, see . #include -#include "time_scheduler.hpp" -#include "squirrel_util.hpp" -#include "squirrel_error.hpp" -#include "log.hpp" +#include "scripting/scripting.hpp" +#include "scripting/squirrel_util.hpp" +#include "scripting/time_scheduler.hpp" +#include "util/log.hpp" -namespace Scripting -{ +namespace scripting { TimeScheduler* TimeScheduler::instance = NULL; -TimeScheduler::TimeScheduler() : paused(false), last_update(0), internal_time(0) +TimeScheduler::TimeScheduler() : + schedule() { } @@ -42,10 +37,7 @@ TimeScheduler::~TimeScheduler() void TimeScheduler::update(float time) { - if (!paused) internal_time+=(time - last_update); - last_update = time; - - while(!schedule.empty() && schedule.front().wakeup_time < internal_time) { + while(!schedule.empty() && schedule.front().wakeup_time < time) { HSQOBJECT thread_ref = schedule.front().thread_ref; sq_pushobject(global_vm, thread_ref); @@ -53,17 +45,17 @@ TimeScheduler::update(float time) HSQUIRRELVM scheduled_vm; if(sq_gettype(global_vm, -1) == OT_THREAD && - SQ_SUCCEEDED(sq_getthread(global_vm, -1, &scheduled_vm))) { - if(SQ_FAILED(sq_wakeupvm(scheduled_vm, SQFalse, SQFalse, SQTrue))) { + SQ_SUCCEEDED(sq_getthread(global_vm, -1, &scheduled_vm))) { + if(SQ_FAILED(sq_wakeupvm(scheduled_vm, SQFalse, SQFalse, SQTrue, SQFalse))) { std::ostringstream msg; - msg << "Couldn't wakeup scheduled squirrel VM: "; + msg << "Error waking VM: "; sq_getlasterror(scheduled_vm); if(sq_gettype(scheduled_vm, -1) != OT_STRING) { - msg << "(no info)"; + msg << "(no info)"; } else { - const char* lasterr; - sq_getstring(scheduled_vm, -1, &lasterr); - msg << lasterr; + const char* lasterr; + sq_getstring(scheduled_vm, -1, &lasterr); + msg << lasterr; } log_warning << msg.str() << std::endl; sq_pop(scheduled_vm, 1); @@ -91,7 +83,7 @@ TimeScheduler::schedule_thread(HSQUIRRELVM scheduled_vm, float time) sq_pop(global_vm, 2); throw SquirrelError(global_vm, "Couldn't get thread weakref from vm"); } - entry.wakeup_time = time - (last_update - internal_time); + entry.wakeup_time = time; sq_addref(global_vm, & entry.thread_ref); sq_pop(global_vm, 2); @@ -100,10 +92,6 @@ TimeScheduler::schedule_thread(HSQUIRRELVM scheduled_vm, float time) std::push_heap(schedule.begin(), schedule.end()); } -void -TimeScheduler::set_pause(bool paused) -{ - this->paused = paused; } -} +/* EOF */