CARLA
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
AProceduralBuilding Class Reference

#include <ProceduralBuilding.h>

+ Inheritance diagram for AProceduralBuilding:

Public Member Functions

 AProceduralBuilding ()
 
void ConvertOldBP_ToNativeCodeObject (AActor *BP_Building)
 
UHierarchicalInstancedStaticMeshComponent * GetHISMComp (const UStaticMesh *SM)
 
void HideAllChildren ()
 
void SetBaseMeshes (const TArray< UStaticMesh * > &InBaseMeshes, const TArray< TSubclassOf< AActor > > &InBaseBPs, const TArray< UStaticMesh * > &InCornerBaseMeshes, const TArray< TSubclassOf< AActor > > &InCornerBaseBPs, const TArray< UStaticMesh * > &InDoorMeshes, const TArray< TSubclassOf< AActor > > &InDoorBPs)
 
void SetBaseParameters (const TSet< int > &InDoorsIndexPosition, const TArray< bool > &InUseWallMesh, int InNumFloors, int InLengthX, int InLengthY, bool InCorners, bool InUseFullBlocks)
 
void SetBodyMeshes (const TArray< UStaticMesh * > &InBodyMeshes, const TArray< TSubclassOf< AActor > > &InBodyBPs, const TArray< UStaticMesh * > &InCornerBodyMeshes, const TArray< TSubclassOf< AActor > > &InCornerBodyBPs, const TArray< UStaticMesh * > &InWallMeshes, const TArray< TSubclassOf< AActor > > &InWallBPs)
 
void SetTopMeshes (const TArray< UStaticMesh * > &InTopMeshes, const TArray< TSubclassOf< AActor > > &InTopBPs, const TArray< UStaticMesh * > &InCornerTopMeshes, const TArray< TSubclassOf< AActor > > &InCornerTopBPs, const TArray< UStaticMesh * > &InRoofMeshes, const TArray< TSubclassOf< AActor > > &InRoofBPs)
 
void SetVisibilityParameters (const TArray< bool > &InSideVisibility, const TArray< bool > &InCornerVisibility, bool InRoofVisibility)
 

Protected Member Functions

void CreateBuilding ()
 
void FixMobility ()
 
void Reset ()
 

Protected Attributes

TArray< TSubclassOf< AActor > > BaseBPs
 
TArray< UStaticMesh * > BaseMeshes
 Meshes.
 
TArray< TSubclassOf< AActor > > BodyBPs
 
TArray< UStaticMesh * > BodyMeshes
 Meshes | Body.
 
TArray< TObjectPtr< UChildActorComponent > > ChildActorComps
 
TArray< TSubclassOf< AActor > > CornerBaseBPs
 
TArray< UStaticMesh * > CornerBaseMeshes
 
TArray< TSubclassOf< AActor > > CornerBodyBPs
 
TArray< UStaticMesh * > CornerBodyMeshes
 
bool Corners = false
 
TArray< TSubclassOf< AActor > > CornerTopBPs
 
TArray< UStaticMesh * > CornerTopMeshes
 
TArray< bool > CornerVisibility
 
TArray< TSubclassOf< AActor > > DoorBPs
 
TArray< UStaticMesh * > DoorMeshes
 
TSet< int > DoorsIndexPosition
 Base Parameters.
 
TMap< FString, TObjectPtr< UHierarchicalInstancedStaticMeshComponent > > HISMComps
 
int LengthX = 0
 
int LengthY = 0
 
int NumFloors = 0
 
TArray< TSubclassOf< AActor > > RoofBPs
 
TArray< UStaticMesh * > RoofMeshes
 
bool RoofVisibility = true
 
TObjectPtr< UStaticMeshComponent > RootSMComp = nullptr
 
TArray< bool > SideVisibility
 Base Parameters | Visibility.
 
TArray< TSubclassOf< AActor > > TopBPs
 
TArray< UStaticMesh * > TopMeshes
 Meshes | Top.
 
bool UseFullBlocks = false
 
TArray< bool > UseWallMesh
 
TArray< TSubclassOf< AActor > > WallBPs
 
TArray< UStaticMesh * > WallMeshes
 

Private Member Functions

float AddChunck (const UStaticMesh *SelectedMesh, const TSubclassOf< AActor > SelectedBP, bool Visible, FBox &OutSelectedMeshBounds)
 
void AddMeshToBuilding (const UStaticMesh *SM)
 
TSet< int > CalculateDoorsIndexInSide (int StartIndex, int Length)
 
void CalculateSidesLength ()
 
void CalculateSideVisibilities (int SideIndex, bool &MainVisibility, bool &CornerVisbility)
 
