using System; using UnityEngine; using Oculus.Avatar; public class GazeTarget : MonoBehaviour { public ovrAvatarGazeTargetType Type; private static ovrAvatarGazeTargets RuntimeTargetList; static GazeTarget() { // This size has to match the 'MarshalAs' attribute in the ovrAvatarGazeTargets declaration. RuntimeTargetList.targets = new ovrAvatarGazeTarget[128]; RuntimeTargetList.targetCount = 1; } void Start() { UpdateGazeTarget(); transform.hasChanged = false; } void Update() { if (transform.hasChanged) { transform.hasChanged = false; UpdateGazeTarget(); } } void OnDestroy() { UInt32[] targetIds = new UInt32[1]; targetIds[0] = (UInt32) transform.GetInstanceID(); CAPI.ovrAvatar_RemoveGazeTargets(1, targetIds); } private void UpdateGazeTarget() { ovrAvatarGazeTarget target = CreateOvrGazeTarget((UInt32) transform.GetInstanceID(), transform.position, Type); RuntimeTargetList.targets[0] = target; CAPI.ovrAvatar_UpdateGazeTargets(RuntimeTargetList); } private ovrAvatarGazeTarget CreateOvrGazeTarget(UInt32 targetId, Vector3 targetPosition, ovrAvatarGazeTargetType targetType) { return new ovrAvatarGazeTarget { id = targetId, // Do coordinate system switch. worldPosition = new Vector3(targetPosition.x, targetPosition.y, -targetPosition.z), type = targetType }; } }