|
@@ -40,69 +40,73 @@
|
|
|
#include "scene/resources/style_box.h"
|
|
|
#include "scene/resources/texture.h"
|
|
|
|
|
|
-class TextureRegionEditor : public HBoxContainer {
|
|
|
+class TextureRegionEditor : public Control {
|
|
|
|
|
|
- OBJ_TYPE(TextureRegionEditor, HBoxContainer );
|
|
|
- enum RegionType {
|
|
|
- REGION_TEXTURE_REGION,
|
|
|
- REGION_PATCH_MARGIN
|
|
|
+ OBJ_TYPE(TextureRegionEditor, Control );
|
|
|
+
|
|
|
+ enum SnapMode {
|
|
|
+ SNAP_NONE,
|
|
|
+ SNAP_PIXEL,
|
|
|
+ SNAP_GRID,
|
|
|
+ SNAP_AUTOSLICE
|
|
|
};
|
|
|
|
|
|
friend class TextureRegionEditorPlugin;
|
|
|
- ToolButton *region_button;
|
|
|
- ToolButton *margin_button;
|
|
|
- ToolButton *b_snap_enable;
|
|
|
- ToolButton *b_snap_grid;
|
|
|
+ MenuButton *snap_mode_button;
|
|
|
TextureFrame *icon_zoom;
|
|
|
- HSlider *zoom;
|
|
|
- SpinBox *zoom_value;
|
|
|
+ ToolButton *zoom_in;
|
|
|
+ ToolButton *zoom_reset;
|
|
|
+ ToolButton *zoom_out;
|
|
|
+ HBoxContainer * hb_grid; //For showing/hiding the grid controls when changing the SnapMode
|
|
|
SpinBox *sb_step_y;
|
|
|
SpinBox *sb_step_x;
|
|
|
SpinBox *sb_off_y;
|
|
|
SpinBox *sb_off_x;
|
|
|
+ SpinBox *sb_sep_y;
|
|
|
+ SpinBox *sb_sep_x;
|
|
|
Control *edit_draw;
|
|
|
|
|
|
VScrollBar *vscroll;
|
|
|
HScrollBar *hscroll;
|
|
|
|
|
|
EditorNode *editor;
|
|
|
- AcceptDialog *dlg_editor;
|
|
|
UndoRedo* undo_redo;
|
|
|
|
|
|
Vector2 draw_ofs;
|
|
|
float draw_zoom;
|
|
|
bool updating_scroll;
|
|
|
|
|
|
- bool use_snap;
|
|
|
- bool snap_show_grid;
|
|
|
+ int snap_mode;
|
|
|
Vector2 snap_offset;
|
|
|
Vector2 snap_step;
|
|
|
+ Vector2 snap_separation;
|
|
|
|
|
|
-
|
|
|
- String node_type;
|
|
|
Patch9Frame *node_patch9;
|
|
|
Sprite *node_sprite;
|
|
|
- StyleBoxTexture *obj_styleBox;
|
|
|
- AtlasTexture *atlas_tex;
|
|
|
+ Ref<StyleBoxTexture> obj_styleBox;
|
|
|
+ Ref<AtlasTexture> atlas_tex;
|
|
|
|
|
|
- int editing_region;
|
|
|
Rect2 rect;
|
|
|
Rect2 rect_prev;
|
|
|
- Rect2 tex_region;
|
|
|
+ float prev_margin;
|
|
|
+ int edited_margin;
|
|
|
+ List<Rect2> autoslice_cache;
|
|
|
|
|
|
bool drag;
|
|
|
bool creating;
|
|
|
Vector2 drag_from;
|
|
|
int drag_index;
|
|
|
|
|
|
- AcceptDialog *error;
|
|
|
-
|
|
|
- void _set_use_snap(bool p_use);
|
|
|
- void _set_show_grid(bool p_show);
|
|
|
+ void _set_snap_mode(int p_mode);
|
|
|
void _set_snap_off_x(float p_val);
|
|
|
void _set_snap_off_y(float p_val);
|
|
|
void _set_snap_step_x(float p_val);
|
|
|
void _set_snap_step_y(float p_val);
|
|
|
+ void _set_snap_sep_x(float p_val);
|
|
|
+ void _set_snap_sep_y(float p_val);
|
|
|
+ void _zoom_in();
|
|
|
+ void _zoom_reset();
|
|
|
+ void _zoom_out();
|
|
|
void apply_rect(const Rect2& rect);
|
|
|
protected:
|
|
|
|
|
@@ -114,9 +118,7 @@ protected:
|
|
|
|
|
|
public:
|
|
|
|
|
|
- void _edit_node(int tex_region);
|
|
|
void _edit_region();
|
|
|
- void _edit_margin();
|
|
|
void _region_draw();
|
|
|
void _region_input(const InputEvent &p_input);
|
|
|
void _scroll_changed(float);
|
|
@@ -130,11 +132,12 @@ class TextureRegionEditorPlugin : public EditorPlugin
|
|
|
{
|
|
|
OBJ_TYPE( TextureRegionEditorPlugin, EditorPlugin );
|
|
|
|
|
|
+ Button *region_button;
|
|
|
TextureRegionEditor *region_editor;
|
|
|
EditorNode *editor;
|
|
|
public:
|
|
|
|
|
|
- virtual String get_name() const { return "SpriteRegion"; }
|
|
|
+ virtual String get_name() const { return "TextureRegion"; }
|
|
|
bool has_main_screen() const { return false; }
|
|
|
virtual void edit(Object *p_node);
|
|
|
virtual bool handles(Object *p_node) const;
|