swb_base/Weapon.Scoping.cs
namespace SWB.Base;

public partial class Weapon
{
	public async virtual void OnScopeStart()
	{
		SetScopeLensCenter( DefaultScopeLensCenter );

		await GameTask.DelaySeconds( ScopeInfo.ScopeInDelay );
		if ( !this.IsValid() || !IsAiming || IsScoping || IsReloading ) return;

		IsScoping = true;
		ViewModelHandler.ShouldDraw = false;

		if ( ScopeInfo.ScopeInSound is not null )
			PlaySound( ScopeInfo.ScopeInSound );
	}

	public virtual void OnScopeEnd()
	{
		SetScopeLensCenter( DefaultScopeLensCenter );

		if ( !IsScoping ) return;

		IsScoping = false;
		ViewModelHandler.ShouldDraw = true;

		if ( ScopeInfo.ScopeOutSound is not null )
			PlaySound( ScopeInfo.ScopeOutSound );
	}
}