// Update is called once per frame protected virtual void Update() { RaycastHit hit; Ray gazeRay = new Ray(transform.position, transform.forward); bool hasRayHit = Physics.Raycast(gazeRay, out hit, maxLength, ~layersToIgnore); GazeMarkerEventArgs eventArgs = new GazeMarkerEventArgs(); if (hasRayHit && hit.distance < maxLength) { marker.transform.localPosition = new Vector3(0f, 0f, hit.distance - (marker.transform.localScale.z / 2)); eventArgs.gazeTarget = hit.transform.gameObject; eventArgs.gazeTransform = hit.transform; eventArgs.distance = hit.distance; } else { marker.transform.localPosition = new Vector3(0f, 0f, hit.distance - (marker.transform.localScale.z / 2)); eventArgs.distance = maxLength; } eventArgs.position = marker.transform.position; GazeMarkerSet(this, eventArgs); }
//------------------------------------------------------------------------------------------------------------------ // Event Handlers //------------------------------------------------------------------------------------------------------------------ protected virtual void DoGazeMarkerSet(object sender, GazeMarkerEventArgs e) { gazeDestination = e.position; gazeTarget = e.gazeTarget; }