Merge pull request #53589 from Calinou/timer-low-wait-time-add-warning
This commit is contained in:
commit
ab5e7d1b86
3 changed files with 15 additions and 1 deletions
|
@ -51,7 +51,8 @@
|
||||||
[b]Note:[/b] You cannot set this value. To change the timer's remaining time, use [method start].
|
[b]Note:[/b] You cannot set this value. To change the timer's remaining time, use [method start].
|
||||||
</member>
|
</member>
|
||||||
<member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time" default="1.0">
|
<member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time" default="1.0">
|
||||||
Wait time in seconds.
|
The wait time in seconds.
|
||||||
|
[b]Note:[/b] Timers can only emit once per rendered frame at most (or once per physics frame if [member process_callback] is [constant TIMER_PROCESS_PHYSICS). This means very low wait times (lower than 0.05 seconds) will behave in significantly different ways depending on the rendered framerate. For very low wait times, it is recommended to use a process loop in a script instead of using a Timer node.
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
<signals>
|
<signals>
|
||||||
|
|
|
@ -82,6 +82,7 @@ void Timer::_notification(int p_what) {
|
||||||
void Timer::set_wait_time(double p_time) {
|
void Timer::set_wait_time(double p_time) {
|
||||||
ERR_FAIL_COND_MSG(p_time <= 0, "Time should be greater than zero.");
|
ERR_FAIL_COND_MSG(p_time <= 0, "Time should be greater than zero.");
|
||||||
wait_time = p_time;
|
wait_time = p_time;
|
||||||
|
update_configuration_warnings();
|
||||||
}
|
}
|
||||||
|
|
||||||
double Timer::get_wait_time() const {
|
double Timer::get_wait_time() const {
|
||||||
|
@ -179,6 +180,16 @@ void Timer::_set_process(bool p_process, bool p_force) {
|
||||||
processing = p_process;
|
processing = p_process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TypedArray<String> Timer::get_configuration_warnings() const {
|
||||||
|
TypedArray<String> warnings = Node::get_configuration_warnings();
|
||||||
|
|
||||||
|
if (wait_time < 0.05 - CMP_EPSILON) {
|
||||||
|
warnings.push_back(TTR("Very low timer wait times (< 0.05 seconds) may behave in significantly different ways depending on the rendered or physics frame rate.\nConsider using a script's process loop instead of relying on a Timer for very low wait times."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return warnings;
|
||||||
|
}
|
||||||
|
|
||||||
void Timer::_bind_methods() {
|
void Timer::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("set_wait_time", "time_sec"), &Timer::set_wait_time);
|
ClassDB::bind_method(D_METHOD("set_wait_time", "time_sec"), &Timer::set_wait_time);
|
||||||
ClassDB::bind_method(D_METHOD("get_wait_time"), &Timer::get_wait_time);
|
ClassDB::bind_method(D_METHOD("get_wait_time"), &Timer::get_wait_time);
|
||||||
|
|
|
@ -73,6 +73,8 @@ public:
|
||||||
|
|
||||||
double get_time_left() const;
|
double get_time_left() const;
|
||||||
|
|
||||||
|
TypedArray<String> get_configuration_warnings() const override;
|
||||||
|
|
||||||
void set_timer_process_callback(TimerProcessCallback p_callback);
|
void set_timer_process_callback(TimerProcessCallback p_callback);
|
||||||
TimerProcessCallback get_timer_process_callback() const;
|
TimerProcessCallback get_timer_process_callback() const;
|
||||||
Timer();
|
Timer();
|
||||||
|
|
Loading…
Reference in a new issue