I'm not aware of any first person camera systems, but I do have an idea of how you could make one with the new natives in patch 1.31.
You would constantly reset the cursor to the center of the screen using BlzSetMousePos
, BlzGetLocalClientWidth
, and BlzGetLocalClientHeight
.
Then, to detect when your cursor is moved, you can use BlzTriggerRegisterFrameEvent
, with frameeventtype FRAMEEVENT_MOUSE_ENTER
, and then place a number of framehandles around the center of the screen.
I made a quick test using 440 frames (21x21-1) and it seems to be working, although it does impact the framerate quite a bit, so you should not make too many.
I also didn't use BlzFrameCageMouse
, so I needed the space and amount of framehandles to be quite large for the cursor not to escape the center of the screen.
If you're not used to working with JASS, I'm sure this answer is quite useless to you, so maybe someone else could be kind enough to turn this idea into a library.
Also, in regards to your question about moving with WASD, you could probably find existing systems that work with arrowkeys.
All you'd have to do is replace the arrowkey events with BlzTriggerRegisterPlayerKeyEvent
.