#1 

30-06-2011 11:30:27

BMarleyFR
Membres
Avatar de BMarleyFR
Date d'inscription:
Messages: 59
IP: 83.193.141.54
Courriel

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 :

   
//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 :

//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 :

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


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

Hors ligne


#2 

30-06-2011 16:55:44

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.254.93
Courriel

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


#3 

30-06-2011 17:58:29

BMarleyFR
Membres
Avatar de BMarleyFR
Date d'inscription:
Messages: 59
IP: 83.193.141.54
Courriel

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


//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


#4 

30-06-2011 18:06:03

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.254.93
Courriel

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


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
571 invités en ligne
membre en ligne: -
RSS Feed