Provide warning when using polygon shapes in `CollisionShape2D` node
`ConvexPolygonShape2D` and `ConcavePolygonShape2D` are only meant to be used directly in code and not in the editor for physics-based use cases specifically. Developers are advised to use `CollisionPolygon2D` instead, which does generate those shapes under the hood, handling polygon convexivity, proper orientation etc.
This commit is contained in:
parent
772f693e5b
commit
dc446203be
|
@ -242,9 +242,11 @@ void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case CONCAVE_POLYGON_SHAPE: {
|
case CONCAVE_POLYGON_SHAPE: {
|
||||||
|
// Cannot be edited directly, use CollisionPolygon2D instead.
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case CONVEX_POLYGON_SHAPE: {
|
case CONVEX_POLYGON_SHAPE: {
|
||||||
|
// Cannot be edited directly, use CollisionPolygon2D instead.
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case LINE_SHAPE: {
|
case LINE_SHAPE: {
|
||||||
|
|
|
@ -176,11 +176,14 @@ String CollisionShape2D::get_configuration_warning() const {
|
||||||
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
|
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
|
||||||
return TTR("CollisionShape2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape.");
|
return TTR("CollisionShape2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!shape.is_valid()) {
|
if (!shape.is_valid()) {
|
||||||
return TTR("A shape must be provided for CollisionShape2D to function. Please create a shape resource for it!");
|
return TTR("A shape must be provided for CollisionShape2D to function. Please create a shape resource for it!");
|
||||||
}
|
}
|
||||||
|
Ref<ConvexPolygonShape2D> convex = shape;
|
||||||
|
Ref<ConcavePolygonShape2D> concave = shape;
|
||||||
|
if (convex.is_valid() || concave.is_valid()) {
|
||||||
|
return TTR("Polygon-based shapes are not meant be used nor edited directly through the CollisionShape2D node. Please use the CollisionPolygon2D node instead.");
|
||||||
|
}
|
||||||
return String();
|
return String();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue