void AShooterWeapon_Instant::SpawnTrailEffect(const FVector& EndPoint) { if (TrailFX) { const FVector Origin = GetMuzzleLocation(); UParticleSystemComponent* TrailPSC = UGameplayStatics::SpawnEmitterAtLocation(this, TrailFX, Origin); if (TrailPSC) { TrailPSC->SetVectorParameter(TrailTargetParam, EndPoint); } } }
void UARFXEffectComponent::SimulateHitOnClients(FVector Origin, FVector Location, FName StartSocket) { //FVector Origin = UARTraceStatics::GetStartLocation(SocketName, Causer); //UARTraceStatics::GetHitResult(10000, StartSocket, ) //if () //{ if (TrailFXPar) { UParticleSystemComponent* TrailPSC = UGameplayStatics::SpawnEmitterAtLocation(GetOwner(), TrailFXPar, Origin); if (TrailPSC) { const FVector AdjustedDir = (Location - Origin).SafeNormal(); FVector ParticleSpeed = AdjustedDir * TrailSpeedPar; TrailPSC->SetVectorParameter(TrailSpeedParamName, ParticleSpeed); } } //} }
void ASWeaponInstant::SpawnTrailEffects(const FVector& EndPoint) { // Keep local count for effects BulletsShotCount++; const FVector Origin = GetMuzzleLocation(); FVector ShootDir = EndPoint - Origin; // Only spawn if a minimum distance is satisfied. if (ShootDir.Size() < MinimumProjectileSpawnDistance) { return; } if (BulletsShotCount % TracerRoundInterval == 0) { if (TracerFX) { ShootDir.Normalize(); UGameplayStatics::SpawnEmitterAtLocation(this, TracerFX, Origin, ShootDir.Rotation()); } } else { // Only create trails FX by other players. ASCharacter* OwningPawn = GetPawnOwner(); if (OwningPawn && OwningPawn->IsLocallyControlled()) { return; } if (TrailFX) { UParticleSystemComponent* TrailPSC = UGameplayStatics::SpawnEmitterAtLocation(this, TrailFX, Origin); if (TrailPSC) { TrailPSC->SetVectorParameter(TrailTargetParam, EndPoint); } } } }
bool AHeatmapDataCollector::BuildSplinePath(uint8 CharNumberIn /*= 0*/, bool isActive/*=true */) { if (bBuildSpline) { if (PathSpline) { if (PathSpline->GetNumberOfSplinePoints() != 0) { PathSpline->ClearSplinePoints(); } auto FileFrom = SaveDirectoryPath + "/" + LogFileName + "_" + FString::FromInt(CharNumberIn) + ".txt"; bool DExists = FPlatformFileManager::Get().GetPlatformFile().FileExists(*FileFrom);//DirectoryExists(*FileFrom); if (DExists)/////////////////// { //if (SplineDataSwitcher == ESplineDataSwitcher::ES_ArrayData) //{ // //TArray<int16> ArrayFromFile; // auto FileFrom = SaveDirectoryPath + "/" + "ArrayLocationLogs.txt"; // LoadFileToArray(ArrayFromFile, *FileFrom, 0); // FVector SplinePoint; // SplinePoint.X = 0; // SplinePoint.Y = 0; // SplinePoint.Z = 0; // for (size_t i = 0; i < ArrayFromFile.Num(); i++) // { // SplinePoint.X = (ArrayFromFile[i] < 12800 && ArrayFromFile[i] > -12800 ? ArrayFromFile[i] : GetActorLocation().X); // i++; // SplinePoint.Y = (ArrayFromFile[i] < 12800 && ArrayFromFile[i] > -12800 ? ArrayFromFile[i] : GetActorLocation().Y); // i++; // SplinePoint.Z = (ArrayFromFile[i] < 12800 && ArrayFromFile[i] > -5000 ? ArrayFromFile[i] : GetActorLocation().Z); // PathSpline->AddSplineWorldPoint(SplinePoint); // } //} if (SplineDataSwitcher == ESplineDataSwitcher::ES_StringData) { FString StringFromFile; ParseCoordsFromFile(StringFromFile, *FileFrom); if (ParticlesArr.Num() > 0) { for (auto i = 0; i < ParticlesArr.Num(); i++) { UParticleSystemComponent* D = Cast<UParticleSystemComponent>(ParticlesArr[i]); if (D != NULL) D->DeactivateSystem(); } ParticlesArr.Empty(); } int32 numSplinePoints = PathSpline->GetNumberOfSplinePoints(); for (auto pointIdx = 0; pointIdx < numSplinePoints; pointIdx++) { const FName Source = FName(TEXT("Source")); const FName SourceTan = FName(TEXT("Source_Tan")); const FName Target = FName(TEXT("Target")); const FName TargetTan = FName(TEXT("Target_Tan")); const FName TeamColorParam = FName(TEXT("TeamColor")); FVector sourceBeamLocation = PathSpline->GetLocationAtSplinePoint(pointIdx, ESplineCoordinateSpace::World); FRotator sourceBeamRot; sourceBeamRot.Pitch = 0; sourceBeamRot.Yaw = 0; sourceBeamRot.Roll = 0; float sourceDistanceAlongSpline = PathSpline->GetDistanceAlongSplineAtSplinePoint(pointIdx); FVector sourceTangentAtDistance = PathSpline->GetTangentAtDistanceAlongSpline(sourceDistanceAlongSpline, ESplineCoordinateSpace::World); FVector targetBeamLocation = PathSpline->GetLocationAtSplinePoint(pointIdx + 1, ESplineCoordinateSpace::World); float targetDistanceAlongSpline = PathSpline->GetDistanceAlongSplineAtSplinePoint(pointIdx + 1); FVector targetTangentAtDistance = PathSpline->GetTangentAtDistanceAlongSpline(targetDistanceAlongSpline, ESplineCoordinateSpace::World); if (GetWorld()) { UParticleSystemComponent* Spawner = UGameplayStatics::SpawnEmitterAtLocation(this, BeamParticle, sourceBeamLocation, sourceBeamRot, true);////ftom world to this UParticleSystemComponent* chek = Cast<UParticleSystemComponent>(Spawner); if (chek) { ParticlesArr.Add(Spawner); if (Spawner) { Spawner->SetVectorParameter(Source, sourceBeamLocation); Spawner->SetVectorParameter(SourceTan, sourceTangentAtDistance); Spawner->SetVectorParameter(Target, targetBeamLocation); Spawner->SetVectorParameter(TargetTan, targetTangentAtDistance); Spawner->SetColorParameter(TeamColorParam, TeamColor); } } } } return true;// } } } } if (isActive == false) /// clearing particles { for (auto i = 0; i < ParticlesArr.Num(); i++) { UParticleSystemComponent* D = Cast<UParticleSystemComponent>(ParticlesArr[i]); if (D != NULL) D->DeactivateSystem(); } ParticlesArr.Empty(); } return false; }