void ChooseGeometryToSpawn (const TArray< UStaticMesh * > &InMeshes, const TArray< TSubclassOf< AActor > > &InMainBPs, UStaticMesh **OutMesh, TSubclassOf< AActor > *OutBP)
 
void CreateFloor (const FloorMeshCollection &MeshCollection, bool IncludeDoors, bool IncludeWalls)
 
void CreateRoof ()
 
float CreateSide (const FloorMeshCollection &MeshCollection, const TSet< int > &AuxiliarPositions, int SideLength, bool MainVisibility, bool CornerVisbility)
 
TSet< int > GenerateWallsIndexPositions (int Length)
 
FVector GetMeshSize (const UStaticMesh *SM)
 
void Init ()
 
void UpdateTransformPositionToNextChunk (const FVector &Box)
 
void UpdateTransformPositionToNextSide (const FBox &Box)
 

Private Attributes

FTransform CurrentTransform = FTransform::Identity
 
FBox LastSelectedMeshBounds
 
TArray< int > SidesLength
 

Detailed Description

Definition at line 27 of file ProceduralBuilding.h.

Constructor & Destructor Documentation

◆ AProceduralBuilding()

AProceduralBuilding::AProceduralBuilding ( )

Definition at line 8 of file ProceduralBuilding.cpp.

References CornerVisibility, RootSMComp, SideVisibility, and UseWallMesh.

Member Function Documentation

◆ AddChunck()

float AProceduralBuilding::AddChunck ( const UStaticMesh *  SelectedMesh,
const TSubclassOf< AActor >  SelectedBP,
bool  Visible,
FBox &  OutSelectedMeshBounds 
)
private

◆ AddMeshToBuilding()

void AProceduralBuilding::AddMeshToBuilding ( const UStaticMesh *  SM)
private

Definition at line 584 of file ProceduralBuilding.cpp.

References CurrentTransform, and GetHISMComp().

Referenced by AddChunck().

◆ CalculateDoorsIndexInSide()

TSet< int > AProceduralBuilding::CalculateDoorsIndexInSide ( int  StartIndex,
int  Length 
)
private

Definition at line 452 of file ProceduralBuilding.cpp.

References DoorsIndexPosition.

Referenced by CreateFloor().

◆ CalculateSidesLength()

void AProceduralBuilding::CalculateSidesLength ( )
private

Definition at line 432 of file ProceduralBuilding.cpp.

References LengthX, LengthY, SidesLength, and UseFullBlocks.

Referenced by Init().

◆ CalculateSideVisibilities()

void AProceduralBuilding::CalculateSideVisibilities ( int  SideIndex,
bool &  MainVisibility,
bool &  CornerVisbility 
)
private

Definition at line 478 of file ProceduralBuilding.cpp.

References CornerVisibility, SideVisibility, and UseFullBlocks.

Referenced by CreateFloor().

◆ ChooseGeometryToSpawn()

void AProceduralBuilding::ChooseGeometryToSpawn ( const TArray< UStaticMesh * > &  InMeshes,
const TArray< TSubclassOf< AActor > > &  InMainBPs,
UStaticMesh **  OutMesh = nullptr,
TSubclassOf< AActor > *  OutBP = nullptr 
)
private

Definition at line 484 of file ProceduralBuilding.cpp.

Referenced by CreateRoof(), and CreateSide().

◆ ConvertOldBP_ToNativeCodeObject()

void AProceduralBuilding::ConvertOldBP_ToNativeCodeObject ( AActor *  BP_Building)

Definition at line 57 of file ProceduralBuilding.cpp.

References ChildActorComps, and GetHISMComp().

◆ CreateBuilding()

void AProceduralBuilding::CreateBuilding ( )
protected

◆ CreateFloor()

void AProceduralBuilding::CreateFloor ( const FloorMeshCollection &  MeshCollection,
bool  IncludeDoors,
bool  IncludeWalls 
)
private

◆ CreateRoof()

void AProceduralBuilding::CreateRoof ( )
private

◆ CreateSide()

float AProceduralBuilding::CreateSide ( const FloorMeshCollection &  MeshCollection,
const TSet< int > &  AuxiliarPositions,
int  SideLength,
bool  MainVisibility,
bool  CornerVisbility 
)
private

◆ FixMobility()

void AProceduralBuilding::FixMobility ( )
protected

Definition at line 49 of file ProceduralBuilding.cpp.

References ChildActorComps.

◆ GenerateWallsIndexPositions()

TSet< int > AProceduralBuilding::GenerateWallsIndexPositions ( int  Length)
private

Definition at line 468 of file ProceduralBuilding.cpp.

Referenced by CreateFloor().

◆ GetHISMComp()

UHierarchicalInstancedStaticMeshComponent * AProceduralBuilding::GetHISMComp ( const UStaticMesh *  SM)

