Add support for controlling physics nodes' behavior when disabled
New property disable_mode to set different behaviors: Remove: remove from physics simulation MakeStatic: change body mode to static (doesn't affect area and soft body) KeepActive: do nothing Extra change: Handle disable/enable node state with specific notifications, in order to differentiate global pause from disabled nodes.
This commit is contained in:
parent
92f20fd70e
commit
5cbdc7a0ac
16 changed files with 638 additions and 198 deletions
|
|
@ -266,6 +266,9 @@
|
|||
The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].
|
||||
[b]Note:[/b] A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
|
||||
</member>
|
||||
<member name="disable_mode" type="int" setter="set_disable_mode" getter="get_disable_mode" enum="CollisionObject2D.DisableMode" default="0">
|
||||
Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes.
|
||||
</member>
|
||||
<member name="input_pickable" type="bool" setter="set_pickable" getter="is_pickable" default="true">
|
||||
If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events. Requires at least one [code]collision_layer[/code] bit to be set.
|
||||
</member>
|
||||
|
|
@ -294,5 +297,16 @@
|
|||
</signal>
|
||||
</signals>
|
||||
<constants>
|
||||
<constant name="DISABLE_MODE_REMOVE" value="0" enum="DisableMode">
|
||||
When [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED], remove from the physics simulation to stop all physics interactions with this [CollisionObject2D].
|
||||
Automatically re-added to the physics simulation when the [Node] is processed again.
|
||||
</constant>
|
||||
<constant name="DISABLE_MODE_MAKE_STATIC" value="1" enum="DisableMode">
|
||||
When [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED], make the body static. Doesn't affect [Area2D]. [PhysicsBody2D] can't be affected by forces or other bodies while static.
|
||||
Automatically set [PhysicsBody2D] back to its original mode when the [Node] is processed again.
|
||||
</constant>
|
||||
<constant name="DISABLE_MODE_KEEP_ACTIVE" value="2" enum="DisableMode">
|
||||
When [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED], do not affect the physics simulation.
|
||||
</constant>
|
||||
</constants>
|
||||
</class>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue