Introducing:
BuildPart is for grouping builds using the same shapes, snaps and features.BuildPart is used everywhere, for placing, snaping, sorting, in every building actor, build manager or build component.
BuildPart are defined in enum E_BuildPart (SurvivalBuildingSystem -> Core -> Enums) and data for each in Data_BuildPart (Using Struct_BuildPart)
Structure of Datatable:
Row Name -> Same as in E_BuildPartGroundOffset -> Offset that used when it's place on ground (off snapping).
FoundationOffset -> Offset that used when it's place on floor (off snapping).
Actor -> Actor asset (BP_Building child)
BuildType -> BuildType from E_BuildType to group.
SupportType ->Array of E_BuildSupportType to define how to and where to place.
SnapOffset -> Offset that used when it's place on snap, only used for Door actualy, because the door uses its point of origin as the axis of rotation and therefore it needs to be offset.
SupportLost -> SupportLost is for define how many support point building lost from parent support point (Currently only for ceilings).
RotationType -> Using E_RotationType to determine snap minimum rotation angle.
BuildParts:
1] Foundations (Tiered) :
BuildPart_SquareFoundation

Square Foundation is basique foundation, most of it is under the ground to avoid holes underneath, you can stack them one above the other.
Foundation is required for most of other buildings.
Size (UE unit): 400x400x400
SupportTypes: byBuildSnap, byGround
So they can be put on ground and snap to other foundations & pillars.
RotationType: Rotation90
So they can be rotate on snap by 90° (rotation on ground is not affected), if you have wooden foundation to make every plank in same direction.
BuildPart_TriangleFoundation

Same as Square Foundation, but in triangle shape.
SupportTypes: byBuildSnap, byGround
RotationType: Rotation120
So they can be rotate on snap by 120°, is equilateral triangle so is needed to rotate every 120°.
BuildPart_Pillar

Pillar is basique foundation too, you can stack them, snap with foundations, walls, use as pillar, support, or just for decoration on walls.
SupportTypes: byBuildSnap, byGround, byBuildFloor
Like foundations, but have byBuildFloor so tey can be put on ceiling or foundation freely without snaping
RotationType: NoRotation
So they can't be rotate on snap because it's same thing, but you can rotate on ground
2] Walls (Tiered) :
BuildPart_Wall

It's wall ! Funny ... So basic wall, can be stacked one above the other, use as wall on foundation, or use directly on ground, or freely on floor
SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: Rotation180
So they can be rotate on snap by 180° to use side you want
BuildPart_DoorFrame

Same as Wall but with hole for single door. SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: Rotation180
BuildPart_WindowFrame

Same as Wall but with hole for window. SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: Rotation180
BuildPart_DoubleDoorFrame

Same as Wall but with hole for double doors. SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: Rotation180
BuildPart_SemiWall

Almost same as Wall but it's height is 1/2 of regular wall, so you can snap to 180° stairs, or use has wall fondation, or fence ?
It can be stack them or with regular walls.
SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: Rotation180
BuildPart_SlopeWall

SlopeWall is for use with BuildPart_RoofTop or BuildPart_RoofWindow.
SupportTypes: byBuildSnap
RotationType: Rotation180
BuildPart_SlopeWallUp

SlopeWallUp is for use with roofs, you can rotate it at 180°, so we don't need right and left version, just rotate it.
SupportTypes: byBuildSnap
RotationType: Rotation180
BuildPart_SlopeWallDown

SlopeWallDown can only be attach to side of another wall, it's the only BuildPart that can be snap to side of wall, and can't rotate, because snap define rotation of it, so manualy rotation is not needed.
SupportTypes: byBuildSnap
RotationType: NoRotation
3] Ceilings (Tiered) :
BuildPart_SquareCeiling

Square Ceiling if using as ceiling and as floor, it's only BuildPart with TriangleCeiling that have SupportLost, that use for bearing, to know if each ceiling can support other building before wall/pillar needed (to make bridge for example)
SupportTypes: byBuildSnap
RotationType: Rotation90
BuildPart_TriangleCeiling

Same as Square one but triangle ...
SupportTypes: byBuildSnap
RotationType: Rotation120
4] Roofs (Tiered) :
BuildPart_Roof

Basic roof, roofs can support only other roofs or ceilings.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofWindow

Roof with part to adapt to SlopeWall or RootTops.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTriangle

Triangle roof, used to walls on triangle foundation/ceiling.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofCornerOuter

Corner roof for corner part, like some building need. Need only one wall to support it.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofCornerInner

Roof corner for inner corner, and this roof can only supported by another roof, it can't be supported by wall contrary to almost all other roofs.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopStraight

RoofTop with 2 opposite sides that are open.
A straight RoofTop, need only one support.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopT

RoofTop with 3 sides that are open.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopCorner

RoofTop with 2 connected sides that are open.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopEnd

RoofTop with one side that are open.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopCross

RoofTop with 4 sides that are open, basically a crossing part.
Like RoofCornerInner, this roof can only supported by another roof, it can't be supported by wall contrary to almost all other roofs.
SupportTypes: byBuildSnap
RotationType: NoRotation
BuildPart_RoofTopFull

RoofTop fully closed, for top of tower roof for example.
SupportTypes: byBuildSnap
RotationType: NoRotation
5] Doors/Windows (Tiered) :
BuildPart_Door

Door is only one that use SnapOffset because it's origin point is used as axis for rotation, and for that, origin point on door need to be offset from center, and need offset for snap placing because snap use center of his box to place.
It can be rotated to 180° to make handle in other side
SupportTypes: byBuildSnap
RotationType: Rotation180
BuildPart_DoubleDoor

Double Door don't need offset like door, because it's static mesh is only use for placement, because actor for DoubleDoor, use single door static mesh.
It's can't be rotated, because is double door, handle always on center SupportTypes: byBuildSnap
RotationType: Rotation180
BuildPart_Window

Window is the only part that use transparent part in staticmesh, is that why static mesh of window don't have nanite enabled. SupportTypes: byBuildSnap
RotationType: NoRotation
6] Stairs (Tiered) :
BuildPart_StraightStairs

Basic striaght stairs.
SupportTypes: byBuildSnap, byGround
RotationType: Rotation90
BuildPart_180Stairs

2 small stairs connected by 1 step to make 180° stairs like stairs on some school or city building.
SupportTypes: byBuildSnap, byGround
RotationType: Rotation90
BuildPart_Ramp

Basicly is just ramp but it need snap contrary to stairs.
SupportTypes: byBuildSnap
RotationType: NoRotation
7] Railings (Tiered) :
BuildPart_Railing

Railing as fence or for bridge or stairs etc.
Railing is only one building that use shape, to adapt mesh to stairs like BuildPart_180Stairs, each shape need to be stored in Data_Buildings, but only the shape 1 is show on Build Window
It can be put on ground on even on building floor
SupportTypes: byBuildSnap, byGround, byBuildFloor
RotationType: NoRotation
8] Lights:
BuildPart_CeilingLight

CeilingLight can only be place on ceiling, and have light on them.
CeilingLight don't need snap, so it can therefore be rotated as we see fit
Lights are not tiered, that mean, it's not bound to one tier.
SupportTypes: byBuildCeiling
RotationType: NoRotation
BuildPart_WallLight

WallLight can only be place on wall, and have light on them.
WallLight don't need snap, so it can therefore be rotated as we see fit
SupportTypes: byBuildWall
RotationType: NoRotation