#0 

30-06-2011 13:30:27

BMarleyFR
Membre
Date d'inscription: 30-11-2006
Messages: 59

Bonjour à tous

De retour sur mon vieux projet d'adaptation du jeu Skweek débuté en Freebasic avec le moteur Irrlicht, j'ai décidé de m'y remettre mais cette fois en .net via Irrlicht.Net CP (étant donné que le wrapper officiel est à la ramasse...)
Je bloque sur un énorme soucis au niveau de la gestion de OnEvent en VB.Net... pour faire simple voici un bout du code orginal en C# avec la partie qui m'interesse commentée :

Code:

   
//Le code est volontairement raccourci
        IrrlichtDevice device = new IrrlichtDevice(drivertype,
                                                       optimalmode.Resolution,
                                                       optimalmode.Depth, fullscreen,
                                                       true,
                                                       false, 
                                                       false);



            //---------------- LE ONVENTDELEGATE en C# -----------------------------------
            device.OnEvent += new OnEventDelegate(device_OnEvent); 
           //-------------------------------------------------------------------------------------



            while (device.Run() && !Exit)
            {

                driver.BeginScene(true, true, Color.From(255, 50, 50, 50));
                scene.DrawAll();
                guienv.DrawAll();
                driver.EndScene();                
            }

            device.Dispose();
   



//---------------------------GESTION DE ONVENT EN C# ---------------------------------------------
        static bool device_OnEvent(Event ev)
        {

            if (ev.Type == EventType.LogTextEvent)
            {
                Console.WriteLine(ev.LogText);
                return true;
            }

            return false;
        }
//--------------------------------------------------------------------------------------------------------

Si maintenant je tente une conversion en VB.Net j'obtient ceci :

Code:

//Le code est volontairement raccourci
Dim device As New IrrlichtDevice(drivertype, optimalmode.Resolution, optimalmode.Depth, fullscreen, True, False, False)


 //---------------- LE ONVENTDELEGATE en VB.Net -----------------------------------
device.OnEvent += New OnEventDelegate(device_OnEvent)
 //-------------------------------------------------------------------------------------

While device.Run()
    driver.BeginScene(True, True, Color.From(255, 50, 50, 50))
    scene.DrawAll()
    guienv.DrawAll()
    driver.EndScene()
End While

device.Dispose()

'---------------------------GESTION DE ONVENT EN VB.Net ---------------------------------------------
Private Function device_OnEvent(ev As [Event]) As Boolean

    If ev.Type = EventType.LogTextEvent Then
        Console.WriteLine(ev.LogText)
        Return True
    End If

    Return False
End Function
//--------------------------------------------------------------------------------------------------------

Sauf que la ligne suivante engendre 2 erreurs :

Code:

device.OnEvent += New OnEventDelegate(device_OnEvent)

Les erreurs :

Erreur    1    'Public Event OnEvent(ev As IrrlichtNETCP.Event) As Boolean' est un événement. Il ne peut donc pas être appelé directement. Utilisez une instruction 'RaiseEvent' pour déclencher un événement.    D:\Sources\Irrlicht.net\IrrlichtVB.net\VideoInit.vb    30    9    IrrlichtVB.net

ainsi que

Erreur    2    Le délégué 'IrrlichtNETCP.OnEventDelegate' requiert une expression 'AddressOf' ou une expression lambda en tant qu'unique argument de son constructeur.    D:\Sources\Irrlicht.net\IrrlichtVB.net\VideoInit.vb    30    47    IrrlichtVB.net


Et impossible de m'en sortir vu le manque de code en VB.Net utilisant le wrapper...
Je fais appel aux codeur VB.Net ou aux autres ayant trouver ma coquille...

Merci d'avance wink

Dernière modification par BMarleyFR (30-06-2011 13:33:12)


Amstrad CPC6128 - RAM 128Ko - Lecteur disquettes double faces - Moniteur 256 couleurs ...  :-P

Hors ligne


#1 

30-06-2011 18:55:44

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Cela ne va pas t'aider sur ton soucis, mais si tu es toujours adepte de FreeBasic et d'Irrlicht, tu as N3xtD.
http://www.n3xt-d.org. wink


Force et sagesse...

Hors ligne


#2 

30-06-2011 19:58:29

BMarleyFR
Membre
Date d'inscription: 30-11-2006
Messages: 59

Re-Bonjour,

En vérité mon souhait est de justement d'abandonner Freebasic au profit du .net que je pratique déjà depuis un moment.

Et j'ai trouvé ma solution, c'était balot... Et pourtant ça faisait déjà quelque jour que je m'arrachais les cheveux (qui me manquent déjà d’ailleurs :p) , alors si certains sont comme moi voici la gestion du Onevent en VB.Net


Code:

//Cette ligne :
 //---------------- LE ONVENTDELEGATE en VB.Net -----------------------------------
device.OnEvent += New OnEventDelegate(device_OnEvent)
 //-------------------------------------------------------------------------------------


//Etait en fait :
 //---------------- LE ONVENTDELEGATE en VB.Net -----------------------------------
AddHandler device.OnEvent, AddressOf device_OnEvent
 //-------------------------------------------------------------------------------------


//Et voici un exemple pour traiter les events :

    Public Function device_OnEvent(ByVal ev As [Event]) As Boolean


        If ev.Type = EventType.KeyInputEvent And ev.KeyPressedDown And ev.KeyCode = KeyCode.Escape Then
            Debug.Print("OK")
        End If


        Return False
    End Function

On en apprend tout les jours quand on apprend tout seul :p  , Moins vite forcement...


Amstrad CPC6128 - RAM 128Ko - Lecteur disquettes double faces - Moniteur 256 couleurs ...  :-P

Hors ligne


#3 

30-06-2011 20:06:03

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

C'est bien quand on arrive à trouver la solution smile
cool.


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
71 invités en ligne
Aucun membre connecté
RSS Feed