Properly remember snapping options per-project
This commit is contained in:
parent
c1128e911c
commit
45b47d5584
@ -891,6 +891,14 @@ void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_ite
|
|||||||
|
|
||||||
void CanvasItemEditor::_snap_changed() {
|
void CanvasItemEditor::_snap_changed() {
|
||||||
static_cast<SnapDialog *>(snap_dialog)->get_fields(grid_offset, grid_step, primary_grid_steps, snap_rotation_offset, snap_rotation_step, snap_scale_step);
|
static_cast<SnapDialog *>(snap_dialog)->get_fields(grid_offset, grid_step, primary_grid_steps, snap_rotation_offset, snap_rotation_step, snap_scale_step);
|
||||||
|
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "grid_offset", grid_offset);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "grid_step", grid_step);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "primary_grid_steps", primary_grid_steps);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "snap_rotation_offset", snap_rotation_offset);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "snap_rotation_step", snap_rotation_step);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("2d_editor", "snap_scale_step", snap_scale_step);
|
||||||
|
|
||||||
grid_step_multiplier = 0;
|
grid_step_multiplier = 0;
|
||||||
viewport->queue_redraw();
|
viewport->queue_redraw();
|
||||||
}
|
}
|
||||||
@ -4892,6 +4900,15 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
|
|||||||
viewport->queue_redraw();
|
viewport->queue_redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CanvasItemEditor::clear() {
|
||||||
|
grid_offset = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "grid_offset", Vector2());
|
||||||
|
grid_step = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "grid_step", Vector2(8, 8));
|
||||||
|
primary_grid_steps = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "primary_grid_steps", 8);
|
||||||
|
snap_rotation_step = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "snap_rotation_step", Math::deg_to_rad(15.0));
|
||||||
|
snap_rotation_offset = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "snap_rotation_offset", 0.0);
|
||||||
|
snap_scale_step = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "snap_scale_step", 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
void CanvasItemEditor::add_control_to_menu_panel(Control *p_control) {
|
void CanvasItemEditor::add_control_to_menu_panel(Control *p_control) {
|
||||||
ERR_FAIL_COND(!p_control);
|
ERR_FAIL_COND(!p_control);
|
||||||
|
|
||||||
@ -5422,6 +5439,10 @@ void CanvasItemEditorPlugin::set_state(const Dictionary &p_state) {
|
|||||||
canvas_item_editor->set_state(p_state);
|
canvas_item_editor->set_state(p_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CanvasItemEditorPlugin::clear() {
|
||||||
|
canvas_item_editor->clear();
|
||||||
|
}
|
||||||
|
|
||||||
void CanvasItemEditorPlugin::_notification(int p_what) {
|
void CanvasItemEditorPlugin::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_ENTER_TREE: {
|
case NOTIFICATION_ENTER_TREE: {
|
||||||
|
@ -211,15 +211,15 @@ private:
|
|||||||
|
|
||||||
bool selected_from_canvas = false;
|
bool selected_from_canvas = false;
|
||||||
|
|
||||||
|
// Defaults are defined in clear().
|
||||||
Point2 grid_offset;
|
Point2 grid_offset;
|
||||||
// A power-of-two value works better as a default grid size.
|
Point2 grid_step;
|
||||||
Point2 grid_step = Point2(8, 8);
|
int primary_grid_steps = 0;
|
||||||
int primary_grid_steps = 8;
|
|
||||||
int grid_step_multiplier = 0;
|
int grid_step_multiplier = 0;
|
||||||
|
|
||||||
real_t snap_rotation_step = Math::deg_to_rad(15.0);
|
real_t snap_rotation_step = 0.0;
|
||||||
real_t snap_rotation_offset = 0.0;
|
real_t snap_rotation_offset = 0.0;
|
||||||
real_t snap_scale_step = 0.1f;
|
real_t snap_scale_step = 0.0;
|
||||||
bool smart_snap_active = false;
|
bool smart_snap_active = false;
|
||||||
bool grid_snap_active = false;
|
bool grid_snap_active = false;
|
||||||
|
|
||||||
@ -526,6 +526,7 @@ public:
|
|||||||
static CanvasItemEditor *get_singleton() { return singleton; }
|
static CanvasItemEditor *get_singleton() { return singleton; }
|
||||||
Dictionary get_state() const;
|
Dictionary get_state() const;
|
||||||
void set_state(const Dictionary &p_state);
|
void set_state(const Dictionary &p_state);
|
||||||
|
void clear();
|
||||||
|
|
||||||
void add_control_to_menu_panel(Control *p_control);
|
void add_control_to_menu_panel(Control *p_control);
|
||||||
void remove_control_from_menu_panel(Control *p_control);
|
void remove_control_from_menu_panel(Control *p_control);
|
||||||
@ -575,6 +576,7 @@ public:
|
|||||||
virtual void make_visible(bool p_visible) override;
|
virtual void make_visible(bool p_visible) override;
|
||||||
virtual Dictionary get_state() const override;
|
virtual Dictionary get_state() const override;
|
||||||
virtual void set_state(const Dictionary &p_state) override;
|
virtual void set_state(const Dictionary &p_state) override;
|
||||||
|
virtual void clear() override;
|
||||||
|
|
||||||
CanvasItemEditor *get_canvas_item_editor() { return canvas_item_editor; }
|
CanvasItemEditor *get_canvas_item_editor() { return canvas_item_editor; }
|
||||||
|
|
||||||
|
@ -5995,6 +5995,10 @@ void Node3DEditor::_snap_changed() {
|
|||||||
snap_translate_value = snap_translate->get_text().to_float();
|
snap_translate_value = snap_translate->get_text().to_float();
|
||||||
snap_rotate_value = snap_rotate->get_text().to_float();
|
snap_rotate_value = snap_rotate->get_text().to_float();
|
||||||
snap_scale_value = snap_scale->get_text().to_float();
|
snap_scale_value = snap_scale->get_text().to_float();
|
||||||
|
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("3d_editor", "snap_translate_value", snap_translate_value);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("3d_editor", "snap_rotate_value", snap_rotate_value);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("3d_editor", "snap_scale_value", snap_scale_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Node3DEditor::_snap_update() {
|
void Node3DEditor::_snap_update() {
|
||||||
@ -7853,6 +7857,11 @@ void Node3DEditor::clear() {
|
|||||||
settings_znear->set_value(EDITOR_GET("editors/3d/default_z_near"));
|
settings_znear->set_value(EDITOR_GET("editors/3d/default_z_near"));
|
||||||
settings_zfar->set_value(EDITOR_GET("editors/3d/default_z_far"));
|
settings_zfar->set_value(EDITOR_GET("editors/3d/default_z_far"));
|
||||||
|
|
||||||
|
snap_translate_value = EditorSettings::get_singleton()->get_project_metadata("3d_editor", "snap_translate_value", 1);
|
||||||
|
snap_rotate_value = EditorSettings::get_singleton()->get_project_metadata("3d_editor", "snap_rotate_value", 15);
|
||||||
|
snap_scale_value = EditorSettings::get_singleton()->get_project_metadata("3d_editor", "snap_scale_value", 10);
|
||||||
|
_snap_update();
|
||||||
|
|
||||||
for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) {
|
for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) {
|
||||||
viewports[i]->reset();
|
viewports[i]->reset();
|
||||||
}
|
}
|
||||||
@ -8307,10 +8316,6 @@ Node3DEditor::Node3DEditor() {
|
|||||||
|
|
||||||
/* SNAP DIALOG */
|
/* SNAP DIALOG */
|
||||||
|
|
||||||
snap_translate_value = 1;
|
|
||||||
snap_rotate_value = 15;
|
|
||||||
snap_scale_value = 10;
|
|
||||||
|
|
||||||
snap_dialog = memnew(ConfirmationDialog);
|
snap_dialog = memnew(ConfirmationDialog);
|
||||||
snap_dialog->set_title(TTR("Snap Settings"));
|
snap_dialog->set_title(TTR("Snap Settings"));
|
||||||
add_child(snap_dialog);
|
add_child(snap_dialog);
|
||||||
|
@ -848,6 +848,12 @@ void TextureRegionEditor::_notification(int p_what) {
|
|||||||
if (snap_mode == SNAP_AUTOSLICE && is_visible() && autoslice_is_dirty) {
|
if (snap_mode == SNAP_AUTOSLICE && is_visible() && autoslice_is_dirty) {
|
||||||
_update_autoslice();
|
_update_autoslice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!is_visible()) {
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("texture_region_editor", "snap_step", snap_step);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("texture_region_editor", "snap_separation", snap_separation);
|
||||||
|
EditorSettings::get_singleton()->set_project_metadata("texture_region_editor", "snap_mode", snap_mode);
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case NOTIFICATION_WM_WINDOW_FOCUS_IN: {
|
case NOTIFICATION_WM_WINDOW_FOCUS_IN: {
|
||||||
@ -1076,9 +1082,9 @@ TextureRegionEditor::TextureRegionEditor() {
|
|||||||
preview_tex = Ref<CanvasTexture>(memnew(CanvasTexture));
|
preview_tex = Ref<CanvasTexture>(memnew(CanvasTexture));
|
||||||
|
|
||||||
// A power-of-two value works better as a default grid size.
|
// A power-of-two value works better as a default grid size.
|
||||||
snap_step = Vector2(8, 8);
|
snap_step = EditorSettings::get_singleton()->get_project_metadata("texture_region_editor", "snap_step", Vector2(8, 8));
|
||||||
snap_separation = Vector2(0, 0);
|
snap_separation = EditorSettings::get_singleton()->get_project_metadata("texture_region_editor", "snap_separation", Vector2());
|
||||||
snap_mode = SNAP_NONE;
|
snap_mode = EditorSettings::get_singleton()->get_project_metadata("texture_region_editor", "snap_mode", SNAP_NONE);
|
||||||
edited_margin = -1;
|
edited_margin = -1;
|
||||||
drag_index = -1;
|
drag_index = -1;
|
||||||
drag = false;
|
drag = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user