cybereality/Perception — pull request #45 by DreamNik (2014-09-19 19:29:40+00:00)
Title: New GUI and major code refactoring

Hi!
I've created new GUI for configuring VireIO.
But I've also cleaned up and refactored settings structure. I've created classes:
cSettings - for global settings
cStereoMode - for display parameters (this one previously had hardcoded - now in configuration files)
cGameProfile - for game-specific settings (game profile)
cGame - for mapping exact exe game to profile and for game library.
cConfig - runtime settings (cSettings,cStereoMode,cGameProfile).

The main codebase were greatly reworked. Removed unnesesary classes, introduced new method definition procedure - via macros METHOD_***,
This one is for easier future implementing loggins and debug print of called methods with ability to log parameter valued (TODO) (instead of hardcoded logging of each method).

The next big thing is new injector. It's from my own project, but it's working flawlessly.
The main app now launches process in paused state, then injects proxy dll, then injects injector dll which then replaces functions.
This method should eliminate need of copying dll's, because it's overrides LoadLibrary* and GetProcAddress functions, so no any direct library loading should prevent from hooking d3d calls.

One big thing is changes of configuration file format. Now it's something like "ini" file - every line consists of string "name=value". This is easier to parse and verify integrity (TODO). And editing is easier for end-user applications. Adding new profiles would be just drag-drop new files into directory.

The main disadvantage my work is that now it's depends on Qt framework. (which increases size of installation). But this shouldn't be a problem.