Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Copyright 2015 Dirt Productions. All rights reserved.
- #include "DistantHome.h"
- #include "Public/Player/Pawns/DHPawn.h"
- #include "Public/Player/Pawns/DHPawnMovementComponent.h"
- /** Default constructor */
- UDHPawnMovementComponent::UDHPawnMovementComponent(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
- {
- MovementState.bCanFly = false;
- MovementState.bCanWalk = true;
- }
- /** Called every frame */
- void UDHPawnMovementComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisFunction)
- {
- Super::TickComponent(DeltaTime, TickType, ThisFunction);
- // Make sure everything is valid, and movement is allowed
- if (PawnOwner && UpdatedComponent && !ShouldSkipUpdate(DeltaTime))
- {
- // Get and clear movement vector
- FVector DesiredMovement = ConsumeInputVector() * DeltaTime * GetGlobalBaseSpeed();
- if (!DesiredMovement.IsNearlyZero())
- {
- FHitResult Hit;
- SafeMoveUpdatedComponent(DesiredMovement, UpdatedComponent->GetComponentRotation(), true, Hit);
- // Attempt to slide if component collides with object
- if (Hit.IsValidBlockingHit()) SlideAlongSurface(DesiredMovement, 1.0f - Hit.Time, Hit.Normal, Hit);
- }
- }
- }
- /** Returns max speed */
- float UDHPawnMovementComponent::GetMaxSpeed() const
- {
- // Default return value if 450
- float ReturnValue = 450.0f;
- // Modify return value based on pawn state if pawn owner is a DHPawn
- const ADHPawn* DHPawnOwner = Cast<ADHPawn>(PawnOwner);
- if (DHPawnOwner)
- {
- // Set return value to global base speed of pawn owner
- ReturnValue = DHPawnOwner->GlobalBaseSpeed;
- if (DHPawnOwner->IsCrouching()) ReturnValue *= 0.85f;
- if (DHPawnOwner->IsAltUsingItem()) ReturnValue *= DHPawnOwner->GetCurrentItem()->UsableItemData.AltUseSpeedModifier;
- if (DHPawnOwner->IsUsingItem()) ReturnValue *= DHPawnOwner->GetCurrentItem()->UsableItemData.UseSpeedModifier;
- if (!DHPawnOwner->IsUsingItem() && !DHPawnOwner->IsAltUsingItem()) ReturnValue *= DHPawnOwner->GetCurrentItem()->UsableItemData.IdleSpeedModifier;
- }
- return ReturnValue;
- }
- /** Returns global base speed of pawn owner */
- float UDHPawnMovementComponent::GetGlobalBaseSpeed() const
- {
- // Default return value is 450
- float ReturnValue = 450.0f;
- const ADHPawn* DHPawnOwner = Cast<ADHPawn>(PawnOwner);
- if (DHPawnOwner) ReturnValue = DHPawnOwner->GlobalBaseSpeed;
- return ReturnValue;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement