예제 #1
0
 public void PointTowards(AttentionEvent e)
 {
     showFlicker = true;
     hAngle      = e.hAngle;
     vAngle      = e.vAngle;
     targetSize  = new Vector2(e.width, e.height);
     //rotateToFaceTarget.SetTarget(hAngle,vAngle);
     deactivator.UpdateTargetSize(e);
 }
예제 #2
0
 public void FollowTo(AttentionEvent e)
 {
     hidden     = false;
     following  = true;
     hAngle     = e.hAngle;
     vAngle     = e.vAngle;
     targetSize = new Vector2(e.width, e.height);
     rotateToFaceTarget.SetTarget(hAngle, vAngle);
     deactivator.UpdateTargetSize(e);
 }
예제 #3
0
    public static Vector2 GetClosestPointOnTarget(AttentionEvent e, Vector2 eyePositionInPixels)
    {
        // rotate the target rectangle until it's centered horizontally in the equirectangular
        var xDiff = (horizontalResolution / 2f) - e.targetHorPixel;

        var targetX = horizontalResolution / 2f; // we're moving the target xDiff so it's in the middle //e.targetHorPixel + xDiff;
        var targetY = e.targetVerPixel;

        // rotate the eye points Ex and Ey by the same amount
        var eyeX = eyePositionInPixels.x + xDiff;

        if (eyeX > horizontalResolution)
        {
            eyeX = eyeX - horizontalResolution; // wrap around;
        }
        else if (eyeX < 0f)
        {
            eyeX = eyeX + horizontalResolution;
        }
        var eyeY = eyePositionInPixels.y;

        // Calculate the closest point on the target to the eye point
        var largestBoxX           = targetX + (e.width / 2f);
        var smallestBoxX          = targetX - (e.width / 2f);
        var closestPointOnTargetX = Mathf.Min(largestBoxX, Mathf.Max(smallestBoxX, eyeX));

        var largestBoxY           = targetY + (e.height / 2f);
        var smallestBoxY          = targetY - (e.height / 2f);
        var closestPointOnTargetY = Mathf.Min(largestBoxY, Mathf.Max(smallestBoxY, eyeY));

        // De-rotate this point back into the original frame of reference and return
        var closestPointOnTargetXRotated = closestPointOnTargetX - xDiff;

        if (closestPointOnTargetXRotated < 0)
        {
            closestPointOnTargetXRotated = closestPointOnTargetXRotated + horizontalResolution;
        }
        else if (closestPointOnTargetXRotated > horizontalResolution)
        {
            closestPointOnTargetXRotated = closestPointOnTargetXRotated - horizontalResolution;
        }

        return(new Vector2(closestPointOnTargetXRotated, closestPointOnTargetY));
    }
예제 #4
0
    public void SetTargetBox(AttentionEvent e)
    {
        var lon = AngleHelperMethods.PixelCoordToLong(e.targetHorPixel - (e.width / 2f));
        var lat = AngleHelperMethods.PixelCoordToLat(e.targetVerPixel - (e.height / 2f));
        var pos = AngleHelperMethods.LonLatToPosition(lon, lat);

        nodePositions[0] = pos;

        lon = AngleHelperMethods.PixelCoordToLong(e.targetHorPixel - (e.width / 2f));
        lat = AngleHelperMethods.PixelCoordToLat(e.targetVerPixel + (e.height / 2f));
        pos = AngleHelperMethods.LonLatToPosition(lon, lat);
        nodePositions[1] = pos;

        lon = AngleHelperMethods.PixelCoordToLong(e.targetHorPixel + (e.width / 2f));
        lat = AngleHelperMethods.PixelCoordToLat(e.targetVerPixel + (e.height / 2f));
        pos = AngleHelperMethods.LonLatToPosition(lon, lat);
        nodePositions[2] = pos;

        lon = AngleHelperMethods.PixelCoordToLong(e.targetHorPixel + (e.width / 2f));
        lat = AngleHelperMethods.PixelCoordToLat(e.targetVerPixel - (e.height / 2f));
        pos = AngleHelperMethods.LonLatToPosition(lon, lat);
        nodePositions[3] = pos;
    }
 public void SetAttentionEvent(AttentionEvent ev)
 {
     e = ev;
 }
 public void Clear()
 {
     e = null;
 }
 public void UpdateTargetSize(AttentionEvent ev)
 {
     targetSize = new Vector2(ev.width, ev.height);
     e          = ev;
 }
 public void Clear()
 {
     e = null;
     targetPreviouslyEntered = false;
 }