#ifndef PROC_NODES_POINT_NODES_H
#define PROC_NODES_POINT_NODES_H
#include "../graph/proc_node.h"
namespace godot {
// Create N points at origin (or random positions)
class PointsNode : public ProcNode {
GDCLASS(PointsNode, ProcNode);
protected:
static void _bind_methods();
public:
StringName get_node_type() const override { return "Points"; }
String get_node_title() const override { return "Points"; }
String get_node_category() const override { return "Point"; }
void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
PointsNode();
};
// Convert ProcPointCloud -> ProcMesh (each point becomes a vertex)
class PointsToVerticesNode : public ProcNode {
GDCLASS(PointsToVerticesNode, ProcNode);
protected:
static void _bind_methods();
public:
StringName get_node_type() const override { return "PointsToVertices"; }
String get_node_title() const override { return "Points to Vertices"; }
String get_node_category() const override { return "Point"; }
void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
PointsToVerticesNode();
};
// Distribute random points on mesh faces
class DistributePointsOnFacesNode : public ProcNode {
GDCLASS(DistributePointsOnFacesNode, ProcNode);
protected:
static void _bind_methods();
public:
StringName get_node_type() const override { return "DistributePointsOnFaces"; }
String get_node_title() const override { return "Distribute Points on Faces"; }
String get_node_category() const override { return "Point"; }
void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
DistributePointsOnFacesNode();
};
} // namespace godot
#endif // PROC_NODES_POINT_NODES_H