Game Window Cursor Clipping

From Valve Developer Community
Jump to navigation Jump to search

Summary

This implementation allows you to clip the cursor to the game window such as in DOOM and DOOM Eternal (id Tech 6 - 7), also brings some fixes to various bugs on VGUI.


Requirements

  • Knowledge of C++
  • Knowledge of Source Engine
  • Source SDK Base 2013 - Currently tested on Source SDK Base 2013 Multiplayer.


Getting the Implementation/Code

First of all, you'll need the following files from the following GitHub repository:


Which you will copy to src/game/client/. You can also create a subfolder if you wish to, and copy these files there.


Implementation

Now head over to cdll_client_int.cpp' and include

#include "CCursorClipManagement.h"

Anywhere before

// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
Note.pngNote:Note that if you copy the header to a subfolder, you gotta specify that in your #include


In the same cpp, find CHLClient::PostInit() and add this to the end:

CCursorClipManagement::Init();

Lastly, find void OnRenderEnd() and add this to the end:

g_pCursorClipManager->Think();

Conclusion

You're all set! Compile your client project and check if it works.


Notes

If you start the game/mod with one of the following parameters:

  • -tools
  • -dev
  • -developer
  • -nocursorclipping


Or if you're compiling into a different platform, else than WIN32, the cursor clipping will be disabled and won't work by default. This behavior can be changed by modifying CCursorClipManagement::Think().


You can also add a ConVar to enable or disable this dynamically in-game, all you'll need to do is adding one more check on CCursorClipManagement::Think().