mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-23 12:26:59 +01:00
Reworked MMOutputImage. Now it uses a button, and also it works as it should.
This commit is contained in:
parent
8cf478567d
commit
24facf6230
@ -5,6 +5,14 @@
|
|||||||
#include "../../editor/mm_graph_node.h"
|
#include "../../editor/mm_graph_node.h"
|
||||||
#include "../mm_material.h"
|
#include "../mm_material.h"
|
||||||
|
|
||||||
|
Ref<MMNodeUniversalProperty> MMOutputImage::get_input() {
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMOutputImage::set_input(const Ref<MMNodeUniversalProperty> &val) {
|
||||||
|
input = val;
|
||||||
|
}
|
||||||
|
|
||||||
Ref<MMNodeUniversalProperty> MMOutputImage::get_image() {
|
Ref<MMNodeUniversalProperty> MMOutputImage::get_image() {
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
@ -23,19 +31,49 @@ void MMOutputImage::set_postfix(const String &val) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MMOutputImage::_init_properties() {
|
void MMOutputImage::_init_properties() {
|
||||||
image.instance();
|
if (!input.is_valid()) {
|
||||||
image->set_default_type(MMNodeUniversalProperty::DEFAULT_TYPE_IMAGE);
|
input.instance();
|
||||||
image->set_input_slot_type(MMNodeUniversalProperty::SLOT_TYPE_UNIVERSAL);
|
input->set_default_type(MMNodeUniversalProperty::DEFAULT_TYPE_COLOR);
|
||||||
|
input->set_default_value(Color(0, 0, 0, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
input->set_input_slot_type(MMNodeUniversalProperty::SLOT_TYPE_UNIVERSAL);
|
||||||
|
input->set_slot_name(">>> Input ");
|
||||||
|
|
||||||
|
if (!image.is_valid()) {
|
||||||
|
image.instance();
|
||||||
|
image->set_default_type(MMNodeUniversalProperty::DEFAULT_TYPE_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
image->set_slot_name("image");
|
image->set_slot_name("image");
|
||||||
register_input_property(image);
|
|
||||||
|
register_input_property(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMOutputImage::_register_methods(MMGraphNode *mm_graph_node) {
|
void MMOutputImage::_register_methods(MMGraphNode *mm_graph_node) {
|
||||||
|
mm_graph_node->add_slot_label_universal(input);
|
||||||
mm_graph_node->add_slot_texture_universal(image);
|
mm_graph_node->add_slot_texture_universal(image);
|
||||||
mm_graph_node->add_slot_line_edit("get_postfix", "set_postfix", "postfix");
|
mm_graph_node->add_slot_line_edit("get_postfix", "set_postfix", "postfix");
|
||||||
|
mm_graph_node->add_slot_button("save", "Save");
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMOutputImage::_render(const Ref<MMMaterial> &material) {
|
void MMOutputImage::_render(const Ref<MMMaterial> &material) {
|
||||||
|
_material_path = material->get_path();
|
||||||
|
|
||||||
|
Ref<Image> img = render_image(material);
|
||||||
|
image->set_value(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
Color MMOutputImage::_get_value_for(const Vector2 &uv, const int pseed) {
|
||||||
|
Color c = input->get_value(uv);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMOutputImage::save() {
|
||||||
|
if (_material_path == "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!image.is_valid()) {
|
if (!image.is_valid()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -46,13 +84,7 @@ void MMOutputImage::_render(const Ref<MMMaterial> &material) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String matpath = material->get_path();
|
String matbn = _material_path.get_basename();
|
||||||
|
|
||||||
if (matpath == "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String matbn = matpath.get_basename();
|
|
||||||
String final_file_name = matbn + postfix + ".png";
|
String final_file_name = matbn + postfix + ".png";
|
||||||
img->save_png(final_file_name);
|
img->save_png(final_file_name);
|
||||||
}
|
}
|
||||||
@ -64,6 +96,10 @@ MMOutputImage::~MMOutputImage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MMOutputImage::_bind_methods() {
|
void MMOutputImage::_bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("get_input"), &MMOutputImage::get_input);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_input", "value"), &MMOutputImage::set_input);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "input", PROPERTY_HINT_RESOURCE_TYPE, "MMNodeUniversalProperty"), "set_input", "get_input");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_image"), &MMOutputImage::get_image);
|
ClassDB::bind_method(D_METHOD("get_image"), &MMOutputImage::get_image);
|
||||||
ClassDB::bind_method(D_METHOD("set_image", "value"), &MMOutputImage::set_image);
|
ClassDB::bind_method(D_METHOD("set_image", "value"), &MMOutputImage::set_image);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "MMNodeUniversalProperty"), "set_image", "get_image");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "MMNodeUniversalProperty"), "set_image", "get_image");
|
||||||
@ -71,4 +107,6 @@ void MMOutputImage::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_postfix"), &MMOutputImage::get_postfix);
|
ClassDB::bind_method(D_METHOD("get_postfix"), &MMOutputImage::get_postfix);
|
||||||
ClassDB::bind_method(D_METHOD("set_postfix", "value"), &MMOutputImage::set_postfix);
|
ClassDB::bind_method(D_METHOD("set_postfix", "value"), &MMOutputImage::set_postfix);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "postfix"), "set_postfix", "get_postfix");
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "postfix"), "set_postfix", "get_postfix");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("save"), &MMOutputImage::save);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,9 @@ class MMOutputImage : public MMNode {
|
|||||||
GDCLASS(MMOutputImage, MMNode);
|
GDCLASS(MMOutputImage, MMNode);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Ref<MMNodeUniversalProperty> get_input();
|
||||||
|
void set_input(const Ref<MMNodeUniversalProperty> &val);
|
||||||
|
|
||||||
Ref<MMNodeUniversalProperty> get_image();
|
Ref<MMNodeUniversalProperty> get_image();
|
||||||
void set_image(const Ref<MMNodeUniversalProperty> &val);
|
void set_image(const Ref<MMNodeUniversalProperty> &val);
|
||||||
|
|
||||||
@ -17,6 +20,9 @@ public:
|
|||||||
void _init_properties();
|
void _init_properties();
|
||||||
void _register_methods(MMGraphNode *mm_graph_node);
|
void _register_methods(MMGraphNode *mm_graph_node);
|
||||||
void _render(const Ref<MMMaterial> &material);
|
void _render(const Ref<MMMaterial> &material);
|
||||||
|
Color _get_value_for(const Vector2 &uv, const int pseed);
|
||||||
|
|
||||||
|
void save();
|
||||||
|
|
||||||
MMOutputImage();
|
MMOutputImage();
|
||||||
~MMOutputImage();
|
~MMOutputImage();
|
||||||
@ -24,8 +30,10 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
|
Ref<MMNodeUniversalProperty> input;
|
||||||
Ref<MMNodeUniversalProperty> image;
|
Ref<MMNodeUniversalProperty> image;
|
||||||
String postfix;
|
String postfix;
|
||||||
|
String _material_path;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user