# A2 - Création des compartiments et suite de la configuration des actions

<details id="bkmrk-informations-%C3%A0-propo"><summary>Informations à propos de l'organisation du wiki sur la configuration des préfabs de véhicules</summary>

#### Le wiki à partir de cette page va être organisé en fonction d'un code simple pour vous repérer dans le niveau de difficulté et votre progression 🔧

> ****A****=Configuration de base pour un véhicule  
> ****B****<span style="white-space: pre-wrap;">=Configuration pour un véhicule qui nécessite un minimum de réflexion et qui dépend de votre véhicule. </span>  
> ****C****=Configuration pour un véhicule qui est complexe et qui nécessite de la recherche personnelle et qui varie en fonction des véhicules.  
> ****D****=Système complexe pour un véhicule qui n'est pas généralisé à tous les véhicules et qui n'est pas évident.

****Il est important de savoir que tout est possible,**** mais ce système de code permet de vous donner une idée de la difficulté. La seule limite que vous avez est l'habitude ainsi que l'expérience avec le workbench et blender, on ne peut pas tout dévoiler car ENFUSION et Blender restent des logiciels complexes ✅

<p class="callout info">Tous les préfabs non commenté dans cette page ne sont pas a modifier pour l'instant (si vous suivez le fil rouge du wiki) ou simplement pas a modifier sur toute l'intégration de votre véhicule (potentiel exception a des systèmes personnalisés).</p>

</details>## ****Introduction****

Dans cette page, nous allons découvrir comment créer une liste de porte et de compartiment (places assises). Pour par la suite, configurer le reste d'actions qu'on a pas encore configurée.

<span style="white-space: pre-wrap;">Il faut savoir que dans l'intégration d'un véhicule, ça ne sert à rien de réinventer la roue, on vous conseil de vous baser sur les véhicules vanilla ainsi que sur les fichiers de configuration déjà existant. </span>

<p class="callout info">Après cette page, le véhicule ne sera pas encore jouable.</p>

<p class="callout info">Pour ce qui est des places de tireur, cela ce passe dans le préfab de la tourelle.</p>

### ****SCR\_BaseCompartmentManagerComponent:****

Ce component va nous servir à définir une liste de compartiment et une liste de portes pour que des joueurs puissent s'installer dans votre véhicule.

#### ****A. Door Info List:****

Dans ce component, on trouve deux catégories:

1. ****Door Info List****: Liste des portes disponibles.
2. ****Compartment Slots****: Liste des compartiments et des places disponibles pour votre véhicule.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/cUQimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2025-02/cUQimage.png)

****Avant de créer une place dans le véhicule, il faut créer une porte, qu'elle soit réelle ou fausse.****

Pour ce faire, cliquez sur le + de Door Info List et créez un "****SCR\_CompartmentDoorInfo****":

- ****Anim door index****: Numéro d'indentification dans le fichier d'animation qui définit le mouvement de la porte (Voir TODO).
- ****OpenCloseDoorAnimGraph****: Non utilisé.
- ****ContextName****: Nom de la porte dans l'éditeur (nommez la dans un nom du type door\_L01, door\_R02, door\_back...)
- ****Coverage****: Nombre, entre 0 et 1 qui indique a quel point la porte est exposée.

Par la suite, on va définir une suite de class qui va permettre de configurer nos portes:

<details id="bkmrk-open-door-actioncett"><summary>Open Door Action</summary>

Cette class va nous permettre de définir l'action qui va permettre aux joueurs de pouvoir ouvrir la porte. Pour ce faire, faites set class, puis SCR\_OpenVehicleDoorUserAction.

Une fois cela fait, mettez les actions de votre nouvelle porte qui vont permettre aux joueurs d'ouvrir votre porte dans "****Parent Context List****" en cliquant sur le +, puis en sélectionnant les actions: Door\_{code de la porte} et Door\_{code de la porte}\_int -&gt; Exemple: Door\_L01 et Door\_L01\_int.

Une fois cela fait, il faut donner une liste d'informations à propos de l'apparence de l'action. Pour ce faire, faites set class sur le paramètre UI Info puis choisissez la class "****SCR\_ActionUIInfo****". Une fois cela fait, mettez les paramètres ci dessous pour que l'action ais l'apparence d'une action pour fermer la porte.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/qKiimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2025-02/qKiimage.png)

<span style="white-space: pre-wrap;">Après avec réglé l'UI, il ne vous reste plus qu'a régler le reste des actions, comme sur la capture d'écran si dessous. </span>

