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;
/**
* 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() {
r = 0;
@ -223,6 +223,16 @@ struct Color {
b = p_b;
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 {

View File

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

View File

@ -1075,6 +1075,11 @@ struct _VariantCall {
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) {
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_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);

View File

@ -39,6 +39,20 @@
[/codeblock]
</description>
</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">
<return type="Color">
</return>

View File

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