<?xml version="1.0" encoding="UTF-8" ?>
<class name="Timer" inherits="Node" version="3.3">
	<brief_description>
		A countdown timer.
	</brief_description>
	<description>
		Counts down a specified interval and emits a signal on reaching 0. Can be set to repeat or "one-shot" mode.
		[b]Note:[/b] To create a one-shot timer without instantiating a node, use [method SceneTree.create_timer].
	</description>
	<tutorials>
		<link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
	</tutorials>
	<methods>
		<method name="is_stopped" qualifiers="const">
			<return type="bool" />
			<description>
				Returns [code]true[/code] if the timer is stopped.
			</description>
		</method>
		<method name="start">
			<return type="void" />
			<argument index="0" name="time_sec" type="float" default="-1" />
			<description>
				Starts the timer. Sets [code]wait_time[/code] to [code]time_sec[/code] if [code]time_sec &gt; 0[/code]. This also resets the remaining time to [code]wait_time[/code].
				[b]Note:[/b] this method will not resume a paused timer. See [member paused].
			</description>
		</method>
		<method name="stop">
			<return type="void" />
			<description>
				Stops the timer.
			</description>
		</method>
	</methods>
	<members>
		<member name="autostart" type="bool" setter="set_autostart" getter="has_autostart" default="false">
			If [code]true[/code], the timer will automatically start when entering the scene tree.
			[b]Note:[/b] This property is automatically set to [code]false[/code] after the timer enters the scene tree and starts.
		</member>
		<member name="one_shot" type="bool" setter="set_one_shot" getter="is_one_shot" default="false">
			If [code]true[/code], the timer will stop when reaching 0. If [code]false[/code], it will restart.
		</member>
		<member name="paused" type="bool" setter="set_paused" getter="is_paused">
			If [code]true[/code], the timer is paused and will not process until it is unpaused again, even if [method start] is called.
		</member>
		<member name="process_mode" type="int" setter="set_timer_process_mode" getter="get_timer_process_mode" enum="Timer.TimerProcessMode" default="1">
			Processing mode. See [enum TimerProcessMode].
		</member>
		<member name="time_left" type="float" setter="" getter="get_time_left">
			The timer's remaining time in seconds. Returns 0 if the timer is inactive.
			[b]Note:[/b] You cannot set this value. To change the timer's remaining time, use [method start].
		</member>
		<member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time" default="1.0">
			Wait time in seconds.
		</member>
	</members>
	<signals>
		<signal name="timeout">
			<description>
				Emitted when the timer reaches 0.
			</description>
		</signal>
	</signals>
	<constants>
		<constant name="TIMER_PROCESS_PHYSICS" value="0" enum="TimerProcessMode">
			Update the timer during the physics step at each frame (fixed framerate processing).
		</constant>
		<constant name="TIMER_PROCESS_IDLE" value="1" enum="TimerProcessMode">
			Update the timer during the idle time at each frame.
		</constant>
	</constants>
</class>