</details><details id="bkmrk-close-door-actioncet"><summary>Close Door Action</summary>

Cette class va nous permettre de définir l'action qui va permettre aux joueurs de pouvoir fermer la porte. Pour ce faire, faites set class, puis SCR\_CloseVehicleDoorUserAction.

Une fois cela fait, mettez les actions de votre nouvelle porte qui vont permettre aux joueurs de fermer votre porte dans "****Parent Context List****" en cliquant sur le +, puis en sélectionnant les actions: Door\_{code de la porte} et Door\_{code de la porte}\_int -&gt; Exemple: Door\_L01 et Door\_L01\_int.

Une fois cela fait, il faut donner une liste d'informations à propos de l'apparence de l'action. Pour ce faire, faites set class sur le paramètre UI Info puis choisissez la class "****SCR\_ActionUIInfo****". Une fois cela fait, mettez les paramètres ci dessous pour que l'action ais l'apparence d'une action pour ouvrir la porte.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/rqPimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2025-02/rqPimage.png)

<span style="white-space: pre-wrap;">Après avec réglé l'UI, il ne vous reste plus qu'a régler le reste des actions, comme sur la capture d'écran si dessous. </span>

</details><details id="bkmrk-entry-position-infoc"><summary>Entry Position Info</summary>

Ce paramètre va permettre de définir la position à partir de laquelle le joueur va lancer l'animation d'entrée dans le véhicule. Pour ce faire, cliquez sur set class puis dans Pivot ID, mettez l'os qui correspond à votre porte.

</details><details id="bkmrk-ai-entry-position-in"><summary>AI Entry Position Info</summary>

Ce paramètre permet d'indiquer aux IA, où elle doivent se rendre pour se téléporter dans le véhicule quand elle doivent monter. Ce paramètre s'applique que pour les trappes qui se situent dans une zone que les IA ne peuvent pas accéder sans devoir monter. Placez ce point au niveau du point ou un joueur normal ferait espace pour monter sur le véhicule.

</details><details id="bkmrk-ai-exit-position-inf"><summary>AI Exit Position Info</summary>

Ce paramètre permet d'indiquer aux IA, où elle doivent se rendre pour descendre du véhicule depuis le toit du véhicule. Ce paramètre s'applique que pour les trappes. Placez ce point au niveau du point ou un joueur normal ferait espace pour descendre du véhicule vers le sol.

</details><details id="bkmrk-exit-position-infoce"><summary>Exit Position Info</summary>

Ce paramètre va permettre de définir la position à partir de laquelle le joueur va lancer l'animation de sortie depuis sa place. Pour ce faire, cliquez sur set class puis dans Pivot ID, mettez l'os qui correspond à la place que la porte.

<p class="callout info">Si votre porte couvre la sortie de plusieurs places dans le véhicule, en général, ne faites pas set class (si vous l'avez déjà défini, faites clic doit puis restore to prefab value).</p>

</details>Il ne vous reste plus qu'a configurer quelques options annexes puis votre porte sera correctement configurée pour la suite:

- ****Get In Teleport:**** Si cochée, le joueur sera téléporté dans le véhicule, sans passer par aucune animation, quand il fera l'action pour entrer.
- ****Get Out Teleport:**** Si cochée, le joueur sera téléporté dans le véhicule, sans passer par aucune animation, quand il fera l'action pour sortir.
- ****Portal Position Info:**** Inconnu.
- ****Portal Signal Name:**** Inconnu.
- ****Align during Get Out:**** Si cette option est cochée, le joueur sera aligné à l'os assigné dans Exit Position Info.
- ****Get In Aligning Teleport:**** Si cette option est cochée, le joueur sera téléporté à l'os assigné dans Entry Position Info pour lancer l'animation d'entrée dans le véhicule.
- ****Get Out Aligning Teleport:**** Si cette option est cochée, le joueur sera téléporté à l'os assigné dans Exit Position Info pour lancer l'animation de sortie à l'intérieur du véhicule.
- ****Get In Seat Aligning On Event:**** Inconnu.
- ****Get Out Aligning On Event:**** Inconnu.
- ****Fake Door:**** Cochez cette option si la porte est une porte factice, donc qui n'a pas de modèle 3D comme sur les Jeep d'Arma Reforger.
- ****Activate Physics:**** Si cette option est cochée, le joueur aura une physique. Par exemple, si l'os définit dans Enter Position Info est dans le vide en jeu, quand je joueur va tenter d'entrer en faisant l'animation d'entrée, il va tomber dans le vide.
- ****Stance Change On Exit:**** Quel position le joueur va t'il avoir quand il va sortir du véhicule.
- ****Accessibility Settings:**** Inconnu.
- ****Door Type:**** <span style="white-space: pre-wrap;">Le type de porte, soit une porte normal soit une trappe soit une door factice. </span>

<p class="callout success">Une fois toutes ces étapes faites, votre première porte est crée. Il ne vous reste plus qu'a créer les autres.</p>

#### ****B. Compartment Slots:****

Cette partie du component va nous permettre de créer une place dans le véhicule. On ici configurer le reste d'actions qu'on n'a pas encore réglé.

##### Place du conducteur:

Pour configurer la place conducteur, il vous suffit de déployer le slot "PilotComponent".

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/XZUimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2025-02/XZUimage.png)

