| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- let plugin = plugin_create();
- let category_name = "My Nodes";
- let node_name = "Hello World";
- let node_type = "HELLO_WORLD";
- // Create new node category
- let node_list = [
- {
- id: 0,
- name: node_name,
- type: node_type,
- x: 0,
- y: 0,
- color: 0xffb34f5a,
- inputs: [
- {
- id: 0,
- node_id: 0,
- name: "Scale",
- type: "VALUE",
- color: 0xffa1a1a1,
- default_value__f32: [1.0],
- min__f32: 0.0,
- max__f32: 5.0,
- precision__f32: 100.0,
- display: 0
- }
- ],
- outputs: [
- {
- id: 0,
- node_id: 0,
- name: "Color",
- type: "RGBA",
- color: 0xffc7c729,
- default_value__f32: [0.8, 0.8, 0.8, 1.0],
- min__f32: 0.0,
- max__f32: 1.0,
- precision__f32: 100.0,
- display: 0
- },
- {
- id: 1,
- node_id: 0,
- name: "Factor",
- type: "VALUE",
- color: 0xffa1a1a1,
- default_value__f32: [1.0],
- min__f32: 0.0,
- max__f32: 1.0,
- precision__f32: 100.0,
- display: 0
- }
- ],
- buttons: [],
- width: 0,
- flags: 0
- }
- ];
- nodes_material_category_add(category_name, armpack_encode(node_list));
- // Node shader
- parser_material_custom_nodes_set(node_type, function(node, socket_name) {
- let kong = parser_material_kong_get();
- let scale = parser_material_parse_value_input(node, 0);
- let my_out = "my_out";
- node_shader_write_frag(kong,
- "var " + my_out + ": float = cos(sin(tex_coord.x * 200.0 * " + scale + ") + cos(tex_coord.y * 200.0 * " + scale + "));"
- );
- if (socket_name == "Color") {
- return "float3(" + my_out + ", " + my_out + ", " + my_out + ")";
- }
- else if (socket_name == "Factor") {
- return my_out;
- }
- });
- // Cleanup
- plugin_notify_on_delete(plugin, function() {
- parser_material_custom_nodes_delete(node_type);
- nodes_material_category_remove(category_name);
- });
|