Esempio n. 1
0
void AHeatmapDataCollector::BeginDestroy() //////////////////////
{
	Super::BeginDestroy();

	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();
	}
}
Esempio n. 2
0
void AHeatmapDataCollector::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent)
{
	Super::PostEditChangeProperty(PropertyChangedEvent);

	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();
	}
	FText CharctesP = FText::FromString(FString::FromInt(CharNumberInWorld));// = FString::FromInt(CharNumberInWorld);
	TextComponent->SetText(CharctesP);
	BuildSplinePath(CharNumberInWorld);
}
Esempio n. 3
0
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;
}