[C#/MonoGame] Andere WindowHandle toewijzen aan Mouse

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Topicstarter
Ik ben weer eens begonnen met het aankloten met game development. Ik heb een tijd terug XNA geleerd en er eigenlijk nooit meer iets mee gedaan, dus het leuk me leuk om nu eens wat met MonoGame te gaan doen zodat ik niet nog een nieuwe techniek hoef te leren maar wel redelijk cross-platform kan developen. Voordat het geroepen wordt: ja, ik ken Unity. Nee, ik heb geen zin om het te leren. ;)

Anyway, ik loop nu tegen een issue aan waarvan ik weet dat het blijkbaar by design is maar ik heb enigszins moeite met uitvogelen waarom en hoe ik dit nu het beste kan herschrijven.

Ik ben bezig met een platformspelletje en daarvoor heb ik een level editor gemaakt op basis van een boek dat ik ooit voor XNA gekocht heb. In mijn solution heb ik projecten voor mijn game zelf, de TileEngine-library, de level editor en de bijbehorende content-projecten. Mijn level editor is een MonoGame-project dat een Windows form aanmaakt waarin het tekengebied van de game verlegd wordt naar een PictureBox op dat formulier. Ik heb dat eerder in XNA draaiend gehad en dat werkte prima, maar ik kwam erachter dat in MonoGame Mouse.GetState() altijd "lege" waardes teruggeeft. Een half uurtje debuggen later kwam ik erachter dat de muis-input nog steeds gekoppeld staat aan het MonoGame-venster en niet aan het formulier dat dat venster oproept.

Ik gebruik de volgende code in de constructor van mijn level editor om het focuspunt van de muis te verleggen:
C#:
1
Mouse.WindowHandle = drawSurface;

Mouse komt hier uit de Microsoft.Xna.Framework.Input-namespace. Eventjes Googlen verder kom ik erachter dat dit de boosdoener is: MonoGame heeft nooit de setter van Mouse.WindowHandle geïmplementeerd.

Ik heb voor zover ik kan zien drie opties:
  1. Windows.System.Input.Mouse gebruiken in plaats van Microsoft.Xna.Framework.Input.Mouse.
  2. Een workaround vinden waarmee ik MonoGame toch wijsmaak dat ik geen interesse heb in de muisbewegingen in een venster dat nooit zichtbaar wordt.
  3. Mijn level editor omzetten van een MonoGame-project naar een XNA 4.0-project, aangezien de levels toch nooit in een ander OS geëdit gaan worden.
Ik vraag me af of optie 2 überhaupt mogelijk is en wat de voor- en nadelen van elke optie zijn. Heeft er iemand hier wat ervaring mee?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.