Definition at line 22 of file ProceduralBuilding.cpp.

References HISMComps.

Referenced by AddMeshToBuilding(), and ConvertOldBP_ToNativeCodeObject().

◆ GetMeshSize()

FVector AProceduralBuilding::GetMeshSize ( const UStaticMesh *  SM)
private

Definition at line 591 of file ProceduralBuilding.cpp.

Referenced by AddChunck().

◆ HideAllChildren()

void AProceduralBuilding::HideAllChildren ( )

Definition at line 122 of file ProceduralBuilding.cpp.

References ChildActorComps.

◆ Init()

void AProceduralBuilding::Init ( )
private

Definition at line 273 of file ProceduralBuilding.cpp.

References CalculateSidesLength(), and Reset().

Referenced by CreateBuilding().

◆ Reset()

void AProceduralBuilding::Reset ( )
protected

Definition at line 241 of file ProceduralBuilding.cpp.

References ChildActorComps, CurrentTransform, HISMComps, and SidesLength.

Referenced by Init().

◆ SetBaseMeshes()

void AProceduralBuilding::SetBaseMeshes ( const TArray< UStaticMesh * > &  InBaseMeshes,
const TArray< TSubclassOf< AActor > > &  InBaseBPs,
const TArray< UStaticMesh * > &  InCornerBaseMeshes,
const TArray< TSubclassOf< AActor > > &  InCornerBaseBPs,
const TArray< UStaticMesh * > &  InDoorMeshes,
const TArray< TSubclassOf< AActor > > &  InDoorBPs 
)

◆ SetBaseParameters()

void AProceduralBuilding::SetBaseParameters ( const TSet< int > &  InDoorsIndexPosition,
const TArray< bool > &  InUseWallMesh,
int  InNumFloors,
int  InLengthX,
int  InLengthY,
bool  InCorners,
bool  InUseFullBlocks 
)

◆ SetBodyMeshes()

void AProceduralBuilding::SetBodyMeshes ( const TArray< UStaticMesh * > &  InBodyMeshes,
const TArray< TSubclassOf< AActor > > &  InBodyBPs,
const TArray< UStaticMesh * > &  InCornerBodyMeshes,
const TArray< TSubclassOf< AActor > > &  InCornerBodyBPs,
const TArray< UStaticMesh * > &  InWallMeshes,
const TArray< TSubclassOf< AActor > > &  InWallBPs 
)

◆ SetTopMeshes()

void AProceduralBuilding::SetTopMeshes ( const TArray< UStaticMesh * > &  InTopMeshes,
const TArray< TSubclassOf< AActor > > &  InTopBPs,
const TArray< UStaticMesh * > &  InCornerTopMeshes,
const TArray< TSubclassOf< AActor > > &  InCornerTopBPs,
const TArray< UStaticMesh * > &  InRoofMeshes,
const TArray< TSubclassOf< AActor > > &  InRoofBPs 
)

Definition at line 196 of file ProceduralBuilding.cpp.

References CornerTopBPs, CornerTopMeshes, RoofBPs, RoofMeshes, TopBPs, and TopMeshes.

◆ SetVisibilityParameters()

void AProceduralBuilding::SetVisibilityParameters ( const TArray< bool > &  InSideVisibility,
const TArray< bool > &  InCornerVisibility,
bool  InRoofVisibility 
)

Definition at line 154 of file ProceduralBuilding.cpp.

References CornerVisibility, RoofVisibility, and SideVisibility.

◆ UpdateTransformPositionToNextChunk()

void AProceduralBuilding::UpdateTransformPositionToNextChunk ( const FVector &  Box)
private

◆ UpdateTransformPositionToNextSide()

void AProceduralBuilding::UpdateTransformPositionToNextSide ( const FBox &  Box)
private

Member Data Documentation

◆ BaseBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::BaseBPs
protected

Definition at line 176 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ BaseMeshes

TArray<UStaticMesh*> AProceduralBuilding::BaseMeshes
protected

Meshes.

Meshes | Base

Definition at line 172 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ BodyBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::BodyBPs
protected

Definition at line 204 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().

◆ BodyMeshes

TArray<UStaticMesh*> AProceduralBuilding::BodyMeshes
protected

Meshes | Body.

Definition at line 200 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().

◆ ChildActorComps

TArray<TObjectPtr<UChildActorComponent> > AProceduralBuilding::ChildActorComps
protected

◆ CornerBaseBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::CornerBaseBPs
protected

Definition at line 192 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ CornerBaseMeshes

TArray<UStaticMesh*> AProceduralBuilding::CornerBaseMeshes
protected

Definition at line 188 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ CornerBodyBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::CornerBodyBPs
protected

Definition at line 220 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().

