Skip to content

Commit

Permalink
57 add field model and textures (#67)
Browse files Browse the repository at this point in the history
* Add grid mesh

* Remove grid mesh

* Add grid VFX

---------

Co-authored-by: PabloRU <[email protected]>
  • Loading branch information
S1yGus and PabloRU authored Apr 14, 2024
1 parent 5409a05 commit 6de62af
Show file tree
Hide file tree
Showing 17 changed files with 60 additions and 14 deletions.
Binary file added Content/Materials/MI_Explosion.uasset
Binary file not shown.
Binary file modified Content/Materials/MI_Head.uasset
Binary file not shown.
Binary file modified Content/Materials/MI_Link.uasset
Binary file not shown.
Binary file removed Content/Materials/MI_Particle.uasset
Binary file not shown.
Binary file added Content/Materials/MI_WallEffect.uasset
Binary file not shown.
Binary file modified Content/Materials/M_CellObject.uasset
Binary file not shown.
Binary file modified Content/Materials/M_Grid.uasset
Binary file not shown.
Binary file modified Content/Materials/M_Particle.uasset
Binary file not shown.
Binary file not shown.
Binary file removed Content/Materials/Texture/T_SimpleGrid.uasset
Binary file not shown.
Binary file modified Content/VFX/NE_Explosion.uasset
Binary file not shown.
Binary file added Content/VFX/NE_Wall.uasset
Binary file not shown.
Binary file modified Content/VFX/NS_FoodTeardown.uasset
Binary file not shown.
Binary file added Content/VFX/NS_Wall.uasset
Binary file not shown.
Binary file modified Content/World/BP_Grid.uasset
Binary file not shown.
42 changes: 32 additions & 10 deletions Source/Snake_Game/World/SG_Grid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "Core/Grid.h"
#include "Components/LineBatchComponent.h"
#include "Components/StaticMeshComponent.h"
#include "NiagaraComponent.h"

DEFINE_LOG_CATEGORY_STATIC(LogGridView, All, All)

Expand All @@ -21,6 +22,10 @@ ASG_Grid::ASG_Grid()
GridMesh = CreateDefaultSubobject<UStaticMeshComponent>("GridMesh");
check(GridMesh);
GridMesh->SetupAttachment(GetRootComponent());

WallEffect = CreateDefaultSubobject<UNiagaraComponent>("WallEffect");
check(WallEffect);
WallEffect->SetupAttachment(GetRootComponent());
}

void ASG_Grid::Tick(float DeltaTime)
Expand All @@ -42,6 +47,23 @@ void ASG_Grid::SetModel(const TSharedPtr<Grid>& Grid, uint32 InCellSize)
WorldWidth = GridSize.width * CellSize;
WorldHeight = GridSize.height * CellSize;

SetupGrid();
SetupWallEffect();
}

void ASG_Grid::UpdateColors(const FSnakeDesignTableRow& DesignSet)
{
if (MaterialInstance)
{
MaterialInstance->SetVectorParameterValue(BackgroundColorParamName, DesignSet.GridBackgroundColor);
MaterialInstance->SetVectorParameterValue(WallsColorParamName, DesignSet.GridWallsColor);
MaterialInstance->SetVectorParameterValue(LinesColorParamName, DesignSet.GridLinesColor);
WallEffect->SetColorParameter(WallEffectColorParamName, DesignSet.GridWallsColor);
}
}

void ASG_Grid::SetupGrid()
{
check(GridMesh->GetStaticMesh());
const FBox Box = GridMesh->GetStaticMesh()->GetBoundingBox();
const FVector BoxSize = Box.GetSize();
Expand All @@ -50,21 +72,21 @@ void ASG_Grid::SetModel(const TSharedPtr<Grid>& Grid, uint32 InCellSize)
GridMesh->SetRelativeScale3D(FVector(WorldHeight / BoxSize.X, WorldWidth / BoxSize.Y, 1.0));
GridMesh->SetRelativeLocation(0.5 * FVector(WorldHeight, WorldWidth, -BoxSize.Z));

MaterialInstance = GridMesh->CreateAndSetMaterialInstanceDynamic(0);
if (MaterialInstance)
if (MaterialInstance = GridMesh->CreateAndSetMaterialInstanceDynamic(0))
{
MaterialInstance->SetVectorParameterValue(GirdSizeParameterName, FVector(GridSize.height, GridSize.width, 0.0));
MaterialInstance->SetVectorParameterValue(GirdSizeParamName, FVector(GridSize.height, GridSize.width, 0.0));
}
}

