I'm dusting off my inprocess dll after stepping away for a while and want to allow the user to interact with the dll from inside wow. I've done some simple testing on all of these options and I'd like some feedback as to what will work the best. I should say I'm using primarily using C# with an EndScene hook.
- Lua Frames - This is the method I'm currently using. I create a frame with some simple Lua controls which then make calls back to the app to do stuff (like hide/show waypoints, etc). The issues I have with this method are that 1) the lua stuff has to be recreated every time you zone and 2) it creates yet another language transition and debugging barrier.
- WinForms - This is what I think I'd like to do, but when I tried it, wow starting filling in my controls with portions of the rendered scene and I couldn't actually use it. Maybe someone knows what I did wrong?
- WPF - Apoc's blog does a nice job of list why I don't like this, so I'll just point you there. I can't remember if I had the same problem with Wow drawing over my controls or not when using WPF.
- External App with Pipe - I've also tried putting the GUI in a separate app and using a TCP/IP pipe for inter-process communication. This works, but 1) its slow, 2) you have to write wrappers for every call you want to make across the wire and 3) you either have really crappy frame rate or have to handle asynchronous call and response.
Does anyone have any advice here? Things you've tried that worked well? Things that completely failed?