OverviewFilesCommitsIssuesDocsReleasesPeers

proc-nodes / src / nodes / instance_nodes.h

85 lines · c ref:
#ifndef PROC_NODES_INSTANCE_NODES_H
#define PROC_NODES_INSTANCE_NODES_H

#include "../graph/proc_node.h"

namespace godot {

// Place instance geometry at each point in a pointcloud/mesh
class InstanceOnPointsNode : public ProcNode {
	GDCLASS(InstanceOnPointsNode, ProcNode);

protected:
	static void _bind_methods();

public:
	StringName get_node_type() const override { return "InstanceOnPoints"; }
	String get_node_title() const override { return "Instance on Points"; }
	String get_node_category() const override { return "Instance"; }
	void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
	InstanceOnPointsNode();
};

class RotateInstancesNode : public ProcNode {
	GDCLASS(RotateInstancesNode, ProcNode);

protected:
	static void _bind_methods();

public:
	StringName get_node_type() const override { return "RotateInstances"; }
	String get_node_title() const override { return "Rotate Instances"; }
	String get_node_category() const override { return "Instance"; }
	bool supports_gpu() const override { return true; }
	void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
	RotateInstancesNode();
};

class ScaleInstancesNode : public ProcNode {
	GDCLASS(ScaleInstancesNode, ProcNode);

protected:
	static void _bind_methods();

public:
	StringName get_node_type() const override { return "ScaleInstances"; }
	String get_node_title() const override { return "Scale Instances"; }
	String get_node_category() const override { return "Instance"; }
	bool supports_gpu() const override { return true; }
	void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
	ScaleInstancesNode();
};

class TranslateInstancesNode : public ProcNode {
	GDCLASS(TranslateInstancesNode, ProcNode);

protected:
	static void _bind_methods();

public:
	StringName get_node_type() const override { return "TranslateInstances"; }
	String get_node_title() const override { return "Translate Instances"; }
	String get_node_category() const override { return "Instance"; }
	bool supports_gpu() const override { return true; }
	void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
	TranslateInstancesNode();
};

// Flatten instance hierarchy into a single merged mesh
class RealizeInstancesNode : public ProcNode {
	GDCLASS(RealizeInstancesNode, ProcNode);

protected:
	static void _bind_methods();

public:
	StringName get_node_type() const override { return "RealizeInstances"; }
	String get_node_title() const override { return "Realize Instances"; }
	String get_node_category() const override { return "Instance"; }
	void execute(ProcEvalContext &p_ctx, int p_node_idx) override;
	RealizeInstancesNode();
};

} // namespace godot
#endif