NVlabs / FPSci

Aim Training Experiments
Other
69 stars 23 forks source link

Refactor/Remove playMode from startupconfig.Any #89

Closed bboudaoud-nv closed 4 years ago

bboudaoud-nv commented 4 years ago

Currently playMode=false is a bit overloaded and does many things including:

This is an issue to track splitting up this functionality and improving startupconfig.Any and/or the in-app menu system as needed.

bboudaoud-nv commented 4 years ago

The most recent commit (see above) adds support for a separate fullscreen (boolean) parameter in startupconfig.Any that allows the user to control fullscreen vs windowed mode separately from playMode=false. Documentation has been updated to reflect this.

bboudaoud-nv commented 4 years ago

@jspjutNV or @joohwankimNV do we want to make waypoint editing a special "mode" for the application? We could choose to just have another startupconfig.Any boolean parameter that controls waypointEditorMode. Let me know if you think this makes sense, or if it should just stay in playMode=false for now.

bboudaoud-nv commented 4 years ago

Simple Solution

My suggestion is that we consider renaming the existing playMode parameter to something more descriptive like developerMode (w/ inverted function) then add (at least) 1 new control flag (waypointEditorMode) which is conditional on developerMode as well:

{
     experimentConfigPath = "";
     userConfigPath = "";
     developerMode = false;
     waypointEditorMode = false;
     fullscreen = true;
     audioEnable = true;
}

The idea is that the user sets developerMode=true when they want access to more in-game settings (i.e. the render, player, and weapon windows, as well as the normal G3D developer window). If beyond normal developer mode, the user wants to edit waypoints for paths then they set waypointEditorMode=true which enables the waypoint config menu and the key binds for editing waypoints. If developerMode=false then the state of waypointEditorMode is not considered.

Finer Grained Control

If we want an even finer granularity control over the experience we could always make the use of each window conditional on its own flag within a sub-structure in the startupconfig.Any file. In this case we'd have something more like this:

{
     experimentConfigPath = "";
     userConfigPath = "";
     fullscreen = true;

     showWindows = {
          debug = true;
          developer = true;
          renderControls = true;
          playerControls = false;
          weaponControls = false;
          waypointControls = false;
     };
}
bboudaoud-nv commented 4 years ago

The previous commit implements the Simple Solution referenced in my previous comment. If we'd like to add more fields we can, but for now I think this is likely sufficient and we can close the issue if others agree.

jspjutNV commented 4 years ago

I agree with the changes from commit 40c1610 and I believe they solve this issue in combination with the earlier split for fullscreen having an independent control. I'm closing this, but we should keep an eye out to make sure the functionality matches the expectations.