You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Implemented SkeletonEditorGizmo
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
This commit is contained in:
@@ -294,13 +294,13 @@ Path3DGizmo::Path3DGizmo(Path3D *p_path) {
|
||||
orig_out_length = 0;
|
||||
}
|
||||
|
||||
bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref<InputEvent> &p_event) {
|
||||
EditorPlugin::AfterGUIInput Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref<InputEvent> &p_event) {
|
||||
if (!path) {
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
Ref<Curve3D> c = path->get_curve();
|
||||
if (c.is_null()) {
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
Transform3D gt = path->get_global_transform();
|
||||
Transform3D it = gt.affine_inverse();
|
||||
@@ -329,14 +329,14 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
||||
const Vector3 *r = v3a.ptr();
|
||||
|
||||
if (p_camera->unproject_position(gt.xform(c->get_point_position(0))).distance_to(mbpos) < click_dist) {
|
||||
return false; //nope, existing
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS; //nope, existing
|
||||
}
|
||||
|
||||
for (int i = 0; i < c->get_point_count() - 1; i++) {
|
||||
//find the offset and point index of the place to break up
|
||||
int j = idx;
|
||||
if (p_camera->unproject_position(gt.xform(c->get_point_position(i + 1))).distance_to(mbpos) < click_dist) {
|
||||
return false; //nope, existing
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS; //nope, existing
|
||||
}
|
||||
|
||||
while (j < rc && c->get_point_position(i + 1) != r[j]) {
|
||||
@@ -386,7 +386,7 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
||||
ur->add_do_method(c.ptr(), "add_point", closest_seg_point, Vector3(), Vector3(), closest_seg + 1);
|
||||
ur->add_undo_method(c.ptr(), "remove_point", closest_seg + 1);
|
||||
ur->commit_action();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
|
||||
} else {
|
||||
Vector3 org;
|
||||
@@ -405,7 +405,7 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
||||
ur->add_do_method(c.ptr(), "add_point", it.xform(inters), Vector3(), Vector3(), -1);
|
||||
ur->add_undo_method(c.ptr(), "remove_point", c->get_point_count());
|
||||
ur->commit_action();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
|
||||
//add new at pos
|
||||
@@ -425,27 +425,27 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
||||
ur->add_do_method(c.ptr(), "remove_point", i);
|
||||
ur->add_undo_method(c.ptr(), "add_point", c->get_point_position(i), c->get_point_in(i), c->get_point_out(i), i);
|
||||
ur->commit_action();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else if (dist_to_p_out < click_dist) {
|
||||
UndoRedo *ur = editor->get_undo_redo();
|
||||
ur->create_action(TTR("Remove Out-Control Point"));
|
||||
ur->add_do_method(c.ptr(), "set_point_out", i, Vector3());
|
||||
ur->add_undo_method(c.ptr(), "set_point_out", i, c->get_point_out(i));
|
||||
ur->commit_action();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else if (dist_to_p_in < click_dist) {
|
||||
UndoRedo *ur = editor->get_undo_redo();
|
||||
ur->create_action(TTR("Remove In-Control Point"));
|
||||
ur->add_do_method(c.ptr(), "set_point_in", i, Vector3());
|
||||
ur->add_undo_method(c.ptr(), "set_point_in", i, c->get_point_in(i));
|
||||
ur->commit_action();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
void Path3DEditorPlugin::edit(Object *p_object) {
|
||||
|
||||
Reference in New Issue
Block a user