sasalka/Code/Player/Dedugan.Camera.cs
2025-06-10 02:09:21 +03:00

56 lines
1.7 KiB
C#

using Sandbox.Citizen;
public sealed partial class Dedugan
{
private float anotherPivot;
private Vector3 pivotOffset;
private void RotateCamera()
{
if ( Input.Keyboard.Pressed( "Q" ) )
{
anotherPivot = 40f;
}
if ( Input.Keyboard.Pressed( "E" ) )
{
anotherPivot = 0;
}
if (RagdollController.Enabled)
{
var off = RagdollController.WorldRotation.Up * 20f - Camera.WorldRotation.Forward * 200f;
Camera.WorldPosition = Vector3.Lerp(Camera.WorldPosition, RagdollController.WorldPosition + off, Time.Delta * 5f);
Camera.LocalRotation = Rotation.Lerp(Camera.LocalRotation, EyeAngles.ToRotation(), Time.Delta * 2f);
}
else
{
// Camera.LocalRotation = EyeAngles.ToRotation();
// var offset = CameraPivot.LocalPosition + CameraPivot.LocalRotation.Backward * CamOffsetX;
// Camera.LocalPosition = offset * Camera.LocalRotation;
Camera.LocalRotation = EyeAngles.ToRotation();
var localPitchOffset = Camera.LocalRotation.Down * MathF.Max( 0f, EyeAngles.pitch ) * 0.32f +
Camera.LocalRotation.Backward * MathF.Max( 0f, EyeAngles.pitch ) * 0.7f +
Camera.LocalRotation.Up * MathF.Min( 0f, EyeAngles.pitch ) * 0.5f +
Camera.LocalRotation.Backward * MathF.Min( 0f, EyeAngles.pitch ) * 0.8f +
Camera.LocalRotation.Right * -anotherPivot;
if ( InAds )
{
pivotOffset = CameraPivot.LocalRotation.Backward * CamOffsetX * 0.5f + CameraPivot.LocalRotation.Up * 8f;
}
else
{
pivotOffset = CameraPivot.LocalRotation.Backward * CamOffsetX;
}
var offset = (CameraPivot.LocalPosition + pivotOffset ) * EyeAngles.ToRotation() + localPitchOffset;
Camera.LocalPosition = offset;
}
}
}