IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

Interfaçage Lua Lunar C++


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Par défaut Interfaçage Lua Lunar C++
    Bonjour
    Petite question assez technique sur l'interfaçage entre Lunar et le C++
    J'aimerais que mon script LUA exécute une fonction permettant de modifier un des membres de l'instance de la classe qui a lancé le script. Je m'explique :

    Mon code C+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Object
    {
    ...
    ...
    int m_x; // ce qui va être modifié dans un script LUA
    int Incrementer(lua_State *state); // incrémente m_x par exemple de v où v est le paramètre de la fonction Lua
    };
    Mon script Lua Incrementer.lua :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -- récupérer le "this"
    this.Incrementer(18);
    -- Incrementer s'exécuter sur l'objet qui a fait le do_file(Incrementer.lua)
    Comment je fais ? This n'existe pas en lua et je ne sais pas comment récupérer le Object appelant dans le script Lua. J'ai bien lu le tutorial de Michel de Verdelhan mais il ne parle que de fonctions Lua et encore celles-ci sont appelées depuis le C++ alors que je voudrais moi que le code C++ ne fasse qu'un do_file()

    Merci !

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    Si j'ai bien compris ce que tu cherche, il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Object::Methode(lua_State* pLua)
    {
        // On met l'objet actuel en haut du tas
        Lunar<Object>::push(pLua, this);
        // On attribue à la variable globale "this" la dernière valeur sur le tas, donc notre objet
        lua_setglobal(pLua, "this");
        // On exécute le script
        luaL_dofile(pLua, "Incrementer.lua");
    }
    J'ai pas testé, mais en théorie ça marche ^^

Discussions similaires

  1. Méthode d'interfaçage C++ / Lua
    Par Le Barde dans le forum C++
    Réponses: 17
    Dernier message: 31/05/2010, 22h15
  2. Moteur de FarCry [ programmer en .lua?? C++ ]
    Par R3G3N3R@T0R dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 21/02/2006, 21h25
  3. Hyperion : moteur 3D XML / Lua / GLSL
    Par Laurent Gomila dans le forum Moteurs 3D
    Réponses: 1
    Dernier message: 31/01/2006, 19h25
  4. Interfaçage avec les API de cdrtools
    Par jeanbi dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 17/07/2004, 16h35
  5. [CR][ASP] interfaçage
    Par grosjej dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/04/2004, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo