Player/Player.Camera.cs

Camera component for the Player class. Updates the camera rotation and position each tick based on input, keeping the camera a fixed distance above the player's world position and syncing EyePosition, EyeAngle and field of view.

Native Interop
using Sandbox;

namespace SnowSandbox;

public sealed partial class Player : Component
{
	[Property, Feature( "Camera", Icon = "video_camera_back" )]
	float DistanceFromBottom { get; set; } = 32;

	public Vector3 EyePosition;

	public Angles EyeAngle;

	void CameraUpdate()
	{
		var angels = Camera.WorldRotation.Angles();

		angels += Input.AnalogLook;
		Camera.WorldRotation = angels;
		Camera.WorldPosition = WorldPosition + (WorldRotation.Up * DistanceFromBottom);

		EyePosition = Camera.WorldPosition;
		EyeAngle = Camera.WorldRotation;

		Camera.FieldOfView = Preferences.FieldOfView;
	}
}