Skip to content
Snippets Groups Projects
Commit 31db875f authored by Yannis ROCHE's avatar Yannis ROCHE :x:
Browse files

.

parent 9d797df4
No related branches found
No related tags found
No related merge requests found
No preview for this file type
File added
No preview for this file type
......@@ -27,6 +27,7 @@ void ACustomGameMode::BeginPlay()
PlaceUnspawnCollisionBox();
PlaceScoreCollisionBox();
CreateInitialRoadTiles();
CreateInitialDiamondSquare();
PlacePlayerCar();
PlaceTrafficVehicle();
}
......@@ -180,6 +181,22 @@ void ACustomGameMode::CreateInitialRoadTiles()
}
}
void ACustomGameMode::CreateInitialDiamondSquare()
{
for (int i = 0; i < 5; i++)
{
UWorld* World = GetWorld();
if (World)
{
FVector SpawnPosition = FVector(0.0f, i * 10000, 0.0f);
FActorSpawnParameters SpawnParams;
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
ADiamondSquare* DiamondSquare = World->SpawnActor<ADiamondSquare>(DiamondSquareClass, FTransform(FRotator(), SpawnPosition), SpawnParams);
DiamondSquare->startY = i * 100;
}
}
}
void ACustomGameMode::AddRoadTileRow()
{
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
......
......@@ -5,6 +5,8 @@
#include "ProceduralMeshComponent.h"
#include "KismetProceduralMeshLibrary.h"
float ADiamondSquare::Y = 0.0f;
// Sets default values
ADiamondSquare::ADiamondSquare()
{
......@@ -13,6 +15,8 @@ ADiamondSquare::ADiamondSquare()
ProceduralMesh = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));
ProceduralMesh->SetupAttachment(GetRootComponent());
ADiamondSquare::Y++;
}
// Called when the game starts or when spawned
......@@ -76,7 +80,7 @@ void ADiamondSquare::CreateVertices()
for (int y = 0; y <= YSize; y++)
{
// Gnration du bruit de Perlin
float noise = (FMath::PerlinNoise2D(FVector2D(x * NoiseScale + 0.1, y * NoiseScale + 0.1)) + 1.0f) * ZMultiplier;
float noise = (FMath::PerlinNoise2D(FVector2D(x * NoiseScale, (startY + y) *NoiseScale)) + 1.0f) * ZMultiplier;
// Modulation par la courbe de Gauss
float z = noise * sigmoidFactor;
......
......@@ -5,6 +5,7 @@
#include "CustomGameState.h"
#include "RoadTile.h"
#include "PlayerCar.h"
#include "DiamondSquare.h"
#include "TrafficVehicle.h"
#include "CoreMinimal.h"
......@@ -35,6 +36,9 @@ public:
UPROPERTY(EditAnywhere, Category = "Spawnable Class")
TSubclassOf<APlayerCar> PlayerCarClass;
UPROPERTY(EditAnywhere, Category = "Spawnable Class")
TSubclassOf<ADiamondSquare> DiamondSquareClass;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Spawnable Class")
TArray<TSubclassOf<ATrafficVehicle>> TrafficVehiclesClasses;
......@@ -73,6 +77,7 @@ private:
private:
void CreateInitialRoadTiles();
void CreateInitialDiamondSquare();
ARoadTile* AddRoadTile(TSubclassOf<ARoadTile> RoadTileClass);
void AddRoadTileRow();
void PlacePlayerCar();
......
......@@ -20,28 +20,31 @@ public:
ADiamondSquare();
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
int XSize;
int XSize = 100;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
int YSize;
int YSize = 100;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
float ZMultiplier = 1.0f;
float ZMultiplier = 250.0f;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
float NoiseScale = 1.0f;
float NoiseScale = 0.1f;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0.000000001))
float Scale;
float Scale = 100;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0.000000001))
float UVScale;
float UVScale = 1.0f;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
float flatRatio = 0.1;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
float slopeRatio = 0.1;
float slopeRatio = 0.3;
UPROPERTY(EditAnywhere, meta = (ClampMin = 0))
int startY = 0;
protected:
// Called when the game starts or when spawned
......@@ -55,7 +58,6 @@ public:
// Called every frame
virtual void Tick(float DeltaTime) override;
private:
UProceduralMeshComponent* ProceduralMesh;
TArray<FVector> Vertices;
......@@ -64,6 +66,8 @@ private:
TArray<FVector> Normals;
TArray<struct FProcMeshTangent> Tangents;
static float Y;
void CreateVertices();
void CreateTriangles();
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment