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; } }
// Public Functions -------------------------------------------------------------------------- public void SetGazeTypeCurrent(LookTypes look) { currentLookAt = look; }
public void SetGazeTypeReset(LookTypes resetLook) { resetLookAt = resetLook; }
// ------------- 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); }