◆ CornerBodyMeshes

TArray<UStaticMesh*> AProceduralBuilding::CornerBodyMeshes
protected

Definition at line 216 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().

◆ Corners

bool AProceduralBuilding::Corners = false
protected

Definition at line 139 of file ProceduralBuilding.h.

Referenced by CreateSide(), and SetBaseParameters().

◆ CornerTopBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::CornerTopBPs
protected

Definition at line 240 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetTopMeshes().

◆ CornerTopMeshes

TArray<UStaticMesh*> AProceduralBuilding::CornerTopMeshes
protected

Definition at line 236 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetTopMeshes().

◆ CornerVisibility

TArray<bool> AProceduralBuilding::CornerVisibility
protected

◆ CurrentTransform

FTransform AProceduralBuilding::CurrentTransform = FTransform::Identity
private

◆ DoorBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::DoorBPs
protected

Definition at line 184 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ DoorMeshes

TArray<UStaticMesh*> AProceduralBuilding::DoorMeshes
protected

Definition at line 180 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseMeshes().

◆ DoorsIndexPosition

TSet<int> AProceduralBuilding::DoorsIndexPosition
protected

Base Parameters.

Definition at line 119 of file ProceduralBuilding.h.

Referenced by CalculateDoorsIndexInSide(), and SetBaseParameters().

◆ HISMComps

TMap<FString, TObjectPtr<UHierarchicalInstancedStaticMeshComponent> > AProceduralBuilding::HISMComps
protected

Definition at line 104 of file ProceduralBuilding.h.

Referenced by GetHISMComp(), and Reset().

◆ LastSelectedMeshBounds

FBox AProceduralBuilding::LastSelectedMeshBounds
private

Definition at line 309 of file ProceduralBuilding.h.

Referenced by CreateRoof(), and CreateSide().

◆ LengthX

int AProceduralBuilding::LengthX = 0
protected

Definition at line 131 of file ProceduralBuilding.h.

Referenced by CalculateSidesLength(), CreateRoof(), and SetBaseParameters().

◆ LengthY

int AProceduralBuilding::LengthY = 0
protected

Definition at line 135 of file ProceduralBuilding.h.

Referenced by CalculateSidesLength(), CreateRoof(), and SetBaseParameters().

◆ NumFloors

int AProceduralBuilding::NumFloors = 0
protected

Definition at line 127 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBaseParameters().

◆ RoofBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::RoofBPs
protected

Definition at line 248 of file ProceduralBuilding.h.

Referenced by CreateRoof(), and SetTopMeshes().

◆ RoofMeshes

TArray<UStaticMesh*> AProceduralBuilding::RoofMeshes
protected

Definition at line 244 of file ProceduralBuilding.h.

Referenced by CreateRoof(), and SetTopMeshes().

◆ RoofVisibility

bool AProceduralBuilding::RoofVisibility = true
protected

Definition at line 159 of file ProceduralBuilding.h.

Referenced by CreateRoof(), and SetVisibilityParameters().

◆ RootSMComp

TObjectPtr<UStaticMeshComponent> AProceduralBuilding::RootSMComp = nullptr
protected

Definition at line 111 of file ProceduralBuilding.h.

Referenced by AProceduralBuilding().

◆ SidesLength

TArray<int> AProceduralBuilding::SidesLength
private

Definition at line 304 of file ProceduralBuilding.h.

Referenced by CalculateSidesLength(), CreateFloor(), and Reset().

◆ SideVisibility

TArray<bool> AProceduralBuilding::SideVisibility
protected

Base Parameters | Visibility.

Definition at line 151 of file ProceduralBuilding.h.

Referenced by AProceduralBuilding(), CalculateSideVisibilities(), and SetVisibilityParameters().

◆ TopBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::TopBPs
protected

Definition at line 232 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetTopMeshes().

◆ TopMeshes

TArray<UStaticMesh*> AProceduralBuilding::TopMeshes
protected

Meshes | Top.

Definition at line 228 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetTopMeshes().

◆ UseFullBlocks

bool AProceduralBuilding::UseFullBlocks = false
protected

◆ UseWallMesh

TArray<bool> AProceduralBuilding::UseWallMesh
protected

Definition at line 123 of file ProceduralBuilding.h.

Referenced by AProceduralBuilding(), CreateFloor(), and SetBaseParameters().

◆ WallBPs

TArray<TSubclassOf<AActor> > AProceduralBuilding::WallBPs
protected

Definition at line 212 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().

◆ WallMeshes

TArray<UStaticMesh*> AProceduralBuilding::WallMeshes
protected

Definition at line 208 of file ProceduralBuilding.h.

Referenced by CreateBuilding(), and SetBodyMeshes().


The documentation for this class was generated from the following files: