// %BANNER_BEGIN% // --------------------------------------------------------------------- // %COPYRIGHT_BEGIN% // Copyright (c) (2018-2022) Magic Leap, Inc. All Rights Reserved. // Use of this file is governed by the Software License Agreement, located here: https://www.magicleap.com/software-license-agreement-ml2 // Terms and conditions applicable to third-party materials accompanying this distribution may also be found in the top-level NOTICE file appearing herein. // %COPYRIGHT_END% // --------------------------------------------------------------------- // %BANNER_END% namespace UnityEngine.XR.MagicLeap { /// /// Runs once per Unity Update loop. /// public partial class MLGazeRecognition { /// /// Start the API. /// protected override MLResult.Code StartAPI() { var resultCode = NativeBindings.MLGazeRecognitionCreate(out Handle); MLResult.DidNativeCallSucceed(resultCode, nameof(NativeBindings.MLGazeRecognitionCreate)); return resultCode; } /// /// Stop the API. /// protected override MLResult.Code StopAPI() { var resultCode = NativeBindings.MLGazeRecognitionDestroy(Handle); MLResult.DidNativeCallSucceed(resultCode, nameof(NativeBindings.MLGazeRecognitionDestroy)); return resultCode; } /// /// Get information about the user's gaze. /// private MLResult.Code InternalMLGazeRecognitionGetState(out State state) { NativeBindings.MLGazeRecognitionState internalState = new NativeBindings.MLGazeRecognitionState(1); MLResult.Code result = NativeBindings.MLGazeRecognitionGetState(Handle, ref internalState); MLResult.DidNativeCallSucceed(result, nameof(NativeBindings.MLGazeRecognitionGetState)); state = new State(internalState); return result; } /// /// Get static information about Gaze Recognition. /// private MLResult.Code InternalMLGazeRecognitionGetStaticData(out StaticData data) { NativeBindings.MLGazeRecognitionStaticData internalData = new NativeBindings.MLGazeRecognitionStaticData(2); MLResult.Code result = NativeBindings.MLGazeRecognitionGetStaticData(Handle, ref internalData); result = MagicLeapXrProviderNativeBindings.GetUnityPose(internalData.Vergence, out Pose pose); data = new StaticData(pose, internalData.EyeHeightMax, internalData.EyeWidthMax); return result; } } }