FReply SProfilerThreadView::OnMouseButtonUp( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent ) { FReply Reply = FReply::Unhandled(); if( IsReady() ) { const FVector2D MousePositionOnButtonUp = MyGeometry.AbsoluteToLocal( MouseEvent.GetScreenSpacePosition() ); const bool bIsValidForMouseClick = MousePositionOnButtonUp.Equals( MousePositionOnButtonDown, MOUSE_SNAP_DISTANCE ); if( MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton ) { if( bIsLeftMousePressed ) { // Release the mouse, we are no longer dragging. Reply = FReply::Handled().ReleaseMouseCapture(); } bIsLeftMousePressed = false; } else if( MouseEvent.GetEffectingButton() == EKeys::RightMouseButton ) { if( bIsRightMousePressed ) { if( bIsValidForMouseClick ) { ShowContextMenu( MouseEvent.GetScreenSpacePosition() ); Reply = FReply::Handled(); } } bIsRightMousePressed = false; } } return Reply; }
float ADynamicCarController::getAcceleration(float deltaSec) const { float a = aMax * deltaSec; float velocityLength = getBrakeDistance(); float distLeftLength = (target - to2D(agent->GetActorLocation())).Size() - safetyBuffer; if (velocityLength >= distLeftLength) { // Check if we should start breaking FVector2D normVelocity = to2D(velocity); normVelocity.Normalize(); FVector2D normDistLeft = target - to2D(agent->GetActorLocation()); normDistLeft.Normalize(); if (normVelocity.Equals(normDistLeft, 0.1)) { return -a; } } return a; }