FReply SColorGradientEditor::OnMouseMove( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent ) { if( HasMouseCapture() && IsEditingEnabled.Get() == true ) { DistanceDragged += FMath::Abs( MouseEvent.GetCursorDelta().X ); if( MouseEvent.IsMouseButtonDown( EKeys::LeftMouseButton ) && SelectedStop.IsValid( *CurveOwner ) ) { const float DragThresholdDist = 5.0f; if( !bDraggingStop ) { if( DistanceDragged >= DragThresholdDist ) { // Start a transaction, we just started dragging a stop bDraggingStop = true; GEditor->BeginTransaction( LOCTEXT("MoveGradientStop", "Move Gradient Stop") ); CurveOwner->ModifyOwner(); } return FReply::Handled(); } else { // Already dragging a stop, move it FTrackScaleInfo ScaleInfo(ViewMinInput.Get(), ViewMaxInput.Get(), 0.0f, 1.0f, MyGeometry.Size); float MouseTime = ScaleInfo.LocalXToInput( MyGeometry.AbsoluteToLocal( MouseEvent.GetScreenSpacePosition() ).X ); MoveStop( SelectedStop, MouseTime ); return FReply::Handled(); } } } return FReply::Unhandled(); }
AIMotorMoveResult_t CAI_Motor::MoveGroundExecute( const AILocalMoveGoal_t &move, AIMoveTrace_t *pTraceResult ) { // -------------------------------------------- // turn in the direction of movement // -------------------------------------------- MoveFacing( move ); // -------------------------------------------- float flNewSpeed = GetIdealSpeed(); // -------------------------------------------- // calculate actual travel distance // -------------------------------------------- // assuming linear acceleration, how far will I travel? float flTotal = 0.5 * (GetCurSpeed() + flNewSpeed) * GetMoveInterval(); // can I move farther in this interval than I'm supposed to? if ( flTotal > move.maxDist ) { if ( !(move.flags & AILMG_CONSUME_INTERVAL) ) { // only use a portion of the time interval SetMoveInterval( GetMoveInterval() * (1 - move.maxDist / flTotal) ); } else SetMoveInterval( 0 ); flTotal = move.maxDist; } else { // use all the time SetMoveInterval( 0 ); } SetMoveVel( move.dir * flNewSpeed ); // -------------------------------------------- // walk the distance // -------------------------------------------- AIMotorMoveResult_t result = AIM_SUCCESS; if ( flTotal > 0.0 ) { Vector vecFrom = GetLocalOrigin(); Vector vecTo = vecFrom + move.dir * flTotal; result = MoveGroundStep( vecTo, move.pMoveTarget, -1, true, pTraceResult ); if ( result == AIM_FAILED ) MoveStop(); } else if ( !OnMoveStalled( move ) ) { result = AIM_FAILED; } return result; }
void G_GM_Unit::UpdateState() { if ((_ustate == g_us_move) && (_mesh->GetAnimationState(UNIT_CUST_ANIM_MOVE) == g_as_inactive)) MoveContinue(); if ((_ustate == g_us_test) && (_mesh->GetActiveAnimCount() == 0)) MoveStop(); }
void G_GM_Unit::MoveContinue() { if ((_next_way_point >= 0) && (_next_way_point < g_int32(_curr_path.way_points.size())-1)) { _run_move_anim(_next_way_point); _next_way_point++; } else MoveStop(); }
AIMotorMoveResult_t CAI_Motor::MoveGroundExecuteWalk( const AILocalMoveGoal_t &move, float speed, float dist, AIMoveTrace_t *pTraceResult ) { bool bReachingLocalGoal = ( dist > move.maxDist ); // can I move farther in this interval than I'm supposed to? if ( bReachingLocalGoal ) { if ( !(move.flags & AILMG_CONSUME_INTERVAL) ) { // only use a portion of the time interval SetMoveInterval( GetMoveInterval() * (1 - move.maxDist / dist) ); } else SetMoveInterval( 0 ); dist = move.maxDist; } else { // use all the time SetMoveInterval( 0 ); } SetMoveVel( move.dir * speed ); // -------------------------------------------- // walk the distance // -------------------------------------------- AIMotorMoveResult_t result = AIM_SUCCESS; if ( dist > 0.0 ) { Vector vecFrom = GetLocalOrigin(); Vector vecTo = vecFrom + move.dir * dist; if ( move.navType == NAV_CRAWL ) { char *pchHackBoolToInt = (char*)(&bReachingLocalGoal); *pchHackBoolToInt = 2; } result = MoveGroundStep( vecTo, move.pMoveTarget, -1, true, bReachingLocalGoal, pTraceResult ); if ( result == AIM_FAILED ) MoveStop(); } else if ( !OnMoveStalled( move ) ) { result = AIM_FAILED; } return result; }