DIY - SDK Simhub

Votez pour l'image du mois
  • En fait j'ai fait deux choses pour le moment.

    1. j'ai regardé un exemple de code fourni dans le SDK qui va avec le Serveur ACC. Dans ce projet (il faut visual Studio pour l'ouvrir mais il y a des versions gratuites) il y a des fichiers qui décrivent les données disponibles et d'après ce que je vois il y a plus de chose que ce que propose SimHub.

    On peut reprendre leur projet pour faire un peu ce que l'on veut, mais cela sous entend de faire une application complète. (je n'ai pas forcément le temps pour ça).

    2. j'ai regardé du côté du SDK Simhub. En gros la c'est vraiment beaucoup plus rapide car Simhub fait déja une très grosse partie du travail.

    On a une structure de données qui est fournie. on peut naviguer dedans et on choisi ce que l'on veut faire remonter à SimHub. On a accès à plus de choses que ce qui est donné directement dans SimHub mais on a pas autant que si on utilise le SDK d'ACC.

    Par exemple moi pour le moment je voudrais que mon plugin me remonte 2 informations que je ne trouve pas.

    1. Le meilleur temps tous pilotes confondus (en gros la pole ou le meilleur temps en course)

    2. Mon numéro de voiture en course car très souvent on a un numéro de base mais s'il est prit par un autre pilote on a un numéro attribué. je me suis déja retrouvé a passer au stand pour un DT pour mon numéro habituel alors qu'en fait ce n'était pas pour moi... (bon ca c'est pour expliquer pourquoi je veux absolument afficher mon numéro kke part).

    Donc au niveau du code (c'est en langage c#), je vais avoir à faire ca dans mon plugin

    _swoopData.AllDriversBestLap = data.NewData.BestLapOpponent != null ? data.NewData.BestLapOpponent.BestLapTime : new TimeSpan();

    _swoopData.AllDriversBestLap --> C'est l'information que je veux faire passer à SimHub et que je dois donc calculer.

    data.NewData.BestLapOpponent --> Ca c'est une donnée envoyée par ACC et récupérer par le moteur SimHub. On a accès a cette donnée sans rien faire de particulier.

    BestLapOpponent est une donnée composée, en gros c'est un "participant à la course", en l'occurence c'est le participant ayant le meilleur tour.

    Sur cet objet, j'ai accès a plein de "Sous propriétés". Par exemple BestLapOpponent.BestLapTime --> Bingo c'est ce que je veux !

    Je sais pas si c'est assez clair comme explication. Si tu veux en savoir plus je te propose de faire un truc tout con. Télécharge Visual Studio 2022 en version gratuit et je te file mon projet. pour le moment il est tellement simple que c'est facile de s'y retrouver

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • En fait d'après ce que je comprends pour le moment du code proposé par Simhub c'est qu'il a mis une couche d'abstraction permettant d'avoir une majorité de données dans des objets commun.

    En gros il récupère les données du jeux en cours dans leur format "natif" et il les transfère dans une structure "commune" à tous les jeux.

    Pour le moment j'en suis la de mes "investigations". J'ai déja pu brancher mon plugin dans Simhub et je remonte des infos. maintenant faut faire un peu de recherche pour voir tout ce qui est faisable... bon ce qui est con c'est que j'ai quand un même un boulot (un vrai) a faire à côté !

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • Ok alors pour ceux que ca branche je peux faire passer un lien Google Drive pour récupérer le projet. Pour le moment en MP car je suis pas certain de la sécurité du lien.

    le reste des instructions que j'ai passé à Herve45 :

    A partir du lien tu télécharges le dossier Swoop.Plugin

    Le mieux est de le télécharger et le coller dans C:\Program Files (x86)\SimHub\PluginSdk

    Le fait de mettre le projet dans ce dossier fait que après compilation du projet, si tu vas dans SimHub tu as tout de suite un message qui te dit qu'un nouveau plugin est détecté.

    Comment ouvrir le projet ?

    ---------------------------------------------

    Dans le dossier Swoop.Pugin il y un fichier SwoopPlugin.sln

    Tu double clic dessus et ca ouvre visual studio.

    Comment compiler le projet (pour prendre en compte les modification de code etc) ?

    -------------------------------------------------------------------------------------------------------------------------------

    Dans Visual Studio tu cherche dans le menu principal en haut "Generer" et dedans il y a "Générer la solution".

    Tu peux aussi le faire en faisant clic droit sur la solution dans le panneau "Solution Explorer" ou Explorateur de solution si tu as la version FR.

    Amuses toi bien et surtout n'hésites pas si tu as des questions.


    Précisions complémentaires .

    Si Simhub est ouvert, on ne peut pas compiler le plugin. Pour faire des modifs sur le plugin il faut donc

    1. Fermer SimHub

    2. Faire ses modifs

    3. Compiler

    4. Ouvrir SimHub et aller dans "Propriétés disponibles", taper Swoop dans le filtre pour arriver directement sur les données mises à disposition par le plugin

    A votre disposition si vous êtes en galère.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 2 fois, dernière modification par swoop (4 février 2022 à 13:01).

  • réservé

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • swoop

    d'après ce que j'ai compris

    pour voir ton plugin dans simhub, il faut

    1. le générer dans visual studio comme tu l'as indiqué
    2. déplacer la dll générée
      1. de ---> ......\SimHub\PluginSdk\Swoop.Plugin\bin\Release
      2. vers----> ......\Simhub
    3. relancer simhub qui va ainsi détecter le plugin

    si la dll ne se trouve pas dans le dossier principal ....\Simhub, le logiciel simhub ne détecte pas le plugin

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • alors moi j'ai compilé en debug et pas en release du coup je n'avais pas a déplacer la DLL généré. (certainement que SimHub regarde les dossiers DEBUG et pas RELEASE)

    Pour changer le mode de compilation tu as une combo en haut sous le menu principal.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • J'ai testé le plugin avec mon dashboard custom et j'ai trouvé un petit bug qui fait que les données ne sont présentes qu'a la fin du premier tour.

    Il faut modifier la ligne

    51 du fichier SimHubSwoopPlugin.cs

    Il y a ca _swoopData.HaveAllDriversBestLap = data.NewData.BestLapOpponent.IsPlayer;

    et il faut le remplacer par ca

    _swoopData.HaveAllDriversBestLap = data.NewData.BestLapOpponent != null && data.NewData.BestLapOpponent.IsPlayer;

    Pour expliquer un peu pour les non dev :

    ------------------------------------------------------------

    En gros, si le BestLapOpponent n'est pas encore connu sa valeur est null. Si sa valeur est null alors on ne peut pas accéder a sa propriété IsPlayer sinon ca fait planter le code (on ne peut pas accéder un quelque chose de null)

    En francais cette ligne de code

    _swoopData.HaveAllDriversBestLap = data.NewData.BestLapOpponent != null && data.NewData.BestLapOpponent.IsPlayer;

    veut dire : Si data.NewData.BestLaOpponent est différent de null ET que je suis le data.NewData.BestLapOpponent alors je mets vrai dans _swoopData.HaveAllDriversBestLap

    sinon je mets faux.

    Bon c'est de l'explication rapide, mais ca peut toujours aider


    Herve45 petite astuce si tu veux pouvoir naviguer dans les données disponible (dans Visual Studio).

    Tu te mets sur la ligne

    public void DataUpdate(PluginManager pluginManager, ref GameData data)

    dans le fichier principal --> SimHubSwoopPlugin.cs

    tu clique sur GameData et tu appuies sur F12. ca va t'amener dans le fichier qui contient la définition de GameData.

    La tu vas voir ca :

    public class GameData

    {

    public StatusDataBase OldData;

    public StatusDataBase NewData;

    public GameData();

    public DateTime FrameTime { get; }

    public bool GameRunning { get; }

    public Guid SessionId { get; }

    public Guid LapId { get; }

    public DateTime SessionStartDate { get; }

    public string GamePath { get; set; }

    public bool GamePaused { get; }

    public bool GameInMenu { get; }

    [global::Newtonsoft.Json.JsonIgnoreAttribute]

    [Obsolete]

    public bool Spectating { get; }

    public string GameName { get; set; }

    public bool GameReplay { get; set; }

    }

    même chose, tu cliques sur StatusDataBase et tu fais F12 ca va t'ouvrir le fichier qui contient la definition de StatusDataBase.

    La dedans tu as toutes les données que traite SimHub. Certaines comme les Opponents sont des données complexe, il faut refaire la même chose pour aller voir ce qu'il y a dans Opponent.

    et ainsi de suite...

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 1 fois, dernière modification par swoop (4 février 2022 à 14:28).

  • ah ouais j avais deja mal a la tete mais bon je vais quand meme me faire des tutots sur visual studio et je reviens!!!!

    n oubliez pas qu un con qui marche ira toujours plus loin qu 'un intellectuel assis

    AMD 5800X3D W10 RTX4070Super 3X27pouces et Pico 4 MMOS2014 Ionicube

    :aspi:

  • Ouais c'est vrai que c'est pas méga simple non plus. Mais par contre Visual Studio c'est un outil pro et si tu commences a aller loin dans les tutos tu risque d'y passer des mois !

    A la limite si vous voulez qu'un de ces jours on fasse une mini visio je vous montre juste les bases pour bidouiller (en mode partage d'écran sans webcam et tout le bordel).

    Je fais ça toute la journée avec l'équipe de dev chez nous ca me changera pas tant que ça !

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • super proposition mais je doit essayer avant pour pas etre un boulet ,a part des robots j ai jamais trop programmé

    n oubliez pas qu un con qui marche ira toujours plus loin qu 'un intellectuel assis

    AMD 5800X3D W10 RTX4070Super 3X27pouces et Pico 4 MMOS2014 Ionicube

    :aspi:

  • le mieux c'est effectivement essayer de bidouiller un peu et si vous êtes en galère ou si vous avez des idées que vous ne savez pas mettre en œuvre on en parle et on voit si on peut juste en parler ou si un partage d'ecran est utile.

    vous me dites et on voit !

    Bonne bidouille !

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • Ouais de toutes facons globalement SimHub propose déja pas mal de choses.

    Dans mon cas le Plugin c'est juste pour récupérer des informations dispos dans le LeaderBoard mais que je veux isoler. Autant dire que c'est très simple et rapide.

    Mais par exemple je vois que si on est en Multiclasse, y a pas grand chose de prévu. Du coup la je vais me préparer des données "Same Class".

    Par exemple avoir le meilleur temps de la même catégorie, le gap avec le mec devant moi mais de la même catégorie. etc.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • Quelques news.

    J'ai pas mal avancé sur mon dashboard perso dont la vocation est de fournir un lap timer avec

    • une page qualif
    • une page Race type sprint
    • une page race type endurance

    Comme je l'avais expliqué j'allais avoir besoin de certaines données non disponibles ce qui m'a amené a faire un petit plugin pour SimHub.

    Il permet d'avoir certaines informations complémentaires pour vos dashboard personnalisés.

    J'ai notamment fait en sorte d'avoir des informations pour les courses Mixtes.

    Un point important a noter également est que ce que j'ai déclaré comme DriverAhead et DriverBehind ne fonctionne pas comme celui de SimHub.

    Dans ce plugin on prend la voiture devant ou derrière au classement et non pas devant ou derrière sur la piste. Si la voiture devant est un retardataire elle ne seront pas considérée.

    RaceNumber -> Votre numéro de course

    MultiClassRace -> Est ce que la course est mixte

    Position -> Position au classement général

    PositionInClass -> Position dans ma catégorie

    AllDriversBestLap -> Meilleur temps tous pilotes, toutes catégorie confondues

    SameClassBestLap -> Meilleur temps dans la même catégorie

    SameClassFirstPosition -> Position au classement général de la voiture de la même catégorie ayant le tour le plus rapide (utile pour les qualifications)


    DriverAhead* -> Pilote juste devant au classement général

    -------------

    DriverAheadBestlapTime -> son meilleur temps

    DriverAheadCarClass -> Catégorie

    DriverAheadCarNumber -> Numéro de course

    DriverAheadGapToPlayer -> Ecart avec nous (temps)

    DriverAheadLapDelta -> Ecart avec nous (en tours)

    DriverAheadLapsToPlayer -> même chose mais mis en forme, par exemple 1 lap or 3 laps

    DriverAheadPiting -> Est ce que le pilote devant est dans la voie des stands ou dans les stands

    DriverAheadPosition -> Position du pilote devant (pas forcément utile car on connait déja notre position)

    DriverAheadPositionInClass -> -> Position du pilote devant dans sa catégorie

    DriverBehind * -> Pilote juste derrière au classement général

    -------------

    DriverBehindBestlapTime

    DriverBehindCarClass

    DriverBehindCarNumber

    DriverBehindGapToPlayer

    DriverBehindLapDelta

    DriverBehindLapsToPlayer

    DriverBehindPiting

    DriverBehindPosition

    DriverBehindPositionInClass

    SameClassDriverAhead* -> Pilote juste devant au classement dans la même catégorie

    -------------

    SameClassDriverAheadBestlapTime

    SameClassDriverAheadCarNumber

    SameClassDriverAheadGapToPlayer

    SameClassDriverAheadLapDelta

    SameClassDriverAheadLapsToPlayer

    SameClassDriverAheadPiting

    SameClassDriverAheadPosition

    SameClassDriverAheadPositionInClass

    Pour ceux qui ont le code je vais mettre a jour le dossier partagé sur Google Drive.

    Pour ceux qui le veulent vous me le dites et je vous file le lien par MP.

    Bonne fin de WE à tous.

    Edit : 07/02/2022 8h35 --> j'ai expliqué un peu plus proprement ce que font les différentes properties.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 2 fois, dernière modification par swoop (7 février 2022 à 08:36).

  • swoop

    Quand je regarde ton dossier Google Drive partagé, la date des fichiers les plus récents est au 4/02

    Je m'attendais à ce qu'ils soient datés au 06/02 :euh2:

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • Bizarre mon drive me dit qu'il a tout upload

    Je regarde ca après manger

    Effectivement y avait un souci de synchro. La tu dois voir les deux fichiers principaux modifiés.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 2 fois, dernière modification par swoop (6 février 2022 à 19:18).

  • Oui c'est bon :+++:

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • BOn pour simplifier les choses j'ai créé le projet sous GitHub. Ceux qui veulent juste télécharger le plugin pour l'utiliser c'est possible.

    Voici le lien

    https://github.com/dde32/Simhub.Swoop.Plugin/

    J'essayerai de faire une description plus complète de ce qu'il y a dedans. En attendant si certain ont des questions on pourra en parler ici.

    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

  • Pour ceux que cela peut intéresser, voici une copie d'écran du dashboard que j'ai pu faire grâce aux informations fournies par le plugin.

    Capture-Qualif.png


    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta

    Message modifié 1 fois, dernière modification par swoop (7 février 2022 à 09:30).

  • Salut à tous,

    J 'ai mis a disposition le plugin sur RaceDepartment et j'ai pas mal échangé avec un utilisateur.
    On a fait pas mal de tests et au final j'ai fini par comprendre que les données fournies par le SDK de Simhub ne sont pas correctes.

    J'ai donc typé le plugin, désormais il ne fonctionne que pour ACC (en attendant de faire mieux) mais il fait beaucoup plus de choses.

    En gros je n'utilise plus les données génériques (car elles ne sont ni complètes ni tout a fait correctes), je suis donc passé sur l'utilisation des données spécifiques du jeux.

    Voici le contenu du fichier ReadMe du plugin.

    En gros, pour faire rapide je récupère les données du jeux et je fais un traitement dessus pour avoir des informations

    - globales

    - dépendantes de la série (GT3 ou 4)

    - Dépendantes de la série et de la Cup catégorie

    - Dépendantes de la série et de la Driver Catégorie

    Mon compère de RaceDepartment (qui me pousse au développement la salopio) souhaite intégrer des informations du style :

    - Temps moyen nécessaire à un passage aux stands

    - Estimation de classement

    • - si je passe aux stands (est ce que le gars derrière moi va me passer)
    • - Si la gars devant entre aux stands est ce que je peux passer devant

    A priori c'est un gros rouleur en endurance et il dispose de pas mal d'idées...

    Bref, voici le fichier readme pour ceux que ca pourrait brancher.

    La version est encore en test mais sera dispo rapidement. le Code source est a jour pour ceux qui veulent plonger dedans (commence a y avoir du code la)


    This plugin aims to provide data that can be used globally, By Serie (GT3 / GT4) by driver category (and serie) or by Cup Category (and serie).

    Please note that this plugin uses specific ACC data and can therefore only work correctly with ACC.

    A more generic version may be produced.

    Serie

    {

    GT3 = 0,

    GT4 = 1

    }


    DriverCategory

    {

    Bronze = 0,

    Silver = 1,

    Gold = 2,

    Platinum = 3

    }

    CupCategory

    {

    Overall_Pro = 0,

    ProAm = 1,

    Am = 2,

    Silver = 3,

    National = 4

    }

    How to use the plugin

    1. Close Simhub if it is open

    2. Copy the SimHubSwoop.Plugin.dll file and paste it in the SimHub installation folder (C:\Program Files (x86)\SimHub)

    3. Open Simhub, edit your dasboard. You will now have access to additional properties that you can find by typing the Swoop filter.

    4. List of available properties


    Global informations

    -------------------------

    AllCarsBestLap => Best lap of all cars

    SameSerieBestLap => Best lap in same serie

    SameDriverCategoryBestLap => Best lap in same serie and driver category

    SameCupCategoryBestLap => Best lap in same serie and cup category

    HaveAllCarBestLap => Do my car have the best lap ?

    HaveSameSerieBestLap => Do my car have the best lap in the serie ?

    HaveSameCupCategoryBestLap => Do my car have the best lap in my serie and same cup category ?

    HaveSameDriverCategoryBestLap => Do i have the best lap in my serie and same driver category?

    SameSerieFirstPosition => What is the best position in my serie

    SameDriverCategoryFirstPosition => What is the best position in my serie and driver category

    SameCupCategoryFirstPosition => What is the best position in my serie and car cup category


    My Car informations

    --------------------

    CarIndex => internal

    CurrentDriverCategoryString => catergory of the current Driver in the car ( Bronze = 0,Silver = 1,Gold = 2,Platinum = 3)

    RaceNumber => race number of the car

    CarModelType => internal (for the moment)

    CupCategory => Car Cup Category (Overall_Pro = 0,ProAm = 1,Am = 2,Silver = 3,National = 4)

    CupCategoryString =>

    DriverCount => How many drivers for this car

    TeamName => Name of the car team

    CurrentDriverIndex =>

    RacePosition => Position in the race

    CupCategoryPosition => Position in the cup category

    DriverCategoryPosition => Position in the driver category

    BestlapTime =>

    IsPiting =>

    FirstName => First name of current Driver

    LastName => Last Name of current Driver

    ShortName => ShortNameof current Driver

    FullName => FullName of current Driver


    // Ahead --> Car ahead

    ----------------------------

    Ahead_CarIndex =>

    Ahead_CurrentDriverCategoryString =>

    Ahead_RaceNumber =>

    Ahead_CarModelType =>

    Ahead_CupCategory =>

    Ahead_CupCategoryString =>

    Ahead_DriverCount =>

    Ahead_TeamName =>

    Ahead_CurrentDriverIndex =>

    Ahead_RacePosition =>

    Ahead_CupCategoryPosition =>

    Ahead_DriverCategoryPosition =>

    Ahead_BestlapTime =>

    Ahead_IsPiting=>

    Ahead_GapToPlayer =>

    Ahead_LapsToPlayer =>

    Ahead_LapDelta =>

    Ahead_FirstName =>

    Ahead_LastName =>

    Ahead_ShortName =>

    Ahead_FullName =>

    Ahead_DriverCategory =>

    All those informations are available for

    - Car Behind

    - Same Serie Car Ahead

    - Same Serie Car Behind

    - Same Serie and same CupCategory Ahead

    - Same Serie and same CupCategory Behind

    - Same Serie and same DriverCategory Ahead

    - Same Serie and same DriverCategory Behind


    // Behind --> Car Behind

    ---------------------------------------

    Behind_CarIndex

    Behind_CurrentDriverCategoryString

    ...

    // SameSerieAhead --> Same Serie Car Ahead

    ---------------------------------------------------------------------------

    SameSerieAhead_CarIndex

    SameSerieAhead_CurrentDriverCategoryString

    SameSerieAhead_RaceNumber

    ...

    // SameSerieBehind --> Same Serie Car Behind

    ---------------------------------------------------------------------------

    SameSerieBehind_CarIndex

    SameSerieBehind_CurrentDriverCategoryString

    SameSerieBehind_RaceNumber

    ...

    // SameCupCategoryAhead --> Same Serie and same CupCategory Ahead

    ---------------------------------------------------------------------

    SameCupCategoryAhead_CarIndex

    SameCupCategoryAhead_CurrentDriverCategoryString

    SameCupCategoryAhead_RaceNumber

    ...

    // SameCupCategoryBehind --> Same Serie and same CupCategory Behind

    --------------------------------------------------------------------

    SameCupCategoryBehind_CarIndex

    SameCupCategoryBehind_CurrentDriverCategoryString

    SameCupCategoryBehind_RaceNumber

    ...

    // SameDriverCategoryAhead --> Same Serie and same DriverCategory Ahead

    --------------------------------------------------------------------

    SameDriverCategoryAhead_CarIndex

    SameDriverCategoryAhead_CurrentDriverCategoryString

    SameDriverCategoryAhead_RaceNumber

    ...

    // SameDriverCategoryBehind --> Same Serie and same DriverCategory Behind

    --------------------------------------------------------------------

    SameDriverCategoryBehind_CarIndex

    SameDriverCategoryBehind_CurrentDriverCategoryString

    SameDriverCategoryBehind_RaceNumber

    ...


    PC : i5 12600 k - RTX 3080 Ti - 32 Go - Triple LG OLED 55 pouces 120Hz - SimLab P1X - Simucube 2 Pro - Pédalier Asetek Invicta