using System; using UnityEngine; // Token: 0x02000007 RID: 7 public class RtsCamera : MonoBehaviour { // Token: 0x06000048 RID: 72 RVA: 0x00006DD8 File Offset: 0x00004FD8 private void Awake() { this._initialMinDistance = this.MinDistance; this.tr = base.transform; if (!this.cameraTarget) { this.CreateTarget(); } this.cam = base.gameObject.GetComponent(); this.groundPlane = new Plane(Vector3.up, 0f); this.groundPlaneDown = new Plane(Vector3.down, 0f); this.colliderPlane = new Plane(Vector3.up, 0f); this.cameraPlane = new Plane(Vector3.down, 250f); this.startNearClipPlane = this.cam.nearClipPlane; new GameObject("Bokeh Follow"); this._currOrtho = 13.5f; this.savedMinOrtho = this._currOrtho; this.Ortho = 13.5f; this.initialMinOrtho = this.MinOrtho; Shader.SetGlobalFloat("_CloseUp", 0f); Shader.SetGlobalFloat("_Perspective", 0f); this.topCam.farClipPlane = this.cam.farClipPlane; this.topCam.nearClipPlane = this.cam.nearClipPlane; this.savedNearClip = this.cam.nearClipPlane; this.savedFarClip = this.cam.farClipPlane; } // Token: 0x06000049 RID: 73 RVA: 0x00006F2C File Offset: 0x0000512C public void CameraStart() { this.cam.enabled = true; this.SetCameraParams(); this._initialLookAt = this.LookAt; this._initialDistance = this.Distance; this._initialRotation = this.Rotation; this._initialTilt = this.MinTilt; this._currDistance = this.Distance; this._currRotation = this.Rotation; this._currTilt = this.Tilt; this.cameraControls = Links.x.cameraControls; this.SavedZoomDampening = this.cameraControls.ZoomDampening; this.SavedMoveDampening = this.cameraControls.MoveDampening; Links.x.cameraEffects.CreateNormalsCamera(false); this.cameraTargetTr.parent = Links.x.gameplay.gameObject.transform; this.mainCameraCulling = this.cam.cullingMask; } // Token: 0x0600004A RID: 74 RVA: 0x00007016 File Offset: 0x00005216 public void SetCameraParams() { if (!this.cam) { this.cam = base.gameObject.GetComponent(); } this.SetShadows(); QualitySettings.shadowNearPlaneOffset = 0f; } // Token: 0x0600004B RID: 75 RVA: 0x00007048 File Offset: 0x00005248 public void SetShadows() { if (Records.x.inMenus || Records.x.dialogue || Links.x.rallyStage.playing) { if (Records.x.windows) { QualitySettings.shadowDistance = 300f; QualitySettings.shadowProjection = ShadowProjection.CloseFit; return; } if (QualitySettings.shadowDistance > 200f) { QualitySettings.shadowDistance = 25f; return; } } else { if (Records.x.windows) { QualitySettings.shadowDistance = 250f; QualitySettings.shadowProjection = ShadowProjection.StableFit; return; } if (QualitySettings.shadowDistance < 200f) { QualitySettings.shadowDistance = 250f; } } } // Token: 0x0600004C RID: 76 RVA: 0x000070E5 File Offset: 0x000052E5 public void SwitchScene() { this.Tilt = 33f; this.sceneName = Links.x.diorama.sceneName; } // Token: 0x0600004D RID: 77 RVA: 0x00007107 File Offset: 0x00005307 public void StartShake(string type) { if (Links.x.options.screenShake) { this.cameraShake = true; this.cameraShakeTime = Time.timeSinceLevelLoad; this.cameraShakeType = type; } } // Token: 0x0600004E RID: 78 RVA: 0x00007138 File Offset: 0x00005338 private void LateUpdate() { this.DoUpdate(); this.UpdateCamera(); } // Token: 0x0600004F RID: 79 RVA: 0x00007148 File Offset: 0x00005348 private void DoUpdate() { Vector3 lookAt = this.LookAt; if (!this.puzzleTarget) { if (Links.x.main) { Shader.SetGlobalVector("_PlayerShadowPosition", Links.x.main.tr.position + new Vector3(0f, 3f, 0f)); } } else { Shader.SetGlobalVector("_PlayerShadowPosition", this.puzzleTarget.transform.position + new Vector3(0f, 3f, 0f)); } this.SetShadows(); if (Links.x.hasMain && !this.puzzleTarget) { bool flag = this.AreCharacterAndCameraTogether(); SceneCamera sceneCamera = this.ShouldCharacterBeInPerspectiveCamera(); bool flag2 = this.ShouldCharacterBeInOrthoCamera(); if (sceneCamera) { flag2 = false; } if (Links.x.main.indoorID != "" && Links.x.main.indoorID != "?" && this.currentBoundsName != Links.x.main.indoorID) { this.GetCameraBounds(); } if (!Links.x.cameraEffects.transitioning && Links.x.gaia.sceneLoaded && !Links.x.combat.inPocketAttack) { if (!flag) { if (Links.x.main.indoorID != "" && !Links.x.cameraEffects.indoors) { this.JumpTo(Links.x.main.tr, true); } if (Links.x.main.indoorID == "" && Links.x.cameraEffects.indoors) { this.JumpTo(Links.x.main.tr, true); } this.GetCameraBounds(); this.doorJumpCharacter = null; this.Jump(Links.x.main.tr.position); } if (!Links.x.inspectTextAnimator.gameObject.activeSelf || (Links.x.inspectTextAnimator.gameObject.activeSelf && Links.x.inspectTextAnimator.GetCurrentAnimatorStateInfo(0).IsName("InspectOff"))) { if (sceneCamera) { string text = Links.x.diorama.GetIndoorView().GetInteriorBoundsName(Links.x.main.tr.position); if (text == "?") { text = ""; } Records.x.inspectCamera = sceneCamera; if (text == "" || text == "?") { Records.x.previousView = Links.x.diorama.GetOutdoorView(); } else { Records.x.previousView = Links.x.diorama.GetIndoorView(); } Links.x.diorama.ToggleSceneCameras(Records.x.inspectCamera.isInterior, Records.x.inspectCamera.id); Links.x.rtsCamera.CopyPerspectiveCamera(Links.x.diorama.activeView.sceneCamera, null, null); Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); Records.x.inspecting = true; } else if (flag2 && !Records.x.removeControls && this.savedPerspectiveCam != null && !this.cam.orthographic) { Records.x.previousView = null; if (Links.x.main.indoorID != "" && Links.x.main.indoorID != "?") { Records.x.previousView = Links.x.diorama.GetIndoorView(); } else { Records.x.previousView = Links.x.diorama.GetOutdoorView(); } Records.x.inspecting = false; Links.x.diorama.ToggleSceneCameras(true, Records.x.previousView.id); Links.x.rtsCamera.ReturnOrthographicCamera(); Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); Records.x.inspectCamera = null; } } } } if (!this.cam.orthographic) { return; } if (Time.timeScale > 0.95f) { this.currentTimeDelta = Time.deltaTime; if (Records.x.filming) { this.currentTimeDelta = Time.deltaTime * Records.x.filmingAnimatorSpeed; } } else { this.currentTimeDelta = Time.unscaledDeltaTime; this.cameraShakeTime = 0f; this.cameraShake = false; } if (this.cameraShake) { float num = 0.5f; if (this.cameraShakeType == "Small") { num = 0.15f; } if (Time.timeSinceLevelLoad > this.cameraShakeTime + num) { this.cameraShakeTime = 0f; this.cameraShake = false; } } if (Records.x.mainMenuOpen) { if (this.IsFollowing) { this.EndFollow(); } this.cameraTargetTr.position = new Vector3(10000f, 100000f, 10000f); } if (!this.cam || !this.cameraTarget || !Links.x) { return; } if (Records.x.saving || !Links.x.gameplay) { return; } if (Links.x.cameraEffects.transitioning) { return; } this.worldMousePosition = this.cameraTargetTr.position; bool flag3 = false; Ray ray = Links.x.worldCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f)); RaycastHit raycastHit; if (Physics.Raycast(ray, out raycastHit, 1000f, 4456465)) { this.worldMousePosition = raycastHit.point; flag3 = true; GameObject gameObject = raycastHit.collider.gameObject; this.prevWorldMousePosition = this.worldMousePosition; } if (!flag3) { Plane plane = new Plane(Vector3.up, this.prevWorldMousePosition); float num2; if (plane.Raycast(ray, out num2)) { this.worldMousePosition = ray.GetPoint(num2); flag3 = true; } } this.cameraMiddleWorldPosition = this.cameraTargetTr.position; if (Physics.Raycast(this.tr.position, this.tr.forward, out raycastHit, 1000f, 4456465)) { this.cameraMiddleWorldPosition = raycastHit.point; } else { Ray ray2 = new Ray(this.tr.position, this.tr.forward); Plane plane2 = new Plane(Vector3.up, this.cameraTargetTr.position); float num3; if (plane2.Raycast(ray2, out num3)) { this.cameraMiddleWorldPosition = ray2.GetPoint(num3); } } if (this.cam.orthographic) { this.bokehFollow.position = this.cameraMiddleWorldPosition; } if (this.puzzleTarget) { this.bokehFollow.position = this.puzzleTarget.transform.position + new Vector3(0f, 1f, 0f) + this.tr.forward * -0.3f; } else if (this.followCharacter && this.followTarget && this.cam.orthographic) { this.bokehFollow.position = this.followCharacter.body.GetNeck().position + new Vector3(0f, 0.25f, 0f) + this.tr.forward * -0.3f; } if (!Records.x.removeControls && !Records.x.pocketPause && (!this.IsFollowing || !this.followTarget) && Links.x.main) { this.Follow(Links.x.main.tr, Links.x.main, false); } if (this.IsFollowing && this.followTarget && Links.x.gaia.sceneLoaded) { bool flag4 = false; if (Records.x.turnBased && Records.x.InCombat(false)) { flag4 = true; } if (!flag4) { Transform transform = this.followTarget.transform; if (this.followCharacter && !Records.x.dialogue) { transform = this.followCharacter.tr; } else if (this.followCharacter && Records.x.dialogue) { transform = this.followCharacter.tr; } if (transform) { Vector3 vector = transform.position; if (this.inspecting) { this.LookAt = vector; } else { if (this.followCharacter) { if (this.followCharacter.body.currentHash == this.followCharacter.body.walkStartHash || this.followCharacter.body.currentHash == this.followCharacter.body.combatWalkStartHash || this.followCharacter.body.currentHash == this.followCharacter.body.creepStartHash) { vector = Vector3.Lerp(this.LookAt, this.followCharacter.tr.position, this.currentTimeDelta * 20f); } else if (this.followCharacter.sailing) { vector = Vector3.Lerp(this.LookAt, this.followCharacter.tr.position, this.currentTimeDelta * 10f); } else { vector = Vector3.Lerp(this.LookAt, this.followCharacter.tr.position, this.currentTimeDelta * 35f); } vector.y = Mathf.Lerp(this.LookAt.y, this.followCharacter.tr.position.y, this.currentTimeDelta * 15f); if (this.followCharacter.sailing) { vector.y = Links.x.gaia.boat.boatFollow.position.y; } } else { vector = this.followTarget.position; } if (Records.x.pocketPause && (Links.x.combat.pickingRally || Links.x.combat.inRally)) { vector = Links.x.attackDome.transform.position; } if (Records.x.pocketPause && Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.selectedRallyCharacter) { vector = Links.x.pocketWheel.selectedRallyCharacter.tr.position; } if (Records.x.pocketPause && Links.x.joy && this.targetSelecting && this.joyTarget) { vector = Vector3.Lerp(this.LookAt, this.joyTarget.transform.position, this.currentTimeDelta * 5f); this.returningLerp = true; } if (Links.x.combat.pocketTarget && !Links.x.combat.inPocketAttack && (Links.x.combat.pocketTargetPosition - Links.x.main.currentPosition).sqrMagnitude < 1600f) { float num4 = 0.5f; if (Links.x.gameplay.attackingCharacter.invRow1._MeleeRangeEnd < 5f) { num4 = 0.75f; } vector = Vector3.Lerp(Links.x.gameplay.attackingCharacter.tr.position, Links.x.combat.pocketTargetPosition, num4); this.returningLerp = true; } if (Records.x.pocketPause && Links.x.combat.inPocketAttack && this.pocketPoint != Vector3.zero) { vector = Vector3.Lerp(this.LookAt, this.pocketPoint, this.currentTimeDelta * 5f); } if (Links.x.combat.bubbleEventTarget && (Links.x.combat.bubbleEventTargetPosition - Links.x.main.currentPosition).sqrMagnitude < 8100f) { if (Links.x.attackDome.transform.position != Vector3.zero) { vector = Vector3.Lerp(Links.x.attackDome.transform.position, Links.x.combat.bubbleEventTargetPosition, 0.8f); } else { vector = Links.x.combat.bubbleEventTargetPosition; } this.returningLerp = true; } if (this.puzzleTarget && this.puzzleLerp) { if (Links.x.combat.inPocketAttack) { Vector3 vector2 = Vector3.Lerp(this.pocketPoint, this.puzzleTarget.transform.position, 0.5f); vector = Vector3.Lerp(this.LookAt, vector2, this.currentTimeDelta * 5f); } else { vector = Vector3.Lerp(this.LookAt, this.puzzleTarget.transform.position, this.currentTimeDelta * 10f); } this.returningLerp = true; } if (this.puzzleTarget && !this.puzzleLerp) { this.returningLerp = false; this.LookAt = this.puzzleTarget.transform.position; vector = this.LookAt; } if (this.returningLerp && !this.puzzleTarget && !Links.x.combat.inRally && this.followCharacter) { float sqrMagnitude = (new Vector3(this.followCharacter.tr.position.x, this.cameraTargetTr.position.y, this.followCharacter.tr.position.z) - this.cameraTargetTr.position).sqrMagnitude; if ((sqrMagnitude < 0.010000001f && this.followCharacter.moving) || sqrMagnitude <= 9.999999E-09f) { this.returningLerp = false; } } this.LookAt = Vector3.Lerp(this.LookAt, vector, this.currentTimeDelta * 25f); if (this.puzzleSnapCamera) { this.LookAt = vector; } if (this.cameraShake) { if (this.cameraShakeType == "Small") { this.LookAt += Random.insideUnitSphere * 0.1f; } else { this.LookAt += Random.insideUnitSphere * 0.4f; } } if (this.singleJumpFrame > 0) { this.LookAt = this.followCharacter.tr.position; } } } } else { Transform transform2 = this.followTarget.transform; if (this.followCharacter) { transform2 = this.followCharacter.moveFollow; } Vector3 position = transform2.position; if (!this.TargetInSight(transform2)) { Vector3 vector3 = Links.x.worldCamera.WorldToViewportPoint(transform2.position); Vector3 vector4 = Links.x.worldCamera.WorldToViewportPoint(this.cameraTargetTr.position); Vector3 vector5 = vector3 - vector4; this.AddToPosition(vector5.x, 0f, vector5.y); Vector3 vector6 = this.LookAt + Quaternion.Euler(0f, this.Rotation, 0f) * this._moveVector; this.LookAt = vector6; } } } else if (Records.x.InCombat(false) && Records.x.turnBased) { this._moveVector.y = 0f; Vector3 vector7 = this.LookAt + Quaternion.Euler(0f, this.Rotation, 0f) * this._moveVector - Links.x.combat.domeCenter; this.LookAt = Links.x.combat.domeCenter + Vector3.ClampMagnitude(vector7, 20f); } else { Vector3 lookAt2 = this.LookAt; Vector3 position2 = this.cameraTargetTr.position; if (!this.inspecting) { if (Input.GetMouseButton(2)) { if (this.panning && flag3 && !Input.GetMouseButtonDown(2)) { Vector3 vector8 = this.worldMousePosition - this.touchStart; this.LookAt = this.cameraTargetTr.position; vector8 = this.worldMousePosition - this.touchStart; this.LookAt -= vector8; } } else { this._moveVector.y = 0f; Vector3 vector9 = this.LookAt + Quaternion.Euler(0f, this.Rotation, 0f) * this._moveVector; this.LookAt = vector9; } } if (Input.GetMouseButtonUp(2) && this.panning) { this.panning = false; Links.x.hudControl.ToggleBothCanvasGroup(true); this.LookAt = this.cameraTargetTr.position; } } if (!Input.GetMouseButton(2)) { if (this.inspecting || !flag3) { this.cursor.transform.position = Links.x.gameplay.farPosition; } else { this.cursor.transform.position = this.worldMousePosition; } } if (float.IsNaN(this.LookAt.x)) { this.LookAt = lookAt; } this.prevCameraPlace = this.LookAt; float num5 = this.scroll; float ortho = this.Ortho; bool flag5 = false; if ((Records.x.secrets || Records.x.editor) && (Input.GetKey(KeyCode.LeftBracket) || Input.GetKey(KeyCode.RightBracket))) { flag5 = true; } if (flag5 && this.Tilt > 30f && !Records.x.removeControls) { if (Links.x.mk) { if (this.cameraControls && !Links.x.gameplay.uiHover) { float axisRaw = Input.GetAxisRaw(this.cameraControls.ZoomInputAxis); this.Ortho -= axisRaw * this.cameraControls.ZoomSpeed * this.currentTimeDelta * 2f; } } else if (Links.x.gameplay.dockDown && Links.x.gaia.sceneLoaded && !Links.x.gameplay.gameFeedScrolling && !Records.x.inMenus && !Records.x.typing && !Records.x.removeControls && Mathf.Abs(Links.x.fellowship.direction.y) > 0.25f) { float num6 = Links.x.fellowship.direction.y * 0.05f; this.Ortho -= num6 * this.cameraControls.ZoomSpeed * this.currentTimeDelta * 2f; } } if (Records.x.partySailing) { this.Ortho = Mathf.Clamp(this.Ortho, this.MinOrtho, this.MaxOrtho + 5f); } else { this.Ortho = Mathf.Clamp(this.Ortho, this.MinOrtho, this.MaxOrtho); } this.Distance = Mathf.Clamp(this.Distance, this.MinDistance, this.MaxDistance); if (this.cameraControls) { if (this.cameraControls.Smoothing && this.singleJumpFrame <= 0 && !this.inspecting) { float num7 = this.cameraControls.ZoomDampening; if (!Records.x.pocketPause && !Records.x.removeControls && !Records.x.dialogue && !this.puzzleLerp && !this.returningLerp && !this.puzzleTarget) { num7 = 5f; } else if (this.puzzleTarget) { num7 = 0.5f; } else if (Links.x.combat.inPocketAttack || Links.x.combat.bubbleEvent) { num7 = 1f; } else if (Links.x.combat.pocketTarget && !Links.x.combat.inPocketAttack && !Links.x.combat.bubbleEvent) { num7 = Mathf.Lerp(6f, 0.1f, Mathf.Clamp((this.MaxOrtho - this._currOrtho) / 2f, 0f, 1f)); } else { num7 = 5f; } this._currOrtho = Mathf.Lerp(this._currOrtho, this.Ortho, this.currentTimeDelta * num7); } else { this._currOrtho = this.Ortho; } } Vector3 lookAt3 = this.LookAt; this.ConstrainCameraBounds(); if (lookAt3 == this.LookAt && this.currentBoundsName != "" && !this.puzzleTarget) { this.LookAt = new Vector3(Mathf.Clamp(this.LookAt.x, this.MinBounds.x, this.MaxBounds.x), this.LookAt.y, Mathf.Clamp(this.LookAt.z, this.MinBounds.z, this.MaxBounds.z)); } if (this.cameraControls) { float moveDampening = this.cameraControls.MoveDampening; float num8 = this.cameraControls.RotationDampening; float num9 = this.cameraControls.TiltDampening; if (this.slowDialogue) { num9 = 5f; num8 = 1f; } if (this.cameraControls.Smoothing && this.singleJumpFrame <= 0 && !this.inspecting && (ortho == this.Ortho || Records.x.dialogue)) { if (!Links.x.gaia.sceneLoaded) { this.cameraTargetTr.position = this.LookAt; } else { bool flag6 = false; if (this.followCharacter && !this.followCharacter.mainSelected) { flag6 = true; } if (!this.puzzleSnapCamera && ((this.puzzleTarget && this.puzzleLerp) || this.returningLerp || Records.x.pocketPause || Records.x.removeControls)) { float num10 = 5f; if (!Records.x.pocketPause && this.returningLerp && !Records.x.removeControls && !this.puzzleSnapCamera) { float num11 = Vector3.Distance(Links.x.main.currentPosition, this.cameraTargetTr.position); num10 = Mathf.Lerp(5f, 10f, Mathf.Clamp(num11 / 20f - 1f, 0f, 1f)); } this.cameraTargetTr.position = Vector3.Lerp(this.cameraTargetTr.position, this.LookAt, this.currentTimeDelta * num10); } else if (flag6 && !this.puzzleSnapCamera) { this.cameraTargetTr.position = Vector3.Lerp(this.cameraTargetTr.position, this.LookAt, this.currentTimeDelta * 4f); } else { this.cameraTargetTr.position = this.LookAt; } } } else { this.cameraTargetTr.position = this.LookAt; } if (this.cameraControls.Smoothing && this.singleJumpFrame <= 0 && !this.inspecting) { this._currRotation = Mathf.LerpAngle(this._currRotation, this.Rotation, this.currentTimeDelta * num8); this._currDistance = this.Distance; this._currTilt = Mathf.LerpAngle(this._currTilt, this.Tilt, this.currentTimeDelta * num9); } else { this._currRotation = this.Rotation; this._currDistance = this.Distance; this._currTilt = this.Tilt; this._currOrtho = this.Ortho; this.singleJumpFrame--; } if (Links.x.diorama && Links.x.diorama.globalVegVolume && (Links.x.diorama.globalVegVolume.position - this.cameraTargetTr.position).sqrMagnitude > 400f) { Links.x.diorama.globalVegVolume.position = this.cameraTargetTr.position; } } this._moveVector = Vector3.zero; this.cameraTargetPosition = this.cameraTargetTr.position; } // Token: 0x06000050 RID: 80 RVA: 0x00008BA4 File Offset: 0x00006DA4 private void UpdateCamera() { if (!this.cam || !this.cameraTarget) { return; } if (this.cam.orthographic) { Quaternion quaternion = Quaternion.Euler(this._currTilt, this._currRotation, 0f); Vector3 vector = new Vector3(0f, 0f, -this._currDistance); Vector3 vector2 = quaternion * vector + this.cameraTargetTr.position; this.cam.orthographicSize = this._currOrtho; this.topCam.orthographicSize = this._currOrtho; this.tr.rotation = quaternion; this.tr.position = vector2; } if (Links.x.gaia.sceneLoaded) { Links.x.hudControl.NearButtonLocations(); Links.x.inventory.groundBag.itemLabelGrid.ItemLabels(); } } // Token: 0x06000051 RID: 81 RVA: 0x00008C98 File Offset: 0x00006E98 public void Zoom(bool state, string type) { if (!state && this.zoomCount == 0) { return; } this.slowDialogue = false; if (!state) { this.zoomCount = 0; if (type == "Synergy2" || type == "Synergy" || type == "Pocket") { this.MinOrtho = this.initialMinOrtho; if (this.prevZoomed == 0f) { this.Ortho = this.savedMinOrtho; } else { this.Ortho = this.savedMinOrtho; } if (Records.x.partySailing) { this.Ortho += 5f; } this.Tilt = this.prevTilt; this.Rotation = this.prevRotation; this._currRotation = this.Rotation; this._currTilt = this.Tilt; this._currOrtho = this.Ortho; this.returningLerp = false; this.LookAt = Links.x.main.tr.position; this.cameraTargetTr.position = this.LookAt; if (this.returnPerspective) { this.CopyPerspectiveCamera(this.returnPerspective, null, null); this.returnPerspective = null; } this.UpdateCamera(); this.cam.backgroundColor = Color.black; } else { this.MinOrtho = this.initialMinOrtho; if (this.Tilt < 30f && this.prevTilt != 0f) { this.Tilt = this.prevTilt; } if (this.prevZoomed == 0f) { this.Ortho = this.savedMinOrtho; } else { this.Ortho = this.savedMinOrtho; } if (Records.x.partySailing) { this.Ortho += 5f; } } this.prevZoomed = 0f; return; } this.zoomCount++; this.cameraControls.MoveDampening = this.SavedMoveDampening * 5f; if (this.prevZoomed == 0f) { this.prevZoomed = this.Ortho; this.prevTilt = this.Tilt; this.prevRotation = this.Rotation; this.savedOrtho = this.Ortho; } this.MinTilt = 1f; if (type == "Dialogue") { this.MinOrtho = 10f; this.Ortho = this.MinOrtho; return; } float num = 0f; if (Records.x.partySailing) { num += 5f; } if (type == "Synergy") { this.MinOrtho = 7f + num; this.Ortho = this.MinOrtho; this._currOrtho = this.Ortho; this.Tilt = 5f; this._currTilt = this.Tilt; string text = "Saved persp cam "; Camera camera = this.savedPerspectiveCam; Debug.Log(text + ((camera != null) ? camera.ToString() : null)); if (this.savedPerspectiveCam) { this.returnPerspective = this.savedPerspectiveCam; this.ReturnOrthographicCamera(); this._currRotation = this.Rotation; this._currTilt = this.Tilt; this._currOrtho = this.Ortho; this.returningLerp = false; this.cameraTargetTr.position = Links.x.combat.rallyTarget.tr.position + new Vector3(0f, 2f, 0f); this.LookAt = this.cameraTargetTr.position; this.UpdateCamera(); } this.RotateToLookAtTheSide(0, Links.x.main, Links.x.combat.rallyTarget); this.UpdateCamera(); this.cam.backgroundColor = this.synergy1 * 0.2f; return; } if (type == "Synergy2") { this.MinOrtho = 6f + num; this.Ortho = this.MinOrtho; this.Tilt = 10f; if (this.savedPerspectiveCam) { this.returnPerspective = this.savedPerspectiveCam; this.ReturnOrthographicCamera(); this._currRotation = this.Rotation; this._currTilt = this.Tilt; this._currOrtho = this.Ortho; this.returningLerp = false; this.cameraTargetTr.position = Links.x.combat.rallyTarget.tr.position + new Vector3(0f, 2f, 0f); this.LookAt = this.cameraTargetTr.position; this.UpdateCamera(); } this.cam.backgroundColor = this.synergy2 * 0.2f; return; } if (type == "Pocket") { this.MinOrtho = 8f + num; this.Ortho = this.MinOrtho; this.Tilt = 15f; if (this.savedPerspectiveCam) { this.returnPerspective = this.savedPerspectiveCam; this.ReturnOrthographicCamera(); this._currRotation = this.Rotation; this._currTilt = this.Tilt; this._currOrtho = this.Ortho; this.returningLerp = false; this.cameraTargetTr.position = Links.x.combat.rallyTarget.tr.position + new Vector3(0f, 2f, 0f); this.LookAt = this.cameraTargetTr.position; this.UpdateCamera(); } int portraitOrder = Links.x.GetPortraitOrder(Links.x.main); if (portraitOrder == 0) { this.cam.backgroundColor = this.player1 * 0.2f; return; } if (portraitOrder == 1) { this.cam.backgroundColor = this.player2 * 0.2f; return; } if (portraitOrder == 2) { this.cam.backgroundColor = this.player3 * 0.2f; return; } this.cam.backgroundColor = this.player4 * 0.2f; return; } else { if (type == "Combat") { this.MinOrtho = 10f + num; this.Ortho = this.MinOrtho; return; } if (type == "MainCharacterQTE") { this.MinOrtho = 9f + num; this.Ortho = this.MinOrtho; return; } if (type == "MainCharacterQTERange") { this.MinOrtho = 11f + num; this.Ortho = this.MinOrtho; return; } if (type == "MainCharacterQTERallyPick") { this.MinOrtho = 11f + num; this.Ortho = this.MinOrtho; return; } if (type == "TargetSelect") { this.MinOrtho = 13f + num; this.Ortho = this.MinOrtho; return; } this.MinOrtho = 12f + num; this.Ortho = this.MinOrtho; return; } } // Token: 0x06000052 RID: 82 RVA: 0x0000939C File Offset: 0x0000759C private float GetDialogueTilt(Character character1, Character character2) { float num = 15f; if (Vector3.Distance(character1.tr.position, character2.tr.position) < 4f) { num = 20f; } return num; } // Token: 0x06000053 RID: 83 RVA: 0x000093D8 File Offset: 0x000075D8 public void DialogueZoom(string zoomActor) { if (this.prevZoomed == 0f) { this.prevZoomed = this.Distance; this.prevTilt = this.Tilt; this.prevRotation = this.Rotation; } Character selectedDialogueCharacter = Links.x.dialogue.GetSelectedDialogueCharacter(); if (zoomActor == "Party") { Links.x.dialogue.UpdateToFace(selectedDialogueCharacter); } else if (zoomActor == "NPC") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc1); } else if (zoomActor == "NPC2") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc2); } else if (zoomActor == "NPC3") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc3); } else if (zoomActor == "NPC4") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc4); } else if (zoomActor == "Responder") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.respondCharacter); } if (this.followCharacter) { this.followCharacter.indoorID != this.currentBoundsName; this.dialogueHeight = this.followCharacter.body.headBone.position.y - this.followCharacter.tr.position.y; } this.slowDialogue = true; } // Token: 0x06000054 RID: 84 RVA: 0x00009590 File Offset: 0x00007790 public void DialogueRotation(string zoomActor) { if (zoomActor == "Party") { Character selectedDialogueCharacter = Links.x.dialogue.GetSelectedDialogueCharacter(); Links.x.dialogue.UpdateToFace(selectedDialogueCharacter); return; } if (zoomActor == "NPC") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc1); return; } if (zoomActor == "NPC2") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc2); return; } if (zoomActor == "NPC3") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.npc3); return; } if (zoomActor == "Responder") { Links.x.dialogue.UpdateToFace(Links.x.dialogue.respondCharacter); } } // Token: 0x06000055 RID: 85 RVA: 0x0000967C File Offset: 0x0000787C public bool RotateToLookAtTheSide(int attempt, Character character1, Character character2) { float tilt = this.Tilt; float rotation = this.Rotation; Vector3 position = character1.tr.position; Vector3 position2 = character2.tr.position; float num = -1f; Random.Range(0, 2); float num2 = rotation; bool flag = false; for (int i = 0; i < 60; i++) { if (!flag) { num2 += 6f; if (num2 > 360f) { num2 -= 360f; } if (num2 < 220f && num2 > 60f) { Quaternion quaternion = Quaternion.Euler(tilt, num2, 0f); Vector3 vector = new Vector3(0f, 0f, -1f); Vector3 vector2 = quaternion * vector + position; Vector3 vector3 = Quaternion.LookRotation(position - new Vector3(vector2.x, position.y, vector2.z)) * Vector3.forward; Vector3 vector4 = Vector3.Normalize(position2 - new Vector3(vector2.x, position2.y, vector2.z)); float num3 = Vector3.Dot(vector3, vector4); if (num3 < 0.15f && num3 > -0.15f) { num = num2; flag = true; break; } } } } if (num > -1f) { this.Rotation = num2; } return flag; } // Token: 0x06000056 RID: 86 RVA: 0x000097CF File Offset: 0x000079CF public void ToggleSailing() { if (Records.x.partySailing) { this.Ortho = this.savedMinOrtho + 5f; return; } this.Ortho = this.savedMinOrtho; } // Token: 0x06000057 RID: 87 RVA: 0x000097FC File Offset: 0x000079FC public void GetCameraBounds() { if (!Links.x.diorama) { return; } BoxCollider boxCollider = this.coll; this.coll = null; if (Links.x.cameraEffects.indoors) { if (this.doorJumpCharacter) { if (Links.x.diorama.activeView) { this.coll = Links.x.diorama.GetIndoorView().GetInteriorCamera(this.doorJumpCharacter.indoorID); this.currentBoundsName = this.doorJumpCharacter.indoorID; } } else if (!this.doorJumpCharacter && this.followCharacter) { if (Links.x.diorama.activeView) { this.coll = Links.x.diorama.GetIndoorView().GetInteriorCamera(this.followCharacter.indoorID); this.currentBoundsName = this.followCharacter.indoorID; } } else { this.coll = Links.x.diorama.GetIndoorView().cameraCollider; this.currentBoundsName = ""; } this.colliderPlane.SetNormalAndPosition(Vector3.up, new Vector3(0f, Links.x.diorama.GetIndoorView().cameraCollider.bounds.center.y, 0f)); } else if (Links.x.diorama.activeView) { this.currentBoundsName = ""; this.coll = Links.x.diorama.GetOutdoorView().cameraCollider; this.colliderPlane.SetNormalAndPosition(Vector3.up, new Vector3(0f, this.coll.bounds.center.y, 0f)); } if (this.coll && boxCollider != this.coll && this.currentBoundsName != "") { Links.x.diorama.ToggleSceneCameras(true, Links.x.diorama.GetCurrentCaptureCameraID()); if (Links.x.gaia.sceneLoaded && Links.x.sceneMap.undergroundMap) { Links.x.sceneMap.undergroundMap.ChangedArea(this.currentBoundsName); } } if (this.coll) { this.coll.enabled = true; Bounds bounds = this.coll.bounds; float x = this.coll.bounds.size.x; float z = this.coll.bounds.size.z; float num = this.coll.bounds.center.x - x / 2f; float num2 = this.coll.bounds.center.x + x / 2f; float num3 = this.coll.bounds.center.z - z / 2f; float num4 = this.coll.bounds.center.z + z / 2f; this.MinBounds = new Vector3(num, -1000f, num3); this.MaxBounds = new Vector3(num2, 1000f, num4); if (Links.x.cameraEffects.indoors) { this.coll.enabled = false; } if (this.needToJump) { this.Jump(Links.x.main.tr.position); this.needToJump = false; } Links.x.cameraEffects.SetShadowInfo(); } } // Token: 0x06000058 RID: 88 RVA: 0x00009BD4 File Offset: 0x00007DD4 public void UpdateDialogueCharacterPosition(Character bokehFollowCharacter) { this.bokehFollow.position = bokehFollowCharacter.body.GetNeck().position + new Vector3(0f, 0.25f, 0f) + this.tr.forward * -0.3f; } // Token: 0x06000059 RID: 89 RVA: 0x00009C2F File Offset: 0x00007E2F public void UpdatePerspectiveCameraSize() { if (!this.cam) { return; } if (!this.cam.orthographic && this.savedPerspectiveCam) { this.SetPerspectiveCameraInfo(this.savedPerspectiveCam); } } // Token: 0x0600005A RID: 90 RVA: 0x00009C68 File Offset: 0x00007E68 public void SetPerspectiveCameraInfo(Camera perspectiveCam) { float num = perspectiveCam.fieldOfView * (1.7777778f / ((float)Screen.width / (float)Screen.height)); if ((float)Screen.width / (float)Screen.height >= 1.7777778f) { num = perspectiveCam.fieldOfView; } this.cam.orthographic = false; this.cam.fieldOfView = num; this.cam.farClipPlane = perspectiveCam.farClipPlane; this.cam.nearClipPlane = perspectiveCam.nearClipPlane; this.tr.position = perspectiveCam.gameObject.transform.position; this.tr.rotation = perspectiveCam.gameObject.transform.rotation; this.topCam.orthographic = false; this.topCam.fieldOfView = num; this.topCam.farClipPlane = this.cam.farClipPlane; this.topCam.nearClipPlane = this.cam.nearClipPlane; Links.x.cameraEffects.ToggleObscurance(); if (Links.x.diorama && Links.x.main && Links.x.main.node != null) { Links.x.diorama.UpdateMapExits(Links.x.main.node.Area); } } // Token: 0x0600005B RID: 91 RVA: 0x00009DC4 File Offset: 0x00007FC4 public void CopyPerspectiveCamera(Camera perspectiveCam, Transform bokehFollowTransform, Character bokehFollowCharacter) { if (this.cam.orthographic) { this.savedOrthoPosition = this.tr.position; this.savedOrthoLookAt = this.LookAt; this.savedOrthoSize = this._currOrtho; this.savedOrthoRotation = this._currRotation; this.savedOrthoDistance = this._currDistance; this.savedFarClip = this.cam.farClipPlane; this.savedNearClip = this.cam.nearClipPlane; } this.SetPerspectiveCameraInfo(perspectiveCam); Transform parent = perspectiveCam.gameObject.transform.parent; if (parent) { foreach (object obj in parent) { Transform transform = (Transform)obj; if (transform.gameObject.name.Contains("oint")) { bokehFollowTransform = transform; } } } this.savedPerspectiveCam = perspectiveCam; if (bokehFollowCharacter) { this.bokehFollow.position = bokehFollowCharacter.body.GetNeck().position + new Vector3(0f, 0.25f, 0f) + this.tr.forward * -0.3f; } else if (bokehFollowTransform) { this.bokehFollow.position = bokehFollowTransform.position; } else { Vector3 vector = this.cameraTargetTr.position + new Vector3(0f, 2.5f, 0f); RaycastHit raycastHit; if (Physics.Raycast(this.tr.position, this.tr.forward, out raycastHit, 1000f, 4456465)) { vector = raycastHit.point + new Vector3(0f, 2.5f, 0f); } this.bokehFollow.position = vector; } Shader.SetGlobalFloat("_CloseUp", 1f); Shader.SetGlobalFloat("_Perspective", 1f); } // Token: 0x0600005C RID: 92 RVA: 0x00009FD4 File Offset: 0x000081D4 public void ReturnOrthographicCamera() { Shader.SetGlobalFloat("_CloseUp", 0f); Shader.SetGlobalFloat("_Perspective", 0f); this.tr.position = this.savedOrthoPosition; this.LookAt = this.savedOrthoLookAt; this.cameraTargetTr.position = this.LookAt; this._currOrtho = this.savedOrthoSize; this._currRotation = this.savedOrthoRotation; this._currDistance = this.savedOrthoDistance; this.cam.orthographic = true; this.cam.farClipPlane = this.savedFarClip; this.cam.nearClipPlane = this.savedNearClip; this.topCam.orthographic = true; this.topCam.farClipPlane = this.cam.farClipPlane; this.topCam.nearClipPlane = this.cam.nearClipPlane; this.UpdateCamera(); this.savedPerspectiveCam = null; Links.x.cameraEffects.ToggleObscurance(); } // Token: 0x0600005D RID: 93 RVA: 0x0000A0D3 File Offset: 0x000082D3 public void MouseUpdate() { bool flag = this.inspecting; } // Token: 0x0600005E RID: 94 RVA: 0x0000A0DC File Offset: 0x000082DC public void KeyUpdate() { if (Records.x.typing) { return; } if (Records.x.dialogue) { return; } if (this.inspecting) { return; } if (this.cameraControls.AllowRotate && this.cameraControls.RotateUsesInputAxis) { float axisRaw = Input.GetAxisRaw(this.cameraControls.RotateInputAxis); if (Mathf.Abs(axisRaw) > 0.001f) { this.Rotation += axisRaw * this.cameraControls.RotateSpeed * this.currentTimeDelta; } } if (this.cameraControls.AllowTilt && this.cameraControls.TiltUsesInputAxis) { float axisRaw2 = Input.GetAxisRaw(this.cameraControls.TiltInputAxis); if (Mathf.Abs(axisRaw2) > 0.001f) { this.Tilt += axisRaw2 * this.cameraControls.TiltSpeed * this.currentTimeDelta; } } } // Token: 0x17000001 RID: 1 // (get) Token: 0x0600005F RID: 95 RVA: 0x0000A1BE File Offset: 0x000083BE public Transform CameraTarget { get { return this.cameraTargetTr; } } // Token: 0x17000002 RID: 2 // (get) Token: 0x06000060 RID: 96 RVA: 0x0000A1C6 File Offset: 0x000083C6 public bool IsFollowing { get { return this.FollowTarget != null; } } // Token: 0x17000003 RID: 3 // (get) Token: 0x06000061 RID: 97 RVA: 0x0000A1D4 File Offset: 0x000083D4 public Transform FollowTarget { get { return this.followTarget; } } // Token: 0x06000062 RID: 98 RVA: 0x0000A1DC File Offset: 0x000083DC public void ResetToInitialValues(bool includePosition, bool snap = false) { if (includePosition) { this.LookAt = this._initialLookAt; } this.Distance = this._initialDistance; this.Rotation = this._initialRotation; this.Tilt = this._initialTilt; if (snap) { this._currDistance = this.Distance; this._currRotation = this.Rotation; this._currTilt = this.Tilt; this.cameraTargetTr.position = this.LookAt; } } // Token: 0x06000063 RID: 99 RVA: 0x0000A254 File Offset: 0x00008454 public bool AreCharacterAndCameraTogether() { if (!Links.x.main || !Links.x.gaia.sceneLoaded) { return true; } if (Links.x.diorama.GetIndoorView()) { string text = Links.x.diorama.GetIndoorView().GetInteriorBoundsName(Links.x.main.tr.position); if (text == "?") { text = ""; } return !(text != this.currentBoundsName); } return true; } // Token: 0x06000064 RID: 100 RVA: 0x0000A2EC File Offset: 0x000084EC public bool ShouldCharacterBeInOrthoCamera() { if (Links.x.main && Links.x.diorama) { if (this.cam.orthographic) { return false; } RaycastHit raycastHit; if (!Physics.Raycast(Links.x.main.tr.position + new Vector3(0f, 50f, 0f), Vector3.up * -1f, out raycastHit, 200f, 134217728)) { return true; } if (!raycastHit.collider.gameObject.name.Contains("Camera Collider")) { RaycastHit raycastHit2; return !Physics.Raycast(raycastHit.point - new Vector3(0f, 0.5f, 0f), Vector3.up * -1f, out raycastHit2, 100f, 134217728) || !raycastHit2.collider.gameObject.name.Contains("Camera Collider"); } } return false; } // Token: 0x06000065 RID: 101 RVA: 0x0000A404 File Offset: 0x00008604 public SceneCamera ShouldCharacterBeInPerspectiveCamera() { RaycastHit raycastHit; if (Links.x.main && Physics.Raycast(Links.x.main.tr.position + new Vector3(0f, 50f, 0f), Vector3.up * -1f, out raycastHit, 200f, 134217728)) { RaycastHit raycastHit2; if (raycastHit.collider.gameObject.name.Contains("Camera Collider")) { SceneCamera component = raycastHit.collider.gameObject.transform.parent.gameObject.GetComponent(); Camera sceneCamera = component.sceneCamera; if ((this.cam.orthographic || sceneCamera != this.savedPerspectiveCam) && component.gameObject.name.Contains("Frog")) { return component; } } else if (Physics.Raycast(raycastHit.point - new Vector3(0f, 0.5f, 0f), Vector3.up * -1f, out raycastHit2, 100f, 134217728) && raycastHit2.collider.gameObject.name.Contains("Camera Collider")) { SceneCamera component2 = raycastHit2.collider.gameObject.transform.parent.gameObject.GetComponent(); Camera sceneCamera2 = component2.sceneCamera; if ((this.cam.orthographic || sceneCamera2 != this.savedPerspectiveCam) && component2.gameObject.name.Contains("Frog")) { return component2; } } } return null; } // Token: 0x06000066 RID: 102 RVA: 0x0000A5B8 File Offset: 0x000087B8 public void JumpTo(Vector3 toPosition, Character jumpToCharacter, bool snap) { if (!this.cam.orthographic) { return; } if (!Records.x.dialogue) { this.EndFollow(); } bool flag = false; if (jumpToCharacter) { if (jumpToCharacter.indoorID != this.currentBoundsName) { flag = true; this.doorJumpCharacter = jumpToCharacter; Links.x.cameraEffects.ToggleInteriorExterior(jumpToCharacter); if (!Records.x.dialogue) { this.EndFollow(); } } if (!flag) { if (this.first) { this.doorJumpCharacter = jumpToCharacter; Links.x.cameraEffects.ToggleInteriorExterior(jumpToCharacter); } else { this.Jump(toPosition); } if (!Records.x.dialogue) { this.EndFollow(); } } } else { this.doorJumpCharacter = Links.x.main; Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); this.EndFollow(); } this.first = false; if (!snap) { this.LookAt = toPosition; return; } if (flag) { this.needToJump = true; return; } this.Jump(toPosition); } // Token: 0x06000067 RID: 103 RVA: 0x0000A6C0 File Offset: 0x000088C0 public void Jump(Vector3 toPosition) { if (!this.cam.orthographic) { return; } if (!this.cameraTarget) { this.CreateTarget(); } if (this.followTarget && this.followCharacter) { this.LookAt = this.followCharacter.tr.position; if (Records.x.dialogue) { this.LookAt = this.followCharacter.tr.position + new Vector3(0f, this.dialogueHeight, 0f); } } if (this.doorJumpCharacter) { this.LookAt = this.doorJumpCharacter.tr.position; } if (this.currentBoundsName != "" && !this.followTarget) { this.LookAt = new Vector3(Mathf.Clamp(toPosition.x, this.MinBounds.x, this.MaxBounds.x), Mathf.Clamp(toPosition.y, this.MinBounds.y, this.MaxBounds.y), Mathf.Clamp(toPosition.z, this.MinBounds.z, this.MaxBounds.z)); } if (this.currentBoundsName == "") { this.LookAt = toPosition; } this.ConstrainCameraBounds(); this.cameraTargetTr.position = this.LookAt; this.UpdateCamera(); this.singleJumpFrame = 3; this.doorJumpCharacter = null; } // Token: 0x06000068 RID: 104 RVA: 0x0000A84E File Offset: 0x00008A4E public void JumpTo(Transform toTransform, bool snap) { this.JumpTo(toTransform.position, toTransform.gameObject.GetComponent(), snap); } // Token: 0x06000069 RID: 105 RVA: 0x0000A868 File Offset: 0x00008A68 public void JumpTo(GameObject toGameObject, bool snap) { this.JumpTo(toGameObject.transform.position, toGameObject.GetComponent(), snap); } // Token: 0x0600006A RID: 106 RVA: 0x0000A884 File Offset: 0x00008A84 public void CombatFollow(Transform followTargetTransform, Character character, string type) { if (!this.cam.orthographic) { return; } if (this.followTarget != null && this.OnEndFollow != null) { this.OnEndFollow(this.followTarget); } this.combatFollowType = type; this.followStartPosition = followTargetTransform.position; if (!this.cameraTarget) { this.CreateTarget(); } this.followTarget = followTargetTransform; this.followCharacter = character; if (this.followTarget != null && this.OnBeginFollow != null) { this.OnBeginFollow(this.followTarget); } } // Token: 0x0600006B RID: 107 RVA: 0x0000A924 File Offset: 0x00008B24 public void Follow(Transform followTargetTransform, Character character, bool snap = false) { if (!this.cam.orthographic) { return; } if (this.followTarget != null && this.OnEndFollow != null) { this.OnEndFollow(this.followTarget); } if (character != this.followCharacter && Links.x.gaia.sceneLoaded && !Records.x.removeControls && character && this.followCharacter) { if (Vector3.Distance(this.followCharacter.tr.position, character.tr.position) < 50f) { this.returningLerp = true; } else { this.returningLerp = false; } } if (!this.cameraTarget) { this.CreateTarget(); } this.followTarget = followTargetTransform; this.followCharacter = character; this.lastFollow = character; Links.x.cameraEffects.SetDepthOfFieldTarget(this.cameraTargetTr); if (this.followTarget == null && !this.cameraTarget) { this.CreateTarget(); } if (this.followTarget != null) { if (snap) { this.LookAt = this.followTarget.position; } if (this.OnBeginFollow != null) { this.OnBeginFollow(this.followTarget); } } } // Token: 0x0600006C RID: 108 RVA: 0x0000AA76 File Offset: 0x00008C76 public void Follow(GameObject followTarget, bool snap = false) { this.Follow(followTarget.transform, null, false); } // Token: 0x0600006D RID: 109 RVA: 0x0000AA86 File Offset: 0x00008C86 public void EndFollow() { if (!this.cam.orthographic) { return; } this.Follow(null, this.followCharacter, false); } // Token: 0x0600006E RID: 110 RVA: 0x0000AAA4 File Offset: 0x00008CA4 public void AddToPosition(float dx, float dy, float dz) { this._moveVector += new Vector3(dx, dy, dz); } // Token: 0x0600006F RID: 111 RVA: 0x0000AAC0 File Offset: 0x00008CC0 private void CreateTarget() { this.cameraTarget = GameObject.CreatePrimitive(PrimitiveType.Sphere); this.cameraTargetTr = this.cameraTarget.transform; this.cameraTargetTr.localScale = new Vector3(0.5f, 0.5f, 0.5f); this.cameraTarget.GetComponent().material.color = Color.green; this.rigid = this.cameraTarget.AddComponent(); this.rigid.isKinematic = true; this.cameraTarget.layer = 10; Collider component = this.cameraTarget.GetComponent(); if (component != null) { component.enabled = false; } this._targetRenderer = this.cameraTarget.GetComponent(); this._targetRenderer.enabled = false; this.cameraTarget.name = "Camera Target"; this.cameraTargetTr.position = this.LookAt; } // Token: 0x06000070 RID: 112 RVA: 0x0000ABA8 File Offset: 0x00008DA8 public void ConstrainCameraBounds() { if (this.sceneName == "C6_FortenLazure" && Links.x.cameraEffects.indoors) { return; } float num = this._currOrtho * 2f; float num2 = num * ((float)Screen.width / (float)Screen.height); num2 /= 2f; num /= 2f; num *= 1.837f; bool flag = false; if (this.currentBoundsName != "") { flag = true; } Vector3 vector = this.bottomRightBounds; Vector3 vector2 = this.topRightBounds; Vector3 vector3 = this.bottomLeftBounds; if (flag) { vector = this.bottomRightBoundsInterior; vector2 = this.topRightBoundsInterior; vector3 = this.bottomLeftBoundsInterior; } this.MinBounds.x = vector.x; this.MaxBounds.x = vector2.x; this.MinBounds.z = vector.z; this.MaxBounds.z = vector3.z; Quaternion quaternion = Quaternion.Euler(this._currTilt, this._currRotation, 0f); Vector3 vector4 = new Vector3(0f, 0f, -this._currDistance); Vector3 vector5 = quaternion * vector4 + this.LookAt; Vector3 vector6 = vector5; Ray ray = new Ray(vector5, this.tr.forward); float num3; if (this.colliderPlane.Raycast(ray, out num3)) { vector6 = ray.GetPoint(num3); } float num4 = vector6.x + num; float num5 = vector6.x - num; float num6 = vector6.z + num2; if (vector6.z - num2 < Mathf.Round(this.MinBounds.z)) { this.LookAt.z = Mathf.Round(this.MinBounds.z) + num2; } if (num6 > Mathf.Round(this.MaxBounds.z)) { this.LookAt.z = Mathf.Round(this.MaxBounds.z) - num2; } if (num5 < this.MinBounds.x) { Vector3 vector7 = Vector3.zero; float y = this.LookAt.y; Vector3 vector8 = vector; vector8.x += num; Ray ray2 = new Ray(vector8, this.tr.forward * -1f); this.cameraPlane = new Plane(Vector3.down, y); float num7; if (this.cameraPlane.Raycast(ray2, out num7)) { vector7 = ray2.GetPoint(num7); } else { ray2 = new Ray(vector8, this.tr.forward); Vector3 vector9 = Vector3.zero; this.cameraPlane = new Plane(Vector3.up, 0f); float num8; if (this.cameraPlane.Raycast(ray2, out num8)) { vector9 = ray2.GetPoint(num8); } ray2 = new Ray(vector9, this.tr.forward * -1f); this.cameraPlane = new Plane(Vector3.down, y); float num9; if (this.cameraPlane.Raycast(ray2, out num9)) { vector7 = ray2.GetPoint(num9); } } this.LookAt.x = vector7.x; } if (num4 > this.MaxBounds.x) { Vector3 vector10 = Vector3.zero; float y2 = this.LookAt.y; Vector3 vector11 = vector2; vector11.x -= num; Ray ray3 = new Ray(vector11, this.tr.forward * -1f); this.cameraPlane = new Plane(Vector3.down, y2); float num10; if (this.cameraPlane.Raycast(ray3, out num10)) { vector10 = ray3.GetPoint(num10); } else { ray3 = new Ray(vector11, this.tr.forward); Vector3 vector12 = Vector3.zero; this.cameraPlane = new Plane(Vector3.up, 0f); float num11; if (this.cameraPlane.Raycast(ray3, out num11)) { vector12 = ray3.GetPoint(num11); } ray3 = new Ray(vector12, this.tr.forward * -1f); this.cameraPlane = new Plane(Vector3.down, y2); float num12; if (this.cameraPlane.Raycast(ray3, out num12)) { vector10 = ray3.GetPoint(num12); } } this.LookAt.x = vector10.x; } } // Token: 0x06000071 RID: 113 RVA: 0x0000AFFC File Offset: 0x000091FC public bool TargetInSight(Transform lookTr) { Vector3 vector = Links.x.worldCamera.WorldToViewportPoint(lookTr.position); if (this.combatFollowType == "Always Move") { if (vector.x > 0.4f && vector.x < 0.6f && vector.y > 0.4f && vector.y < 0.6f) { return true; } } else if (this.combatFollowType == "Only if necessary") { if (vector.x > 0.2f && vector.x < 0.8f && vector.y > 0.2f && vector.y < 0.8f) { return true; } } else if (vector.x > 0.3f && vector.x < 0.7f && vector.y > 0.3f && vector.y < 0.7f) { return true; } return false; } // Token: 0x06000072 RID: 114 RVA: 0x0000B0F4 File Offset: 0x000092F4 private Vector3 GetHitPosition(out Vector3 middle) { int num = 0; middle = Vector3.zero; Vector3 vector = this.cameraTargetTr.position; Vector3 vector2 = Vector3.zero; float num2 = 1000f; RaycastHit raycastHit; if (Physics.Raycast(this.tr.position, this.tr.forward, out raycastHit, 1000f, 1078199297)) { vector = raycastHit.point; num++; num2 = raycastHit.distance; } Vector3 vector3 = this.tr.position + this.tr.right * 5f; Vector3 vector4 = this.tr.position + this.tr.right * -5f; Vector3 vector5 = this.tr.position + this.tr.up * 5f; Vector3 vector6 = this.tr.position + this.tr.up * -5f; if (Physics.Raycast(vector3, this.tr.forward, out raycastHit, 1000f, 4456449)) { if (raycastHit.point.y > vector2.y) { vector2 = raycastHit.point; } num++; if (raycastHit.distance < num2) { num2 = raycastHit.distance; } if (Input.GetKeyDown(KeyCode.B) && Records.x.editor) { Links.x.main.CreateSphere(raycastHit.point, 1f); } } if (Physics.Raycast(vector4, this.tr.forward, out raycastHit, 1000f, 4456449)) { if (raycastHit.point.y > vector2.y) { vector2 = raycastHit.point; } num++; if (raycastHit.distance < num2) { num2 = raycastHit.distance; } if (Input.GetKeyDown(KeyCode.B) && Records.x.editor) { Links.x.main.CreateSphere(raycastHit.point, 1f); } } if (Physics.Raycast(vector5, this.tr.forward, out raycastHit, 1000f, 4456449)) { if (raycastHit.point.y > vector2.y) { vector2 = raycastHit.point; } num++; if (raycastHit.distance < num2) { num2 = raycastHit.distance; } if (Input.GetKeyDown(KeyCode.B) && Records.x.editor) { Links.x.main.CreateSphere(raycastHit.point, 1f); } } if (Physics.Raycast(vector6, this.tr.forward, out raycastHit, 1000f, 4456449)) { if (raycastHit.point.y > vector2.y) { vector2 = raycastHit.point; } num++; if (raycastHit.distance < num2) { num2 = raycastHit.distance; } if (Input.GetKeyDown(KeyCode.B) && Records.x.editor) { Links.x.main.CreateSphere(raycastHit.point, 1f); } } middle = vector; if (num > 0) { return this.tr.position + this.tr.forward * num2; } return vector; } // Token: 0x06000073 RID: 115 RVA: 0x0000B440 File Offset: 0x00009640 protected void Reset() { } // Token: 0x0400013B RID: 315 public float Distance; // Token: 0x0400013C RID: 316 public float Rotation = 45f; // Token: 0x0400013D RID: 317 public float Tilt = 45f; // Token: 0x0400013E RID: 318 public float Ortho = 12f; // Token: 0x0400013F RID: 319 public float MinOrtho = 7f; // Token: 0x04000140 RID: 320 public float MaxOrtho = 14f; // Token: 0x04000141 RID: 321 public bool canMoveCamera; // Token: 0x04000142 RID: 322 public Vector3 MinBounds; // Token: 0x04000143 RID: 323 public Vector3 MaxBounds; // Token: 0x04000144 RID: 324 public float MinDistance; // Token: 0x04000145 RID: 325 public float MaxDistance = 300f; // Token: 0x04000146 RID: 326 public float MinTilt = -360f; // Token: 0x04000147 RID: 327 public float MaxTilt = 360f; // Token: 0x04000148 RID: 328 public float minClipPlane = 0.1f; // Token: 0x04000149 RID: 329 public float bokehMultiplier = 0.002f; // Token: 0x0400014A RID: 330 public string combatFollowType; // Token: 0x0400014B RID: 331 public Transform shadowCollector; // Token: 0x0400014C RID: 332 public Vector3 followStartPosition; // Token: 0x0400014D RID: 333 public Transform cameraTargetTr; // Token: 0x0400014E RID: 334 public Vector3 cameraTargetPosition; // Token: 0x0400014F RID: 335 public string currentBoundsName; // Token: 0x04000150 RID: 336 public BoxCollider coll; // Token: 0x04000151 RID: 337 public bool panning; // Token: 0x04000152 RID: 338 public float dialogueHeight = 0.1f; // Token: 0x04000153 RID: 339 public bool inspecting; // Token: 0x04000154 RID: 340 public bool cameraShake; // Token: 0x04000155 RID: 341 private float startNearClipPlane; // Token: 0x04000156 RID: 342 private float cameraShakeTime; // Token: 0x04000157 RID: 343 private string cameraShakeType; // Token: 0x04000158 RID: 344 private float scroll; // Token: 0x04000159 RID: 345 private float distFromWhereCamShouldBeToCamTarget; // Token: 0x0400015A RID: 346 public int zoomCount; // Token: 0x0400015B RID: 347 private Camera returnPerspective; // Token: 0x0400015C RID: 348 public Action OnBeginFollow; // Token: 0x0400015D RID: 349 public Action OnEndFollow; // Token: 0x0400015E RID: 350 private bool first; // Token: 0x0400015F RID: 351 public Transform tr; // Token: 0x04000160 RID: 352 private Vector3 worldMousePosition; // Token: 0x04000161 RID: 353 private Vector3 _initialLookAt; // Token: 0x04000162 RID: 354 private float _initialDistance; // Token: 0x04000163 RID: 355 private bool scrolling; // Token: 0x04000164 RID: 356 private bool needToJump; // Token: 0x04000165 RID: 357 private float _initialMinDistance; // Token: 0x04000166 RID: 358 private float _initialRotation; // Token: 0x04000167 RID: 359 private float _initialTilt; // Token: 0x04000168 RID: 360 private float prevCamOrtho; // Token: 0x04000169 RID: 361 private float savedOrtho; // Token: 0x0400016A RID: 362 private Vector3 originalPos; // Token: 0x0400016B RID: 363 private float _currDistance; // Token: 0x0400016C RID: 364 private float _currRotation; // Token: 0x0400016D RID: 365 private float _currTilt; // Token: 0x0400016E RID: 366 private float _currOrtho; // Token: 0x0400016F RID: 367 private float prevZoomed; // Token: 0x04000170 RID: 368 private float prevRotation; // Token: 0x04000171 RID: 369 private float SavedZoomDampening; // Token: 0x04000172 RID: 370 private float SavedMoveDampening; // Token: 0x04000173 RID: 371 private float prevTilt; // Token: 0x04000174 RID: 372 public int singleJumpFrame; // Token: 0x04000175 RID: 373 private Character lastFollow; // Token: 0x04000176 RID: 374 private float AdjustedDistance; // Token: 0x04000177 RID: 375 public Vector3 LookAt; // Token: 0x04000178 RID: 376 private Character pocketTarget; // Token: 0x04000179 RID: 377 public GameObject puzzleTarget; // Token: 0x0400017A RID: 378 public GameObject joyTarget; // Token: 0x0400017B RID: 379 public bool puzzleLerp; // Token: 0x0400017C RID: 380 public bool returningLerp; // Token: 0x0400017D RID: 381 public bool puzzleSnapCamera; // Token: 0x0400017E RID: 382 public bool targetSelecting; // Token: 0x0400017F RID: 383 public Vector3 pocketPoint; // Token: 0x04000180 RID: 384 private Vector3 _moveVector; // Token: 0x04000181 RID: 385 private Vector3 prevLookAt; // Token: 0x04000182 RID: 386 private Vector3 prevCameraPlace; // Token: 0x04000183 RID: 387 private GameObject rigidTarget; // Token: 0x04000184 RID: 388 public GameObject cameraTarget; // Token: 0x04000185 RID: 389 private Camera cam; // Token: 0x04000186 RID: 390 private Camera savedPerspectiveCam; // Token: 0x04000187 RID: 391 public Camera topCam; // Token: 0x04000188 RID: 392 public Camera depthCam; // Token: 0x04000189 RID: 393 private MeshRenderer _targetRenderer; // Token: 0x0400018A RID: 394 public Transform followTarget; // Token: 0x0400018B RID: 395 public Character followCharacter; // Token: 0x0400018C RID: 396 public Character doorJumpCharacter; // Token: 0x0400018D RID: 397 public Vector3 cameraMiddleWorldPosition; // Token: 0x0400018E RID: 398 public CameraControls cameraControls; // Token: 0x0400018F RID: 399 private Rigidbody rigid; // Token: 0x04000190 RID: 400 private Vector3 directionAdd; // Token: 0x04000191 RID: 401 private float currentTimeDelta; // Token: 0x04000192 RID: 402 private bool slowDialogue; // Token: 0x04000193 RID: 403 private Vector3 savedDirectionBoundsLeft; // Token: 0x04000194 RID: 404 private Vector3 savedDirectionBoundsRight; // Token: 0x04000195 RID: 405 private Vector3 savedDirectionBoundsUp; // Token: 0x04000196 RID: 406 private Vector3 savedDirectionBoundsDown; // Token: 0x04000197 RID: 407 public Vector3 topLeftBounds; // Token: 0x04000198 RID: 408 public Vector3 topRightBounds; // Token: 0x04000199 RID: 409 public Vector3 bottomLeftBounds; // Token: 0x0400019A RID: 410 public Vector3 bottomRightBounds; // Token: 0x0400019B RID: 411 public Vector3 topLeftBoundsInterior; // Token: 0x0400019C RID: 412 public Vector3 topRightBoundsInterior; // Token: 0x0400019D RID: 413 public Vector3 bottomLeftBoundsInterior; // Token: 0x0400019E RID: 414 public Vector3 bottomRightBoundsInterior; // Token: 0x0400019F RID: 415 public Quaternion cameraRotation; // Token: 0x040001A0 RID: 416 public bool ignoreRemoveControls; // Token: 0x040001A1 RID: 417 private Vector3 touchStart; // Token: 0x040001A2 RID: 418 private Vector3 panStartPosition; // Token: 0x040001A3 RID: 419 private Vector3 prevWorldMousePosition; // Token: 0x040001A4 RID: 420 private Plane groundPlane; // Token: 0x040001A5 RID: 421 private Plane groundPlaneDown; // Token: 0x040001A6 RID: 422 public Plane cameraPlane; // Token: 0x040001A7 RID: 423 public Plane colliderPlane; // Token: 0x040001A8 RID: 424 public Transform cursor; // Token: 0x040001A9 RID: 425 private float timeAtPanStart; // Token: 0x040001AA RID: 426 public Transform bokehFollow; // Token: 0x040001AB RID: 427 private float savedMinOrtho; // Token: 0x040001AC RID: 428 private float savedOrthoSize; // Token: 0x040001AD RID: 429 private float savedOrthoRotation; // Token: 0x040001AE RID: 430 private float initialMinOrtho; // Token: 0x040001AF RID: 431 private Vector3 savedOrthoLookAt; // Token: 0x040001B0 RID: 432 private Vector3 savedOrthoPosition; // Token: 0x040001B1 RID: 433 private float savedOrthoDistance; // Token: 0x040001B2 RID: 434 private float savedFarClip; // Token: 0x040001B3 RID: 435 private float savedNearClip; // Token: 0x040001B4 RID: 436 private float startBokehLength; // Token: 0x040001B5 RID: 437 public bool useBokeh; // Token: 0x040001B6 RID: 438 public LayerMask mainCameraCulling; // Token: 0x040001B7 RID: 439 public Color synergy1; // Token: 0x040001B8 RID: 440 public Color synergy2; // Token: 0x040001B9 RID: 441 public Color player1; // Token: 0x040001BA RID: 442 public Color player2; // Token: 0x040001BB RID: 443 public Color player3; // Token: 0x040001BC RID: 444 public Color player4; // Token: 0x040001BD RID: 445 public string sceneName; }