void UAbilityTask_ApplyRootMotionMoveToActorForce::OnDestroy(bool AbilityIsEnding) { if (MovementComponent) { MovementComponent->RemoveRootMotionSourceByID(RootMotionSourceID); if (bSetNewMovementMode) { MovementComponent->SetMovementMode(NewMovementMode); } if (VelocityOnFinishMode == ERootMotionFinishVelocityMode::SetVelocity) { FVector EndVelocity; ACharacter* Character = MovementComponent->GetCharacterOwner(); if (Character) { EndVelocity = Character->GetActorRotation().RotateVector(SetVelocityOnFinish); } else { EndVelocity = SetVelocityOnFinish; } // When we mean to SetVelocity when finishing a MoveTo, we apply a short-duration low-priority // root motion velocity override. This ensures that the velocity we set is replicated properly // and takes effect. { const FName OnFinishForceName = FName("AbilityTaskApplyRootMotionMoveToActorForce_EndForce"); FRootMotionSource_ConstantForce* ConstantForce = new FRootMotionSource_ConstantForce(); ConstantForce->InstanceName = OnFinishForceName; ConstantForce->AccumulateMode = ERootMotionAccumulateMode::Override; ConstantForce->Priority = 1; // Low priority so any other override root motion sources stomp it ConstantForce->Force = EndVelocity; ConstantForce->Duration = 0.001f; MovementComponent->ApplyRootMotionSource(ConstantForce); if (Ability) { Ability->SetMovementSyncPoint(OnFinishForceName); } } } } Super::OnDestroy(AbilityIsEnding); }
void UCheatManager::ChangeSize( float F ) { APawn* Pawn = GetOuterAPlayerController()->GetPawn(); // Note: only works on characters ACharacter *Character = Cast<ACharacter>(Pawn); if (Character) { ACharacter* DefaultCharacter = Character->GetClass()->GetDefaultObject<ACharacter>(); Character->GetCapsuleComponent()->SetCapsuleSize(DefaultCharacter->GetCapsuleComponent()->GetUnscaledCapsuleRadius() * F, DefaultCharacter->GetCapsuleComponent()->GetUnscaledCapsuleHalfHeight() * F); if (Character->GetMesh()) { Character->GetMesh()->SetRelativeScale3D(FVector(F)); } Character->TeleportTo(Character->GetActorLocation(), Character->GetActorRotation()); } }