1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-21 14:57:09 +00:00

-Added ViewportContainer, this is the only way to make viewports show up in GUI now

-2D editing now seems to work
-Added some functions and refactoring to Viewport
This commit is contained in:
Juan Linietsky
2016-10-05 01:26:35 -03:00
parent a6e9dc6153
commit cf5778e51a
20 changed files with 340 additions and 136 deletions

View File

@@ -13,6 +13,8 @@ public:
};
struct Viewport : public RID_Data {
RID self;
@@ -32,8 +34,8 @@ public:
bool hide_scenario;
bool hide_canvas;
bool disable_environment;
bool disable_3d;
Image capture;
VS::ViewportClearMode clear_mode;
@@ -70,8 +72,27 @@ public:
};
mutable RID_Owner<Viewport> viewport_owner;
struct ViewportSort {
_FORCE_INLINE_ bool operator()(const Viewport*p_left,const Viewport* p_right) const {
bool left_to_screen = p_left->viewport_to_screen_rect.size!=Size2();
bool right_to_screen = p_right->viewport_to_screen_rect.size!=Size2();
if (left_to_screen==right_to_screen) {
return p_left->parent==p_right->self;
} else {
return right_to_screen;
}
}
};
Vector<Viewport*> active_viewports;
private:
Color clear_color;
void _draw_viewport(Viewport *p_viewport);
public:
@@ -84,7 +105,7 @@ public:
void viewport_detach(RID p_viewport);
void viewport_set_active(RID p_viewport,bool p_active);
void viewport_set_parent_viewport(RID p_viewport,RID p_parent_viewport);
void viewport_set_update_mode(RID p_viewport,VS::ViewportUpdateMode p_mode);
void viewport_set_vflip(RID p_viewport,bool p_enable);
@@ -92,11 +113,11 @@ public:
void viewport_set_clear_mode(RID p_viewport,VS::ViewportClearMode p_clear_mode);
RID viewport_get_texture(RID p_viewport) const;
Image viewport_capture(RID p_viewport) const;
void viewport_set_hide_scenario(RID p_viewport,bool p_hide);
void viewport_set_hide_canvas(RID p_viewport,bool p_hide);
void viewport_set_disable_environment(RID p_viewport,bool p_disable);
void viewport_set_disable_3d(RID p_viewport,bool p_disable);
void viewport_attach_camera(RID p_viewport,RID p_camera);
void viewport_set_scenario(RID p_viewport,RID p_scenario);