Color with alpha constructor

This commit is contained in:
Aaron Franke 2019-07-18 20:15:39 -04:00
parent 92d4a0cbd2
commit 90df1d67cb
No known key found for this signature in database
GPG Key ID: 40A1750B977E56BF
5 changed files with 41 additions and 7 deletions

View File

@ -205,7 +205,7 @@ struct Color {
operator String() const; operator String() const;
/** /**
* No construct parameters, r=0, g=0, b=0. a=255 * No construct parameters, r=0, g=0, b=0. a=1
*/ */
_FORCE_INLINE_ Color() { _FORCE_INLINE_ Color() {
r = 0; r = 0;
@ -223,6 +223,16 @@ struct Color {
b = p_b; b = p_b;
a = p_a; a = p_a;
} }
/**
* Construct a Color from another Color, but with the specified alpha value.
*/
_FORCE_INLINE_ Color(const Color &p_c, float p_a) {
r = p_c.r;
g = p_c.g;
b = p_c.b;
a = p_a;
}
}; };
bool Color::operator<(const Color &p_color) const { bool Color::operator<(const Color &p_color) const {

View File

@ -102,11 +102,6 @@ String Variant::get_type_name(Variant::Type p_type) {
return "Plane"; return "Plane";
} break; } break;
/*
case QUAT: {
} break;*/
case AABB: { case AABB: {
return "AABB"; return "AABB";

View File

@ -1075,6 +1075,11 @@ struct _VariantCall {
r_ret = Color::hex(*p_args[0]); r_ret = Color::hex(*p_args[0]);
} }
static void Color_init5(Variant &r_ret, const Variant **p_args) {
r_ret = Color(((Color)(*p_args[0])), *p_args[1]);
}
static void AABB_init1(Variant &r_ret, const Variant **p_args) { static void AABB_init1(Variant &r_ret, const Variant **p_args) {
r_ret = ::AABB(*p_args[0], *p_args[1]); r_ret = ::AABB(*p_args[0], *p_args[1]);
@ -2209,6 +2214,8 @@ void register_variant_methods() {
_VariantCall::add_constructor(_VariantCall::Color_init1, Variant::COLOR, "r", Variant::FLOAT, "g", Variant::FLOAT, "b", Variant::FLOAT, "a", Variant::FLOAT); _VariantCall::add_constructor(_VariantCall::Color_init1, Variant::COLOR, "r", Variant::FLOAT, "g", Variant::FLOAT, "b", Variant::FLOAT, "a", Variant::FLOAT);
_VariantCall::add_constructor(_VariantCall::Color_init2, Variant::COLOR, "r", Variant::FLOAT, "g", Variant::FLOAT, "b", Variant::FLOAT); _VariantCall::add_constructor(_VariantCall::Color_init2, Variant::COLOR, "r", Variant::FLOAT, "g", Variant::FLOAT, "b", Variant::FLOAT);
// init3 and init4 are the constructors for HTML hex strings and integers respectively which don't need binding here, so we skip to init5.
_VariantCall::add_constructor(_VariantCall::Color_init5, Variant::COLOR, "c", Variant::COLOR, "a", Variant::FLOAT);
_VariantCall::add_constructor(_VariantCall::AABB_init1, Variant::AABB, "position", Variant::VECTOR3, "size", Variant::VECTOR3); _VariantCall::add_constructor(_VariantCall::AABB_init1, Variant::AABB, "position", Variant::VECTOR3, "size", Variant::VECTOR3);

View File

@ -39,6 +39,20 @@
[/codeblock] [/codeblock]
</description> </description>
</method> </method>
<method name="Color">
<return type="Color">
</return>
<argument index="0" name="c" type="Color">
</argument>
<argument index="1" name="a" type="float">
</argument>
<description>
Constructs a color from an existing color, but with a custom alpha value.
[codeblock]
var red = Color(Color.red, 0.5) # 50% transparent red.
[/codeblock]
</description>
</method>
<method name="Color"> <method name="Color">
<return type="Color"> <return type="Color">
</return> </return>

View File

@ -420,7 +420,7 @@ namespace Godot
return txt; return txt;
} }
// Constructors // Constructors
public Color(float r, float g, float b, float a = 1.0f) public Color(float r, float g, float b, float a = 1.0f)
{ {
this.r = r; this.r = r;
@ -429,6 +429,14 @@ namespace Godot
this.a = a; this.a = a;
} }
public Color(Color c, float a = 1.0f)
{
r = c.r;
g = c.g;
b = c.b;
this.a = a;
}
public Color(uint rgba) public Color(uint rgba)
{ {
a = (rgba & 0xFF) / 255.0f; a = (rgba & 0xFF) / 255.0f;