53 lines
1.2 KiB
C#
53 lines
1.2 KiB
C#
using Oculus.Avatar;
|
|
using UnityEngine;
|
|
|
|
public class GazeTarget : MonoBehaviour
|
|
{
|
|
public ovrAvatarGazeTargetType Type;
|
|
|
|
private static ovrAvatarGazeTargets RuntimeTargetList;
|
|
|
|
static GazeTarget()
|
|
{
|
|
RuntimeTargetList.targets = new ovrAvatarGazeTarget[128];
|
|
RuntimeTargetList.targetCount = 1u;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
UpdateGazeTarget();
|
|
base.transform.hasChanged = false;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (base.transform.hasChanged)
|
|
{
|
|
base.transform.hasChanged = false;
|
|
UpdateGazeTarget();
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
CAPI.ovrAvatar_RemoveGazeTargets(1u, new uint[1] { (uint)base.transform.GetInstanceID() });
|
|
}
|
|
|
|
private void UpdateGazeTarget()
|
|
{
|
|
ovrAvatarGazeTarget ovrAvatarGazeTarget2 = CreateOvrGazeTarget((uint)base.transform.GetInstanceID(), base.transform.position, Type);
|
|
RuntimeTargetList.targets[0] = ovrAvatarGazeTarget2;
|
|
CAPI.ovrAvatar_UpdateGazeTargets(RuntimeTargetList);
|
|
}
|
|
|
|
private ovrAvatarGazeTarget CreateOvrGazeTarget(uint targetId, Vector3 targetPosition, ovrAvatarGazeTargetType targetType)
|
|
{
|
|
return new ovrAvatarGazeTarget
|
|
{
|
|
id = targetId,
|
|
worldPosition = new Vector3(targetPosition.x, targetPosition.y, 0f - targetPosition.z),
|
|
type = targetType
|
|
};
|
|
}
|
|
}
|