Merge pull request #4765 from Ovnuniarchos/ColorPoly

Polygon2D now exposes vertex colors.
This commit is contained in:
Rémi Verschelde 2016-05-23 13:28:28 +02:00
commit 29d9eb02b9
2 changed files with 30 additions and 1 deletions

View File

@ -145,7 +145,18 @@ void Polygon2D::_notification(int p_what) {
Vector<Color> colors;
colors.push_back(color);
int color_len=vertex_colors.size();
colors.resize(len);
{
DVector<Color>::Read color_r=vertex_colors.read();
for(int i=0;i<color_len && i<len;i++){
colors[i]=color_r[i];
}
for(int i=color_len;i<len;i++){
colors[i]=color;
}
}
Vector<int> indices = Geometry::triangulate_polygon(points);
VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(),indices,points,colors,uvs,texture.is_valid()?texture->get_rid():RID());
@ -188,6 +199,16 @@ Color Polygon2D::get_color() const{
return color;
}
void Polygon2D::set_vertex_colors(const DVector<Color>& p_colors){
vertex_colors=p_colors;
update();
}
DVector<Color> Polygon2D::get_vertex_colors() const{
return vertex_colors;
}
void Polygon2D::set_texture(const Ref<Texture>& p_texture){
texture=p_texture;
@ -293,6 +314,9 @@ void Polygon2D::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_color","color"),&Polygon2D::set_color);
ObjectTypeDB::bind_method(_MD("get_color"),&Polygon2D::get_color);
ObjectTypeDB::bind_method(_MD("set_vertex_colors","vertex_colors"),&Polygon2D::set_vertex_colors);
ObjectTypeDB::bind_method(_MD("get_vertex_colors"),&Polygon2D::get_vertex_colors);
ObjectTypeDB::bind_method(_MD("set_texture","texture"),&Polygon2D::set_texture);
ObjectTypeDB::bind_method(_MD("get_texture"),&Polygon2D::get_texture);
@ -323,6 +347,7 @@ void Polygon2D::_bind_methods() {
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2_ARRAY,"polygon"),_SCS("set_polygon"),_SCS("get_polygon"));
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2_ARRAY,"uv"),_SCS("set_uv"),_SCS("get_uv"));
ADD_PROPERTY( PropertyInfo(Variant::COLOR,"color"),_SCS("set_color"),_SCS("get_color"));
ADD_PROPERTY( PropertyInfo(Variant::COLOR_ARRAY,"vertex_colors"),_SCS("set_vertex_colors"),_SCS("get_vertex_colors"));
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"offset"),_SCS("set_offset"),_SCS("get_offset"));
ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"texture/texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture"),_SCS("get_texture"));
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"texture/offset"),_SCS("set_texture_offset"),_SCS("get_texture_offset"));

View File

@ -9,6 +9,7 @@ class Polygon2D : public Node2D {
DVector<Vector2> polygon;
DVector<Vector2> uv;
DVector<Color> vertex_colors;
Color color;
Ref<Texture> texture;
Vector2 tex_scale;
@ -40,6 +41,9 @@ public:
void set_color(const Color& p_color);
Color get_color() const;
void set_vertex_colors(const DVector<Color>& p_colors);
DVector<Color> get_vertex_colors() const;
void set_texture(const Ref<Texture>& p_texture);
Ref<Texture> get_texture() const;