diff --git a/leenkx/Sources/iron/system/VR.hx b/leenkx/Sources/iron/system/VR.hx new file mode 100644 index 0000000..3a6943d --- /dev/null +++ b/leenkx/Sources/iron/system/VR.hx @@ -0,0 +1,52 @@ +package iron.system; + +import iron.math.Mat4; + +#if lnx_vr +class VR { + + static var undistortionMatrix: Mat4 = null; + + public function new() {} + + public static function getUndistortionMatrix(): Mat4 { + if (undistortionMatrix == null) { + undistortionMatrix = Mat4.identity(); + } + + return undistortionMatrix; + } + + public static function getMaxRadiusSq(): Float { + return 0.0; + } + + public static function initButton() { + function vrDownListener(index: Int, x: Float, y: Float) { + var vr = kha.vr.VrInterface.instance; + if (vr == null || !vr.IsVrEnabled() || vr.IsPresenting()) return; + var w: Float = iron.App.w(); + var h: Float = iron.App.h(); + if (x < w - 150 || y < h - 150) return; + vr.onVRRequestPresent(); + } + + function vrRender2D(g: kha.graphics2.Graphics) { + var vr = kha.vr.VrInterface.instance; + if (vr == null || !vr.IsVrEnabled() || vr.IsPresenting()) return; + var w: Float = iron.App.w(); + var h: Float = iron.App.h(); + g.color = 0xffff0000; + g.fillRect(w - 150, h - 150, 140, 140); + } + + kha.input.Mouse.get().notify(vrDownListener, null, null, null); + iron.App.notifyOnRender2D(vrRender2D); + + var vr = kha.vr.VrInterface.instance; // Straight to VR (Oculus Carmel) + if (vr != null && vr.IsVrEnabled()) { + vr.onVRRequestPresent(); + } + } +} +#end \ No newline at end of file