1 /**
2 
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.visualshader;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.meta;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.object;
22 import godot.classdb;
23 import godot.shader;
24 import godot.visualshadernode;
25 import godot.resource;
26 import godot.reference;
27 /**
28 
29 */
30 @GodotBaseClass struct VisualShader
31 {
32 	enum string _GODOT_internal_name = "VisualShader";
33 public:
34 @nogc nothrow:
35 	union { godot_object _godot_object; Shader _GODOT_base; }
36 	alias _GODOT_base this;
37 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
38 	package(godot) __gshared bool _classBindingInitialized = false;
39 	package(godot) static struct _classBinding
40 	{
41 		__gshared:
42 		@GodotName("set_mode") GodotMethod!(void, long) setMode;
43 		@GodotName("add_node") GodotMethod!(void, long, VisualShaderNode, Vector2, long) addNode;
44 		@GodotName("set_node_position") GodotMethod!(void, long, long, Vector2) setNodePosition;
45 		@GodotName("get_node") GodotMethod!(VisualShaderNode, long, long) getNode;
46 		@GodotName("get_node_position") GodotMethod!(Vector2, long, long) getNodePosition;
47 		@GodotName("get_node_list") GodotMethod!(PoolIntArray, long) getNodeList;
48 		@GodotName("get_valid_node_id") GodotMethod!(long, long) getValidNodeId;
49 		@GodotName("remove_node") GodotMethod!(void, long, long) removeNode;
50 		@GodotName("is_node_connection") GodotMethod!(bool, long, long, long, long, long) isNodeConnection;
51 		@GodotName("can_connect_nodes") GodotMethod!(bool, long, long, long, long, long) canConnectNodes;
52 		@GodotName("connect_nodes") GodotMethod!(GodotError, long, long, long, long, long) connectNodes;
53 		@GodotName("disconnect_nodes") GodotMethod!(void, long, long, long, long, long) disconnectNodes;
54 		@GodotName("get_node_connections") GodotMethod!(Array, long) getNodeConnections;
55 		@GodotName("set_graph_offset") GodotMethod!(void, Vector2) setGraphOffset;
56 		@GodotName("get_graph_offset") GodotMethod!(Vector2) getGraphOffset;
57 		@GodotName("_queue_update") GodotMethod!(void) _queueUpdate;
58 		@GodotName("_update_shader") GodotMethod!(void) _updateShader;
59 		@GodotName("_input_type_changed") GodotMethod!(void, long, long) _inputTypeChanged;
60 	}
61 	bool opEquals(in VisualShader other) const { return _godot_object.ptr is other._godot_object.ptr; }
62 	VisualShader opAssign(T : typeof(null))(T n) { _godot_object.ptr = null; }
63 	bool opEquals(typeof(null) n) const { return _godot_object.ptr is null; }
64 	mixin baseCasts;
65 	static VisualShader _new()
66 	{
67 		static godot_class_constructor constructor;
68 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("VisualShader");
69 		if(constructor is null) return typeof(this).init;
70 		return cast(VisualShader)(constructor());
71 	}
72 	@disable new(size_t s);
73 	/// 
74 	enum Type : int
75 	{
76 		/**
77 		
78 		*/
79 		typeVertex = 0,
80 		/**
81 		
82 		*/
83 		typeFragment = 1,
84 		/**
85 		
86 		*/
87 		typeLight = 2,
88 		/**
89 		
90 		*/
91 		typeMax = 3,
92 	}
93 	/// 
94 	enum Constants : int
95 	{
96 		/**
97 		
98 		*/
99 		nodeIdInvalid = -1,
100 		/**
101 		
102 		*/
103 		nodeIdOutput = 0,
104 		typeVertex = 0,
105 		typeFragment = 1,
106 		typeLight = 2,
107 		typeMax = 3,
108 	}
109 	/**
110 	
111 	*/
112 	void setMode(in long mode)
113 	{
114 		checkClassBinding!(typeof(this))();
115 		ptrcall!(void)(_classBinding.setMode, _godot_object, mode);
116 	}
117 	/**
118 	
119 	*/
120 	void addNode(in long type, VisualShaderNode node, in Vector2 position, in long id)
121 	{
122 		checkClassBinding!(typeof(this))();
123 		ptrcall!(void)(_classBinding.addNode, _godot_object, type, node, position, id);
124 	}
125 	/**
126 	
127 	*/
128 	void setNodePosition(in long type, in long id, in Vector2 position)
129 	{
130 		checkClassBinding!(typeof(this))();
131 		ptrcall!(void)(_classBinding.setNodePosition, _godot_object, type, id, position);
132 	}
133 	/**
134 	
135 	*/
136 	Ref!VisualShaderNode getNode(in long type, in long id) const
137 	{
138 		checkClassBinding!(typeof(this))();
139 		return ptrcall!(VisualShaderNode)(_classBinding.getNode, _godot_object, type, id);
140 	}
141 	/**
142 	
143 	*/
144 	Vector2 getNodePosition(in long type, in long id) const
145 	{
146 		checkClassBinding!(typeof(this))();
147 		return ptrcall!(Vector2)(_classBinding.getNodePosition, _godot_object, type, id);
148 	}
149 	/**
150 	
151 	*/
152 	PoolIntArray getNodeList(in long type) const
153 	{
154 		checkClassBinding!(typeof(this))();
155 		return ptrcall!(PoolIntArray)(_classBinding.getNodeList, _godot_object, type);
156 	}
157 	/**
158 	
159 	*/
160 	long getValidNodeId(in long type) const
161 	{
162 		checkClassBinding!(typeof(this))();
163 		return ptrcall!(long)(_classBinding.getValidNodeId, _godot_object, type);
164 	}
165 	/**
166 	
167 	*/
168 	void removeNode(in long type, in long id)
169 	{
170 		checkClassBinding!(typeof(this))();
171 		ptrcall!(void)(_classBinding.removeNode, _godot_object, type, id);
172 	}
173 	/**
174 	
175 	*/
176 	bool isNodeConnection(in long type, in long from_node, in long from_port, in long to_node, in long to_port) const
177 	{
178 		checkClassBinding!(typeof(this))();
179 		return ptrcall!(bool)(_classBinding.isNodeConnection, _godot_object, type, from_node, from_port, to_node, to_port);
180 	}
181 	/**
182 	
183 	*/
184 	bool canConnectNodes(in long type, in long from_node, in long from_port, in long to_node, in long to_port) const
185 	{
186 		checkClassBinding!(typeof(this))();
187 		return ptrcall!(bool)(_classBinding.canConnectNodes, _godot_object, type, from_node, from_port, to_node, to_port);
188 	}
189 	/**
190 	
191 	*/
192 	GodotError connectNodes(in long type, in long from_node, in long from_port, in long to_node, in long to_port)
193 	{
194 		checkClassBinding!(typeof(this))();
195 		return ptrcall!(GodotError)(_classBinding.connectNodes, _godot_object, type, from_node, from_port, to_node, to_port);
196 	}
197 	/**
198 	
199 	*/
200 	void disconnectNodes(in long type, in long from_node, in long from_port, in long to_node, in long to_port)
201 	{
202 		checkClassBinding!(typeof(this))();
203 		ptrcall!(void)(_classBinding.disconnectNodes, _godot_object, type, from_node, from_port, to_node, to_port);
204 	}
205 	/**
206 	
207 	*/
208 	Array getNodeConnections(in long type) const
209 	{
210 		checkClassBinding!(typeof(this))();
211 		return ptrcall!(Array)(_classBinding.getNodeConnections, _godot_object, type);
212 	}
213 	/**
214 	
215 	*/
216 	void setGraphOffset(in Vector2 offset)
217 	{
218 		checkClassBinding!(typeof(this))();
219 		ptrcall!(void)(_classBinding.setGraphOffset, _godot_object, offset);
220 	}
221 	/**
222 	
223 	*/
224 	Vector2 getGraphOffset() const
225 	{
226 		checkClassBinding!(typeof(this))();
227 		return ptrcall!(Vector2)(_classBinding.getGraphOffset, _godot_object);
228 	}
229 	/**
230 	
231 	*/
232 	void _queueUpdate()
233 	{
234 		Array _GODOT_args = Array.empty_array;
235 		String _GODOT_method_name = String("_queue_update");
236 		this.callv(_GODOT_method_name, _GODOT_args);
237 	}
238 	/**
239 	
240 	*/
241 	void _updateShader() const
242 	{
243 		Array _GODOT_args = Array.empty_array;
244 		String _GODOT_method_name = String("_update_shader");
245 		this.callv(_GODOT_method_name, _GODOT_args);
246 	}
247 	/**
248 	
249 	*/
250 	void _inputTypeChanged(in long arg0, in long arg1)
251 	{
252 		Array _GODOT_args = Array.empty_array;
253 		_GODOT_args.append(arg0);
254 		_GODOT_args.append(arg1);
255 		String _GODOT_method_name = String("_input_type_changed");
256 		this.callv(_GODOT_method_name, _GODOT_args);
257 	}
258 	/**
259 	
260 	*/
261 	@property Vector2 graphOffset()
262 	{
263 		return getGraphOffset();
264 	}
265 	/// ditto
266 	@property void graphOffset(Vector2 v)
267 	{
268 		setGraphOffset(v);
269 	}
270 }