void ASG_Grid::UpdateColors(const FSnakeDesignTableRow& DesignSet)
void ASG_Grid::SetupWallEffect()
{
if (MaterialInstance)
{
MaterialInstance->SetVectorParameterValue(BackgroundColorParameterName, DesignSet.GridBackgroundColor);
MaterialInstance->SetVectorParameterValue(WallsColorParameterName, DesignSet.GridWallsColor);
MaterialInstance->SetVectorParameterValue(LinesColorParameterName, DesignSet.GridLinesColor);
}
check(WallEffect->GetAsset());
WallEffect->SetRelativeLocation(0.5 * FVector(WorldHeight, WorldWidth, 0.0));
WallEffect->SetVectorParameter(WallEffectExternalSizeParamName, FVector(WorldHeight, WorldWidth, 0.0));
WallEffect->SetVectorParameter(WallEffectInternalSizeParamName,
FVector(WorldHeight - CellSize * WallThicknessFactor, WorldWidth - CellSize * WallThicknessFactor, 1.0));
WallEffect->SetFloatParameter(WallEffectSpawnRateParamName, GridSize.width * GridSize.height * WallEffectSpawnRateFactor);
WallEffect->SetCastShadow(true);
}

void ASG_Grid::DrawDebugGrid()
Expand Down
32 changes: 28 additions & 4 deletions Source/Snake_Game/World/SG_Grid.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "SG_Grid.generated.h"

class UStaticMeshComponent;
class UNiagaraComponent;
struct FSnakeDesignTableRow;

namespace SnakeGame
Expand Down Expand Up @@ -45,17 +46,38 @@ class SNAKE_GAME_API ASG_Grid : public AActor
UPROPERTY(VisibleAnywhere, Category = "Components")
TObjectPtr<UStaticMeshComponent> GridMesh;

UPROPERTY(VisibleAnywhere, Category = "Components")
TObjectPtr<UNiagaraComponent> WallEffect;

UPROPERTY(EditDefaultsOnly, Category = "Materials")
FName GirdSizeParameterName{"GridSize"};
FName GirdSizeParamName{"GridSize"};

UPROPERTY(EditDefaultsOnly, Category = "Materials")
FName BackgroundColorParameterName{"BackgroundColor"};
FName BackgroundColorParamName{"BackgroundColor"};

UPROPERTY(EditDefaultsOnly, Category = "Materials")
FName WallsColorParameterName{"WallsColor"};
FName WallsColorParamName{"WallsColor"};

UPROPERTY(EditDefaultsOnly, Category = "Materials")
FName LinesColorParameterName{"LinesColor"};
FName LinesColorParamName{"LinesColor"};

UPROPERTY(EditDefaultsOnly, Category = "VFX")
FName WallEffectColorParamName{"Color"};

UPROPERTY(EditDefaultsOnly, Category = "VFX")
FName WallEffectExternalSizeParamName{"ExternalSize"};

UPROPERTY(EditDefaultsOnly, Category = "VFX")
FName WallEffectInternalSizeParamName{"InternalSize"};

UPROPERTY(EditDefaultsOnly, Category = "VFX")
FName WallEffectSpawnRateParamName{"SpawnRate"};

UPROPERTY(EditDefaultsOnly, Category = "VFX", Meta = (ClampMin = "0.0"))
float WallEffectSpawnRateFactor{2.4f};

UPROPERTY(EditDefaultsOnly, Category = "VFX", Meta = (ClampMin = "0.0"))
float WallThicknessFactor{1.6f};

private:
#pragma region With metadata
Expand All @@ -68,5 +90,7 @@ class SNAKE_GAME_API ASG_Grid : public AActor
uint32 WorldWidth;
uint32 WorldHeight;

FORCEINLINE void SetupGrid();
FORCEINLINE void SetupWallEffect();
void DrawDebugGrid();
};

0 comments on commit 6de62af

Please sign in to comment.