diff options
-rw-r--r-- | doc/classes/KinematicBody.xml | 5 | ||||
-rw-r--r-- | doc/classes/KinematicBody2D.xml | 3 | ||||
-rw-r--r-- | doc/classes/Physics2DDirectBodyState.xml | 43 | ||||
-rw-r--r-- | doc/classes/PhysicsDirectBodyState.xml | 28 | ||||
-rw-r--r-- | editor/editor_properties.cpp | 2 | ||||
-rw-r--r-- | editor/plugins/tile_map_editor_plugin.cpp | 10 | ||||
-rw-r--r-- | scene/3d/area.cpp | 1 |
7 files changed, 61 insertions, 31 deletions
diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml index 4aec75d89f..78012dd31c 100644 --- a/doc/classes/KinematicBody.xml +++ b/doc/classes/KinematicBody.xml @@ -93,10 +93,11 @@ Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody[/code] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes. [code]linear_velocity[/code] is the velocity vector (typically meters per second). Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector3(0, 0, 0)[/code], everything is considered a wall. This is useful for topdown games. - If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes. + If [code]stop_on_slope[/code] is true, body will not slide on slopes if you include gravity in [code]linear_velocity[/code]. If the body collides, it will change direction a maximum of [code]max_slides[/code] times before it stops. [code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees. - Returns the movement that remained when the body stopped. To get more detailed information about collisions that occurred, use [method get_slide_collision]. + If [code]infinite_inertia[/code] is true, body will be able to push [RigidBody] nodes, but it won't also detect any collisions with them. When false, it will interact with [RigidBody] nodes like with [StaticBody]. + Returns the [code]linear_velocity[/code] vector, rotated and/or scaled if a slide collision occurred. To get detailed information about collisions that occurred, use [method get_slide_collision]. </description> </method> <method name="move_and_slide_with_snap"> diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml index 8aaa7c4ace..3eca698bba 100644 --- a/doc/classes/KinematicBody2D.xml +++ b/doc/classes/KinematicBody2D.xml @@ -97,9 +97,10 @@ Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody2D[/code] or [RigidBody2D], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes. [code]linear_velocity[/code] is the velocity vector in pixels per second. Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games. - If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes. + If [code]stop_on_slope[/code] is true, body will not slide on slopes when you include gravity in [code]linear_velocity[/code] and the body is standing still. If the body collides, it will change direction a maximum of [code]max_slides[/code] times before it stops. [code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees. + If [code]infinite_inertia[/code] is true, body will be able to push [RigidBody2D] nodes, but it won't also detect any collisions with them. When false, it will interact with [RigidBody2D] nodes like with [StaticBody2D]. Returns the [code]linear_velocity[/code] vector, rotated and/or scaled if a slide collision occurred. To get detailed information about collisions that occurred, use [method get_slide_collision]. </description> </method> diff --git a/doc/classes/Physics2DDirectBodyState.xml b/doc/classes/Physics2DDirectBodyState.xml index 52c89248ff..5b320a051f 100644 --- a/doc/classes/Physics2DDirectBodyState.xml +++ b/doc/classes/Physics2DDirectBodyState.xml @@ -4,9 +4,10 @@ Direct access object to a physics body in the [Physics2DServer]. </brief_description> <description> - Direct access object to a physics body in the [Physics2DServer]. This object is passed via the direct state callback of rigid/character bodies, and is intended for changing the direct state of that body. + Provides direct access to a physics body in the [Physics2DServer], allowing safe changes to physics properties. This object is passed via the direct state callback of rigid/character bodies, and is intended for changing the direct state of that body. See [method RigidBody2D._integrate_forces]. </description> <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/physics/ray-casting.html</link> </tutorials> <demos> </demos> @@ -17,6 +18,7 @@ <argument index="0" name="force" type="Vector2"> </argument> <description> + Adds a constant directional force without affecting rotation. </description> </method> <method name="add_force"> @@ -27,6 +29,7 @@ <argument index="1" name="force" type="Vector2"> </argument> <description> + Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates. </description> </method> <method name="add_torque"> @@ -35,6 +38,7 @@ <argument index="0" name="torque" type="float"> </argument> <description> + Adds a constant rotational force. </description> </method> <method name="apply_central_impulse"> @@ -43,6 +47,7 @@ <argument index="0" name="impulse" type="Vector2"> </argument> <description> + Applies a directional impulse without affecting rotation. </description> </method> <method name="apply_impulse"> @@ -53,6 +58,7 @@ <argument index="1" name="impulse" type="Vector2"> </argument> <description> + Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts (use the "_force" functions otherwise). The offset uses the rotation of the global coordinate system, but is centered at the object's origin. </description> </method> <method name="apply_torque_impulse"> @@ -61,6 +67,7 @@ <argument index="0" name="impulse" type="float"> </argument> <description> + Applies a rotational impulse to the body. </description> </method> <method name="get_contact_collider" qualifiers="const"> @@ -69,7 +76,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the [RID] of the collider. + Returns the collider's [RID]. </description> </method> <method name="get_contact_collider_id" qualifiers="const"> @@ -78,7 +85,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the object id of the collider. + Returns the collider's object id. </description> </method> <method name="get_contact_collider_object" qualifiers="const"> @@ -87,7 +94,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the collider object, this depends on how it was created (will return a scene node if such was used to create it). + Returns the collider object. This depends on how it was created (will return a scene node if such was used to create it). </description> </method> <method name="get_contact_collider_position" qualifiers="const"> @@ -96,7 +103,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the contact position in the collider. + Returns the contact position in the collider. </description> </method> <method name="get_contact_collider_shape" qualifiers="const"> @@ -105,7 +112,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the collider shape index. + Returns the collider's shape index. </description> </method> <method name="get_contact_collider_shape_metadata" qualifiers="const"> @@ -114,7 +121,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the metadata of the collided shape. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. + Returns the collided shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. </description> </method> <method name="get_contact_collider_velocity_at_position" qualifiers="const"> @@ -123,14 +130,14 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the linear velocity vector at contact point of the collider. + Returns the linear velocity vector at the collider's contact point. </description> </method> <method name="get_contact_count" qualifiers="const"> <return type="int"> </return> <description> - Return the amount of contacts this body has with other bodies. Note that by default this returns 0 unless bodies are configured to log contacts. + Returns the number of contacts this body has with other bodies. Note that by default this returns 0 unless bodies are configured to log contacts. See [member RigidBody2D.contact_monitor]. </description> </method> <method name="get_contact_local_normal" qualifiers="const"> @@ -139,7 +146,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the local normal (of this body) of the contact point. + Returns the local normal at the contact point. </description> </method> <method name="get_contact_local_position" qualifiers="const"> @@ -148,7 +155,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the local position (of this body) of the contact point. + Returns the local position of the contact point. </description> </method> <method name="get_contact_local_shape" qualifiers="const"> @@ -157,27 +164,27 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the local shape index of the collision. + Returns the local shape index of the collision. </description> </method> <method name="get_space_state"> <return type="Physics2DDirectSpaceState"> </return> <description> - Return the current state of space, useful for queries. + Returns the current state of the space, useful for queries. </description> </method> <method name="integrate_forces"> <return type="void"> </return> <description> - Call the built-in force integration code. + Calls the built-in force integration code. </description> </method> </methods> <members> <member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity"> - The angular velocity of the body. + The body's rotational velocity. </member> <member name="inverse_inertia" type="float" setter="" getter="get_inverse_inertia"> The inverse of the inertia of the body. @@ -186,10 +193,10 @@ The inverse of the mass of the body. </member> <member name="linear_velocity" type="Vector2" setter="set_linear_velocity" getter="get_linear_velocity"> - The linear velocity of the body. + The body's linear velocity. </member> <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping"> - [code]true[/code] if this body is currently sleeping (not active). + If [code]true[/code], this body is currently sleeping (not active). </member> <member name="step" type="float" setter="" getter="get_step"> The timestep (delta) used for the simulation. @@ -204,7 +211,7 @@ The rate at which the body stops moving, if there are not any other forces moving it. </member> <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform"> - The transformation matrix of the body. + The body's transformation matrix. </member> </members> <constants> diff --git a/doc/classes/PhysicsDirectBodyState.xml b/doc/classes/PhysicsDirectBodyState.xml index cf718f06b2..10b5199128 100644 --- a/doc/classes/PhysicsDirectBodyState.xml +++ b/doc/classes/PhysicsDirectBodyState.xml @@ -1,14 +1,16 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="PhysicsDirectBodyState" inherits="Object" category="Core" version="3.1"> <brief_description> + Direct access object to a physics body in the [PhysicsServer]. </brief_description> <description> + Provides direct access to a physics body in the [PhysicsServer], allowing safe changes to physics properties. This object is passed via the direct state callback of rigid/character bodies, and is intended for changing the direct state of that body. See [method RigidBody._integrate_forces]. </description> <tutorials> </tutorials> <demos> </demos> - <methods> + <methods>( <method name="add_central_force"> <return type="void"> </return> @@ -27,7 +29,7 @@ <argument index="1" name="position" type="Vector3"> </argument> <description> - Adds a constant force (i.e. acceleration). + Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates. </description> </method> <method name="add_torque"> @@ -36,7 +38,7 @@ <argument index="0" name="torque" type="Vector3"> </argument> <description> - Adds a constant rotational force (i.e. a motor) without affecting position. + Adds a constant rotational force without affecting position. </description> </method> <method name="apply_central_impulse"> @@ -75,6 +77,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the collider's [RID]. </description> </method> <method name="get_contact_collider_id" qualifiers="const"> @@ -83,6 +86,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the collider's object id. </description> </method> <method name="get_contact_collider_object" qualifiers="const"> @@ -91,6 +95,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the collider object. </description> </method> <method name="get_contact_collider_position" qualifiers="const"> @@ -99,6 +104,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the contact position in the collider. </description> </method> <method name="get_contact_collider_shape" qualifiers="const"> @@ -107,6 +113,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the collider's shape index. </description> </method> <method name="get_contact_collider_velocity_at_position" qualifiers="const"> @@ -115,12 +122,14 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the linear velocity vector at the collider's contact point. </description> </method> <method name="get_contact_count" qualifiers="const"> <return type="int"> </return> <description> + Returns the number of contacts this body has with other bodies. Note that by default this returns 0 unless bodies are configured to log contacts. See [member RigidBody.contact_monitor]. </description> </method> <method name="get_contact_impulse" qualifiers="const"> @@ -138,6 +147,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the local normal at the contact point. </description> </method> <method name="get_contact_local_position" qualifiers="const"> @@ -146,6 +156,7 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the local position of the contact point. </description> </method> <method name="get_contact_local_shape" qualifiers="const"> @@ -154,24 +165,27 @@ <argument index="0" name="contact_idx" type="int"> </argument> <description> + Returns the local shape index of the collision. </description> </method> <method name="get_space_state"> <return type="PhysicsDirectSpaceState"> </return> <description> + Returns the current state of the space, useful for queries. </description> </method> <method name="integrate_forces"> <return type="void"> </return> <description> + Calls the built-in force integration code. </description> </method> </methods> <members> <member name="angular_velocity" type="Vector3" setter="set_angular_velocity" getter="get_angular_velocity"> - The angular velocity of the body. + The body's rotational velocity. </member> <member name="center_of_mass" type="Vector3" setter="" getter="get_center_of_mass"> </member> @@ -182,12 +196,12 @@ The inverse of the mass of the body. </member> <member name="linear_velocity" type="Vector3" setter="set_linear_velocity" getter="get_linear_velocity"> - The linear velocity of the body. + The body's linear velocity. </member> <member name="principal_inertia_axes" type="Basis" setter="" getter="get_principal_inertia_axes"> </member> <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping"> - [code]true[/code] if this body is currently sleeping (not active). + If [code]true[/code], this body is currently sleeping (not active). </member> <member name="step" type="float" setter="" getter="get_step"> The timestep (delta) used for the simulation. @@ -202,7 +216,7 @@ The rate at which the body stops moving, if there are not any other forces moving it. </member> <member name="transform" type="Transform" setter="set_transform" getter="get_transform"> - The transformation matrix of the body. + The body's transformation matrix. </member> </members> <constants> diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index d7faa44441..2d0d212af9 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -1982,6 +1982,8 @@ void EditorPropertyResource::_file_selected(const String &p_path) { RES res = ResourceLoader::load(p_path); + ERR_FAIL_COND(res.is_null()); + List<PropertyInfo> prop_list; get_edited_object()->get_property_list(&prop_list); String property_types; diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 1a367b61dd..b1fc14e88a 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -1463,12 +1463,15 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) { Vector2 from = xform.xform(node->map_to_world(Vector2(i, j), true) + ofs); Vector2 to = xform.xform(node->map_to_world(Vector2(i, j + 1), true) + ofs); + Color col = i == 0 ? Color(1, 0.8, 0.2, 0.5) : Color(1, 0.3, 0.1, 0.2); p_overlay->draw_line(from, to, col, 1); - if (max_lines-- == 0) + if (--max_lines == 0) break; } + if (max_lines == 0) + break; } } @@ -1500,12 +1503,15 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) { Vector2 from = xform.xform(node->map_to_world(Vector2(j, i), true) + ofs); Vector2 to = xform.xform(node->map_to_world(Vector2(j + 1, i), true) + ofs); + Color col = i == 0 ? Color(1, 0.8, 0.2, 0.5) : Color(1, 0.3, 0.1, 0.2); p_overlay->draw_line(from, to, col, 1); - if (max_lines-- == 0) + if (--max_lines == 0) break; } + if (max_lines == 0) + break; } } } diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp index e58e26d2d1..13d9181082 100644 --- a/scene/3d/area.cpp +++ b/scene/3d/area.cpp @@ -756,7 +756,6 @@ Area::Area() : monitorable = false; collision_mask = 1; collision_layer = 1; - set_ray_pickable(false); set_monitoring(true); set_monitorable(true); |