1 /** 2 A camera node with a few overrules for AR/VR applied, such as location tracking. 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.arvrcamera; 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.classdb; 24 import godot.camera; 25 /** 26 A camera node with a few overrules for AR/VR applied, such as location tracking. 27 28 This is a helper spatial node for our camera; note that, if stereoscopic rendering is applicable (VR-HMD), most of the camera properties are ignored, as the HMD information overrides them. The only properties that can be trusted are the near and far planes. 29 The position and orientation of this node is automatically updated by the ARVR Server to represent the location of the HMD if such tracking is available and can thus be used by game logic. Note that, in contrast to the ARVR Controller, the render thread has access to the most up-to-date tracking data of the HMD and the location of the ARVRCamera can lag a few milliseconds behind what is used for rendering as a result. 30 */ 31 @GodotBaseClass struct ARVRCamera 32 { 33 package(godot) enum string _GODOT_internal_name = "ARVRCamera"; 34 public: 35 @nogc nothrow: 36 union { /** */ godot_object _godot_object; /** */ Camera _GODOT_base; } 37 alias _GODOT_base this; 38 alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses); 39 package(godot) __gshared bool _classBindingInitialized = false; 40 package(godot) static struct GDNativeClassBinding 41 { 42 __gshared: 43 } 44 /// 45 pragma(inline, true) bool opEquals(in ARVRCamera 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 ARVRCamera. 57 /// Note: use `memnew!ARVRCamera` instead. 58 static ARVRCamera _new() 59 { 60 static godot_class_constructor constructor; 61 if(constructor is null) constructor = _godot_api.godot_get_class_constructor("ARVRCamera"); 62 if(constructor is null) return typeof(this).init; 63 return cast(ARVRCamera)(constructor()); 64 } 65 @disable new(size_t s); 66 }