Camera/MainMenuCameraEffects.cs
using Sandbox;
public sealed class MainMenuCameraEffects : Component
{
[Property] public GameObject Camera { get; set; }
[Property] public float BobSpeed { get; set; } = 1f;
[Property] public float PitchTimeOffset { get; set; } = 0.5f;
protected override void OnUpdate()
{
var sin = MathF.Sin( Time.Now );
var sinTwo = MathF.Sin( Time.Now + PitchTimeOffset );
Camera.LocalRotation = Rotation.FromYaw( sin.SnapToGrid( 0.025f ) * BobSpeed );
Camera.LocalRotation *= Rotation.FromPitch( ( sinTwo / 2f ) .SnapToGrid( 0.025f ) * BobSpeed );
}
}