Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "OST_Game.h"
- #include "OST_Character.h"
- #include "OST_WheeledVehicle.h"
- #include "Vehicles/WheeledVehicleMovementComponent4W.h"
- AOST_WheeledVehicle::AOST_WheeledVehicle(const class FObjectInitializer& PCIP)
- : Super(PCIP)
- {
- Name = "noname";
- About = "no about info";
- Usable = true;
- VehicleID = 0;
- }
- bool AOST_WheeledVehicle::CanUsing()
- {
- return Usable;
- }
- FString AOST_WheeledVehicle::GetUsableName()
- {
- return Name;
- }
- FString AOST_WheeledVehicle::GetUsableAbout()
- {
- return About;
- }
- void AOST_WheeledVehicle::DoUse(AActor* OtherUser)
- {
- OnCustomUse(OtherUser);
- OnUsed.Broadcast(OtherUser);
- if (Cast<ACharacter>(OtherUser))
- {
- SetDriver(Cast<ACharacter>(OtherUser));
- }
- }
- bool AOST_WheeledVehicle::UseByThisKey(TSubclassOf<class AOST_Inventory> key)
- {
- return true;
- }
- void AOST_WheeledVehicle::ReceiveActorBeginOverlap(class AActor * OtherActor)
- {
- if (Cast<AOST_Character>(OtherActor)) Cast<AOST_Character>(OtherActor)->AddUsingActor(this);
- }
- void AOST_WheeledVehicle::ReceiveActorEndOverlap(class AActor * OtherActor)
- {
- if (Cast<AOST_Character>(OtherActor)) Cast<AOST_Character>(OtherActor)->RemoveUsingActor(this);
- }
- FTransform AOST_WheeledVehicle::GetAboutTextPlace()
- {
- if (TextAboutComp)
- {
- return TextAboutComp->GetComponentTransform();
- }
- return GetTransform();
- }
- USceneComponent* AOST_WheeledVehicle::GetSitPlaceComp()
- {
- return SitPlaceComp;
- }
- void AOST_WheeledVehicle::SetDriver(ACharacter* NewDriver)
- {
- AOST_Character* _driver = Cast<AOST_Character>(NewDriver);
- DriverCharacter = NewDriver;
- if (_driver && _driver->bCanUsingVehicle)
- {
- _driver->StartDrivingOfVehicle(this, bIsHideDriver);
- _driver->GetController()->Possess(this);
- }
- }
- void AOST_WheeledVehicle::ClearDriver()
- {
- AOST_Character* _driver = Cast<AOST_Character>(DriverCharacter);
- if (_driver)
- {
- _driver->StopDrivingOfVehicle();
- if (OutPlace.Num() > 0)
- {
- //_driver->SetActorLocation(OutPlace[0]->GetComponentTransform().GetLocation());
- }
- GetController()->Possess(_driver);
- }
- DriverCharacter = NULL;
- }
- void AOST_WheeledVehicle::StartContactMaterialSurface(UVehicleWheel* wheel, UPhysicalMaterial* material)
- {
- OnStartContactMaterialSurface(wheel, material);
- }
- void AOST_WheeledVehicle::StopContactMaterialSurface(UVehicleWheel* wheel)
- {
- OnStopContactMaterialSurface(wheel);
- }
- void AOST_WheeledVehicle::Tick(float DeltaSeconds)
- {
- bool _bIsContacting = false;
- Super::Tick(DeltaSeconds);
- if (!GetVehicleMovement() || GetVehicleMovement()->Wheels.Num() < 1)
- {
- return;
- }
- for (int32 i = 0; i < GetVehicleMovement()->Wheels.Num(); i++)
- {
- UPhysicalMaterial* ContactMat = GetVehicleMovement()->Wheels[i]->GetContactSurfaceMaterial();
- if (ContactMat)
- {
- _bIsContacting = true;
- StartContactMaterialSurface(GetVehicleMovement()->Wheels[i], ContactMat);
- }
- else
- {
- StopContactMaterialSurface(GetVehicleMovement()->Wheels[i]);
- }
- }
- if (!_bIsContacting)
- {
- OnVehicleStopContactAnySurface();
- }
- int32 _gear = GetVehicleMovement()->GetTargetGear();
- if (LastGear != _gear)
- {
- OnChangeGear(_gear);
- LastGear = _gear;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement