Demo/DemoFollowMouse.cs
using Sandbox;
[Title("[DEMO] Follow Mouse On Plane"), Category("Second Order Dynamics (Demo)")]
public sealed class DemoFollowMouse : Component
{
[Property] private CameraComponent Camera { get; set; }
[Property] private float PlaneDistance { get; set; } = 100;
[Property] private GameObject TargetObject { get; set; }
protected override void OnUpdate()
{
var ray = Camera.ScreenPixelToRay( Mouse.Position );
var p = new Plane( Camera.WorldPosition + Camera.WorldTransform.Forward * PlaneDistance,
Camera.WorldTransform.Backward );
var pt = p.Trace( ray );
if (pt.HasValue)
TargetObject.WorldPosition = pt.Value;
}
}