コード例 #1
0
    public void Enable()
    {
        _disable = false;
        LookTypes current = LookTypes.lookAtPlayer;

        if (!_eyetracking)
        {
            current = LookTypes.stareAtObject;
        }
        switch (_manager.GetStoryState()) // Checks what story state the game is in.
        {
        case 1:
            // Start to 1st segment
            SetCurrentObject(zeroToOne);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 2:
            // 1st segment
            SetCurrentObject(zeroToOne);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 3:
            // 1st segment to 2nd segment
            SetCurrentObject(oneToTwo);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 4:
            // 2nd segment
            SetCurrentObject(oneToTwo);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 5:
            // 2nd segment to 3rd segment
            SetCurrentObject(twoToThree);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 6:
            // 3rd segment
            SetCurrentObject(twoToThree);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        case 7:
            // 3rd segment to end
            SetCurrentObject(threeToEnd);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;

        default:
            // If the lights shouldn't guide the player anywhere specific
            SetCurrentObject(zeroToOne);
            SetGazeTypeCurrent(current);
            SetGazeTypeReset(LookTypes.stareAtObject);
            break;
        }
    }
コード例 #2
0
 // Public Functions --------------------------------------------------------------------------
 public void SetGazeTypeCurrent(LookTypes look)
 {
     currentLookAt = look;
 }
コード例 #3
0
 public void SetGazeTypeReset(LookTypes resetLook)
 {
     resetLookAt = resetLook;
 }
コード例 #4
0
    // ------------- Update -----------------
    void Update()
    {
        if (_disable)
        {
            currentLookAt = LookTypes.idle;
        }

        switch (currentLookAt) // Checks which type of gaze the light should use
        {
        case LookTypes.followGaze:
            // Look at gaze
            varyAmount = varyAmountFollowGaze;
            innerAngle = standardInnerAngle;
            outerAngle = standardOuterAngle;
            turnTime   = resetTurnTime;
            pos        = PlayerGaze.FindPlayerGaze();
            pos        = DecideTargetGaze(pos);
            break;

        case LookTypes.stareAtGaze:
            // Stare at gaze (No / less saccades)
            varyAmount = varyAmountStareAtGaze;
            innerAngle = focusedInnerAngle;
            outerAngle = focusedOuterAngle;
            turnTime   = resetTurnTime;
            pos        = PlayerGaze.FindPlayerGaze();
            pos        = DecideTargetGaze(pos);
            break;

        case LookTypes.idle:
            // Idle
            varyAmount = varyAmountIdle;
            innerAngle = unfocusedInnerAngle;
            outerAngle = unfocusedOuterAngle;
            turnTime   = idleTurnTime;
            pos        = DecideIdlePoint();
            break;

        case LookTypes.stareAtObject:
            // Look at object
            varyAmount = varyAmountStareAtObject;
            innerAngle = focusedInnerAngle;
            outerAngle = focusedOuterAngle;
            turnTime   = resetTurnTime;
            pos        = currentObject.position;
            break;

        case LookTypes.distractingGaze:
            // Stare at spot in player FoV furthest from the bookshelf to distract them
            if (altGazeActive)     // Note: Might cause problems by causing the lights to use old information.
            {
                break;
            }
            varyAmount    = varyAmountStareAtObject;
            innerAngle    = focusedInnerAngle;
            outerAngle    = focusedOuterAngle;
            turnTime      = resetTurnTime;
            pos           = DecideDistractionPoint();
            distracting   = true;
            altLookTimer  = Time.time;
            altGazeActive = true;
            break;

        case LookTypes.alternateObjects:
            // Look at bookshelf and books alternatingly
            varyAmount = varyAmountStareAtObject;
            innerAngle = standardInnerAngle;
            outerAngle = standardOuterAngle;
            turnTime   = resetTurnTime;
            pos        = DecideObjectAlternateing(pos);
            break;

        case LookTypes.lookAtPlayer:
            // Look at the player character
            mainTimer  = 0;
            varyAmount = varyAmountStareAtObject;
            innerAngle = focusedInnerAngle;
            outerAngle = focusedOuterAngle;
            turnTime   = resetTurnTime;
            pos        = PlayerCharacter.position;
            if (!altGazeActive)
            {
                altLookTimer = Time.time;
            }
            altGazeActive = true;
            break;

        default:
            pos = PlayerGaze.FindPlayerGaze();
            break;
        }

        // Select target. Rotate to it. Saccade around it.
        if (Time.time - mainTimer > lastMoveTime && !moving)
        {
            CalcDoRotation(pos);
            // Resets the gaze mode/type
            if (Time.time - altLookTimer > altContinueTime && altGazeActive)
            {
                altGazeActive = false;
                altLookTimer  = 0;
                currentLookAt = resetLookAt;
            }
        }

        var position = thisTrans.position;

        Debug.DrawRay(position, pos - position,
                      Color.yellow);
    }