<details id="bkmrk-d%C3%A9tails-des-param%C3%A8tr"><summary>Détails des paramètres importants</summary>

****Default Occupant Name****: Non utilisé en général. Nous vous conseillons de laisser vide.

****Compartment Unique Name****: Non utilisé en général. Nous vous conseillons de laisser vide.

****Compartment Action -&gt; Parent context list****: Faites + à coté de Parent Context List et sélectionnez l'action qui va permettre au joueur d'accéder à la place depuis l'extérieur. PS: Ajoutez également l'action de la place que vous êtes en train de configurer, car si la porte est ouverte, les joueurs pourront monter dans le véhicule en visant vers l'action de la place. (Exemple: driver et door\_L01).

****Get Out Action -&gt; Parent context list****: Faites + à coté de Parent Context List et sélectionnez l'action qui va permettre au joueur de sortir du véhicule depuis sa place ("door\_L01\_int" par exemple).

****Jump Out Action:**** <span style="white-space: pre-wrap;">Action qui va permettre au joueur de s'éjecter du véhicule. </span>

<p class="callout warning"><span style="white-space: pre-wrap;">Pour des raisons de gameplay et pour éviter des erreurs de clic de la part des joueurs, nous vous déconseillons d'ajouter une action dans ce paramètre pour éviter toutes éjections involontaires, ce qui peut détruire une partie de joueur ⚠️ </span></p>

****Switch Seat Action -&gt; Parent context list****: Faites + à coté de Parent Context List et sélectionnez l'action de la place que vous êtes en train d'éditer ("driver" par exemple). Ce paramètre va définir sur quel place il faut mettre l'interaction pour pouvoir changer de siège vers la place que vous êtes en train de configurer.

****Aditionnals Actions -&gt; SCR\_RemoveCasualtyUserAction N°1 -&gt; Parent Context List****: Ce paramètre permet de définir sur quel action le joueur va pouvoir retirer le corps d'un autre joueur mort sur le siège, depuis l'intérieur du véhicule. Mettez donc l'action du siège que vous êtes en train de configurer.

****Aditionnals Actions -&gt; SCR\_RemoveCasualtyUserAction N°2 -&gt; Parent Context List****: Ce paramètre permet de définir sur quel action le joueur va pouvoir retirer le corps d'un autre joueur mort sur le siège, depuis l'extérieur du véhicule. Mettez donc les actions où les joueurs pourront retirer le corps d'un autre joueur depuis l'extérieur.

****Passenger Position:****<span style="white-space: pre-wrap;"> Ce paramètre va nous permettre de définir, où le joueur sera dans le véhicule. Pour ce faire, dans Pivot ID, mettez l'os de la place que vous êtes en train de configurer.</span>

<p class="callout warning">****ATTENTION****: Ne mettez aucune coordonnées dans ce paramètre. Dans tous les cas, l'animation se fera depuis un os, si il n'y en a aucun de définis, l'animation du joueur qui change de siège se fera au 0 0 0 du véhicule ⚠️</p>

<p class="callout info">Si vous devez faire des modifications sur la position du joueur dans le véhicule, faites vos modifications sur l'os dans Blender pour éviter tous soucis a propos des animations ✅</p>

****Forced Free Look****: Permet d'activer la vue libre (laisser coché).

****Mouse Steering****: Si activé, les joueurs pourront tourner les roue qu'avec la souris ou en faisant double Alt (Sauf si hélicoptère, laisser désactivé).

****Skip Character Door Animations From Seat:****<span style="white-space: pre-wrap;"> Si cette option est cochée, le joueur ne fera aucune animations d'ouverture ni de fermeture de porte si il l'ouvre ou la ferme depuis l'intérieur.</span>

