Merge pull request #5307 from MarianoGnu/master
TextureRegion improvements
@ -120,6 +120,7 @@ void Sprite::set_texture(const Ref<Texture>& p_texture) {
|
||||
}
|
||||
#endif
|
||||
update();
|
||||
emit_signal("texture_changed");
|
||||
item_rect_changed();
|
||||
}
|
||||
|
||||
@ -323,6 +324,7 @@ void Sprite::_bind_methods() {
|
||||
ObjectTypeDB::bind_method(_MD("get_modulate"),&Sprite::get_modulate);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("frame_changed"));
|
||||
ADD_SIGNAL(MethodInfo("texture_changed"));
|
||||
|
||||
ADD_PROPERTYNZ( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE,"Texture"), _SCS("set_texture"),_SCS("get_texture"));
|
||||
ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "centered"), _SCS("set_centered"),_SCS("is_centered"));
|
||||
|
@ -79,6 +79,8 @@ void Patch9Frame::_bind_methods() {
|
||||
ObjectTypeDB::bind_method(_MD("set_draw_center","draw_center"), & Patch9Frame::set_draw_center );
|
||||
ObjectTypeDB::bind_method(_MD("get_draw_center"), & Patch9Frame::get_draw_center );
|
||||
|
||||
ADD_SIGNAL(MethodInfo("texture_changed"));
|
||||
|
||||
ADD_PROPERTYNZ( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), _SCS("set_texture"),_SCS("get_texture") );
|
||||
ADD_PROPERTYNO( PropertyInfo( Variant::COLOR, "modulate"), _SCS("set_modulate"),_SCS("get_modulate") );
|
||||
ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "draw_center"), _SCS("set_draw_center"),_SCS("get_draw_center") );
|
||||
@ -93,11 +95,14 @@ void Patch9Frame::_bind_methods() {
|
||||
|
||||
void Patch9Frame::set_texture(const Ref<Texture>& p_tex) {
|
||||
|
||||
if (texture==p_tex)
|
||||
return;
|
||||
texture=p_tex;
|
||||
update();
|
||||
//if (texture.is_valid())
|
||||
// texture->set_flags(texture->get_flags()&(~Texture::FLAG_REPEAT)); //remove repeat from texture, it looks bad in sprites
|
||||
minimum_size_changed();
|
||||
emit_signal("texture_changed");
|
||||
}
|
||||
|
||||
Ref<Texture> Patch9Frame::get_texture() const {
|
||||
|
@ -104,7 +104,10 @@ StyleBox::StyleBox() {
|
||||
|
||||
void StyleBoxTexture::set_texture(RES p_texture) {
|
||||
|
||||
if (texture==p_texture)
|
||||
return;
|
||||
texture=p_texture;
|
||||
emit_signal("texture_changed");
|
||||
emit_changed();
|
||||
|
||||
}
|
||||
@ -207,6 +210,8 @@ void StyleBoxTexture::_bind_methods() {
|
||||
ObjectTypeDB::bind_method(_MD("set_draw_center","enable"),&StyleBoxTexture::set_draw_center);
|
||||
ObjectTypeDB::bind_method(_MD("get_draw_center"),&StyleBoxTexture::get_draw_center);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("texture_changed"));
|
||||
|
||||
ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture" ), _SCS("set_texture"),_SCS("get_texture") );
|
||||
ADD_PROPERTYNZ( PropertyInfo( Variant::RECT2, "region_rect"), _SCS("set_region_rect"),_SCS("get_region_rect"));
|
||||
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "margin/left", PROPERTY_HINT_RANGE,"0,2048,1" ), _SCS("set_margin_size"),_SCS("get_margin_size"), MARGIN_LEFT );
|
||||
|
@ -526,8 +526,11 @@ uint32_t AtlasTexture::get_flags() const{
|
||||
|
||||
void AtlasTexture::set_atlas(const Ref<Texture>& p_atlas){
|
||||
|
||||
if (atlas==p_atlas)
|
||||
return;
|
||||
atlas=p_atlas;
|
||||
emit_changed();
|
||||
emit_signal("atlas_changed");
|
||||
}
|
||||
Ref<Texture> AtlasTexture::get_atlas() const{
|
||||
|
||||
@ -569,6 +572,8 @@ void AtlasTexture::_bind_methods() {
|
||||
ObjectTypeDB::bind_method(_MD("set_margin","margin"),&AtlasTexture::set_margin);
|
||||
ObjectTypeDB::bind_method(_MD("get_margin"),&AtlasTexture::get_margin);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("atlas_changed"));
|
||||
|
||||
ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "atlas", PROPERTY_HINT_RESOURCE_TYPE,"Texture"), _SCS("set_atlas"),_SCS("get_atlas") );
|
||||
ADD_PROPERTY( PropertyInfo( Variant::RECT2, "region"), _SCS("set_region"),_SCS("get_region") );
|
||||
ADD_PROPERTY( PropertyInfo( Variant::RECT2, "margin"), _SCS("set_margin"),_SCS("get_margin") );
|
||||
|
BIN
tools/editor/icons/2x/icon_zoom_less.png
Normal file
After Width: | Height: | Size: 162 B |
BIN
tools/editor/icons/2x/icon_zoom_more.png
Normal file
After Width: | Height: | Size: 290 B |
BIN
tools/editor/icons/2x/icon_zoom_reset.png
Normal file
After Width: | Height: | Size: 689 B |
BIN
tools/editor/icons/icon_zoom_less.png
Normal file
After Width: | Height: | Size: 149 B |
BIN
tools/editor/icons/icon_zoom_more.png
Normal file
After Width: | Height: | Size: 232 B |
BIN
tools/editor/icons/icon_zoom_reset.png
Normal file
After Width: | Height: | Size: 430 B |
104
tools/editor/icons/source/icon_zoom_more.svg
Normal file
@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_zoom.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"
|
||||
sodipodi:docname="icon_zoom_more.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.627417"
|
||||
inkscape:cx="3.7772222"
|
||||
inkscape:cy="13.690414"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="false"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1018"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3336" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1036.3622)">
|
||||
<g
|
||||
id="layer1-6"
|
||||
inkscape:label="Capa 1"
|
||||
transform="translate(-201.5751,205.0256)">
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1-0-4"
|
||||
transform="matrix(48.459085,0,0,53.967813,-126.63031,-55835.691)">
|
||||
<g
|
||||
transform="translate(0.51853114,-0.01988754)"
|
||||
id="g4182-8">
|
||||
<rect
|
||||
style="fill:#e0e0e0;fill-opacity:0.99607843"
|
||||
id="rect4167"
|
||||
width="0.042994563"
|
||||
height="0.26204652"
|
||||
x="6.3978949"
|
||||
y="1050.0524"
|
||||
rx="0"
|
||||
ry="0" />
|
||||
<rect
|
||||
ry="0"
|
||||
rx="0"
|
||||
y="1050.165"
|
||||
x="6.2806396"
|
||||
height="0.040943757"
|
||||
width="0.28011176"
|
||||
id="rect4169-6"
|
||||
style="fill:#e0e0e0;fill-opacity:0.99607843" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
@ -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;
|
||||
|