251 Commits

Author SHA1 Message Date
Kawe Mazidjatari
2da11d2d32 Disable undo/redo in command input
Currently causes undefined behavior, though it rarely crashes (I couldn't reproduce the crash, but do get undefined behavior by having random memory end up in the input field, or similar)
Problem probably is because we don't store any undo/redo buffer.
For now disabled, will revisit in the future.
2022-06-26 17:14:32 +02:00
Kawe Mazidjatari
efe71fbe24 ImGui console UX improvements
* Fixed click-through parent window.
* Keep selection position when lines get cleared.
* Keep cursor position when lines get cleared.
* Ensure cursor visibility when dragging cursor outside rect.
* Falter free scrolling in autocomplete window.
* Falter free scrolling in logging window (window no longer stutters when lines get cleared).
2022-06-26 16:47:00 +02:00
Kawe Mazidjatari
d7a004a0eb Fixed bug where auto-scrolling occasionally gets disabled
Issue happened when scrolling back, most of the time it will work, but there is always jitter in the first frame after the change which could result in ImGui::GetScrollY() <= ImGui::GetScrollMaxY() resulting in auto-scroll disable.
Only scroll back if ImGui::GetScrollY() <= ImGui::GetScrollMaxY() and always reset value of CConsole::m_nScrollBack.
2022-06-24 18:28:26 +02:00
Kawe Mazidjatari
609af5e4b7 Strip tilde/grave/space characters from console properly
If input only contains the '~', '`' or ' ' character, it gets stripped from the input buffer. e.g. '````````' or '~' gets stripped, but 'script_ui printl("test `````")' or 'script_client printl("~CEngineClient()")' does not.
2022-06-24 14:23:12 +02:00
Kawe Mazidjatari
2eda8235b7 Slight theming tweaks
Minor improvements to small detail:
No child border on console on default theme (this is invisible).
Tweaked first use size and min size where by default the text would always perfectly align between ScrollY min and max.
2022-06-24 12:45:47 +02:00
Kawe Mazidjatari
add5c577ff Improve ImGui theme system
-imgui_theme "modern" = Respawn theme.
-imgui_theme "legacy" = Valve theme.
No args = default theme.
2022-06-24 12:22:04 +02:00
Kawe Mazidjatari
978c43250f Console cleanup and optimizations
Proper usage of callbacks, no longer use string comparisons to check if buffer changed.
Improved optimizations with avg 5000 clocks in release and avg 600000 clocks in debug (no filter).
2022-06-22 03:24:46 +02:00
Kawe Mazidjatari
83e855112a Update default ImGui theme 2022-06-22 01:17:10 +02:00
Kawe Mazidjatari
76ec4b8f4a Improve console scrolling
Moved auto scrolling logic to CTextLogger.
Removed redundant code in CTextLogger.
Added bool param to CTextLogger::RemoveLine to determine whether or not to lock the mutex (internal operations should not lock).
Fixed issue where scrolling with cursor is not possible when auto-scroll is set or ScrollY is towards its max.
Fixed copy button (copy all text in console via GUI, ctrl + a - ctrl + v alternative).
2022-06-21 23:25:15 +02:00
Kawe Mazidjatari
a436b70601 CConsole / CTextLogger optimizations
CConsole: cast to proper types.
CTextLogger: only compute line string if filter is active.
2022-06-21 20:20:12 +02:00
Kawe Mazidjatari
98741a9591 Remove redundant 'PrintPercentageEscape' calls 2022-06-21 10:12:15 +02:00
Kawe Mazidjatari
da299a002c Reimplement text filter
Could be better at some point, currently removes anything not matching criteria resulting in gaps.
But on the other side it might be good as the location of all occurrences are known (should make it easier to see when it is logged during the process).

Revisit in the future.
2022-06-20 20:21:52 +02:00
Kawe Mazidjatari
0de09217bc Log process uptime
Log actual process uptime in all (post init) loggers.
The actual process uptime is obtained from the engine (Plat_FloatTime()).
2022-06-20 15:48:33 +02:00
Kawe Mazidjatari
33aebfb89d ImGui theme improvements 2022-06-20 13:05:50 +02:00
Kawe Mazidjatari
44157bdce4 Fix CConsole history navigation bug
Fix bug where a space character gets appended on each navigation event, even if there already is a space character.
2022-06-20 11:21:18 +02:00
Kawe Mazidjatari
43b73dc717 Improve scrollback
Scrollback now scrolls back pixel perfect to the exact line in view before resize.
2022-06-20 11:20:02 +02:00
Kawe Mazidjatari
1764f039cf CConsole improvements: Add selectable logger text
CConsole now uses a dedicated class for logging text (modified CTextEditor class (CTextLogger)). The class uses an ImDraw list with a character vector to draw the text.

Text could be selected by double click (word), triple click (line), a selection by dragging the cursor, or everything with 'ctrl + a'.
2022-06-20 10:31:09 +02:00
Kawe Mazidjatari
2c954da789 Light CConsole class cleanup 2022-06-18 18:11:05 +02:00
Kawe Mazidjatari
26b51681e9 Use proper types 2022-06-15 02:07:27 +02:00
Kawe Mazidjatari
ae1d0516c2 Use proper types 2022-06-15 02:06:30 +02:00
Kawe Mazidjatari
8f3e01795c Use proper types 2022-06-15 02:04:03 +02:00
Kawe Mazidjatari
3de4b4c4ed Fade suggest panel among with base panel 2022-06-14 22:37:43 +02:00
Kawe Mazidjatari
aaf6e46871 ImGui panel improvements
Slight optimizations and cleanup.
Added fade-in effect.
2022-06-09 02:22:01 +02:00
Kawe Mazidjatari
e5e0d528f0 Parse playlists file directly after loading it
No longer need a thread that loops and waits until its loaded into memory before parsing it.
2022-05-28 17:07:30 +02:00
Kawe Mazidjatari
dbec823be6 FileSystem improvements
* Added vftable interface for 'IFileSystem::RemoveSearchPath'.
* Added hook for 'CBaseFileSystem::AddSearchPath'.
* Added hook for 'CBaseFileSystem::RemoveSearchPath'.
* Added method in KeyValues for loading a KV file and parsing it via the game exe (loads from cache, vpk and disk).
* Added method in KeyValues to parse GameInfo.txt when the engine loads this.
2022-05-28 02:05:54 +02:00
Kawe Mazidjatari
83c57fbd99 Fix compiler error 2022-05-27 22:31:12 +02:00
Kawe Mazidjatari
112f0a25b7 Update IConsole.h 2022-05-27 16:29:47 +02:00
Kawe Mazidjatari
bcd75b354a Fix suggest window drawing below server browser window 2022-05-27 16:28:37 +02:00
Kawe Mazidjatari
e6ef3d71f1 Rename variable 'g_pIConsole' to 'g_pConsole' 2022-05-27 02:46:13 +02:00
Kawe Mazidjatari
58d46c0a8c Rename class 'IBrowser' to 'CBrowser'
Renamed 'g_pIBrowser' to 'g_pBrowser' as well
2022-05-27 02:44:36 +02:00
Kawe Mazidjatari
555eb264c1 Server browser cleanup 2022-05-27 02:39:08 +02:00
Kawe Mazidjatari
5aeac9f72a rename 'g_szNetKey' to 'g_svNetKey'
sv = string variable
2022-05-27 02:24:34 +02:00
Kawe Mazidjatari
47d2e4c915 See description
* Added new function 'GetAvailablePlaylists' to all VM's.
* Moved function 'GetAvailableMaps' from UI VM to all VM's.
* Improved logic behind 'GetAvailableMaps'.
* Server browser and SQVM now rely on 'MOD_GetAllInstalledMaps'. This new function populates the global vector 'g_vAllMaps' with all installed maps.
* Improved 'KeyValues' structure to use union for shared members.
2022-05-27 02:08:51 +02:00
Kawe Mazidjatari
4b72afb74f Light refactor for logging
Moved logging functions to dbg.h (tier0) and export them from the dll.
Added additional functions for checking bad pointers (debug only!).
Reduced output code size.
2022-05-25 14:18:29 +02:00
Kawe Mazidjatari
52883808e1 Reversed CServer structure (almost complete). See desc
* Mostly rebuild CServer structure.
* Partially rebuild CNetworkStringTable structure.
* Partially rebuild CNetworkStringTableContainer structure.
* Removed redundant patterns which are now covered in the data structure.
2022-05-20 20:14:39 +02:00
Kawe Mazidjatari
efb7c36408 Light project restructure
Moved server/client headers and implementations into dedicated subfolder.
Renamed Some classes to match the game binary (e.g. CBaseClient is now CClient).
Removed redundant files.
2022-05-20 11:52:19 +02:00
Kawe Mazidjatari
637041d5e7 Use 'fs' instead of 'std::filesystem' 2022-05-16 21:54:46 +02:00
Kawe Mazidjatari
6dff43bc75 Move and rename ConCommand callbacks appropriately 2022-05-16 21:15:25 +02:00
Kawe Mazidjatari
452c8afcf3 Display '%' symbol properly in console 2022-05-10 23:32:44 +02:00
Kawe Mazidjatari
9ceffb2491 Fix forgotten color parameter 2022-05-10 18:09:49 +02:00
Amos
473db0e320 Finish game console optimizations
The console no longer should cause huge frame drops when the vector size increases around its max size
2022-05-10 13:26:03 +02:00
Kawe Mazidjatari
46134434a9 Show script error callstacks and context in colors in the external console
Show colors on console and use color constant to determine color instead of comparing strings in the console render loop. removed 5 string compares which should once again bump the performance quite a bit. The last string compares will be removed soon
2022-05-09 21:21:05 +02:00
Kawe Mazidjatari
611ea6447a Console performance improvements and bug fixes
* Heavily reduced string compares for coloring logs (the left overs require a dedicated hook, this is for the future)
The new method uses a ImVec 4 constant containing the color obtained via a switch case by context, this is then out into the new CConLog structure where the loop in the console will now gather the colors directly from.
Error/Warning use a single constant.

* Fixed bugs in several log locations where the ostringstream was cleared before the emission causing double logs.

* Added global log mutex to log wrappers that lacked those.
2022-05-09 02:20:07 +02:00
Kawe Mazidjatari
636c9b595e Update IBrowser.cpp 2022-05-08 16:28:20 +02:00
Kawe Mazidjatari
5898ba14e0 Cleanup server browser 2022-05-08 16:20:48 +02:00
PixieCore
66d122e192 Start of CEngineClient implementation.
* Rebuild SetRestrictedServerCommand and SetRestrictedClientCommands
* Implemented new CMemory Function to walk through a VTable.
* pDetours->GetCon() gets called first now.
*
2022-05-06 00:34:46 +02:00
Kawe Mazidjatari
93f634022a Get all available maps from VPK instead
Before we used the stbsp's, but we don't need to copy these for each maps (we could load existing ones to get working texture streaming for maps that don't have this)
2022-05-04 17:36:23 +02:00
Kawe Mazidjatari
ad08685e9b Remove hardcoded map names
We are not hardcoding them
2022-05-04 12:55:00 +02:00
Kawe Mazidjatari
6ff10228ee Fix incorrect color code
Added FCVAR_DEVELOPMENTONLY | FCVAR_HIDDEN and fixed FCVAR_DEVELOPMENTONLY | FCVAR_CLIENTDLL
2022-04-26 20:35:51 +02:00
Kawe Mazidjatari
c0511fa8e4 See description
* Add ConVar to allow user to set/unset FCVAR_DEVELOPMENTONLY ConVar's (default behavior would never be hit without this ConVar).
* Add icons to display the flags of a certain CommandBase.
* Fixed Dear ImGui not displaying images correctly (descriptor needs DXGI_FORMAT_R8G8B8A8_UNORM_SRGB due to the nature of this game).
* Dynamically obtain buffer sizes of resources taken from modules.
* Light SDK cleanup.
2022-04-26 20:24:51 +02:00