****Eject Unconscious And Dead Characters:**** Si cette option est cochée et si le joueur tombe inconscient ou meurt, le cadavre sera automatiquement éjecté.

****Characters Can Fall Out On Flip:****<span style="white-space: pre-wrap;"> Si cette option est cochée et si le véhicule se tourne sur l'axe Y de 90°, le joueur sera éjecté. PS: Vous pouvez régler l'angle avec un paramètre qui apparaît si cette option est coché pour </span>*****y=1=90°*****.

****Seat Type:****<span style="white-space: pre-wrap;"> Numéro d'indentification pour l'animation de repos du joueur dans le véhicule.</span>

<p class="callout info">****Conseil****: Pour des places passagers, il est meilleur de varier cette valeur entre les sièges pour éviter que les joueurs soient tous alignés de façon non naturels.</p>

****Door Info List:****<span style="white-space: pre-wrap;"> Permet de relier une porte à un siège. 0 = 1ère porte dans la liste, 1 = 2ème porte dans la liste, 2 = 3ème porte dans la liste...</span>

****Override Entry/Exit Position Info****: Permet de changer la position d'entrée/sortie sans prendre en compte les paramètres que vous avez définit dans la porte.

****UI Info:****<span style="white-space: pre-wrap;"> Informations d'interface à propos du siège (ne pas changer en général).</span>

****Base Coverage****<span style="white-space: pre-wrap;">: Permet de définir une valeur entre 0 et 1 inclus qui indique à quel point le joueur est isolé du monde extérieur pour le son. Pour donner un ordre de grandeur, la valeur d'un LAV25 est réglé à 0.300. </span>

****Can Occupant Equip Gadget:****<span style="white-space: pre-wrap;"> Es que le joueur pourra prendre en main des équipements comme les jumelles ou encore un autoinjecteur de morphine par exemple.</span>

****Restricted Item Types:****<span style="white-space: pre-wrap;"> Permet de bannir des équipements que le joueur pourrait prendre en main comme par exemple les jumelles.</span>

****Auto Connect To Turret:****<span style="white-space: pre-wrap;"> Inconnu.</span>

****Auto Connect Context Indices:****<span style="white-space: pre-wrap;"> Inconnu.</span>

****Can Turn Out:****<span style="white-space: pre-wrap;"> Es que le joueur peut sortir sa tête en dehors avec une trappe ?</span>

****Turn Out Door Idx:****<span style="white-space: pre-wrap;"> Index de porte de la trappe, si Can Turn Out n'est pas cochée, définir cette valeur à -1.</span>

****Context Name:****<span style="white-space: pre-wrap;"> Nom du siège dans le Workbench.</span>

****Compartment Section:****<span style="white-space: pre-wrap;"> Numéro d'indentification unique d'un compartiment dans le véhicule, si le joueur tente de changer de siège mais que ce numéro n'est pas égal a celui du siège où il tente de changer de siège, l'action n'apparaîtras pas.</span>

****Is Water Tight****: Si cette option est cochée, le joueur ne mourra pas si le véhicule entre dans de l'eau.

****Default Occupant Data:****<span style="white-space: pre-wrap;"> Préfab des personnages de bases qui vont apparaître si le véhicule est placée en GameMaster. Recherchez "Character\_USSR\_Rifleman.et" pour un soldat de l'armée rouge ou "Character\_US\_Rifleman.et" pour un soldat de l'armée américaine.</span>

</details>---

Tous les autres paramètres plus bas sont des paramètres très spécifiques et qui ne sont pas tous exploitée en version 1.3.76. Si vous n'avez pas de raison précise à modifier ces paramètres, nous vous le déconseillons.

<p class="callout success">Vous avez désormais configuré la place conducteur, il ne vous reste plus qu'a faire de même pour les places passagers.</p>

##### 2. Places passagers

Pour ce faire, on va partir d'une base, pour ce faire, dans le Ressource Browser, recherchez "CargoCompartment\_Base" puis mettez le fichier de configuration dans la catégorie Compartment Slots, puis nommez votre nouvelle place assise (Exemple: passenger\_r01):

[![image (5).gif](https://wiki.nabla.sh/uploads/images/gallery/2024-11/image-5.gif)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/image-5.gif)

Une fois cela fait, vous avez crée une place passager. Il ne vous reste plus qu'a la configurer de la même manière que celle du pilote et de créer le reste de vos passagers.

<p class="callout success">Vous avez désormais crée vos places assises et votre place conducteur ✅</p>