public override void ConstrainTo( PointMass point ) { Vector2 displacement = point.GetPos( ) - OwnerPoint.GetPos( ); Vector2 halfDisplacement = ( point.GetPos( ) + OwnerPoint.GetPos( ) ); halfDisplacement = new Vector2( halfDisplacement.X / 2, halfDisplacement.Y / 2 ); if( displacement.Length( ) == 0f ) { displacement = new Vector2( 1.0f, 0.0f ); } // Scale to required radius. displacement.Normalize( ); displacement.Scale( Radius ); // displacement = new Vector2( displacement.X * Radius, displacement.Y * Radius ); if( !point.GetPin( ) ) point.SetPos( halfDisplacement + new Vector2( displacement.X / 2, displacement.Y / 2 ) ); if( !OwnerPoint.GetPin( ) ) OwnerPoint.SetPos( halfDisplacement - new Vector2( displacement.X / 2, displacement.Y / 2 ) ); }