Uniformize layer names, script methods and documentation

- Back to 1-based layer names to make it clearer in editor UI
- Layer bit accessors are renamed to layer value and 1-based too
- Uniform errors and documentation in render and physics
- Fix a few remaining collision_layer used in place of collision_mask
This commit is contained in:
PouleyKetchoupp 2021-08-11 16:01:38 -07:00
parent 7188cb6012
commit 989acbbe81
42 changed files with 406 additions and 372 deletions

View file

@ -29,11 +29,11 @@
Gets the camera transform. Subclassed cameras such as [ClippedCamera3D] may provide different transforms than the [Node] transform. Gets the camera transform. Subclassed cameras such as [ClippedCamera3D] may provide different transforms than the [Node] transform.
</description> </description>
</method> </method>
<method name="get_cull_mask_bit" qualifiers="const"> <method name="get_cull_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns [code]true[/code] if the given [code]layer[/code] in the [member cull_mask] is enabled, [code]false[/code] otherwise. Returns whether or not the specified layer of the [member cull_mask] is enabled, given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
<method name="get_frustum" qualifiers="const"> <method name="get_frustum" qualifiers="const">
@ -92,12 +92,12 @@
Returns a 3D position in world space, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking. Returns a 3D position in world space, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
</description> </description>
</method> </method>
<method name="set_cull_mask_bit"> <method name="set_cull_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="enable" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Enables or disables the given [code]layer[/code] in the [member cull_mask]. Based on [code]value[/code], enables or disables the specified layer in the [member cull_mask], given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
<method name="set_frustum"> <method name="set_frustum">

View file

@ -35,12 +35,11 @@
Returns the distance the camera has been offset due to a collision. Returns the distance the camera has been offset due to a collision.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns [code]true[/code] if the specified bit index is on. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
[b]Note:[/b] Bit indices range from 0-19.
</description> </description>
</method> </method>
<method name="remove_exception"> <method name="remove_exception">
@ -57,13 +56,12 @@
Removes a collision exception with the specified [RID]. Removes a collision exception with the specified [RID].
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets the specified bit index to the [code]value[/code]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
[b]Note:[/b] Bit indices range from 0-19.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -25,18 +25,18 @@
Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference. Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference.
</description> </description>
</method> </method>
<method name="get_collision_layer_bit" qualifiers="const"> <method name="get_collision_layer_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether or not the specified [code]bit[/code] of the [member collision_layer] is set. Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether or not the specified [code]bit[/code] of the [member collision_mask] is set. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_rid" qualifiers="const"> <method name="get_rid" qualifiers="const">
@ -79,22 +79,20 @@
Removes the given shape owner. Removes the given shape owner.
</description> </description>
</method> </method>
<method name="set_collision_layer_bit"> <method name="set_collision_layer_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_layer], given a [code]layer_number[/code] between 1 and 32.
If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
</description> </description>
</method> </method>
<method name="shape_find_owner" qualifiers="const"> <method name="shape_find_owner" qualifiers="const">

View file

@ -27,18 +27,18 @@
Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference. Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference.
</description> </description>
</method> </method>
<method name="get_collision_layer_bit" qualifiers="const"> <method name="get_collision_layer_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether or not the specified [code]bit[/code] of the [member collision_layer] is set. Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether or not the specified [code]bit[/code] of the [member collision_mask] is set. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_rid" qualifiers="const"> <method name="get_rid" qualifiers="const">
@ -67,22 +67,20 @@
Removes the given shape owner. Removes the given shape owner.
</description> </description>
</method> </method>
<method name="set_collision_layer_bit"> <method name="set_collision_layer_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_layer], given a [code]layer_number[/code] between 1 and 32.
If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
</description> </description>
</method> </method>
<method name="shape_find_owner" qualifiers="const"> <method name="shape_find_owner" qualifiers="const">

View file

