You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-19 14:31:59 +00:00
Restore RayShape as a regular shape type
Partial revert from previously removing ray shapes completely, added back as a shape type but without the specific character controller code.
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "scene/resources/circle_shape_2d.h"
|
||||
#include "scene/resources/concave_polygon_shape_2d.h"
|
||||
#include "scene/resources/convex_polygon_shape_2d.h"
|
||||
#include "scene/resources/ray_shape_2d.h"
|
||||
#include "scene/resources/rectangle_shape_2d.h"
|
||||
#include "scene/resources/segment_shape_2d.h"
|
||||
#include "scene/resources/world_margin_shape_2d.h"
|
||||
@@ -80,6 +81,15 @@ Variant CollisionShape2DEditor::get_handle_value(int idx) const {
|
||||
|
||||
} break;
|
||||
|
||||
case RAY_SHAPE: {
|
||||
Ref<RayShape2D> ray = node->get_shape();
|
||||
|
||||
if (idx == 0) {
|
||||
return ray->get_length();
|
||||
}
|
||||
|
||||
} break;
|
||||
|
||||
case RECTANGLE_SHAPE: {
|
||||
Ref<RectangleShape2D> rect = node->get_shape();
|
||||
|
||||
@@ -152,6 +162,15 @@ void CollisionShape2DEditor::set_handle(int idx, Point2 &p_point) {
|
||||
|
||||
} break;
|
||||
|
||||
case RAY_SHAPE: {
|
||||
Ref<RayShape2D> ray = node->get_shape();
|
||||
|
||||
ray->set_length(Math::abs(p_point.y));
|
||||
|
||||
canvas_item_editor->update_viewport();
|
||||
|
||||
} break;
|
||||
|
||||
case RECTANGLE_SHAPE: {
|
||||
if (idx < 8) {
|
||||
Ref<RectangleShape2D> rect = node->get_shape();
|
||||
@@ -253,6 +272,16 @@ void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
|
||||
|
||||
} break;
|
||||
|
||||
case RAY_SHAPE: {
|
||||
Ref<RayShape2D> ray = node->get_shape();
|
||||
|
||||
undo_redo->add_do_method(ray.ptr(), "set_length", ray->get_length());
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->add_undo_method(ray.ptr(), "set_length", p_org);
|
||||
undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
|
||||
|
||||
} break;
|
||||
|
||||
case RECTANGLE_SHAPE: {
|
||||
Ref<RectangleShape2D> rect = node->get_shape();
|
||||
|
||||
@@ -394,6 +423,8 @@ void CollisionShape2DEditor::_get_current_shape_type() {
|
||||
shape_type = CONVEX_POLYGON_SHAPE;
|
||||
} else if (Object::cast_to<WorldMarginShape2D>(*s)) {
|
||||
shape_type = WORLD_MARGIN_SHAPE;
|
||||
} else if (Object::cast_to<RayShape2D>(*s)) {
|
||||
shape_type = RAY_SHAPE;
|
||||
} else if (Object::cast_to<RectangleShape2D>(*s)) {
|
||||
shape_type = RECTANGLE_SHAPE;
|
||||
} else if (Object::cast_to<SegmentShape2D>(*s)) {
|
||||
@@ -471,6 +502,16 @@ void CollisionShape2DEditor::forward_canvas_draw_over_viewport(Control *p_overla
|
||||
|
||||
} break;
|
||||
|
||||
case RAY_SHAPE: {
|
||||
Ref<RayShape2D> shape = node->get_shape();
|
||||
|
||||
handles.resize(1);
|
||||
handles.write[0] = Point2(0, shape->get_length());
|
||||
|
||||
p_overlay->draw_texture(h, gt.xform(handles[0]) - size);
|
||||
|
||||
} break;
|
||||
|
||||
case RECTANGLE_SHAPE: {
|
||||
Ref<RectangleShape2D> shape = node->get_shape();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user