mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-01-11 21:31:10 +01:00
Initial cleanup for MMNodeUniversalProperty.
This commit is contained in:
parent
5cb26e2b6b
commit
4c5c313b10
@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
#include "mm_node_universal_property.h"
|
#include "mm_node_universal_property.h"
|
||||||
|
|
||||||
|
#include "mm_node.h"
|
||||||
|
|
||||||
int MMNodeUniversalProperty::get_default_type() const {
|
int MMNodeUniversalProperty::get_default_type() const {
|
||||||
return default_type;
|
return default_type;
|
||||||
}
|
}
|
||||||
@ -81,14 +83,6 @@ void MMNodeUniversalProperty::set_override_image(const Ref<Image> &val) {
|
|||||||
override_image = val;
|
override_image = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Resource> MMNodeUniversalProperty::get_input_property() {
|
|
||||||
return input_property;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::set_input_property(const Ref<Resource> &val) {
|
|
||||||
input_property = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MMNodeUniversalProperty::get_input_slot_type() const {
|
int MMNodeUniversalProperty::get_input_slot_type() const {
|
||||||
return input_slot_type;
|
return input_slot_type;
|
||||||
}
|
}
|
||||||
@ -129,428 +123,23 @@ void MMNodeUniversalProperty::set_value_range(const Vector2 &val) {
|
|||||||
value_range = val;
|
value_range = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant MMNodeUniversalProperty::get_Variant() {
|
Ref<MMNodeUniversalProperty> MMNodeUniversalProperty::get_input_property() {
|
||||||
return Variant;
|
return input_property;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMNodeUniversalProperty::set_Variant(const Variant &val) {
|
void MMNodeUniversalProperty::set_input_property(const Ref<MMNodeUniversalProperty> &val) {
|
||||||
Variant = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
//tool;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
//export(int, "Int,Float,Vector2,Vector3,Color,Image") ;
|
|
||||||
int default_type = ;
|
|
||||||
//export(int) ;
|
|
||||||
int default_int = ;
|
|
||||||
//export(float) ;
|
|
||||||
float default_float = ;
|
|
||||||
//export(Vector2) ;
|
|
||||||
Vector2 default_vector2 = ;
|
|
||||||
//export(Vector3) ;
|
|
||||||
Vector3 default_vector3 = ;
|
|
||||||
//export(Color) ;
|
|
||||||
Color default_color = ;
|
|
||||||
//export(Image) ;
|
|
||||||
Ref<Image> default_image;
|
|
||||||
bool get_value_from_owner = false;
|
|
||||||
bool force_override = false;
|
|
||||||
//This is not exported on purpose!;
|
|
||||||
Ref<Image> override_image;
|
|
||||||
//Should be a MMNodeUniversalProperty, but can't set it up like that;
|
|
||||||
//export(Resource) ;
|
|
||||||
Ref<Resource> input_property;
|
|
||||||
int input_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
int output_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
String slot_name = ;
|
|
||||||
float value_step = 0.1;
|
|
||||||
Vector2 value_range = Vector2(-1000, 1000);
|
|
||||||
//MMNode;
|
|
||||||
Variant;
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::_init() {
|
|
||||||
if (input_property) {
|
|
||||||
input_property.connect("changed", self, "on_input_property_changed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::get_value(const Vector2 &uv, const bool skip_owner_val) {
|
|
||||||
if (get_value_from_owner && !skip_owner_val) {
|
|
||||||
return get_owner_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!input_property) {
|
|
||||||
return get_default_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (default_type == input_property.default_type) {
|
|
||||||
return input_property.get_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
return to_int(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
return to_float(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
return to_vector2(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
return to_vector3(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
return to_color(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
return to_color(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
return input_property.get_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::get_owner_value(const Vector2 &uv) {
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
return to_int(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
return to_float(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
return to_vector2(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
return to_vector3(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
return to_color(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
return to_color(owner.get_property_value(uv));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::get_value_or_zero(const Vector2 &uv, const bool skip_owner_val) {
|
|
||||||
if (get_value_from_owner && !skip_owner_val) {
|
|
||||||
return get_owner_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!input_property) {
|
|
||||||
return get_zero_value();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (default_type == input_property.default_type) {
|
|
||||||
return input_property.get_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
return to_int(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
return to_float(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
return to_vector2(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
return to_vector3(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
return to_color(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
return to_color(input_property.get_value(uv));
|
|
||||||
}
|
|
||||||
|
|
||||||
return input_property.get_value(uv);
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector2 MMNodeUniversalProperty::get_value_sdf3d(const Vector3 &uv3, const bool skip_owner_val) {
|
|
||||||
if (get_value_from_owner && !skip_owner_val) {
|
|
||||||
return owner.get_property_value_sdf3d(uv3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!input_property) {
|
|
||||||
return default_vector2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return input_property.get_value_sdf3d(uv3);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MMNodeUniversalProperty::to_int(const Variant &val) {
|
|
||||||
if (val is int) {
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is float) {
|
|
||||||
return int(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector2) {
|
|
||||||
return int(val.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector3) {
|
|
||||||
return int(val.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Color) {
|
|
||||||
return int(val.r);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
float MMNodeUniversalProperty::to_float(const Variant &val) {
|
|
||||||
if (val is float) {
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is int) {
|
|
||||||
return float(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector2) {
|
|
||||||
return float(val.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector3) {
|
|
||||||
return float(val.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Color) {
|
|
||||||
return float(val.r);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector2 MMNodeUniversalProperty::to_vector2(const Variant &val) {
|
|
||||||
if (val is Vector2) {
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is int) {
|
|
||||||
return Vector2(val, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is float) {
|
|
||||||
return Vector2(val, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector3) {
|
|
||||||
return Vector2(val.x, val.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Color) {
|
|
||||||
return Vector2(val.r, val.g);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Vector2();
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3 MMNodeUniversalProperty::to_vector3(const Variant &val) {
|
|
||||||
if (val is Vector3) {
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is int) {
|
|
||||||
return Vector3(val, val, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is float) {
|
|
||||||
return Vector3(val, val, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector2) {
|
|
||||||
return Vector3(val.x, val.y, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Color) {
|
|
||||||
return Vector3(val.r, val.g, val.b);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Vector3();
|
|
||||||
}
|
|
||||||
|
|
||||||
Color MMNodeUniversalProperty::to_color(const Variant &val) {
|
|
||||||
if (val is Color) {
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is int) {
|
|
||||||
return Color(val, val, val, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is float) {
|
|
||||||
return Color(val, val, val, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector2) {
|
|
||||||
return Color(val.x, val.y, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val is Vector3) {
|
|
||||||
return Color(val.x, val.y, val.z, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Color();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::set_value(const Variant &val) {
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
override_image = val;
|
|
||||||
emit_changed();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_default_value(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::get_zero_value() {
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
return 0.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
return Vector2();
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
return Vector3();
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
return Color();
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
return Color();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::get_default_value(const Vector2 &uv) {
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
return default_int;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
return default_float;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
return default_vector2;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
return default_vector3;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
return default_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
Ref<Image> image = default_image;
|
|
||||||
|
|
||||||
if (override_image) {
|
|
||||||
image = override_image;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image) {
|
|
||||||
return default_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
image.lock();
|
|
||||||
int x = uv.x * image.get_width();
|
|
||||||
int y = uv.y * image.get_height();
|
|
||||||
x = clamp(x, 0, image.get_width() - 1);
|
|
||||||
y = clamp(y, 0, image.get_width() - 1);
|
|
||||||
Color c = image.get_pixel(x, y);
|
|
||||||
image.unlock();
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::set_default_value(const Variant &val) {
|
|
||||||
if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT) {
|
|
||||||
default_int = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT) {
|
|
||||||
default_float = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2) {
|
|
||||||
default_vector2 = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3) {
|
|
||||||
default_vector3 = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR) {
|
|
||||||
default_color = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE) {
|
|
||||||
default_image = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit_changed();
|
|
||||||
}
|
|
||||||
|
|
||||||
Image MMNodeUniversalProperty::get_active_image() {
|
|
||||||
if (!force_override && input_property) {
|
|
||||||
return input_property.get_active_image();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (override_image) {
|
|
||||||
return override_image;
|
|
||||||
}
|
|
||||||
|
|
||||||
return default_image;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MMNodeUniversalProperty::set_input_property(const MMNodeUniversalProperty &val) {
|
|
||||||
if (input_property == val) {
|
if (input_property == val) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input_property) {
|
if (input_property.is_valid()) {
|
||||||
input_property.disconnect("changed", self, "on_input_property_changed");
|
input_property->disconnect("changed", this, "on_input_property_changed");
|
||||||
}
|
}
|
||||||
|
|
||||||
input_property = val;
|
input_property = val;
|
||||||
|
|
||||||
if (input_property) {
|
if (input_property.is_valid()) {
|
||||||
input_property.connect("changed", self, "on_input_property_changed");
|
input_property->connect("changed", this, "on_input_property_changed");
|
||||||
}
|
}
|
||||||
|
|
||||||
emit_changed();
|
emit_changed();
|
||||||
@ -560,38 +149,356 @@ void MMNodeUniversalProperty::set_input_property(const MMNodeUniversalProperty &
|
|||||||
// for a method with no arguments;
|
// for a method with no arguments;
|
||||||
|
|
||||||
void MMNodeUniversalProperty::unset_input_property() {
|
void MMNodeUniversalProperty::unset_input_property() {
|
||||||
set_input_property(null);
|
set_input_property(Ref<MMNodeUniversalProperty>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMNodeUniversalProperty::on_input_property_changed() {
|
void MMNodeUniversalProperty::on_input_property_changed() {
|
||||||
emit_changed();
|
emit_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<MMNode> MMNodeUniversalProperty::get_owner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMNodeUniversalProperty::set_owner(const Ref<MMNode> &val) {
|
||||||
|
owner = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMNodeUniversalProperty::_init() {
|
||||||
|
if (input_property.is_valid()) {
|
||||||
|
input_property->connect("changed", this, "on_input_property_changed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Variant MMNodeUniversalProperty::get_value(const Vector2 &uv, const bool skip_owner_val) {
|
||||||
|
if (get_value_from_owner && !skip_owner_val) {
|
||||||
|
return get_owner_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!input_property.is_valid()) {
|
||||||
|
return get_default_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (default_type == input_property->default_type) {
|
||||||
|
return input_property->get_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
return to_int(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
return to_float(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
return to_vector2(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
return to_vector3(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
return to_color(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
return to_color(input_property->get_value(uv));
|
||||||
|
}
|
||||||
|
|
||||||
|
return input_property->get_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
Variant MMNodeUniversalProperty::get_owner_value(const Vector2 &uv) {
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
return to_int(owner->get_property_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
return to_float(owner->get_property_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
return to_vector2(owner->get_property_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
return to_vector3(owner->get_property_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
return to_color(owner->get_property_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
return to_color(owner->get_property_value(uv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Variant MMNodeUniversalProperty::get_value_or_zero(const Vector2 &uv, const bool skip_owner_val) {
|
||||||
|
if (get_value_from_owner && !skip_owner_val) {
|
||||||
|
return get_owner_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!input_property.is_valid()) {
|
||||||
|
return get_zero_value();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (default_type == input_property->default_type) {
|
||||||
|
return input_property->get_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
return to_int(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
return to_float(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
return to_vector2(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
return to_vector3(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
return to_color(input_property->get_value(uv));
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
return to_color(input_property->get_value(uv));
|
||||||
|
}
|
||||||
|
|
||||||
|
return input_property->get_value(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 MMNodeUniversalProperty::get_value_sdf3d(const Vector3 &uv3, const bool skip_owner_val) {
|
||||||
|
if (get_value_from_owner && !skip_owner_val) {
|
||||||
|
return owner->get_property_value_sdf3d(uv3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!input_property.is_valid()) {
|
||||||
|
return default_vector2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return input_property->get_value_sdf3d(uv3);
|
||||||
|
}
|
||||||
|
|
||||||
|
int MMNodeUniversalProperty::to_int(const Variant &val) {
|
||||||
|
if (val.get_type() == Variant::INT) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::REAL) {
|
||||||
|
return int(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR2) {
|
||||||
|
Vector2 v = val;
|
||||||
|
return int(v.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR3) {
|
||||||
|
Vector3 v = val;
|
||||||
|
return int(v.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::COLOR) {
|
||||||
|
Color v = val;
|
||||||
|
return int(v.r);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
float MMNodeUniversalProperty::to_float(const Variant &val) {
|
||||||
|
if (val.get_type() == Variant::REAL) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::INT) {
|
||||||
|
return float(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR2) {
|
||||||
|
Vector2 v = val;
|
||||||
|
return float(v.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR3) {
|
||||||
|
Vector3 v = val;
|
||||||
|
return float(v.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::COLOR) {
|
||||||
|
Color v = val;
|
||||||
|
return float(v.r);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 MMNodeUniversalProperty::to_vector2(const Variant &val) {
|
||||||
|
if (val.get_type() == Variant::VECTOR2) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::INT) {
|
||||||
|
return Vector2(val, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::REAL) {
|
||||||
|
return Vector2(val, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR3) {
|
||||||
|
Vector3 v = val;
|
||||||
|
return Vector2(v.x, v.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::COLOR) {
|
||||||
|
Color v = val;
|
||||||
|
return Vector2(v.r, v.g);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Vector2();
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 MMNodeUniversalProperty::to_vector3(const Variant &val) {
|
||||||
|
if (val.get_type() == Variant::VECTOR3) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::INT) {
|
||||||
|
return Vector3(val, val, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::REAL) {
|
||||||
|
return Vector3(val, val, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR2) {
|
||||||
|
Vector2 v = val;
|
||||||
|
return Vector3(v.x, v.y, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::COLOR) {
|
||||||
|
Color v = val;
|
||||||
|
return Vector3(v.r, v.g, v.b);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Vector3();
|
||||||
|
}
|
||||||
|
|
||||||
|
Color MMNodeUniversalProperty::to_color(const Variant &val) {
|
||||||
|
if (val.get_type() == Variant::COLOR) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::INT) {
|
||||||
|
return Color(val, val, val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::REAL) {
|
||||||
|
return Color(val, val, val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR2) {
|
||||||
|
Vector2 v = val;
|
||||||
|
return Color(v.x, v.y, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.get_type() == Variant::VECTOR3) {
|
||||||
|
Vector3 v = val;
|
||||||
|
return Color(v.x, v.y, v.z, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Color();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMNodeUniversalProperty::set_value(const Variant &val) {
|
||||||
|
if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
override_image = val;
|
||||||
|
emit_changed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_default_value(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
Variant MMNodeUniversalProperty::get_zero_value() {
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
return 0;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
return 0.0;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
return Vector2();
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
return Vector3();
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
return Color();
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
return Color();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Variant();
|
||||||
|
}
|
||||||
|
|
||||||
|
Variant MMNodeUniversalProperty::get_default_value(const Vector2 &uv) {
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
return default_int;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
return default_float;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
return default_vector2;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
return default_vector3;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
return default_color;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
Ref<Image> image = default_image;
|
||||||
|
|
||||||
|
if (override_image.is_valid()) {
|
||||||
|
image = override_image;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image.is_valid()) {
|
||||||
|
return default_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
image->lock();
|
||||||
|
int x = uv.x * image->get_width();
|
||||||
|
int y = uv.y * image->get_height();
|
||||||
|
x = CLAMP(x, 0, image->get_width() - 1);
|
||||||
|
y = CLAMP(y, 0, image->get_width() - 1);
|
||||||
|
Color c = image->get_pixel(x, y);
|
||||||
|
image->unlock();
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Variant();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMNodeUniversalProperty::set_default_value(const Variant &val) {
|
||||||
|
if (default_type == DEFAULT_TYPE_INT) {
|
||||||
|
default_int = val;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_FLOAT) {
|
||||||
|
default_float = val;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR2) {
|
||||||
|
default_vector2 = val;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_VECTOR3) {
|
||||||
|
default_vector3 = val;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_COLOR) {
|
||||||
|
default_color = val;
|
||||||
|
} else if (default_type == DEFAULT_TYPE_IMAGE) {
|
||||||
|
default_image = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit_changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Image> MMNodeUniversalProperty::get_active_image() {
|
||||||
|
if (!force_override && input_property.is_valid()) {
|
||||||
|
return input_property->get_active_image();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (override_image.is_valid()) {
|
||||||
|
return override_image;
|
||||||
|
}
|
||||||
|
|
||||||
|
return default_image;
|
||||||
}
|
}
|
||||||
|
|
||||||
MMNodeUniversalProperty::MMNodeUniversalProperty() {
|
MMNodeUniversalProperty::MMNodeUniversalProperty() {
|
||||||
default_type = ;
|
default_type = DEFAULT_TYPE_INT;
|
||||||
default_int = ;
|
default_int = 0;
|
||||||
default_float = ;
|
default_float = 0;
|
||||||
default_vector2 = ;
|
|
||||||
default_vector3 = ;
|
|
||||||
default_color = ;
|
|
||||||
default_image;
|
|
||||||
get_value_from_owner = false;
|
get_value_from_owner = false;
|
||||||
force_override = false;
|
force_override = false;
|
||||||
override_image;
|
input_slot_type = SLOT_TYPE_NONE;
|
||||||
input_property;
|
output_slot_type = SLOT_TYPE_NONE;
|
||||||
input_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
output_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
slot_name = ;
|
|
||||||
value_step = 0.1;
|
value_step = 0.1;
|
||||||
value_range = Vector2(-1000, 1000);
|
value_range = Vector2(-1000, 1000);
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MMNodeUniversalProperty::~MMNodeUniversalProperty() {
|
MMNodeUniversalProperty::~MMNodeUniversalProperty() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MMNodeUniversalProperty::_bind_methods() {
|
void MMNodeUniversalProperty::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_default_type"), &MMNodeUniversalProperty::get_default_type);
|
ClassDB::bind_method(D_METHOD("get_default_type"), &MMNodeUniversalProperty::get_default_type);
|
||||||
ClassDB::bind_method(D_METHOD("set_default_type", "value"), &MMNodeUniversalProperty::set_default_type);
|
ClassDB::bind_method(D_METHOD("set_default_type", "value"), &MMNodeUniversalProperty::set_default_type);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "default_type"), "set_default_type", "get_default_type");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "default_type"), "set_default_type", "get_default_type");
|
||||||
@ -618,7 +525,7 @@ static void MMNodeUniversalProperty::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_default_image"), &MMNodeUniversalProperty::get_default_image);
|
ClassDB::bind_method(D_METHOD("get_default_image"), &MMNodeUniversalProperty::get_default_image);
|
||||||
ClassDB::bind_method(D_METHOD("set_default_image", "value"), &MMNodeUniversalProperty::set_default_image);
|
ClassDB::bind_method(D_METHOD("set_default_image", "value"), &MMNodeUniversalProperty::set_default_image);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "default_image", PROPERTY_HINT_RESOURCE_TYPE, "Ref<Image>"), "set_default_image", "get_default_image");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "default_image", PROPERTY_HINT_RESOURCE_TYPE, "Image"), "set_default_image", "get_default_image");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_get_value_from_owner"), &MMNodeUniversalProperty::get_get_value_from_owner);
|
ClassDB::bind_method(D_METHOD("get_get_value_from_owner"), &MMNodeUniversalProperty::get_get_value_from_owner);
|
||||||
ClassDB::bind_method(D_METHOD("set_get_value_from_owner", "value"), &MMNodeUniversalProperty::set_get_value_from_owner);
|
ClassDB::bind_method(D_METHOD("set_get_value_from_owner", "value"), &MMNodeUniversalProperty::set_get_value_from_owner);
|
||||||
@ -630,11 +537,7 @@ static void MMNodeUniversalProperty::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_override_image"), &MMNodeUniversalProperty::get_override_image);
|
ClassDB::bind_method(D_METHOD("get_override_image"), &MMNodeUniversalProperty::get_override_image);
|
||||||
ClassDB::bind_method(D_METHOD("set_override_image", "value"), &MMNodeUniversalProperty::set_override_image);
|
ClassDB::bind_method(D_METHOD("set_override_image", "value"), &MMNodeUniversalProperty::set_override_image);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "override_image", PROPERTY_HINT_RESOURCE_TYPE, "Ref<Image>"), "set_override_image", "get_override_image");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "override_image", PROPERTY_HINT_RESOURCE_TYPE, "Image", 0), "set_override_image", "get_override_image");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_input_property"), &MMNodeUniversalProperty::get_input_property);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_input_property", "value"), &MMNodeUniversalProperty::set_input_property);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "input_property", PROPERTY_HINT_RESOURCE_TYPE, "Ref<Resource>"), "set_input_property", "get_input_property");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_input_slot_type"), &MMNodeUniversalProperty::get_input_slot_type);
|
ClassDB::bind_method(D_METHOD("get_input_slot_type"), &MMNodeUniversalProperty::get_input_slot_type);
|
||||||
ClassDB::bind_method(D_METHOD("set_input_slot_type", "value"), &MMNodeUniversalProperty::set_input_slot_type);
|
ClassDB::bind_method(D_METHOD("set_input_slot_type", "value"), &MMNodeUniversalProperty::set_input_slot_type);
|
||||||
@ -656,15 +559,23 @@ static void MMNodeUniversalProperty::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_value_range", "value"), &MMNodeUniversalProperty::set_value_range);
|
ClassDB::bind_method(D_METHOD("set_value_range", "value"), &MMNodeUniversalProperty::set_value_range);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "value_range"), "set_value_range", "get_value_range");
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "value_range"), "set_value_range", "get_value_range");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_Variant"), &MMNodeUniversalProperty::get_Variant);
|
ClassDB::bind_method(D_METHOD("get_input_property"), &MMNodeUniversalProperty::get_input_property);
|
||||||
ClassDB::bind_method(D_METHOD("set_Variant", "value"), &MMNodeUniversalProperty::set_Variant);
|
ClassDB::bind_method(D_METHOD("set_input_property", "value"), &MMNodeUniversalProperty::set_input_property);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "input_property", PROPERTY_HINT_RESOURCE_TYPE, "MMNodeUniversalProperty"), "set_input_property", "get_input_property");
|
||||||
|
ClassDB::bind_method(D_METHOD("unset_input_property"), &MMNodeUniversalProperty::unset_input_property);
|
||||||
|
ClassDB::bind_method(D_METHOD("on_input_property_changed"), &MMNodeUniversalProperty::on_input_property_changed);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_owner"), &MMNodeUniversalProperty::get_owner);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_owner", "value"), &MMNodeUniversalProperty::set_owner);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "owner", PROPERTY_HINT_RESOURCE_TYPE, "MMNode", 0), "set_owner", "get_owner");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_init"), &MMNodeUniversalProperty::_init);
|
ClassDB::bind_method(D_METHOD("_init"), &MMNodeUniversalProperty::_init);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_value", "uv", "skip_owner_val"), &MMNodeUniversalProperty::get_value, false);
|
ClassDB::bind_method(D_METHOD("get_value", "uv", "skip_owner_val"), &MMNodeUniversalProperty::get_value, false);
|
||||||
ClassDB::bind_method(D_METHOD("get_owner_value", "uv"), &MMNodeUniversalProperty::get_owner_value);
|
ClassDB::bind_method(D_METHOD("get_owner_value", "uv"), &MMNodeUniversalProperty::get_owner_value);
|
||||||
ClassDB::bind_method(D_METHOD("get_value_or_zero", "uv", "skip_owner_val"), &MMNodeUniversalProperty::get_value_or_zero, false);
|
ClassDB::bind_method(D_METHOD("get_value_or_zero", "uv", "skip_owner_val"), &MMNodeUniversalProperty::get_value_or_zero, false);
|
||||||
ClassDB::bind_method(D_METHOD("get_value_sdf3d", "uv3", "skip_owner_val"), &MMNodeUniversalProperty::get_value_sdf3d, false);
|
ClassDB::bind_method(D_METHOD("get_value_sdf3d", "uv3", "skip_owner_val"), &MMNodeUniversalProperty::get_value_sdf3d, false);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("to_int", "val"), &MMNodeUniversalProperty::to_int);
|
ClassDB::bind_method(D_METHOD("to_int", "val"), &MMNodeUniversalProperty::to_int);
|
||||||
ClassDB::bind_method(D_METHOD("to_float", "val"), &MMNodeUniversalProperty::to_float);
|
ClassDB::bind_method(D_METHOD("to_float", "val"), &MMNodeUniversalProperty::to_float);
|
||||||
ClassDB::bind_method(D_METHOD("to_vector2", "val"), &MMNodeUniversalProperty::to_vector2);
|
ClassDB::bind_method(D_METHOD("to_vector2", "val"), &MMNodeUniversalProperty::to_vector2);
|
||||||
@ -675,7 +586,4 @@ static void MMNodeUniversalProperty::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_default_value", "uv"), &MMNodeUniversalProperty::get_default_value, Vector2());
|
ClassDB::bind_method(D_METHOD("get_default_value", "uv"), &MMNodeUniversalProperty::get_default_value, Vector2());
|
||||||
ClassDB::bind_method(D_METHOD("set_default_value", "val"), &MMNodeUniversalProperty::set_default_value);
|
ClassDB::bind_method(D_METHOD("set_default_value", "val"), &MMNodeUniversalProperty::set_default_value);
|
||||||
ClassDB::bind_method(D_METHOD("get_active_image"), &MMNodeUniversalProperty::get_active_image);
|
ClassDB::bind_method(D_METHOD("get_active_image"), &MMNodeUniversalProperty::get_active_image);
|
||||||
ClassDB::bind_method(D_METHOD("set_input_property", "val"), &MMNodeUniversalProperty::set_input_property);
|
|
||||||
ClassDB::bind_method(D_METHOD("unset_input_property"), &MMNodeUniversalProperty::unset_input_property);
|
|
||||||
ClassDB::bind_method(D_METHOD("on_input_property_changed"), &MMNodeUniversalProperty::on_input_property_changed);
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,41 @@
|
|||||||
#ifndef MM_NODE_UNIVERSAL_PROPERTY_H
|
#ifndef MM_NODE_UNIVERSAL_PROPERTY_H
|
||||||
#define MM_NODE_UNIVERSAL_PROPERTY_H
|
#define MM_NODE_UNIVERSAL_PROPERTY_H
|
||||||
|
|
||||||
|
#include "core/image.h"
|
||||||
|
#include "core/math/vector2.h"
|
||||||
|
#include "core/math/vector3.h"
|
||||||
|
#include "core/variant.h"
|
||||||
|
|
||||||
|
#include "core/resource.h"
|
||||||
|
|
||||||
|
class MMNode;
|
||||||
|
|
||||||
class MMNodeUniversalProperty : public Resource {
|
class MMNodeUniversalProperty : public Resource {
|
||||||
GDCLASS(MMNodeUniversalProperty, Resource);
|
GDCLASS(MMNodeUniversalProperty, Resource);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum SlotTypes {
|
||||||
|
|
||||||
|
SLOT_TYPE_NONE = -1,
|
||||||
|
SLOT_TYPE_IMAGE = 0,
|
||||||
|
SLOT_TYPE_INT = 1,
|
||||||
|
SLOT_TYPE_FLOAT = 2,
|
||||||
|
SLOT_TYPE_VECTOR2 = 3,
|
||||||
|
SLOT_TYPE_VECTOR3 = 4,
|
||||||
|
SLOT_TYPE_COLOR = 5,
|
||||||
|
SLOT_TYPE_UNIVERSAL = 6,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MMNodeUniversalPropertyDefaultType {
|
||||||
|
|
||||||
|
DEFAULT_TYPE_INT = 0,
|
||||||
|
DEFAULT_TYPE_FLOAT = 1,
|
||||||
|
DEFAULT_TYPE_VECTOR2 = 2,
|
||||||
|
DEFAULT_TYPE_VECTOR3 = 3,
|
||||||
|
DEFAULT_TYPE_COLOR = 4,
|
||||||
|
DEFAULT_TYPE_IMAGE = 5,
|
||||||
|
};
|
||||||
|
|
||||||
int get_default_type() const;
|
int get_default_type() const;
|
||||||
void set_default_type(const int val);
|
void set_default_type(const int val);
|
||||||
|
|
||||||
@ -35,9 +66,6 @@ public:
|
|||||||
Ref<Image> get_override_image();
|
Ref<Image> get_override_image();
|
||||||
void set_override_image(const Ref<Image> &val);
|
void set_override_image(const Ref<Image> &val);
|
||||||
|
|
||||||
Ref<Resource> get_input_property();
|
|
||||||
void set_input_property(const Ref<Resource> &val);
|
|
||||||
|
|
||||||
int get_input_slot_type() const;
|
int get_input_slot_type() const;
|
||||||
void set_input_slot_type(const int val);
|
void set_input_slot_type(const int val);
|
||||||
|
|
||||||
@ -53,49 +81,31 @@ public:
|
|||||||
Vector2 get_value_range();
|
Vector2 get_value_range();
|
||||||
void set_value_range(const Vector2 &val);
|
void set_value_range(const Vector2 &val);
|
||||||
|
|
||||||
Variant get_Variant();
|
Ref<MMNodeUniversalProperty> get_input_property();
|
||||||
void set_Variant(const Variant &val);
|
void set_input_property(const Ref<MMNodeUniversalProperty> &val);
|
||||||
|
void unset_input_property();
|
||||||
|
void on_input_property_changed();
|
||||||
|
|
||||||
enum SlotTypes {
|
Ref<MMNode> get_owner();
|
||||||
|
void set_owner(const Ref<MMNode> &val);
|
||||||
SLOT_TYPE_NONE = -1,
|
|
||||||
SLOT_TYPE_IMAGE = 0,
|
|
||||||
SLOT_TYPE_INT = 1,
|
|
||||||
SLOT_TYPE_FLOAT = 2,
|
|
||||||
SLOT_TYPE_VECTOR2 = 3,
|
|
||||||
SLOT_TYPE_VECTOR3 = 4,
|
|
||||||
SLOT_TYPE_COLOR = 5,
|
|
||||||
SLOT_TYPE_UNIVERSAL = 6,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum MMNodeUniversalPropertyDefaultType {
|
|
||||||
|
|
||||||
DEFAULT_TYPE_INT = 0,
|
|
||||||
DEFAULT_TYPE_FLOAT = 1,
|
|
||||||
DEFAULT_TYPE_VECTOR2 = 2,
|
|
||||||
DEFAULT_TYPE_VECTOR3 = 3,
|
|
||||||
DEFAULT_TYPE_COLOR = 4,
|
|
||||||
DEFAULT_TYPE_IMAGE = 5,
|
|
||||||
};
|
|
||||||
|
|
||||||
void _init();
|
void _init();
|
||||||
void get_value(const Vector2 &uv, const bool skip_owner_val = false);
|
|
||||||
void get_owner_value(const Vector2 &uv);
|
Variant get_value(const Vector2 &uv, const bool skip_owner_val = false);
|
||||||
void get_value_or_zero(const Vector2 &uv, const bool skip_owner_val = false);
|
Variant get_owner_value(const Vector2 &uv);
|
||||||
|
Variant get_value_or_zero(const Vector2 &uv, const bool skip_owner_val = false);
|
||||||
Vector2 get_value_sdf3d(const Vector3 &uv3, const bool skip_owner_val = false);
|
Vector2 get_value_sdf3d(const Vector3 &uv3, const bool skip_owner_val = false);
|
||||||
|
|
||||||
int to_int(const Variant &val);
|
int to_int(const Variant &val);
|
||||||
float to_float(const Variant &val);
|
float to_float(const Variant &val);
|
||||||
Vector2 to_vector2(const Variant &val);
|
Vector2 to_vector2(const Variant &val);
|
||||||
Vector3 to_vector3(const Variant &val);
|
Vector3 to_vector3(const Variant &val);
|
||||||
Color to_color(const Variant &val);
|
Color to_color(const Variant &val);
|
||||||
void set_value(const Variant &val);
|
void set_value(const Variant &val);
|
||||||
void get_zero_value();
|
Variant get_zero_value();
|
||||||
void get_default_value(const Vector2 &uv = Vector2());
|
Variant get_default_value(const Vector2 &uv = Vector2());
|
||||||
void set_default_value(const Variant &val);
|
void set_default_value(const Variant &val);
|
||||||
Image get_active_image();
|
Ref<Image> get_active_image();
|
||||||
void set_input_property(const MMNodeUniversalProperty &val);
|
|
||||||
void unset_input_property();
|
|
||||||
void on_input_property_changed();
|
|
||||||
|
|
||||||
MMNodeUniversalProperty();
|
MMNodeUniversalProperty();
|
||||||
~MMNodeUniversalProperty();
|
~MMNodeUniversalProperty();
|
||||||
@ -103,41 +113,35 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
//tool
|
//export(int, "Int,Float,Vector2,Vector3,Color,Image")
|
||||||
|
int default_type;
|
||||||
|
//export(int)
|
||||||
|
int default_int;
|
||||||
|
//export(float)
|
||||||
|
float default_float;
|
||||||
|
//export(Vector2)
|
||||||
|
Vector2 default_vector2;
|
||||||
|
//export(Vector3)
|
||||||
|
Vector3 default_vector3;
|
||||||
|
//export(Color)
|
||||||
|
Color default_color;
|
||||||
|
//export(Image)
|
||||||
|
Ref<Image> default_image;
|
||||||
|
bool get_value_from_owner;
|
||||||
|
bool force_override;
|
||||||
|
|
||||||
|
//This is not exported on purpose!
|
||||||
|
Ref<Image> override_image;
|
||||||
|
|
||||||
|
Ref<MMNodeUniversalProperty> input_property;
|
||||||
|
|
||||||
|
int input_slot_type;
|
||||||
|
int output_slot_type;
|
||||||
|
String slot_name;
|
||||||
|
float value_step;
|
||||||
|
Vector2 value_range;
|
||||||
|
|
||||||
|
Ref<MMNode> owner;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
;
|
|
||||||
//export(int, "Int,Float,Vector2,Vector3,Color,Image")
|
|
||||||
int default_type = ;
|
|
||||||
//export(int)
|
|
||||||
int default_int = ;
|
|
||||||
//export(float)
|
|
||||||
float default_float = ;
|
|
||||||
//export(Vector2)
|
|
||||||
Vector2 default_vector2 = ;
|
|
||||||
//export(Vector3)
|
|
||||||
Vector3 default_vector3 = ;
|
|
||||||
//export(Color)
|
|
||||||
Color default_color = ;
|
|
||||||
//export(Image)
|
|
||||||
Ref<Image> default_image;
|
|
||||||
bool get_value_from_owner = false;
|
|
||||||
bool force_override = false;
|
|
||||||
//This is not exported on purpose!
|
|
||||||
Ref<Image> override_image;
|
|
||||||
//Should be a MMNodeUniversalProperty, but can't set it up like that
|
|
||||||
//export(Resource)
|
|
||||||
Ref<Resource> input_property;
|
|
||||||
int input_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
int output_slot_type = SlotTypes.SLOT_TYPE_NONE;
|
|
||||||
String slot_name = ;
|
|
||||||
float value_step = 0.1;
|
|
||||||
Vector2 value_range = Vector2(-1000, 1000);
|
|
||||||
//MMNode
|
|
||||||
Variant;
|
|
||||||
// Because in UndiRedo if you pass null as the only argument it will look
|
|
||||||
// for a method with no arguments
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user