private void RotateToAngle(NeckTypeStateVer2 param, int boneNum, NeckObjectVer2 bone) { var delta = new Vector2(); delta.x = Mathf.DeltaAngle(0f, bone.neckBone.localEulerAngles.x); delta.y = Mathf.DeltaAngle(0f, bone.neckBone.localEulerAngles.y); angle += delta; float x, y; if (TogglePOV.ClampRotation.Value) { var neckParam = param.aParam[boneNum]; y = Mathf.Clamp(angle.y, neckParam.minBendingAngle, neckParam.maxBendingAngle); x = Mathf.Clamp(angle.x, neckParam.upBendingAngle, neckParam.downBendingAngle); } else { y = angle.y; x = angle.x; } angle -= new Vector2(x, y); float z = bone.neckBone.localEulerAngles.z; bone.neckBone.localRotation = Quaternion.Euler(x, y, z); }
private void RotateToAngle(NeckTypeStateVer2 param, int boneNum, NeckObjectVer2 bone) { Vector2 b = default(Vector2); b.x = Mathf.DeltaAngle(0f, bone.neckBone.localEulerAngles.x); b.y = Mathf.DeltaAngle(0f, bone.neckBone.localEulerAngles.y); angle += b; float x, y; if (clampRotation) { y = Mathf.Clamp(angle.y, param.aParam[boneNum].minBendingAngle, param.aParam[boneNum].maxBendingAngle); x = Mathf.Clamp(angle.x, param.aParam[boneNum].upBendingAngle, param.aParam[boneNum].downBendingAngle); } else { y = angle.y; x = angle.x; } angle -= new Vector2(x, y); float z = bone.neckBone.localEulerAngles.z; bone.neckBone.localRotation = Quaternion.Euler(x, y, z); }
private void UpdateCamera() { if (leftEye == null || rightEye == null) { Restore(); return; } if (!CameraEnabled) { if (Input.GetMouseButton(1)) { GameCursor.Instance.SetCursorLock(true); currentfov = Mathf.Clamp(currentfov + Input.GetAxis("Mouse X") * Time.deltaTime * 30f, 1f, MAXFOV); } else if (Input.GetMouseButton(0) && DragManager.allowCamera) { GameCursor.Instance.SetCursorLock(true); float rateaddspeed = 2.5f; float num = Input.GetAxis("Mouse X") * rateaddspeed; float num2 = Input.GetAxis("Mouse Y") * rateaddspeed; rot += new Vector2(-num2, num) * new Vector2(sensitivityX, sensitivityY).magnitude; } else { GameCursor.Instance.SetCursorLock(false); } } if (Input.GetKeyDown(KeyCode.Semicolon)) { currentfov = TogglePOV.DefaultFov.Value; } if (Input.GetKey(KeyCode.Equals)) { currentfov = Mathf.Max(currentfov - Time.deltaTime * 15f, 1f); } else if (Input.GetKey(KeyCode.RightBracket)) { currentfov = Mathf.Min(currentfov + Time.deltaTime * 15f, 100f); } if (Input.GetKeyDown(KeyCode.UpArrow)) { offset = Mathf.Min(offset + 0.0005f, 2f); if (currentBody.sex == 0) { MALE_OFFSET = offset; } else { FEMALE_OFFSET = offset; } } else if (Input.GetKeyDown(KeyCode.DownArrow)) { offset = Mathf.Max(offset - 0.0005f, -2f); if (currentBody.sex == 0) { MALE_OFFSET = offset; } else { FEMALE_OFFSET = offset; } } Camera.main.fieldOfView = currentfov; Camera.main.nearClipPlane = nearClip; DepthOfField = false; Shield = false; NeckLookControllerVer2 neckLookCtrl = currentBody.neckLookCtrl; NeckLookCalcVer2 neckLookScript = neckLookCtrl.neckLookScript; NeckTypeStateVer2 param = neckLookScript.neckTypeStates[neckLookCtrl.ptnNo]; angle = new Vector2(rot.x, rot.y); for (int i = neckLookScript.aBones.Length - 1; i > -1; i--) { NeckObjectVer2 bone = neckLookScript.aBones[i]; RotateToAngle(param, i, bone); } }