- Fixed formatting of resolution strings for the internal values, allowing them to be properly parsed and applied by the options menu/canvas
- Fixed display of Display Device on option's menu
- Fixed Issue of it not displaying any keybinds in keyboard/gamepad options if there's only a single actionmap
- Added 'hold to scroll' action to optionsMenu
- Added apply button to options menu
- Added remap button to options menu when on keyboard/gamepad keybinds categories
- Fixed up the remap logic so remapping a key only unbinds the matched device being bound, so binds for different devices are untouched
- Made keybinds options properly refresh when keybinds are changed
- Shifted keyboard "go" keybind for menu nav from Enter to Space for easier use
- Removed stick keybinds from gamepad
- Standardizes highlighting behavior between keybind and mouse highlighting of buttons
- Standardized onHighlighted callback for buttonBase
- Fixed handling of up/down nav with gamepad stick
- Added logic to make holding down nav keybinds iterate over buttons in menu lists
- Fixed MainMenu buttonlist not navigating with keybinds after going to optionsMenu and going back
- Fixed menu title text clipping
- Fixed keybind preview images on keybind lists in OptionsMenu being modal
- Fixed btn_l and btn_r bitmap button binding not working
- Fixed a/b and x/y button bitmaps on xbox controllers being flipped
functions to look up methods and (hardcoded) variables from the classrep rather than creating an instance
this did cost us dynamic variable listing, but that's runtime assignment as-is and can likely be referenced another route in the end
Cleaned up old refs to previous unapplied changes system
Added comments to some critical functions to better explain their behavior and purpose, as well as referencing the source files for the graphic and audio options groups
Cleaned up some unneeded fields in the gui files
Fixed up querying presentation for joinServerMenu
Removed usages of background image in favor of guiProfiles for various menus
Implemented optionsMenu traversing options categories along with required keybinds
Adjusted some guiProfiles' font sizes to improve legibility on smaller displays
Adds ability to select an actionmap for a GuiInputCtrl which will push it onto the stack, so menus can enact an action map
Update of the MainMenuGUI to fit new style and have the logic needed for KBM and gamepad navigation
Very early wipwork of OptionsMenu overhaul for new standard
review of per and post bake protocols showed that the CAPTURING shader macro was not being properly recompiled in. as opengl was not playing nice with a simple batch shader recompilation for all effected shaders, a full lightmanager restart is at time of writing required. once we have a proper globally cached scene structure stored off GPU side, we'll want to change GFXShader::addGlobalMacro("CAPTURING", String("1")); on over to dirtying that value in the cached buffer via setting a shader global uniform
review of prefilter examples shows a fixed sample count of 1024 across multiple implementations, so we'll use the standard barring further research into where that number is comming from for a scalar approach
review of gl shaders shows a doubleup in compiled state testing, so slimmed that down and added additional debugging reports
two things stuck out as proximal causes for an overdark result on community review
1) $PostFX::HDRPostFX::keyValue was significantly too low given existing calculations, so upped that to 00.5 in keeping with the general assumption were remain intending to have that be the dead center value of a luminance range
2) Fr_DisneyDiffuse input assumptions differ from current engine ones, so reverting that to lambert .
1) fix spotlight shadow casting. we weren't properly accounting for reversedepthbuffer there
2) fix mismatched variables in forward lit spotlight param array
3) use disney diffuse in the generalized brdf, and apply it for spotlights after angular attenuation, not before
4) .provide a generailze luxTargMultiplier approach for spot and point lights (as well as future growth areas) so that range, angle ect can impact the brightness variable sent to a given light source shader without perpixel overhead
5) for spotlightParams in particular, use sizeof(point4f) for the alignedarray untill that's properly reviewed/revised
6) narrow attenuation slightly based on a given lights dot product to prevent tool vs outcome leakage, plus provide safeties for when a given spotslight's inner and outter angles match identially
- Fixes the AB's select button not being properly offset to the right side
- Fixes incorrect height offset for the main editor tabbook because of a no-longer-used variable
- Fixes the bottom of the scene tree scroll being cut off
SceneObject now defaults to a category of "misc"
getCategoryOfClass now checks parent classes for what categories they hold so that variants can inherit
categories are in one of a few rough groups and subgroups depending on actual mapper needs/usages
Shifts "Help" menubar entry in world editor to use new API structure as example/test
Removes extraneous 'MainEditor'
Adds EditorCore module
Moved Menubuilder to EditorCore module
Fixes Help Menu editor settings so they properly point at modern documentation and forum URLs
Fixes handling of MenuBar so when inserting new items, ensures the menubar refreshes as would be expected
Adds remove function to menubar to remove a menu
Removes old commented console methods from menubar file
Adds checks for onMouseDown and onMouseUp for PopupMenu so items that are submenus aren't clickable like normal items
-Add buttons to the inspector for SFXEmitter that will play pause and stop the sfxEmitter.
NOTE: Purely effects the state of the emitter when in the editor this will not effect sfxEmitter functionality in a level.
- Updates various images in core and UI to be more standardized to the default theme
- Updates some spacing, sizing and coloration of gui controls and profiles
Change unit tests to run without script
runTests now just holds a purely script test example
Test Explorer in VS now works with tests
NB do not use test explorer on purely script based tests.
typehints operate as an additional label for a given class in the inspector, allowing one to specify what class-entry to use as a tag
examples: Prefab displays prefab filename
TSStatic displays the used shape asset name
SFXEmitter displays the played sound asset
GameBase derivatives display the datablock used
Added sanity check to reflectionProbe preview shape so if the material didn't load right, it doesn't crash
Added logic to better control if module groups as a whole should fail if a module dependency in that group fails, defaulted to off
Added sanity check if a shape's material failed to load so it doesn't crash when checking accumulation rules
Added search bar to SimView control for easier use
-Adds reversed depth projection model, dramatically increasing depth buffer effective resolution.
-Adds 32F depth 8U stencil format GFXFormatD32FS8X24 (following DX naming conventions). Note this is a 64-bit format, and likely not suitable for mobile platforms. Revert to GFXFormatD24S8 in renderManager.tscript for mobile & "ancient" platforms.
-Corrects alignment of texture type details array.
method checks last module.filename execution via getTimeStamp() the last time it was run, and compares fileModifiedTime to see if the next time that file had been altered.
called in moduleExec
Adds logic during the editor script initialization to let game modules have embedded tools
Changed setting to force prompt for target modules when creating things like datablocks to minimize confusion about where they save to
guiprofiles now have additional options: borderSEL and borderERR in keeping with the fillcolor variants. fontColors now also takes an optional ERR entry on the backend, though that remains unleveraged at time of writing.
guiiconbuttonctrl now uses the expanded list in conjunction with renderFilledBorder
asset browser profiles now contain a AssetBrowserProtoProfile that type-profiles derive from for consistency in border selection, highlight, (and down the line error) colors and border thickness while maintaining type-sepcific border color entries for general display
Fixes two issues:
-Bindings after the first page were not pointing to the correct remapping entries when actually remapping. Were populating the name and button image correctly, but first item on every page pointed to first item on first page.
-Keybinds were never being saved to file if your action maps all had long-form ("human readable") names defined.
Adds sanity check to default onNewDatablock function on the GameDatablock namespace in case the onAdd or onRemove functions aren't defined, we don't spam the console
utilize specialty case soundarray macros.
slim duplicate entries in vehicle already hand;ed by rigidshape.
create a gamebasedata::onnewdatablock which calls onremove and onadd for the db for those classes like wheeledvehicle that expect mounting logic to occur
Adjust the scaling of the options rows to be a consistent 50/50 divide between the options name and the actual options values to make the layout and scaling consistent
Fixes key remapping behavior to work properly
Added SubHeader text gui profile that is centered
Made the remapping gui control be stylistically consistent to messageboxes
Core_ClientServer.clearLoadStatus();
Core_ClientServer.inishMapLoad();
Core_ClientServer.FailMapLoad( %moduleName, %isFine);
Of special note: the postevent method must only take one entry, so we store off Core_ClientServer.failedModuleName = %moduleName; priorto triggering the event so that the failing module can be reported.
at time of writing:
Core_ClientServer.GetEventManager().postEvent( "mapLoadFail", false );
kicks players and closes the server
Core_ClientServer.GetEventManager().postEvent( "mapLoadFail", false );
proceeds to continue loading reguardless
leverages the EventManager and ScriptMsgListener() classes to set up a third mission load stage triggered by the following flow:
function <module>::onLoadMap(%this) starts an execution chain that leads to <module>::finishMapLoad()
each <module>::finishMapLoad() MUST contain the line
Core_ClientServer.GetEventManager().postEvent( "mapLoadComplete" );
once all have called back that they have finished thier tasks, players finish loading into a hosted mission
Adds sanity check so if no remappable binds are found for an actionMap, it isn't listed in the controls menu
Updates ExampleModule's keybinds to use new utility function
cliffsnotes:
$Core::WetnessTexture = "core/rendering/images/wetMap.png"; //for the influence degree map
probes/skylight have a new canDamp boolean, set to off for probes, on for skylight by default.
:levelinfo has a dampness multiplier (0-1)
kicked up numTextures from 8 to 16 for shaderdata and postfx since that hit the 8 texture-in prior limit, and we've already adopted apis that can handle the higher count
as we do not at time of writing have a specifier for what colorspace to load a backbuffer in, we leverage the old toGamma and toLinear macros to upshift the backbuffer for lumina edge detection via a clone
Adds SMAA anti aliasing
Adjusts AA option setting to properly work and facilitate SMAA
Added defaults for AA to facilitate SMAA
Updated brightness and HDR values on Example Level to comply more closely to the Editor default to give better default results
Fixed issue where ShapeEditor wasn't initialized properly when we'd open it from the Asset Browser
seems the math is mangling for the capture to irradiance and prefilter hard files. as a temporary measure till we can better dig, shifting the result via toGamma
Swapped the water's disableTrueReflections variable to be enableTrueReflections for simplicity and consistency(also fixed a persistent typo)
Swapped disableVerticalSync to be enableVerticalSync for simplicity and consistency
Swapped disableParallaxMapping to be enableParallaxMapping for simplicity and consistency
Fix click detection on slider mode entries for guiGameSettingsCtrl so the click position correctly matches the percentage
Fixed problem where postFX initialization would always exec default.postfxpreset.tscript, even if a level's got it's own preset, which can cause problems
Fixed range field type behavior so that editing the values applies in real time, and also consistently applies between slider and text field
ensure if there's no assigned sourcegroup, we at least point at "AudioChannelMaster" so overall sound volume can have it's say
turn on button hover and click profiles by unremming the file
assign hoverasset and buttonclick assets to audioChannelGUI
todo: sort volume hooks for non-AudioChannelMaster
long term: resolve the requirement that gui profiles need direct sound profiles instead of the capacity to take assets
fix high-metalness object capture (had the lerp the wrong direction for canceling out NULL-ibl due to full metallic)
use dStrcmp for (Con::getVariable("$Probes::Capturing", "0") comparisons. and early out on rendering probes when we are capturing, not when we aren't.