@ -30,11 +30,11 @@
Initializes the navigation mesh by setting the vertices and indices according to a [Mesh]. Initializes the navigation mesh by setting the vertices and indices according to a [Mesh].
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether the specified [code]bit[/code] of the [member geometry/collision_mask] is set. Returns whether or not the specified layer of the [member geometry/collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_polygon"> <method name="get_polygon">
@ -56,13 +56,12 @@
Returns a [PackedVector3Array] containing all the vertices being used to create the polygons. Returns a [PackedVector3Array] containing all the vertices being used to create the polygons.
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the [member geometry/collision_mask]. Based on [code]value[/code], enables or disables the specified layer in the [member geometry/collision_mask], given a [code]layer_number[/code] between 1 and 32.
If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the [member geometry/collision_mask].
</description> </description>
</method> </method>
<method name="set_vertices"> <method name="set_vertices">

View file

@ -7,17 +7,19 @@
<tutorials> <tutorials>
</tutorials> </tutorials>
<methods> <methods>
<method name="get_bake_mask_bit" qualifiers="const"> <method name="get_bake_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns whether or not the specified layer of the [member bake_mask] is enabled, given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
<method name="set_bake_mask_bit"> <method name="set_bake_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="enabled" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Based on [code]value[/code], enables or disables the specified layer in the [member bake_mask], given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -47,7 +47,7 @@
<argument index="0" name="point" type="Vector2" /> <argument index="0" name="point" type="Vector2" />
<argument index="1" name="max_results" type="int" default="32" /> <argument index="1" name="max_results" type="int" default="32" />
<argument index="2" name="exclude" type="Array" default="[]" /> <argument index="2" name="exclude" type="Array" default="[]" />
<argument index="3" name="collision_layer" type="int" default="2147483647" /> <argument index="3" name="collision_mask" type="int" default="2147483647" />
<argument index="4" name="collide_with_bodies" type="bool" default="true" /> <argument index="4" name="collide_with_bodies" type="bool" default="true" />
<argument index="5" name="collide_with_areas" type="bool" default="false" /> <argument index="5" name="collide_with_areas" type="bool" default="false" />
<description> <description>
@ -57,7 +57,7 @@
[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data]. [code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
[code]rid[/code]: The intersecting object's [RID]. [code]rid[/code]: The intersecting object's [RID].
[code]shape[/code]: The shape index of the colliding shape. [code]shape[/code]: The shape index of the colliding shape.
Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively. Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively.
[b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in [code]Segments[/code] build mode are not solid shapes. Therefore, they will not be detected. [b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in [code]Segments[/code] build mode are not solid shapes. Therefore, they will not be detected.
</description> </description>
</method> </method>
@ -67,7 +67,7 @@
<argument index="1" name="canvas_instance_id" type="int" /> <argument index="1" name="canvas_instance_id" type="int" />
<argument index="2" name="max_results" type="int" default="32" /> <argument index="2" name="max_results" type="int" default="32" />
<argument index="3" name="exclude" type="Array" default="[]" /> <argument index="3" name="exclude" type="Array" default="[]" />
<argument index="4" name="collision_layer" type="int" default="2147483647" /> <argument index="4" name="collision_mask" type="int" default="2147483647" />
<argument index="5" name="collide_with_bodies" type="bool" default="true" /> <argument index="5" name="collide_with_bodies" type="bool" default="true" />
<argument index="6" name="collide_with_areas" type="bool" default="false" /> <argument index="6" name="collide_with_areas" type="bool" default="false" />
<description> <description>
@ -78,7 +78,7 @@
<argument index="0" name="from" type="Vector2" /> <argument index="0" name="from" type="Vector2" />
<argument index="1" name="to" type="Vector2" /> <argument index="1" name="to" type="Vector2" />
<argument index="2" name="exclude" type="Array" default="[]" /> <argument index="2" name="exclude" type="Array" default="[]" />
<argument index="3" name="collision_layer" type="int" default="2147483647" /> <argument index="3" name="collision_mask" type="int" default="2147483647" />
<argument index="4" name="collide_with_bodies" type="bool" default="true" /> <argument index="4" name="collide_with_bodies" type="bool" default="true" />
<argument index="5" name="collide_with_areas" type="bool" default="false" /> <argument index="5" name="collide_with_areas" type="bool" default="false" />
<description> <description>
@ -91,7 +91,7 @@
[code]rid[/code]: The intersecting object's [RID]. [code]rid[/code]: The intersecting object's [RID].
[code]shape[/code]: The shape index of the colliding shape. [code]shape[/code]: The shape index of the colliding shape.
If the ray did not intersect anything, then an empty dictionary is returned instead. If the ray did not intersect anything, then an empty dictionary is returned instead.
Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively. Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively.
</description> </description>
</method> </method>
<method name="intersect_shape"> <method name="intersect_shape">

View file

@ -59,7 +59,7 @@
[code]rid[/code]: The intersecting object's [RID]. [code]rid[/code]: The intersecting object's [RID].
[code]shape[/code]: The shape index of the colliding shape. [code]shape[/code]: The shape index of the colliding shape.
If the ray did not intersect anything, then an empty dictionary is returned instead. If the ray did not intersect anything, then an empty dictionary is returned instead.
Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with [PhysicsBody3D]s or [Area3D]s, respectively. Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect, or booleans to determine if the ray should collide with [PhysicsBody3D]s or [Area3D]s, respectively.
</description> </description>
</method> </method>
<method name="intersect_shape"> <method name="intersect_shape">

View file

@ -17,8 +17,8 @@
<member name="collide_with_bodies" type="bool" setter="set_collide_with_bodies" getter="is_collide_with_bodies_enabled" default="true"> <member name="collide_with_bodies" type="bool" setter="set_collide_with_bodies" getter="is_collide_with_bodies_enabled" default="true">
If [code]true[/code], the query will take [PhysicsBody2D]s into account. If [code]true[/code], the query will take [PhysicsBody2D]s into account.
</member> </member>
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="2147483647"> <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="2147483647">
The physics layer(s) the query will take into account (as a bitmask). 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. The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. 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>
<member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]"> <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]">
The list of objects or object [RID]s that will be excluded from collisions. The list of objects or object [RID]s that will be excluded from collisions.

View file

@ -18,7 +18,7 @@
If [code]true[/code], the query will take [PhysicsBody3D]s into account. If [code]true[/code], the query will take [PhysicsBody3D]s into account.
</member> </member>
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="2147483647"> <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="2147483647">
The physics layer(s) the query will take into account (as a bitmask). 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. The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. 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>
<member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]"> <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]">
The list of objects or object [RID]s that will be excluded from collisions. The list of objects or object [RID]s that will be excluded from collisions.

View file

@ -777,9 +777,6 @@
<member name="internationalization/rendering/text_driver" type="String" setter="" getter="" default="&quot;&quot;"> <member name="internationalization/rendering/text_driver" type="String" setter="" getter="" default="&quot;&quot;">
Specifies the [TextServer] to use. If left empty, the default will be used. Specifies the [TextServer] to use. If left empty, the default will be used.
</member> </member>
<member name="layer_names/2d_navigation/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/2d_navigation/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_navigation/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 2D navigation layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -855,6 +852,9 @@
<member name="layer_names/2d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 31. If left empty, the layer will display as "Layer 31". Optional name for the 2D navigation layer 31. If left empty, the layer will display as "Layer 31".
</member> </member>
<member name="layer_names/2d_navigation/layer_32" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 32. If left empty, the layer will display as "Layer 32".
</member>
<member name="layer_names/2d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 4. If left empty, the layer will display as "Layer 4". Optional name for the 2D navigation layer 4. If left empty, the layer will display as "Layer 4".
</member> </member>
@ -873,9 +873,6 @@
<member name="layer_names/2d_navigation/layer_9" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_navigation/layer_9" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 9. If left empty, the layer will display as "Layer 9". Optional name for the 2D navigation layer 9. If left empty, the layer will display as "Layer 9".
</member> </member>
<member name="layer_names/2d_physics/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/2d_physics/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_physics/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 2D physics layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -951,6 +948,9 @@
<member name="layer_names/2d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 31. If left empty, the layer will display as "Layer 31". Optional name for the 2D physics layer 31. If left empty, the layer will display as "Layer 31".
</member> </member>
<member name="layer_names/2d_physics/layer_32" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 32. If left empty, the layer will display as "Layer 32".
</member>
<member name="layer_names/2d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 4. If left empty, the layer will display as "Layer 4". Optional name for the 2D physics layer 4. If left empty, the layer will display as "Layer 4".
</member> </member>
@ -969,9 +969,6 @@
<member name="layer_names/2d_physics/layer_9" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_physics/layer_9" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 9. If left empty, the layer will display as "Layer 9". Optional name for the 2D physics layer 9. If left empty, the layer will display as "Layer 9".
</member> </member>
<member name="layer_names/2d_render/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/2d_render/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_render/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 2D render layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -1008,6 +1005,9 @@
<member name="layer_names/2d_render/layer_2" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_render/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 2. If left empty, the layer will display as "Layer 2". Optional name for the 2D render layer 2. If left empty, the layer will display as "Layer 2".
</member> </member>
<member name="layer_names/2d_render/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 20. If left empty, the layer will display as "Layer 20".
</member>
<member name="layer_names/2d_render/layer_3" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_render/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 3. If left empty, the layer will display as "Layer 3". Optional name for the 2D render layer 3. If left empty, the layer will display as "Layer 3".
</member> </member>
@ -1029,9 +1029,6 @@
<member name="layer_names/2d_render/layer_9" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/2d_render/layer_9" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 9. If left empty, the layer will display as "Layer 9". Optional name for the 2D render layer 9. If left empty, the layer will display as "Layer 9".
</member> </member>
<member name="layer_names/3d_navigation/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/3d_navigation/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_navigation/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 3D navigation layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -1107,6 +1104,9 @@
<member name="layer_names/3d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 31. If left empty, the layer will display as "Layer 31". Optional name for the 3D navigation layer 31. If left empty, the layer will display as "Layer 31".
</member> </member>
<member name="layer_names/3d_navigation/layer_32" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 32. If left empty, the layer will display as "Layer 32".
</member>
<member name="layer_names/3d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 4. If left empty, the layer will display as "Layer 4". Optional name for the 3D navigation layer 4. If left empty, the layer will display as "Layer 4".
</member> </member>
@ -1125,9 +1125,6 @@
<member name="layer_names/3d_navigation/layer_9" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_navigation/layer_9" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 9. If left empty, the layer will display as "Layer 9". Optional name for the 3D navigation layer 9. If left empty, the layer will display as "Layer 9".
</member> </member>
<member name="layer_names/3d_physics/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/3d_physics/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_physics/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 3D physics layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -1203,6 +1200,9 @@
<member name="layer_names/3d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 31. If left empty, the layer will display as "Layer 31". Optional name for the 3D physics layer 31. If left empty, the layer will display as "Layer 31".
</member> </member>
<member name="layer_names/3d_physics/layer_32" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 32. If left empty, the layer will display as "Layer 32".
</member>
<member name="layer_names/3d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 4. If left empty, the layer will display as "Layer 4". Optional name for the 3D physics layer 4. If left empty, the layer will display as "Layer 4".
</member> </member>
@ -1221,9 +1221,6 @@
<member name="layer_names/3d_physics/layer_9" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_physics/layer_9" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 9. If left empty, the layer will display as "Layer 9". Optional name for the 3D physics layer 9. If left empty, the layer will display as "Layer 9".
</member> </member>
<member name="layer_names/3d_render/layer_0" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D render layer 0. If left empty, the layer will display as "Layer 0".
</member>
<member name="layer_names/3d_render/layer_1" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_render/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D render layer 1. If left empty, the layer will display as "Layer 1". Optional name for the 3D render layer 1. If left empty, the layer will display as "Layer 1".
</member> </member>
@ -1260,6 +1257,9 @@
<member name="layer_names/3d_render/layer_2" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_render/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D render layer 2. If left empty, the layer will display as "Layer 2". Optional name for the 3D render layer 2. If left empty, the layer will display as "Layer 2".
</member> </member>
<member name="layer_names/3d_render/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D render layer 20. If left empty, the layer will display as "Layer 20".
</member>
<member name="layer_names/3d_render/layer_3" type="String" setter="" getter="" default="&quot;&quot;"> <member name="layer_names/3d_render/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D render layer 3. If left empty, the layer will display as "Layer 3". Optional name for the 3D render layer 3. If left empty, the layer will display as "Layer 3".
</member> </member>

View file

@ -53,11 +53,11 @@
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]). Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the collision mask. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_normal" qualifiers="const"> <method name="get_collision_normal" qualifiers="const">
@ -93,12 +93,12 @@
Removes a collision exception so the ray does report collisions with the specified [RID]. Removes a collision exception so the ray does report collisions with the specified [RID].
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets or clears individual bits on the collision mask. This makes selecting the areas scanned easier. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -55,12 +55,11 @@
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]). Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns [code]true[/code] if the bit index passed is turned on. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
[b]Note:[/b] Bit indices range from 0-19.
</description> </description>
</method> </method>
<method name="get_collision_normal" qualifiers="const"> <method name="get_collision_normal" qualifiers="const">
@ -96,13 +95,12 @@
Removes a collision exception so the ray does report collisions with the specified [RID]. Removes a collision exception so the ray does report collisions with the specified [RID].
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets the bit index passed to the [code]value[/code] passed. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
[b]Note:[/b] Bit indexes range from 0-19.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -23,18 +23,18 @@
Returns an array of nodes that were added as collision exceptions for this body. Returns an array of nodes that were added as collision exceptions for this body.
</description> </description>
</method> </method>
<method name="get_collision_layer_bit" qualifiers="const"> <method name="get_collision_layer_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the collision mask. Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the collision mask. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_physics_rid" qualifiers="const"> <method name="get_physics_rid" qualifiers="const">
@ -49,20 +49,20 @@
Removes a body from the list of bodies that this body can't collide with. Removes a body from the list of bodies that this body can't collide with.
</description> </description>
</method> </method>
<method name="set_collision_layer_bit"> <method name="set_collision_layer_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets individual bits on the layer mask. Use this if you only need to change one layer's value. Based on [code]value[/code], enables or disables the specified layer in the [member collision_layer], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets individual bits on the collision mask. Use this if you only need to change one layer's value. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -27,11 +27,11 @@
Returns the RID of this instance. This RID is the same as the RID returned by [method RenderingServer.instance_create]. This RID is needed if you want to call [RenderingServer] functions directly on this [VisualInstance3D]. Returns the RID of this instance. This RID is the same as the RID returned by [method RenderingServer.instance_create]. This RID is needed if you want to call [RenderingServer] functions directly on this [VisualInstance3D].
</description> </description>
</method> </method>
<method name="get_layer_mask_bit" qualifiers="const"> <method name="get_layer_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns [code]true[/code] when the specified layer is enabled in [member layers] and [code]false[/code] otherwise. Returns whether or not the specified layer of the [member layers] is enabled, given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
<method name="get_transformed_aabb" qualifiers="const"> <method name="get_transformed_aabb" qualifiers="const">
@ -48,12 +48,12 @@
Sets the resource that is instantiated by this [VisualInstance3D], which changes how the engine handles the [VisualInstance3D] under the hood. Equivalent to [method RenderingServer.instance_set_base]. Sets the resource that is instantiated by this [VisualInstance3D], which changes how the engine handles the [VisualInstance3D] under the hood. Equivalent to [method RenderingServer.instance_set_base].
</description> </description>
</method> </method>
<method name="set_layer_mask_bit"> <method name="set_layer_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="layer" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="enabled" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Enables a particular layer in [member layers]. Based on [code]value[/code], enables or disables the specified layer in the [member layers], given a [code]layer_number[/code] between 1 and 20.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -837,7 +837,7 @@ public:
Vector2 offset; Vector2 offset;
offset.y = rect2.size.y * 0.75; offset.y = rect2.size.y * 0.75;
draw_string(font, rect2.position + offset, itos(layer_index), HALIGN_CENTER, rect2.size.x, -1, on ? text_color_on : text_color); draw_string(font, rect2.position + offset, itos(layer_index + 1), HALIGN_CENTER, rect2.size.x, -1, on ? text_color_on : text_color);
ofs.x += bsize + 1; ofs.x += bsize + 1;
@ -993,12 +993,12 @@ void EditorPropertyLayers::setup(LayerType p_layer_type) {
for (int i = 0; i < layer_count; i++) { for (int i = 0; i < layer_count; i++) {
String name; String name;
if (ProjectSettings::get_singleton()->has_setting(basename + vformat("/layer_%d", i))) { if (ProjectSettings::get_singleton()->has_setting(basename + vformat("/layer_%d", i + 1))) {
name = ProjectSettings::get_singleton()->get(basename + vformat("/layer_%d", i)); name = ProjectSettings::get_singleton()->get(basename + vformat("/layer_%d", i + 1));
} }
if (name == "") { if (name == "") {
name = vformat(TTR("Layer %d"), i); name = vformat(TTR("Layer %d"), i + 1);
} }
names.push_back(name); names.push_back(name);

View file

@ -88,36 +88,40 @@ uint32_t CSGShape3D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void CSGShape3D::set_collision_mask_bit(int p_bit, bool p_value) { void CSGShape3D::set_collision_layer_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t collision_layer = get_collision_layer();
if (p_value) {
collision_layer |= 1 << (p_layer_number - 1);
} else {
collision_layer &= ~(1 << (p_layer_number - 1));
}
set_collision_layer(collision_layer);
}
bool CSGShape3D::get_collision_layer_value(int p_layer_number) const {
ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << (p_layer_number - 1));
}
void CSGShape3D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool CSGShape3D::get_collision_mask_bit(int p_bit) const { bool CSGShape3D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
} return get_collision_mask() & (1 << (p_layer_number - 1));
void CSGShape3D::set_collision_layer_bit(int p_bit, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
uint32_t layer = get_collision_layer();
if (p_value) {
layer |= 1 << p_bit;
} else {
layer &= ~(1 << p_bit);
}
set_collision_layer(layer);
}
bool CSGShape3D::get_collision_layer_bit(int p_bit) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
return get_collision_layer() & (1 << p_bit);
} }
bool CSGShape3D::is_root_shape() const { bool CSGShape3D::is_root_shape() const {
@ -605,11 +609,11 @@ void CSGShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CSGShape3D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CSGShape3D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &CSGShape3D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &CSGShape3D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &CSGShape3D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &CSGShape3D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &CSGShape3D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &CSGShape3D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &CSGShape3D::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("set_collision_layer_value", "layer_number", "value"), &CSGShape3D::set_collision_layer_value);
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &CSGShape3D::get_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_value", "layer_number"), &CSGShape3D::get_collision_layer_value);
ClassDB::bind_method(D_METHOD("set_calculate_tangents", "enabled"), &CSGShape3D::set_calculate_tangents); ClassDB::bind_method(D_METHOD("set_calculate_tangents", "enabled"), &CSGShape3D::set_calculate_tangents);
ClassDB::bind_method(D_METHOD("is_calculating_tangents"), &CSGShape3D::is_calculating_tangents); ClassDB::bind_method(D_METHOD("is_calculating_tangents"), &CSGShape3D::is_calculating_tangents);

View file

@ -136,11 +136,11 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_layer_bit(int p_bit, bool p_value); void set_collision_layer_value(int p_layer_number, bool p_value);
bool get_collision_layer_bit(int p_bit) const; bool get_collision_layer_value(int p_layer_number) const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_snap(float p_snap); void set_snap(float p_snap);
float get_snap() const; float get_snap() const;

View file

@ -9,18 +9,18 @@
<tutorials> <tutorials>
</tutorials> </tutorials>
<methods> <methods>
<method name="get_collision_layer_bit" qualifiers="const"> <method name="get_collision_layer_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the collision mask. Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the collision mask. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_meshes" qualifiers="const"> <method name="get_meshes" qualifiers="const">
@ -35,20 +35,20 @@
Returns [code]true[/code] if this is a root shape and is thus the object that is rendered. Returns [code]true[/code] if this is a root shape and is thus the object that is rendered.
</description> </description>
</method> </method>
<method name="set_collision_layer_bit"> <method name="set_collision_layer_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets individual bits on the layer mask. Use this if you only need to change one layer's value. Based on [code]value[/code], enables or disables the specified layer in the [member collision_layer], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets individual bits on the collision mask. Use this if you only need to change one layer's value. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -53,18 +53,18 @@
The orientation of the cell at the given grid coordinates. [code]-1[/code] is returned if the cell is empty. The orientation of the cell at the given grid coordinates. [code]-1[/code] is returned if the cell is empty.
</description> </description>
</method> </method>
<method name="get_collision_layer_bit" qualifiers="const"> <method name="get_collision_layer_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the [member collision_layer]. Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_collision_mask_bit" qualifiers="const"> <method name="get_collision_mask_value" qualifiers="const">
<return type="bool" /> <return type="bool" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<description> <description>
Returns an individual bit on the [member collision_mask]. Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="get_meshes"> <method name="get_meshes">
@ -119,20 +119,20 @@
<description> <description>
</description> </description>
</method> </method>
<method name="set_collision_layer_bit"> <method name="set_collision_layer_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets an individual bit on the [member collision_layer]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_layer], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="set_collision_mask_bit"> <method name="set_collision_mask_value">
<return type="void" /> <return type="void" />
<argument index="0" name="bit" type="int" /> <argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" /> <argument index="1" name="value" type="bool" />
<description> <description>
Sets an individual bit on the [member collision_mask]. Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description> </description>
</method> </method>
<method name="world_to_map" qualifiers="const"> <method name="world_to_map" qualifiers="const">

View file

@ -151,36 +151,40 @@ uint32_t GridMap::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void GridMap::set_collision_mask_bit(int p_bit, bool p_value) { void GridMap::set_collision_layer_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t collision_layer = get_collision_layer();
if (p_value) {
collision_layer |= 1 << (p_layer_number - 1);
} else {
collision_layer &= ~(1 << (p_layer_number - 1));
}
set_collision_layer(collision_layer);
}
bool GridMap::get_collision_layer_value(int p_layer_number) const {
ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << (p_layer_number - 1));
}
void GridMap::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool GridMap::get_collision_mask_bit(int p_bit) const { bool GridMap::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
} return get_collision_mask() & (1 << (p_layer_number - 1));
void GridMap::set_collision_layer_bit(int p_bit, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
uint32_t layer = get_collision_layer();
if (p_value) {
layer |= 1 << p_bit;
} else {
layer &= ~(1 << p_bit);
}
set_collision_layer(layer);
}
bool GridMap::get_collision_layer_bit(int p_bit) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
return get_collision_layer() & (1 << p_bit);
} }
void GridMap::set_bake_navigation(bool p_bake_navigation) { void GridMap::set_bake_navigation(bool p_bake_navigation) {
@ -794,11 +798,11 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &GridMap::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &GridMap::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &GridMap::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &GridMap::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &GridMap::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &GridMap::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &GridMap::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &GridMap::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &GridMap::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("set_collision_layer_value", "layer_number", "value"), &GridMap::set_collision_layer_value);
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &GridMap::get_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_value", "layer_number"), &GridMap::get_collision_layer_value);
ClassDB::bind_method(D_METHOD("set_bake_navigation", "bake_navigation"), &GridMap::set_bake_navigation); ClassDB::bind_method(D_METHOD("set_bake_navigation", "bake_navigation"), &GridMap::set_bake_navigation);
ClassDB::bind_method(D_METHOD("is_baking_navigation"), &GridMap::is_baking_navigation); ClassDB::bind_method(D_METHOD("is_baking_navigation"), &GridMap::is_baking_navigation);

View file

@ -217,11 +217,11 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_layer_bit(int p_bit, bool p_value); void set_collision_layer_value(int p_layer_number, bool p_value);
bool get_collision_layer_bit(int p_bit) const; bool get_collision_layer_value(int p_layer_number) const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_bake_navigation(bool p_bake_navigation); void set_bake_navigation(bool p_bake_navigation);
bool is_baking_navigation(); bool is_baking_navigation();

View file

@ -147,36 +147,40 @@ uint32_t CollisionObject2D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void CollisionObject2D::set_collision_layer_bit(int p_bit, bool p_value) { void CollisionObject2D::set_collision_layer_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t collision_layer = get_collision_layer(); uint32_t collision_layer = get_collision_layer();
if (p_value) { if (p_value) {
collision_layer |= 1 << p_bit; collision_layer |= 1 << (p_layer_number - 1);
} else { } else {
collision_layer &= ~(1 << p_bit); collision_layer &= ~(1 << (p_layer_number - 1));
} }
set_collision_layer(collision_layer); set_collision_layer(collision_layer);
} }
bool CollisionObject2D::get_collision_layer_bit(int p_bit) const { bool CollisionObject2D::get_collision_layer_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << (p_layer_number - 1));
} }
void CollisionObject2D::set_collision_mask_bit(int p_bit, bool p_value) { void CollisionObject2D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool CollisionObject2D::get_collision_mask_bit(int p_bit) const { bool CollisionObject2D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
void CollisionObject2D::set_disable_mode(DisableMode p_mode) { void CollisionObject2D::set_disable_mode(DisableMode p_mode) {
@ -565,10 +569,10 @@ void CollisionObject2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_collision_layer"), &CollisionObject2D::get_collision_layer); ClassDB::bind_method(D_METHOD("get_collision_layer"), &CollisionObject2D::get_collision_layer);
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CollisionObject2D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CollisionObject2D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &CollisionObject2D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &CollisionObject2D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &CollisionObject2D::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("set_collision_layer_value", "layer_number", "value"), &CollisionObject2D::set_collision_layer_value);
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &CollisionObject2D::get_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_value", "layer_number"), &CollisionObject2D::get_collision_layer_value);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &CollisionObject2D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &CollisionObject2D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &CollisionObject2D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &CollisionObject2D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_disable_mode", "mode"), &CollisionObject2D::set_disable_mode); ClassDB::bind_method(D_METHOD("set_disable_mode", "mode"), &CollisionObject2D::set_disable_mode);
ClassDB::bind_method(D_METHOD("get_disable_mode"), &CollisionObject2D::get_disable_mode); ClassDB::bind_method(D_METHOD("get_disable_mode"), &CollisionObject2D::get_disable_mode);
ClassDB::bind_method(D_METHOD("set_pickable", "enabled"), &CollisionObject2D::set_pickable); ClassDB::bind_method(D_METHOD("set_pickable", "enabled"), &CollisionObject2D::set_pickable);

View file

@ -107,11 +107,11 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_layer_bit(int p_bit, bool p_value); void set_collision_layer_value(int p_layer_number, bool p_value);
bool get_collision_layer_bit(int p_bit) const; bool get_collision_layer_value(int p_layer_number) const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_disable_mode(DisableMode p_mode); void set_disable_mode(DisableMode p_mode);
DisableMode get_disable_mode() const; DisableMode get_disable_mode() const;

View file

@ -54,20 +54,22 @@ uint32_t RayCast2D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void RayCast2D::set_collision_mask_bit(int p_bit, bool p_value) { void RayCast2D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool RayCast2D::get_collision_mask_bit(int p_bit) const { bool RayCast2D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
bool RayCast2D::is_colliding() const { bool RayCast2D::is_colliding() const {
@ -323,8 +325,8 @@ void RayCast2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast2D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast2D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast2D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast2D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &RayCast2D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &RayCast2D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &RayCast2D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &RayCast2D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_exclude_parent_body", "mask"), &RayCast2D::set_exclude_parent_body); ClassDB::bind_method(D_METHOD("set_exclude_parent_body", "mask"), &RayCast2D::set_exclude_parent_body);
ClassDB::bind_method(D_METHOD("get_exclude_parent_body"), &RayCast2D::get_exclude_parent_body); ClassDB::bind_method(D_METHOD("get_exclude_parent_body"), &RayCast2D::get_exclude_parent_body);

View file

@ -74,8 +74,8 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_exclude_parent_body(bool p_exclude_parent_body); void set_exclude_parent_body(bool p_exclude_parent_body);
bool get_exclude_parent_body() const; bool get_exclude_parent_body() const;

View file

@ -499,8 +499,8 @@ void Camera3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_position_in_frustum", "world_point"), &Camera3D::is_position_in_frustum); ClassDB::bind_method(D_METHOD("is_position_in_frustum", "world_point"), &Camera3D::is_position_in_frustum);
ClassDB::bind_method(D_METHOD("get_camera_rid"), &Camera3D::get_camera); ClassDB::bind_method(D_METHOD("get_camera_rid"), &Camera3D::get_camera);
ClassDB::bind_method(D_METHOD("set_cull_mask_bit", "layer", "enable"), &Camera3D::set_cull_mask_bit); ClassDB::bind_method(D_METHOD("set_cull_mask_value", "layer_number", "value"), &Camera3D::set_cull_mask_value);
ClassDB::bind_method(D_METHOD("get_cull_mask_bit", "layer"), &Camera3D::get_cull_mask_bit); ClassDB::bind_method(D_METHOD("get_cull_mask_value", "layer_number"), &Camera3D::get_cull_mask_value);
//ClassDB::bind_method(D_METHOD("_camera_make_current"),&Camera::_camera_make_current ); //ClassDB::bind_method(D_METHOD("_camera_make_current"),&Camera::_camera_make_current );
@ -592,18 +592,22 @@ uint32_t Camera3D::get_cull_mask() const {
return layers; return layers;
} }
void Camera3D::set_cull_mask_bit(int p_layer, bool p_enable) { void Camera3D::set_cull_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX(p_layer, 32); ERR_FAIL_COND_MSG(p_layer_number < 1, "Render layer number must be between 1 and 20 inclusive.");
if (p_enable) { ERR_FAIL_COND_MSG(p_layer_number > 20, "Render layer number must be between 1 and 20 inclusive.");
set_cull_mask(layers | (1 << p_layer)); uint32_t mask = get_cull_mask();
if (p_value) {
mask |= 1 << (p_layer_number - 1);
} else { } else {
set_cull_mask(layers & (~(1 << p_layer))); mask &= ~(1 << (p_layer_number - 1));
} }
set_cull_mask(mask);
} }
bool Camera3D::get_cull_mask_bit(int p_layer) const { bool Camera3D::get_cull_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V(p_layer, 32, false); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Render layer number must be between 1 and 20 inclusive.");
return (layers & (1 << p_layer)); ERR_FAIL_COND_V_MSG(p_layer_number > 20, false, "Render layer number must be between 1 and 20 inclusive.");
return layers & (1 << (p_layer_number - 1));
} }
Vector<Plane> Camera3D::get_frustum() const { Vector<Plane> Camera3D::get_frustum() const {
@ -767,20 +771,22 @@ uint32_t ClippedCamera3D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void ClippedCamera3D::set_collision_mask_bit(int p_bit, bool p_value) { void ClippedCamera3D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool ClippedCamera3D::get_collision_mask_bit(int p_bit) const { bool ClippedCamera3D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
void ClippedCamera3D::add_exception_rid(const RID &p_rid) { void ClippedCamera3D::add_exception_rid(const RID &p_rid) {
@ -843,8 +849,8 @@ void ClippedCamera3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &ClippedCamera3D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &ClippedCamera3D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &ClippedCamera3D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &ClippedCamera3D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &ClippedCamera3D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &ClippedCamera3D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &ClippedCamera3D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &ClippedCamera3D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("add_exception_rid", "rid"), &ClippedCamera3D::add_exception_rid); ClassDB::bind_method(D_METHOD("add_exception_rid", "rid"), &ClippedCamera3D::add_exception_rid);
ClassDB::bind_method(D_METHOD("add_exception", "node"), &ClippedCamera3D::add_exception); ClassDB::bind_method(D_METHOD("add_exception", "node"), &ClippedCamera3D::add_exception);

View file

@ -147,8 +147,8 @@ public:
void set_cull_mask(uint32_t p_layers); void set_cull_mask(uint32_t p_layers);
uint32_t get_cull_mask() const; uint32_t get_cull_mask() const;
void set_cull_mask_bit(int p_layer, bool p_enable); void set_cull_mask_value(int p_layer_number, bool p_enable);
bool get_cull_mask_bit(int p_layer) const; bool get_cull_mask_value(int p_layer_number) const;
virtual Vector<Plane> get_frustum() const; virtual Vector<Plane> get_frustum() const;
bool is_position_in_frustum(const Vector3 &p_position) const; bool is_position_in_frustum(const Vector3 &p_position) const;
@ -224,8 +224,8 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void add_exception_rid(const RID &p_rid); void add_exception_rid(const RID &p_rid);
void add_exception(const Object *p_object); void add_exception(const Object *p_object);

View file

@ -146,36 +146,40 @@ uint32_t CollisionObject3D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void CollisionObject3D::set_collision_layer_bit(int p_bit, bool p_value) { void CollisionObject3D::set_collision_layer_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t collision_layer = get_collision_layer(); uint32_t collision_layer = get_collision_layer();
if (p_value) { if (p_value) {
collision_layer |= 1 << p_bit; collision_layer |= 1 << (p_layer_number - 1);
} else { } else {
collision_layer &= ~(1 << p_bit); collision_layer &= ~(1 << (p_layer_number - 1));
} }
set_collision_layer(collision_layer); set_collision_layer(collision_layer);
} }
bool CollisionObject3D::get_collision_layer_bit(int p_bit) const { bool CollisionObject3D::get_collision_layer_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << (p_layer_number - 1));
} }
void CollisionObject3D::set_collision_mask_bit(int p_bit, bool p_value) { void CollisionObject3D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool CollisionObject3D::get_collision_mask_bit(int p_bit) const { bool CollisionObject3D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
void CollisionObject3D::set_disable_mode(DisableMode p_mode) { void CollisionObject3D::set_disable_mode(DisableMode p_mode) {
@ -423,10 +427,10 @@ void CollisionObject3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_collision_layer"), &CollisionObject3D::get_collision_layer); ClassDB::bind_method(D_METHOD("get_collision_layer"), &CollisionObject3D::get_collision_layer);
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CollisionObject3D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CollisionObject3D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &CollisionObject3D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &CollisionObject3D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &CollisionObject3D::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("set_collision_layer_value", "layer_number", "value"), &CollisionObject3D::set_collision_layer_value);
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &CollisionObject3D::get_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_value", "layer_number"), &CollisionObject3D::get_collision_layer_value);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &CollisionObject3D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &CollisionObject3D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &CollisionObject3D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &CollisionObject3D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_disable_mode", "mode"), &CollisionObject3D::set_disable_mode); ClassDB::bind_method(D_METHOD("set_disable_mode", "mode"), &CollisionObject3D::set_disable_mode);
ClassDB::bind_method(D_METHOD("get_disable_mode"), &CollisionObject3D::get_disable_mode); ClassDB::bind_method(D_METHOD("get_disable_mode"), &CollisionObject3D::get_disable_mode);
ClassDB::bind_method(D_METHOD("set_ray_pickable", "ray_pickable"), &CollisionObject3D::set_ray_pickable); ClassDB::bind_method(D_METHOD("set_ray_pickable", "ray_pickable"), &CollisionObject3D::set_ray_pickable);

View file

@ -119,11 +119,11 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_layer_bit(int p_bit, bool p_value); void set_collision_layer_value(int p_layer_number, bool p_value);
bool get_collision_layer_bit(int p_bit) const; bool get_collision_layer_value(int p_layer_number) const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_disable_mode(DisableMode p_mode); void set_disable_mode(DisableMode p_mode);
DisableMode get_disable_mode() const; DisableMode get_disable_mode() const;

View file

@ -195,18 +195,22 @@ uint32_t OccluderInstance3D::get_bake_mask() const {
return bake_mask; return bake_mask;
} }
void OccluderInstance3D::set_bake_mask_bit(int p_layer, bool p_enable) { void OccluderInstance3D::set_bake_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX(p_layer, 32); ERR_FAIL_COND_MSG(p_layer_number < 1, "Render layer number must be between 1 and 20 inclusive.");
if (p_enable) { ERR_FAIL_COND_MSG(p_layer_number > 20, "Render layer number must be between 1 and 20 inclusive.");
set_bake_mask(bake_mask | (1 << p_layer)); uint32_t mask = get_bake_mask();
if (p_value) {
mask |= 1 << (p_layer_number - 1);
} else { } else {
set_bake_mask(bake_mask & (~(1 << p_layer))); mask &= ~(1 << (p_layer_number - 1));
} }
set_bake_mask(mask);
} }
bool OccluderInstance3D::get_bake_mask_bit(int p_layer) const { bool OccluderInstance3D::get_bake_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V(p_layer, 32, false); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Render layer number must be between 1 and 20 inclusive.");
return (bake_mask & (1 << p_layer)); ERR_FAIL_COND_V_MSG(p_layer_number > 20, false, "Render layer number must be between 1 and 20 inclusive.");
return bake_mask & (1 << (p_layer_number - 1));
} }
bool OccluderInstance3D::_bake_material_check(Ref<Material> p_material) { bool OccluderInstance3D::_bake_material_check(Ref<Material> p_material) {
@ -345,8 +349,8 @@ TypedArray<String> OccluderInstance3D::get_configuration_warnings() const {
void OccluderInstance3D::_bind_methods() { void OccluderInstance3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bake_mask", "mask"), &OccluderInstance3D::set_bake_mask); ClassDB::bind_method(D_METHOD("set_bake_mask", "mask"), &OccluderInstance3D::set_bake_mask);
ClassDB::bind_method(D_METHOD("get_bake_mask"), &OccluderInstance3D::get_bake_mask); ClassDB::bind_method(D_METHOD("get_bake_mask"), &OccluderInstance3D::get_bake_mask);
ClassDB::bind_method(D_METHOD("set_bake_mask_bit", "layer", "enabled"), &OccluderInstance3D::set_bake_mask_bit); ClassDB::bind_method(D_METHOD("set_bake_mask_value", "layer_number", "value"), &OccluderInstance3D::set_bake_mask_value);
ClassDB::bind_method(D_METHOD("get_bake_mask_bit", "layer"), &OccluderInstance3D::get_bake_mask_bit); ClassDB::bind_method(D_METHOD("get_bake_mask_value", "layer_number"), &OccluderInstance3D::get_bake_mask_value);
ClassDB::bind_method(D_METHOD("set_occluder", "occluder"), &OccluderInstance3D::set_occluder); ClassDB::bind_method(D_METHOD("set_occluder", "occluder"), &OccluderInstance3D::set_occluder);
ClassDB::bind_method(D_METHOD("get_occluder"), &OccluderInstance3D::get_occluder); ClassDB::bind_method(D_METHOD("get_occluder"), &OccluderInstance3D::get_occluder);

View file

@ -99,8 +99,9 @@ public:
void set_bake_mask(uint32_t p_mask); void set_bake_mask(uint32_t p_mask);
uint32_t get_bake_mask() const; uint32_t get_bake_mask() const;
void set_bake_mask_bit(int p_layer, bool p_enable); void set_bake_mask_value(int p_layer_number, bool p_enable);
bool get_bake_mask_bit(int p_layer) const; bool get_bake_mask_value(int p_layer_number) const;
BakeError bake(Node *p_from_node, String p_occluder_path = ""); BakeError bake(Node *p_from_node, String p_occluder_path = "");
OccluderInstance3D(); OccluderInstance3D();

View file

@ -60,20 +60,22 @@ uint32_t RayCast3D::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void RayCast3D::set_collision_mask_bit(int p_bit, bool p_value) { void RayCast3D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool RayCast3D::get_collision_mask_bit(int p_bit) const { bool RayCast3D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
bool RayCast3D::is_colliding() const { bool RayCast3D::is_colliding() const {
@ -303,8 +305,8 @@ void RayCast3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast3D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast3D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast3D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast3D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &RayCast3D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &RayCast3D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &RayCast3D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &RayCast3D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_exclude_parent_body", "mask"), &RayCast3D::set_exclude_parent_body); ClassDB::bind_method(D_METHOD("set_exclude_parent_body", "mask"), &RayCast3D::set_exclude_parent_body);
ClassDB::bind_method(D_METHOD("get_exclude_parent_body"), &RayCast3D::get_exclude_parent_body); ClassDB::bind_method(D_METHOD("get_exclude_parent_body"), &RayCast3D::get_exclude_parent_body);

View file

@ -86,8 +86,8 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_exclude_parent_body(bool p_exclude_parent_body); void set_exclude_parent_body(bool p_exclude_parent_body);
bool get_exclude_parent_body() const; bool get_exclude_parent_body() const;

View file

@ -327,11 +327,11 @@ void SoftBody3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_layer", "collision_layer"), &SoftBody3D::set_collision_layer); ClassDB::bind_method(D_METHOD("set_collision_layer", "collision_layer"), &SoftBody3D::set_collision_layer);
ClassDB::bind_method(D_METHOD("get_collision_layer"), &SoftBody3D::get_collision_layer); ClassDB::bind_method(D_METHOD("get_collision_layer"), &SoftBody3D::get_collision_layer);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &SoftBody3D::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &SoftBody3D::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &SoftBody3D::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &SoftBody3D::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &SoftBody3D::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("set_collision_layer_value", "layer_number", "value"), &SoftBody3D::set_collision_layer_value);
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &SoftBody3D::get_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_value", "layer_number"), &SoftBody3D::get_collision_layer_value);
ClassDB::bind_method(D_METHOD("set_parent_collision_ignore", "parent_collision_ignore"), &SoftBody3D::set_parent_collision_ignore); ClassDB::bind_method(D_METHOD("set_parent_collision_ignore", "parent_collision_ignore"), &SoftBody3D::set_parent_collision_ignore);
ClassDB::bind_method(D_METHOD("get_parent_collision_ignore"), &SoftBody3D::get_parent_collision_ignore); ClassDB::bind_method(D_METHOD("get_parent_collision_ignore"), &SoftBody3D::get_parent_collision_ignore);
@ -515,36 +515,40 @@ uint32_t SoftBody3D::get_collision_layer() const {
return collision_layer; return collision_layer;
} }
void SoftBody3D::set_collision_mask_bit(int p_bit, bool p_value) { void SoftBody3D::set_collision_layer_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t collision_layer = get_collision_layer();
if (p_value) {
collision_layer |= 1 << (p_layer_number - 1);
} else {
collision_layer &= ~(1 << (p_layer_number - 1));
}
set_collision_layer(collision_layer);
}
bool SoftBody3D::get_collision_layer_value(int p_layer_number) const {
ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_layer() & (1 << (p_layer_number - 1));
}
void SoftBody3D::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool SoftBody3D::get_collision_mask_bit(int p_bit) const { bool SoftBody3D::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
} return get_collision_mask() & (1 << (p_layer_number - 1));
void SoftBody3D::set_collision_layer_bit(int p_bit, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
uint32_t layer = get_collision_layer();
if (p_value) {
layer |= 1 << p_bit;
} else {
layer &= ~(1 << p_bit);
}
set_collision_layer(layer);
}
bool SoftBody3D::get_collision_layer_bit(int p_bit) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
return get_collision_layer() & (1 << p_bit);
} }
void SoftBody3D::set_disable_mode(DisableMode p_mode) { void SoftBody3D::set_disable_mode(DisableMode p_mode) {

View file

@ -138,11 +138,11 @@ public:
void set_collision_layer(uint32_t p_layer); void set_collision_layer(uint32_t p_layer);
uint32_t get_collision_layer() const; uint32_t get_collision_layer() const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_layer_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_layer_value(int p_layer_number) const;
void set_collision_layer_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_layer_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_disable_mode(DisableMode p_mode); void set_disable_mode(DisableMode p_mode);
DisableMode get_disable_mode() const; DisableMode get_disable_mode() const;

View file

@ -93,18 +93,22 @@ uint32_t VisualInstance3D::get_layer_mask() const {
return layers; return layers;
} }
void VisualInstance3D::set_layer_mask_bit(int p_layer, bool p_enable) { void VisualInstance3D::set_layer_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX(p_layer, 32); ERR_FAIL_COND_MSG(p_layer_number < 1, "Render layer number must be between 1 and 20 inclusive.");
if (p_enable) { ERR_FAIL_COND_MSG(p_layer_number > 20, "Render layer number must be between 1 and 20 inclusive.");
set_layer_mask(layers | (1 << p_layer)); uint32_t mask = get_layer_mask();
if (p_value) {
mask |= 1 << (p_layer_number - 1);
} else { } else {
set_layer_mask(layers & (~(1 << p_layer))); mask &= ~(1 << (p_layer_number - 1));
} }
set_layer_mask(mask);
} }
bool VisualInstance3D::get_layer_mask_bit(int p_layer) const { bool VisualInstance3D::get_layer_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V(p_layer, 32, false); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Render layer number must be between 1 and 20 inclusive.");
return (layers & (1 << p_layer)); ERR_FAIL_COND_V_MSG(p_layer_number > 20, false, "Render layer number must be between 1 and 20 inclusive.");
return layers & (1 << (p_layer_number - 1));
} }
void VisualInstance3D::_bind_methods() { void VisualInstance3D::_bind_methods() {
@ -114,8 +118,8 @@ void VisualInstance3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_instance"), &VisualInstance3D::get_instance); ClassDB::bind_method(D_METHOD("get_instance"), &VisualInstance3D::get_instance);
ClassDB::bind_method(D_METHOD("set_layer_mask", "mask"), &VisualInstance3D::set_layer_mask); ClassDB::bind_method(D_METHOD("set_layer_mask", "mask"), &VisualInstance3D::set_layer_mask);
ClassDB::bind_method(D_METHOD("get_layer_mask"), &VisualInstance3D::get_layer_mask); ClassDB::bind_method(D_METHOD("get_layer_mask"), &VisualInstance3D::get_layer_mask);
ClassDB::bind_method(D_METHOD("set_layer_mask_bit", "layer", "enabled"), &VisualInstance3D::set_layer_mask_bit); ClassDB::bind_method(D_METHOD("set_layer_mask_value", "layer_number", "value"), &VisualInstance3D::set_layer_mask_value);
ClassDB::bind_method(D_METHOD("get_layer_mask_bit", "layer"), &VisualInstance3D::get_layer_mask_bit); ClassDB::bind_method(D_METHOD("get_layer_mask_value", "layer_number"), &VisualInstance3D::get_layer_mask_value);
ClassDB::bind_method(D_METHOD("get_transformed_aabb"), &VisualInstance3D::get_transformed_aabb); ClassDB::bind_method(D_METHOD("get_transformed_aabb"), &VisualInstance3D::get_transformed_aabb);

View file

@ -72,8 +72,8 @@ public:
void set_layer_mask(uint32_t p_mask); void set_layer_mask(uint32_t p_mask);
uint32_t get_layer_mask() const; uint32_t get_layer_mask() const;
void set_layer_mask_bit(int p_layer, bool p_enable); void set_layer_mask_value(int p_layer_number, bool p_enable);
bool get_layer_mask_bit(int p_layer) const; bool get_layer_mask_value(int p_layer_number) const;
VisualInstance3D(); VisualInstance3D();
~VisualInstance3D(); ~VisualInstance3D();

View file

@ -994,15 +994,15 @@ void register_scene_types() {
OS::get_singleton()->yield(); //may take time to init OS::get_singleton()->yield(); //may take time to init
for (int i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i + 1), "");
GLOBAL_DEF_BASIC(vformat("layer_names/3d_render/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/3d_render/layer_%d", i + 1), "");
} }
for (int i = 0; i < 32; i++) { for (int i = 0; i < 32; i++) {
GLOBAL_DEF_BASIC(vformat("layer_names/2d_physics/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/2d_physics/layer_%d", i + 1), "");
GLOBAL_DEF_BASIC(vformat("layer_names/2d_navigation/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/2d_navigation/layer_%d", i + 1), "");
GLOBAL_DEF_BASIC(vformat("layer_names/3d_physics/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/3d_physics/layer_%d", i + 1), "");
GLOBAL_DEF_BASIC(vformat("layer_names/3d_navigation/layer_%d", i), ""); GLOBAL_DEF_BASIC(vformat("layer_names/3d_navigation/layer_%d", i + 1), "");
} }
bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false); bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false);

View file

@ -91,20 +91,22 @@ uint32_t NavigationMesh::get_collision_mask() const {
return collision_mask; return collision_mask;
} }
void NavigationMesh::set_collision_mask_bit(int p_bit, bool p_value) { void NavigationMesh::set_collision_mask_value(int p_layer_number, bool p_value) {
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_MSG(p_layer_number < 1, "Collision layer number must be between 1 and 32 inclusive.");
ERR_FAIL_COND_MSG(p_layer_number > 32, "Collision layer number must be between 1 and 32 inclusive.");
uint32_t mask = get_collision_mask(); uint32_t mask = get_collision_mask();
if (p_value) { if (p_value) {
mask |= 1 << p_bit; mask |= 1 << (p_layer_number - 1);
} else { } else {
mask &= ~(1 << p_bit); mask &= ~(1 << (p_layer_number - 1));
} }
set_collision_mask(mask); set_collision_mask(mask);
} }
bool NavigationMesh::get_collision_mask_bit(int p_bit) const { bool NavigationMesh::get_collision_mask_value(int p_layer_number) const {
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive."); ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << p_bit); ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Collision layer number must be between 1 and 32 inclusive.");
return get_collision_mask() & (1 << (p_layer_number - 1));
} }
void NavigationMesh::set_source_geometry_mode(SourceGeometryMode p_geometry_mode) { void NavigationMesh::set_source_geometry_mode(SourceGeometryMode p_geometry_mode) {
@ -403,8 +405,8 @@ void NavigationMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &NavigationMesh::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &NavigationMesh::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_mask"), &NavigationMesh::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &NavigationMesh::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &NavigationMesh::set_collision_mask_bit); ClassDB::bind_method(D_METHOD("set_collision_mask_value", "layer_number", "value"), &NavigationMesh::set_collision_mask_value);
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &NavigationMesh::get_collision_mask_bit); ClassDB::bind_method(D_METHOD("get_collision_mask_value", "layer_number"), &NavigationMesh::get_collision_mask_value);
ClassDB::bind_method(D_METHOD("set_source_geometry_mode", "mask"), &NavigationMesh::set_source_geometry_mode); ClassDB::bind_method(D_METHOD("set_source_geometry_mode", "mask"), &NavigationMesh::set_source_geometry_mode);
ClassDB::bind_method(D_METHOD("get_source_geometry_mode"), &NavigationMesh::get_source_geometry_mode); ClassDB::bind_method(D_METHOD("get_source_geometry_mode"), &NavigationMesh::get_source_geometry_mode);

View file

@ -118,8 +118,8 @@ public:
void set_collision_mask(uint32_t p_mask); void set_collision_mask(uint32_t p_mask);
uint32_t get_collision_mask() const; uint32_t get_collision_mask() const;
void set_collision_mask_bit(int p_bit, bool p_value); void set_collision_mask_value(int p_layer_number, bool p_value);
bool get_collision_mask_bit(int p_bit) const; bool get_collision_mask_value(int p_layer_number) const;
void set_source_geometry_mode(SourceGeometryMode p_geometry_mode); void set_source_geometry_mode(SourceGeometryMode p_geometry_mode);
SourceGeometryMode get_source_geometry_mode() const; SourceGeometryMode get_source_geometry_mode() const;

View file

@ -234,8 +234,8 @@ void PhysicsShapeQueryParameters2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_margin", "margin"), &PhysicsShapeQueryParameters2D::set_margin); ClassDB::bind_method(D_METHOD("set_margin", "margin"), &PhysicsShapeQueryParameters2D::set_margin);
ClassDB::bind_method(D_METHOD("get_margin"), &PhysicsShapeQueryParameters2D::get_margin); ClassDB::bind_method(D_METHOD("get_margin"), &PhysicsShapeQueryParameters2D::get_margin);
ClassDB::bind_method(D_METHOD("set_collision_layer", "collision_layer"), &PhysicsShapeQueryParameters2D::set_collision_mask); ClassDB::bind_method(D_METHOD("set_collision_mask", "collision_mask"), &PhysicsShapeQueryParameters2D::set_collision_mask);
ClassDB::bind_method(D_METHOD("get_collision_layer"), &PhysicsShapeQueryParameters2D::get_collision_mask); ClassDB::bind_method(D_METHOD("get_collision_mask"), &PhysicsShapeQueryParameters2D::get_collision_mask);
ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &PhysicsShapeQueryParameters2D::set_exclude); ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &PhysicsShapeQueryParameters2D::set_exclude);
ClassDB::bind_method(D_METHOD("get_exclude"), &PhysicsShapeQueryParameters2D::get_exclude); ClassDB::bind_method(D_METHOD("get_exclude"), &PhysicsShapeQueryParameters2D::get_exclude);
@ -246,7 +246,7 @@ void PhysicsShapeQueryParameters2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_collide_with_areas", "enable"), &PhysicsShapeQueryParameters2D::set_collide_with_areas); ClassDB::bind_method(D_METHOD("set_collide_with_areas", "enable"), &PhysicsShapeQueryParameters2D::set_collide_with_areas);
ClassDB::bind_method(D_METHOD("is_collide_with_areas_enabled"), &PhysicsShapeQueryParameters2D::is_collide_with_areas_enabled); ClassDB::bind_method(D_METHOD("is_collide_with_areas_enabled"), &PhysicsShapeQueryParameters2D::is_collide_with_areas_enabled);
ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_layer", "get_collision_layer"); ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_mask", "get_collision_mask");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::RID) + ":"), "set_exclude", "get_exclude"); ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::RID) + ":"), "set_exclude", "get_exclude");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "set_motion", "get_motion"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "set_motion", "get_motion");
@ -411,9 +411,9 @@ PhysicsDirectSpaceState2D::PhysicsDirectSpaceState2D() {
} }
void PhysicsDirectSpaceState2D::_bind_methods() { void PhysicsDirectSpaceState2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("intersect_point", "point", "max_results", "exclude", "collision_layer", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_point, DEFVAL(32), DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false)); ClassDB::bind_method(D_METHOD("intersect_point", "point", "max_results", "exclude", "collision_mask", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_point, DEFVAL(32), DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false));
ClassDB::bind_method(D_METHOD("intersect_point_on_canvas", "point", "canvas_instance_id", "max_results", "exclude", "collision_layer", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_point_on_canvas, DEFVAL(32), DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false)); ClassDB::bind_method(D_METHOD("intersect_point_on_canvas", "point", "canvas_instance_id", "max_results", "exclude", "collision_mask", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_point_on_canvas, DEFVAL(32), DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false));
ClassDB::bind_method(D_METHOD("intersect_ray", "from", "to", "exclude", "collision_layer", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_ray, DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false)); ClassDB::bind_method(D_METHOD("intersect_ray", "from", "to", "exclude", "collision_mask", "collide_with_bodies", "collide_with_areas"), &PhysicsDirectSpaceState2D::_intersect_ray, DEFVAL(Array()), DEFVAL(0x7FFFFFFF), DEFVAL(true), DEFVAL(false));
ClassDB::bind_method(D_METHOD("intersect_shape", "shape", "max_results"), &PhysicsDirectSpaceState2D::_intersect_shape, DEFVAL(32)); ClassDB::bind_method(D_METHOD("intersect_shape", "shape", "max_results"), &PhysicsDirectSpaceState2D::_intersect_shape, DEFVAL(32));
ClassDB::bind_method(D_METHOD("cast_motion", "shape"), &PhysicsDirectSpaceState2D::_cast_motion); ClassDB::bind_method(D_METHOD("cast_motion", "shape"), &PhysicsDirectSpaceState2D::_cast_motion);
ClassDB::bind_method(D_METHOD("collide_shape", "shape", "max_results"), &PhysicsDirectSpaceState2D::_collide_shape, DEFVAL(32)); ClassDB::bind_method(D_METHOD("collide_shape", "shape", "max_results"), &PhysicsDirectSpaceState2D::_collide_shape, DEFVAL(32));