public override void UpdateViewMatrix()
{
if (Beta < MinBeta)
{
Beta = MinBeta;
}
var sideRadius = Radius * MathF.Cos(Beta);
var height = Radius * MathF.Sin(Beta);
if (Target.Y + height < MinY)
{
height = MinY - Target.Y;
}
Position = new Vector3(
Target.X + sideRadius * MathF.Cos(Alpha),
Target.Y + height,
Target.Z + sideRadius * MathF.Sin(Alpha));
SetView(Matrix.LookAtRH(Position, Target, Vector3.UnitY));
Right = new Vector3(View.M11, View.M21, View.M31);
Right.Normalize();
Look = new Vector3(View.M13, View.M23, View.M33);
Look.Normalize();
Frustum = Frustum.FromViewProj(ViewProj);
}