Bonjour,

Mon projet est un city builder sur Unreal Engine 5 (c++ et blueprints)
Les rectangles rouges sont des classes c++. Les blancs sont des Blueprints. Les flèches rouges sont #include . Les flèches bleues sont l'héritage (classe c++ -> Blueprint). Les flèches noires sont des références de classes de Blueprint.
MyNodeClass, MySegmentClass et InfrastructureGraphManagerClass sont utilisés pour définir et mettre à jour le graphe du réseau routier.
Par exemple :
AMySegmentClass* AInfrastructureGraphManager::ConnectNodes(AMyNodeClass * Nod1, AMyNodeClass * Nod2, SegmentType SegType, bool IsCurv)
FSubdividedSegment AInfrastructureGraphManager::SubdivideSegment(AMySegmentClass * Segment, FVector NewNodeLocation)
DrawPreviewInfrastructure_BP permet de prévisualiser le réseau routier avant de le valider.
Par exemple :
1 2 3 4
| DrawStraightSegment()
DrawTangentSegment()
DrawTangentSegmentsAndCurve()
SnapMouseOnExistingNode() |
DrawInfrastructure_BP permet de dessiner le réseau routier après validation de l'aperçu.
Par exemple :
1 2 3 4
| DrawSegmentAndTwoNodes()
DrawSegmentAndTwoNodesFromColinear()
SplitStraightSegmentForCrossroads()
ConvertTurnNodeToCrossroads() |
Spline_BP contient des composants spline et un procedural mesh (qui est utilisé pour les jonctions procédurales). Chaque instance de Spline_BP est stockée dans le tableau SplinesArray à l'intérieur de DrawInfrastructure_BP. Chaque index de ce tableau est stocké dans la variable MySegmentClass->SplinesArrayIndex.
Par exemple :
1 2
| AttachMeshes()
UpdateSplineComponents() |
ZonesBlock_BP est utilisé pour stocker les données des zones du bâtiment. L'une de ses variables est un tableau 2D de structures Zones.
Par exemple :
1 2 3 4
| Update()
Draw()
Erase()
SetConvexHull() |
ZonesManager_BP permet de gérer les ZonesBlock_BP en fonction du réseau routier.
Par exemple :
1 2 3 4
| SpawnZBsAroundSubSpline()
SetZonesPoints()
UpdateZBsConvexHull()
SpawnZBsAroundSegment() |
Comme vous le savez peut-être, CityBuilderPlayerController_BP est utilisé pour appeler les fonctions que nous voulons en fonction des événements de souris/clavier.
Est-il nécessaire s'il vous plaît d'optimiser ce diagramme? Et si oui, comment ?
Partager