1 /**
2 Base class for CSG primitives.
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.csgprimitive;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.traits;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.globalenums;
22 import godot.object;
23 import godot.csgshape;
24 /**
25 Base class for CSG primitives.
26 
27 Parent class for various CSG primitives. It contains code and functionality that is common between them. It cannot be used directly. Instead use one of the various classes that inherit from it.
28 */
29 @GodotBaseClass struct CSGPrimitive
30 {
31 	package(godot) enum string _GODOT_internal_name = "CSGPrimitive";
32 public:
33 @nogc nothrow:
34 	union { /** */ godot_object _godot_object; /** */ CSGShape _GODOT_base; }
35 	alias _GODOT_base this;
36 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
37 	package(godot) __gshared bool _classBindingInitialized = false;
38 	package(godot) static struct GDNativeClassBinding
39 	{
40 		__gshared:
41 		@GodotName("is_inverting_faces") GodotMethod!(bool) isInvertingFaces;
42 		@GodotName("set_invert_faces") GodotMethod!(void, bool) setInvertFaces;
43 	}
44 	/// 
45 	pragma(inline, true) bool opEquals(in CSGPrimitive other) const
46 	{ return _godot_object.ptr is other._godot_object.ptr; }
47 	/// 
48 	pragma(inline, true) typeof(null) opAssign(typeof(null) n)
49 	{ _godot_object.ptr = n; return null; }
50 	/// 
51 	pragma(inline, true) bool opEquals(typeof(null) n) const
52 	{ return _godot_object.ptr is n; }
53 	/// 
54 	size_t toHash() const @trusted { return cast(size_t)_godot_object.ptr; }
55 	mixin baseCasts;
56 	/// Construct a new instance of CSGPrimitive.
57 	/// Note: use `memnew!CSGPrimitive` instead.
58 	static CSGPrimitive _new()
59 	{
60 		static godot_class_constructor constructor;
61 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("CSGPrimitive");
62 		if(constructor is null) return typeof(this).init;
63 		return cast(CSGPrimitive)(constructor());
64 	}
65 	@disable new(size_t s);
66 	/**
67 	
68 	*/
69 	bool isInvertingFaces()
70 	{
71 		checkClassBinding!(typeof(this))();
72 		return ptrcall!(bool)(GDNativeClassBinding.isInvertingFaces, _godot_object);
73 	}
74 	/**
75 	
76 	*/
77 	void setInvertFaces(in bool invert_faces)
78 	{
79 		checkClassBinding!(typeof(this))();
80 		ptrcall!(void)(GDNativeClassBinding.setInvertFaces, _godot_object, invert_faces);
81 	}
82 	/**
83 	Invert the faces of the mesh.
84 	*/
85 	@property bool invertFaces()
86 	{
87 		return isInvertingFaces();
88 	}
89 	/// ditto
90 	@property void invertFaces(bool v)
91 	{
92 		setInvertFaces(v);
93 	}
94 }