<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisibilityEnabler2D" inherits="VisibilityNotifier2D" version="3.3">
	<brief_description>
		Enables certain nodes only when approximately visible.
	</brief_description>
	<description>
		The VisibilityEnabler2D will disable [RigidBody2D], [AnimationPlayer], and other nodes when they are not visible. It will only affect nodes with the same root node as the VisibilityEnabler2D, and the root node itself.
		If you just want to receive notifications, use [VisibilityNotifier2D] instead.
		[b]Note:[/b] For performance reasons, VisibilityEnabler2D uses an approximate heuristic with precision determined by [member ProjectSettings.world/2d/cell_size]. If you need precise visibility checking, use another method such as adding an [Area2D] node as a child of a [Camera2D] node.
		[b]Note:[/b] VisibilityEnabler2D will not affect nodes added after scene initialization.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="is_enabler_enabled" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="enabler" type="int" enum="VisibilityEnabler2D.Enabler">
			</argument>
			<description>
				Returns whether the enabler identified by given [enum Enabler] constant is active.
			</description>
		</method>
		<method name="set_enabler">
			<return type="void">
			</return>
			<argument index="0" name="enabler" type="int" enum="VisibilityEnabler2D.Enabler">
			</argument>
			<argument index="1" name="enabled" type="bool">
			</argument>
			<description>
				Sets active state of the enabler identified by given [enum Enabler] constant.
			</description>
		</method>
	</methods>
	<members>
		<member name="freeze_bodies" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="true">
			If [code]true[/code], [RigidBody2D] nodes will be paused.
		</member>
		<member name="pause_animated_sprites" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="true">
			If [code]true[/code], [AnimatedSprite] nodes will be paused.
		</member>
		<member name="pause_animations" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="true">
			If [code]true[/code], [AnimationPlayer] nodes will be paused.
		</member>
		<member name="pause_particles" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="true">
			If [code]true[/code], [Particles2D] nodes will be paused.
		</member>
		<member name="physics_process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="false">
			If [code]true[/code], the parent's [method Node._physics_process] will be stopped.
		</member>
		<member name="process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="false">
			If [code]true[/code], the parent's [method Node._process] will be stopped.
		</member>
	</members>
	<constants>
		<constant name="ENABLER_PAUSE_ANIMATIONS" value="0" enum="Enabler">
			This enabler will pause [AnimationPlayer] nodes.
		</constant>
		<constant name="ENABLER_FREEZE_BODIES" value="1" enum="Enabler">
			This enabler will freeze [RigidBody2D] nodes.
		</constant>
		<constant name="ENABLER_PAUSE_PARTICLES" value="2" enum="Enabler">
			This enabler will stop [Particles2D] nodes.
		</constant>
		<constant name="ENABLER_PARENT_PROCESS" value="3" enum="Enabler">
			This enabler will stop the parent's _process function.
		</constant>
		<constant name="ENABLER_PARENT_PHYSICS_PROCESS" value="4" enum="Enabler">
			This enabler will stop the parent's _physics_process function.
		</constant>
		<constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5" enum="Enabler">
			This enabler will stop [AnimatedSprite] nodes animations.
		</constant>
		<constant name="ENABLER_MAX" value="6" enum="Enabler">
			Represents the size of the [enum Enabler] enum.
		</constant>
	</constants>
</class>
