Skip to content
Snippets Groups Projects
Commit 19654228 authored by Faustin LÉPERON's avatar Faustin LÉPERON
Browse files

commit

parent a35cb68d
No related branches found
Tags
No related merge requests found
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -18,31 +18,31 @@ ACarManager::ACarManager() ...@@ -18,31 +18,31 @@ ACarManager::ACarManager()
// Called when the game starts or when spawned // Called when the game starts or when spawned
void ACarManager::BeginPlay() void ACarManager::BeginPlay()
{ {
Super::BeginPlay(); //Super::BeginPlay();
// get all actor with tag "Car" and add them to the list of cars //// get all actor with tag "Car" and add them to the list of cars
TArray<AActor*> foundActors; //TArray<AActor*> foundActors;
TArray<APlayerCar*> cars; //TArray<APlayerCar*> cars;
UGameplayStatics::GetAllActorsWithTag(GetWorld(), "Car", foundActors); //UGameplayStatics::GetAllActorsWithTag(GetWorld(), "Car", foundActors);
for (auto actor : foundActors) //for (auto actor : foundActors)
{ //{
if (IsValid(actor)) // if (IsValid(actor))
{ // {
auto car = Cast<APlayerCar>(actor); // auto car = Cast<APlayerCar>(actor);
if (IsValid(car)) // if (IsValid(car))
{ // {
car->AddTickPrerequisiteActor(this); // car->AddTickPrerequisiteActor(this);
cars.Add(car); // cars.Add(car);
UE_LOG(LogTemp, Warning, TEXT("Car added.")); // UE_LOG(LogTemp, Warning, TEXT("Car added."));
} // }
} // }
} //}
InitializeManager(); //InitializeManager();
} }
// Called every frame // Called every frame
void ACarManager::Tick(float DeltaTime) void ACarManager::Tick(float DeltaTime)
{ {
Super::Tick(DeltaTime); /*Super::Tick(DeltaTime);
if (RunMode == EManagerModeEnum::InferenceMode) if (RunMode == EManagerModeEnum::InferenceMode)
{ {
if (Policy != nullptr) if (Policy != nullptr)
...@@ -56,7 +56,7 @@ void ACarManager::Tick(float DeltaTime) ...@@ -56,7 +56,7 @@ void ACarManager::Tick(float DeltaTime)
{ {
PPOTrainer->RunTraining(TrainerTrainingSettings, TrainerGameSettings,true, true); PPOTrainer->RunTraining(TrainerTrainingSettings, TrainerGameSettings,true, true);
} }
} }*/
} }
void ACarManager::InitializeManager() void ACarManager::InitializeManager()
......
...@@ -21,14 +21,24 @@ ACustomGameMode::ACustomGameMode() ...@@ -21,14 +21,24 @@ ACustomGameMode::ACustomGameMode()
void ACustomGameMode::BeginPlay() void ACustomGameMode::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
if (GetWorld())
{
if (GetWorld()->URL.ToString().Contains(TEXT("BOT=1")))
{
UGameplayStatics::CreatePlayer(GetWorld(), 1);
}
}
NextRowSpawnPoint = FTransform(FRotator(), FVector(-iNumberOfBackwardTiles * fTileSize, 0.0f, 0.0f)); int NumPlayers = UGameplayStatics::GetNumPlayerControllers(GetWorld());
for (int i = 0; i < NumPlayers; i++)
PlaceUnspawnCollisionBox(); {
PlaceScoreCollisionBox(); NextRowSpawnPoint = FTransform(FRotator(), FVector(-iNumberOfBackwardTiles * fTileSize, 100000.0f * i, 100000.0f * i));
PlaceUnspawnCollisionBox(i);
PlaceScoreCollisionBox(i);
CreateInitialRoadTiles(); CreateInitialRoadTiles();
//PlacePlayerCar(); PlacePlayerCar(i);
PlaceTrafficVehicle(); PlaceTrafficVehicle(i);
}
} }
void ACustomGameMode::Tick(float DeltaTime) void ACustomGameMode::Tick(float DeltaTime)
...@@ -39,23 +49,29 @@ void ACustomGameMode::Tick(float DeltaTime) ...@@ -39,23 +49,29 @@ void ACustomGameMode::Tick(float DeltaTime)
fSpawnElapsedTime += DeltaTime; fSpawnElapsedTime += DeltaTime;
if (fSpawnElapsedTime >= 1.0f) if (fSpawnElapsedTime >= 1.0f)
{ {
PlaceTrafficVehicle(); int NumPlayers = UGameplayStatics::GetNumPlayerControllers(GetWorld());
for (int i = 0; i < NumPlayers; i++)
{
PlaceTrafficVehicle(i);
}
fSpawnElapsedTime = 0.0f; fSpawnElapsedTime = 0.0f;
} }
} }
void ACustomGameMode::PlacePlayerCar() void ACustomGameMode::PlacePlayerCar(int player)
{ {
UWorld* World = GetWorld(); UWorld* World = GetWorld();
if (World) if (World)
{ {
FActorSpawnParameters SpawnParams; FActorSpawnParameters SpawnParams;
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
APlayerCar* PlayerCar = World->SpawnActor<APlayerCar>(PlayerCarClass, FTransform(FRotator(), FVector()), SpawnParams); FVector SpawnPosition = FVector(0, 100000.0f * player, 100000.0f * player);
APlayerCar* PlayerCar = World->SpawnActor<APlayerCar>(PlayerCarClass, FTransform(FRotator(), SpawnPosition), SpawnParams);
//UGameplayStatics::GetPlayerController(GetWorld(), player)->Possess(PlayerCar);
} }
} }
void ACustomGameMode::PlaceTrafficVehicle() void ACustomGameMode::PlaceTrafficVehicle(int player)
{ {
UWorld* World = GetWorld(); UWorld* World = GetWorld();
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>(); ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
...@@ -71,7 +87,7 @@ void ACustomGameMode::PlaceTrafficVehicle() ...@@ -71,7 +87,7 @@ void ACustomGameMode::PlaceTrafficVehicle()
FActorSpawnParameters SpawnParams; FActorSpawnParameters SpawnParams;
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
FVector SpawnPosition = FVector(10000.0f, StartingY, 0.0f); FVector SpawnPosition = FVector(10000.0f, StartingY + 100000.0f * player, 100000.0f * player);
ATrafficVehicle* TrafficVehicle = World->SpawnActor<ATrafficVehicle>(TrafficVehicleClass, FTransform(FRotator(), SpawnPosition), SpawnParams); ATrafficVehicle* TrafficVehicle = World->SpawnActor<ATrafficVehicle>(TrafficVehicleClass, FTransform(FRotator(), SpawnPosition), SpawnParams);
if (TrafficVehicle) if (TrafficVehicle)
{ {
...@@ -81,7 +97,7 @@ void ACustomGameMode::PlaceTrafficVehicle() ...@@ -81,7 +97,7 @@ void ACustomGameMode::PlaceTrafficVehicle()
} }
} }
void ACustomGameMode::PlaceUnspawnCollisionBox() void ACustomGameMode::PlaceUnspawnCollisionBox(int player)
{ {
UWorld* World = GetWorld(); UWorld* World = GetWorld();
if (World) if (World)
...@@ -95,8 +111,8 @@ void ACustomGameMode::PlaceUnspawnCollisionBox() ...@@ -95,8 +111,8 @@ void ACustomGameMode::PlaceUnspawnCollisionBox()
// Spawn Position of box // Spawn Position of box
float fSpawnPositionX = -iNumberOfBackwardTiles * fTileSize - fDepth / 2.0f - fTileSize / 2; float fSpawnPositionX = -iNumberOfBackwardTiles * fTileSize - fDepth / 2.0f - fTileSize / 2;
float fSpawnpositionY = fWidth / 2.0f - fTileSize / 2; float fSpawnpositionY = fWidth / 2.0f - fTileSize / 2 + 100000.0f * player;
float fSpawnPositionZ = fHeight / 2.0f; float fSpawnPositionZ = fHeight / 2.0f + 100000.0f * player;
FVector SpawnPosition = FVector(fSpawnPositionX, fSpawnpositionY, fSpawnPositionZ); FVector SpawnPosition = FVector(fSpawnPositionX, fSpawnpositionY, fSpawnPositionZ);
FTransform SpawnTransform = FTransform(FRotator(), SpawnPosition); FTransform SpawnTransform = FTransform(FRotator(), SpawnPosition);
...@@ -121,7 +137,7 @@ void ACustomGameMode::PlaceUnspawnCollisionBox() ...@@ -121,7 +137,7 @@ void ACustomGameMode::PlaceUnspawnCollisionBox()
} }
} }
void ACustomGameMode::PlaceScoreCollisionBox() void ACustomGameMode::PlaceScoreCollisionBox(int player)
{ {
UWorld* World = GetWorld(); UWorld* World = GetWorld();
...@@ -136,8 +152,8 @@ void ACustomGameMode::PlaceScoreCollisionBox() ...@@ -136,8 +152,8 @@ void ACustomGameMode::PlaceScoreCollisionBox()
// Spawn Position of box // Spawn Position of box
float fSpawnPositionX = -1 * fTileSize - fDepth / 2.0f - fTileSize / 2; float fSpawnPositionX = -1 * fTileSize - fDepth / 2.0f - fTileSize / 2;
float fSpawnpositionY = fWidth / 2.0f - fTileSize / 2; float fSpawnpositionY = fWidth / 2.0f - fTileSize / 2 + 100000.0f * player;
float fSpawnPositionZ = fHeight / 2.0f; float fSpawnPositionZ = fHeight / 2.0f + 100000.0f * player;
FVector SpawnPosition = FVector(fSpawnPositionX, fSpawnpositionY, fSpawnPositionZ); FVector SpawnPosition = FVector(fSpawnPositionX, fSpawnpositionY, fSpawnPositionZ);
FTransform SpawnTransform = FTransform(FRotator(), SpawnPosition); FTransform SpawnTransform = FTransform(FRotator(), SpawnPosition);
......
...@@ -10,7 +10,6 @@ APlayerCar::APlayerCar() ...@@ -10,7 +10,6 @@ APlayerCar::APlayerCar()
{ {
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true; PrimaryActorTick.bCanEverTick = true;
// Create the mesh // Create the mesh
SkeletalMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("CarMesh")); SkeletalMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("CarMesh"));
RootComponent = SkeletalMesh; RootComponent = SkeletalMesh;
...@@ -41,7 +40,6 @@ APlayerCar::APlayerCar() ...@@ -41,7 +40,6 @@ APlayerCar::APlayerCar()
void APlayerCar::BeginPlay() void APlayerCar::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
// Agents // Agents
TArray<AActor*> foundActors; TArray<AActor*> foundActors;
bool foundManager = false; bool foundManager = false;
...@@ -76,9 +74,10 @@ void APlayerCar::BeginPlay() ...@@ -76,9 +74,10 @@ void APlayerCar::BeginPlay()
if (!PlayerCarState) PlayerCarState = GetWorld()->SpawnActor<APlayerCarState>(); if (!PlayerCarState) PlayerCarState = GetWorld()->SpawnActor<APlayerCarState>();
// Set position of the player car // Set position of the player car
LaneChangeComponent->fCurrentLane = LaneChangeComponent->fTargetLane = static_cast<float>(CustomGameState->iNumberOfLane * 2.0f) - 1.0f; LaneChangeComponent->fCurrentLane = LaneChangeComponent->fTargetLane = static_cast<float>(CustomGameState->iNumberOfLane * 2.0f) - 1.0f;
float StartingY = LaneChangeComponent->fCurrentLane * fTileSize; float StartingY = LaneChangeComponent->fCurrentLane * fTileSize;
FVector SpawnPosition = FVector(0.0f, StartingY, 0.0f); FVector SpawnPosition = FVector(0, StartingY, 0);
SetActorLocation(SpawnPosition); SetActorLocation(SpawnPosition);
// Set the player car speed // Set the player car speed
...@@ -179,8 +178,7 @@ void APlayerCar::OnBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor ...@@ -179,8 +178,7 @@ void APlayerCar::OnBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor
} }
else else
{ {
// Pause the game UGameplayStatics::SetGamePaused(GetWorld(), true);
//UGameplayStatics::SetGamePaused(GetWorld(), true);
UGameplayStatics::OpenLevel(GetWorld(), "MainMenu", false, FString::Printf(TEXT("Score=%d"), PlayerCarState->GetScore())); UGameplayStatics::OpenLevel(GetWorld(), "MainMenu", false, FString::Printf(TEXT("Score=%d"), PlayerCarState->GetScore()));
} }
} }
......
...@@ -197,3 +197,18 @@ void ATrafficVehicle::BlinkLeft(float DeltaTime) ...@@ -197,3 +197,18 @@ void ATrafficVehicle::BlinkLeft(float DeltaTime)
} }
} }
} }
void ATrafficVehicle::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
// Dsactiver le Tick
SetActorTickEnabled(false);
// Arrter tous les timers associs cet objet
GetWorldTimerManager().ClearAllTimersForObject(this);
AsyncTask(ENamedThreads::GameThread, []() {}); // Forcer l'arrt des tches async
FFunctionGraphTask::CreateAndDispatchWhenReady([]() {}, TStatId(), nullptr, ENamedThreads::GameThread);
}
...@@ -75,10 +75,10 @@ private: ...@@ -75,10 +75,10 @@ private:
void CreateInitialRoadTiles(); void CreateInitialRoadTiles();
ARoadTile* AddRoadTile(TSubclassOf<ARoadTile> RoadTileClass); ARoadTile* AddRoadTile(TSubclassOf<ARoadTile> RoadTileClass);
void AddRoadTileRow(); void AddRoadTileRow();
void PlacePlayerCar(); void PlacePlayerCar(int player);
void PlaceTrafficVehicle(); void PlaceTrafficVehicle(int player);
void PlaceUnspawnCollisionBox(); void PlaceUnspawnCollisionBox(int player);
void PlaceScoreCollisionBox(); void PlaceScoreCollisionBox(int player);
// On collision with the unspawn box // On collision with the unspawn box
UFUNCTION() UFUNCTION()
......
...@@ -70,6 +70,7 @@ protected: ...@@ -70,6 +70,7 @@ protected:
// Called when the game starts or when spawned // Called when the game starts or when spawned
virtual void BeginPlay() override; virtual void BeginPlay() override;
virtual void PostInitializeComponents() override; virtual void PostInitializeComponents() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason);
public: public:
// Called every frame // Called every frame
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment