Fix mysterious timeline playback issues
This commit is contained in:
parent
b42e6d6223
commit
f44915e5f0
BIN
Content/Pickups/C_Pickup.uasset
(Stored with Git LFS)
BIN
Content/Pickups/C_Pickup.uasset
(Stored with Git LFS)
Binary file not shown.
@ -55,8 +55,8 @@ void AEnemyCharacter::OnDeath(FDamageInfo damageInfo)
|
|||||||
|
|
||||||
if (UKismetSystemLibrary::DoesImplementInterface(pickup, UPickupable::StaticClass()))
|
if (UKismetSystemLibrary::DoesImplementInterface(pickup, UPickupable::StaticClass()))
|
||||||
{
|
{
|
||||||
IPickupable::Execute_LoadDataFromDataAsset(pickup, PickupTemplate);
|
|
||||||
pickup->SetActorLocation(GetActorLocation());
|
pickup->SetActorLocation(GetActorLocation());
|
||||||
|
IPickupable::Execute_LoadDataFromDataAsset(pickup, PickupTemplate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ void AObjectPoolManager::InitializeObjectPool(TSubclassOf<AActor> Object, const
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < InitialObjectPoolSize; i++)
|
for (int i = 0; i < InitialObjectPoolSize; i++)
|
||||||
{
|
{
|
||||||
AActor* object = GetWorld()->SpawnActor<AActor>(Object);
|
AActor* object = GetWorld()->SpawnActor<AActor>(Object, FVector(10000.0f, 10000.0f, 0), FRotator(0, 0, 0));
|
||||||
SetObjectStatus(false, object);
|
SetObjectStatus(false, object);
|
||||||
ObjectPool.Add(object);
|
ObjectPool.Add(object);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,8 @@ void APickup::LoadDataFromDataAsset_Implementation(UPickupDataAsset* PickupDataA
|
|||||||
StaticMeshComponent->SetStaticMesh(PickupDataAsset->PickupStaticMesh);
|
StaticMeshComponent->SetStaticMesh(PickupDataAsset->PickupStaticMesh);
|
||||||
PickupSoundBase = PickupDataAsset->PickupSoundBase;
|
PickupSoundBase = PickupDataAsset->PickupSoundBase;
|
||||||
CurveFloat = PickupDataAsset->CurveFloat;
|
CurveFloat = PickupDataAsset->CurveFloat;
|
||||||
|
PickupLocation = GetActorLocation();
|
||||||
|
|
||||||
if (CurveFloat != nullptr)
|
if (CurveFloat != nullptr)
|
||||||
{
|
{
|
||||||
TimelineComponent->AddInterpFloat(CurveFloat, onTimelineCallback);
|
TimelineComponent->AddInterpFloat(CurveFloat, onTimelineCallback);
|
||||||
@ -107,6 +108,7 @@ void APickup::OnInnerBeginOverlap(UPrimitiveComponent* OverlappedComponent, AAct
|
|||||||
{
|
{
|
||||||
if (AObjectPoolManager* objectPoolManager = IPools::Execute_GetProjectileObjectPoolManager(gamemode))
|
if (AObjectPoolManager* objectPoolManager = IPools::Execute_GetProjectileObjectPoolManager(gamemode))
|
||||||
{
|
{
|
||||||
|
TimelineComponent->Stop();
|
||||||
ResetData_Implementation();
|
ResetData_Implementation();
|
||||||
objectPoolManager->ReturnObject(this);
|
objectPoolManager->ReturnObject(this);
|
||||||
}
|
}
|
||||||
@ -122,7 +124,10 @@ void APickup::OnOuterBeginOverlap(UPrimitiveComponent* OverlappedComponent, AAct
|
|||||||
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep,
|
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep,
|
||||||
const FHitResult& SweepResult)
|
const FHitResult& SweepResult)
|
||||||
{
|
{
|
||||||
PlayTimeLine();
|
if (!TimelineComponent->IsPlaying() && UGameplayStatics::GetPlayerCharacter(GetWorld(), 0) == Cast<ACharacter>(OtherActor))
|
||||||
|
{
|
||||||
|
PlayTimeLine();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void APickup::TimelineCallback(float val)
|
void APickup::TimelineCallback(float val)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user