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 }