Une fois le système de structure mit en place, j'ai peu commencer à apporter un peu plus de complexité dans ma construction de building, ajouter des détails.

J'ai donc commencer a faire des test avec les "socket", le principe est asse simple. J'ajoute un "socket" sur un mesh et ensuite dans le blueprint je fais un "attach to" pour y placer un autre mesh et ainsi le second mesh ce retrouve sur la location du socket. Malheureusement dans mes tests cela fonctionnait avec des "Static Mesh" mais par soucie d'optimisation je devait utiliser des "instances" ce qui empêchait l'utilisation du node "Attach to".
Un socket est ajouté sur le mesh rouge. Je viens faire un "attach to" du cube sur le socket.

Pour contourner ce problème il a fallut que a chaque itération je récupère la position du socket et que je l'ajoute a la position du mesh qui a le socket. Cette addition de vector me donnera ma position final, celle qui sera également la position du mesh qui viendra ce positionner sur le socket.

Ici j'ai ajouté un mesh "rock" sur un "socket". Tout les meshs ici sont des instances !

A ce stade je n'ajoute qu'un socket par mesh, mais la suite fut un peu plus compliqué a mettre en place. Car mon but est bien d'avoir plusieurs socket sur un même mesh et ainsi avoir plus d'éléments qui puissent être modifié. Pour cela j'ai passé beaucoup de temps a chercher comment faire.

Puis je me suis demandé si ajouter dans ma structure une variable "Map" pouvait m'aider. Dans unreal la variable Map correspond a un dictionnaire. Il lui faut un valeur de "key" et une "value".
Je choisi donc de donner en "key" le nom du "socket" et en "value" de donner le mesh qui lui sera associé.

Il me sera facile dans le blueprint de récupérer les valeurs. A chaque itération, je regarde les sockets présent dans mon premier mesh, je fabrique une boucle a partir de cette liste de socket. Ensuite a chaque itération de socket je regarde son nom et le vais récupérer le mesh qui lui est associé dans ma variable "Map" c'est comme ca que je peu placer sur chaque socket, le mesh qui lui correspond.


Exemple de mesh avec plusieurs socket et leur mesh associé !
Dans l'image précédente j'ai rajouté dans mon code un pourcentage d'apparition. Selon la valeur que je donne pour chaque objets, ils peuvent apparaître ou non. C'est pour cela que la distribution des cubes est aléatoire sur toute la surface de mon bâtiment.