summaryrefslogtreecommitdiff
path: root/scene/main
diff options
context:
space:
mode:
Diffstat (limited to 'scene/main')
-rw-r--r--scene/main/scene_main_loop.cpp2
-rwxr-xr-x[-rw-r--r--]scene/main/timer.cpp26
-rwxr-xr-x[-rw-r--r--]scene/main/timer.h9
3 files changed, 23 insertions, 14 deletions
diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp
index e766d1c149..79ee4a6f75 100644
--- a/scene/main/scene_main_loop.cpp
+++ b/scene/main/scene_main_loop.cpp
@@ -573,7 +573,7 @@ bool SceneTree::idle(float p_time) {
}
_flush_ugc();
- _flush_transform_notifications(); //transforms after world update, to avoid unnecesary enter/exit notifications
+ _flush_transform_notifications(); //transforms after world update, to avoid unnecessary enter/exit notifications
call_group_flags(GROUP_CALL_REALTIME, "_viewports", "update_worlds");
root_lock--;
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index 5df30e5080..2263e82312 100644..100755
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -116,16 +116,20 @@ void Timer::stop() {
autostart = false;
}
-void Timer::set_active(bool p_active) {
- if (active == p_active)
+void Timer::set_paused(bool p_paused) {
+ if (paused == p_paused)
return;
- active = p_active;
+ paused = p_paused;
_set_process(processing);
}
-bool Timer::is_active() const {
- return active;
+bool Timer::is_paused() const {
+ return paused;
+}
+
+bool Timer::is_stopped() const {
+ return get_time_left() <= 0;
}
float Timer::get_time_left() const {
@@ -162,8 +166,8 @@ Timer::TimerProcessMode Timer::get_timer_process_mode() const {
void Timer::_set_process(bool p_process, bool p_force) {
switch (timer_process_mode) {
- case TIMER_PROCESS_FIXED: set_fixed_process_internal(p_process && active); break;
- case TIMER_PROCESS_IDLE: set_process_internal(p_process && active); break;
+ case TIMER_PROCESS_FIXED: set_fixed_process_internal(p_process && !paused); break;
+ case TIMER_PROCESS_IDLE: set_process_internal(p_process && !paused); break;
}
processing = p_process;
}
@@ -182,8 +186,10 @@ void Timer::_bind_methods() {
ClassDB::bind_method(D_METHOD("start"), &Timer::start);
ClassDB::bind_method(D_METHOD("stop"), &Timer::stop);
- ClassDB::bind_method(D_METHOD("set_active", "active"), &Timer::set_active);
- ClassDB::bind_method(D_METHOD("is_active"), &Timer::is_active);
+ ClassDB::bind_method(D_METHOD("set_paused", "paused"), &Timer::set_paused);
+ ClassDB::bind_method(D_METHOD("is_paused"), &Timer::is_paused);
+
+ ClassDB::bind_method(D_METHOD("is_stopped"), &Timer::is_stopped);
ClassDB::bind_method(D_METHOD("get_time_left"), &Timer::get_time_left);
@@ -208,5 +214,5 @@ Timer::Timer() {
one_shot = false;
time_left = -1;
processing = false;
- active = true;
+ paused = false;
}
diff --git a/scene/main/timer.h b/scene/main/timer.h
index 756b779717..53a2ddb2bd 100644..100755
--- a/scene/main/timer.h
+++ b/scene/main/timer.h
@@ -39,7 +39,7 @@ class Timer : public Node {
bool one_shot;
bool autostart;
bool processing;
- bool active;
+ bool paused;
double time_left;
@@ -64,8 +64,11 @@ public:
void start();
void stop();
- void set_active(bool p_active);
- bool is_active() const;
+
+ void set_paused(bool p_paused);
+ bool is_paused() const;
+
+ bool is_stopped() const;
float get_time_left() const;