Hi all,
Red rectangles are c++ classes. White ones are blueprints. Red arrows are include . Blue arrows are inhéritance (c++ class → blueprint). Black arrows are blueprint classes references.
MyNodeClass, MySegmentClass and InfrastructureGraphManagerClass are used to define and update the road network graph.
For instance :
AMySegmentClass* AInfrastructureGraphManager::ConnectNodes(AMyNodeClass * Nod1, AMyNodeClass * Nod2, SegmentType SegType, bool IsCurv)
FSubdividedSegment AInfrastructureGraphManager::SubdivideSegment(AMySegmentClass * Segment, FVector NewNodeLocation)
DrawPreviewInfrastructure_BP is used to preview the road network before validating it.
For instance :
DrawStraightSegment()
DrawTangentSegment()
DrawTangentSegmentsAndCurve()
SnapMouseOnExistingNode()
DrawInfrastructure_BP is used to draw the road Network after validating the preview.
For instance :
DrawSegmentAndTwoNodes()
DrawSegmentAndTwoNodesFromColinear()
Split Straight Segment for Crossroads()
ConvertTurnNodeToCrossroads()
Spline_BP contains spline components and a procedural Mesh (which is used for procedural junctions). Each instance of Spline_BP is stored in the SplinesArray array inside DrawInfrastructure_BP. Each index of this array is stored in the variable MySegmentClass->SplinesArrayIndex.
For instance :
AttachMeshes()
UpdateSplineComponents()
ZonesBlock_BP is used to store the data of the building zones. One of its variables is a 2D arrays of Zones structs.
For instance :
Update()
Draw()
Erase()
SetConvexHull()
ZonesManager_BP is used to manage the ZonesBlock_BPs according to the road network.
For instance :
SpawnZBsAroundSubSpline()
SetZonePoints()
UpdateZBsConvexHull()
SpawnZBsAroundSegment()
As you know, CityBuilderPlayerController_BP is used to call whatever Node we want according to the Mouse/Keyboard Events.
Is there any need please to optimize this diagram ?