244 Commits over 153 Days - 0.07cph!
Release all Editor Shortcuts when toggling Play Mode
Update GameObjectNode and AssetList Context Menus to use proper shortcuts for Duplicate
Pull default tags for GameTagsControlWidget from CollisionRules. Only display GameObject-related tags for GameTags, not ITagSet.
Remove old Application.AllowShortcuts
Don't wrap cursor when holding middle/right mouse button in 2D editor view
Don't show editor keybind warning when empty. Resolves Facepunch/sbox-issues#6074
Removed some empty functions now that they have been moved to Keybinds
Added Position slider to Gradient Editor widget. Also added Delete shortcut.
https://files.facepunch.com/CarsonKompon/2024/August/01_14-22-HalfMoth.mp4
Added warning icon to Editor Keybind widget with tooltip telling you if two binds share the same key(s).
https://files.facepunch.com/CarsonKompon/2024/August/01_13-28-InfiniteHarvestmouse.png
Make Asset Browser use Editor binds since they have no reason to be separate.
Make CTRL+A in Asset List a Shortcut
Add CTRL+A shortcut to Select All in scene
Determine major Key Names from NativeKeyCode before anything else. Fixes non-english keyboard layouts (Facepunch/sbox-issues#6044)
Added shortcut for pause (CTRL+F5)
Don't use Shortcut as type "Window" when forcing Shortcut . Fixes F5 not being called when game view is in focus.
Be a bit more explicit with CTRL+C/V/X so other shortcuts work.
Don't send Ctrl+C/V/X shortcuts when in a text field (since you probably only wanna do that in the text field). Resolves Facepunch/sbox-issues#6057
Prevent merging folders into current directory when dragging
Prevent dragging into same folder
Can now move multiple files from File Explorer into Asset Browser in one drag
Can now resize Editor Keybinds window to see the full list
Added support for renaming folders via the Asset Browser.
Clicking and Dragging Folders in the Asset Browser now updates the asset so it is reflecting the new path.
Added "Current Project" to Special group in Asset Browser
https://files.facepunch.com/CarsonKompon/2024/July/31_19-14-MindlessEnglishpointer.png
Added Drag-and-Drop support to Folders in the Asset Browser
https://files.facepunch.com/CarsonKompon/2024/July/31_19-25-SmoggyIndianrockpython.mp4
Add EditorShortcuts.BlockInputs. Block Shortcuts while right/middle clicking on Scene Viewport.
Invoke shortcuts when focused on a line edit if the shortcut has a CTRL or ALT modifier (Fixes CTRL+S in a textedit)
Fix `video` getting called twice from F6 bind
Added Clear button to Editor Keybinds (allowing you to remove binds)
https://files.facepunch.com/CarsonKompon/2024/July/31_18-00-EmbarrassedHoki.png
Draw Camera Speed Overlay in Scene Viewport when changing the speed with mouse wheel
https://files.facepunch.com/CarsonKompon/2024/July/31_16-58-MonstrousIrishredandwhitesetter.mp4
Show how many assets/icons would be rebuilt when right clicking a folder. Don't show option at all if there are no assets in the folder.
https://files.facepunch.com/CarsonKompon/2024/July/31_16-20-StaidMonkfish.png
Do the same thing with right clicking anywhere in the asset browser (for the current folder)
Update PackagePopup to show the information in a much cleaner way
https://files.facepunch.com/CarsonKompon/2024/July/31_13-50-DeliciousSora.png
Don't swallow shortcuts on same widget.
Make all tool shortcuts target the SceneViewportWidget
Fix NRE for non-english layouts
Move scene shortcuts back to static class now that they work properly (ty sol)
Add TargetOverride to ShortcutAttribute so you can target a certain widget type from another class. Useful for tools/extension classes.
Make Grid Shortcuts to type Window. Make mesh editor binds target SceneViewportWidget so the binds only register when focusing the scene viewport AND when in the correct tool.
Added EditorShortcuts.IsDown. Added binds for scene movement (W,A,S,D,Q,E) so they can be rebound in the editor.
Made F3 Shortcut type Window instead of Application.
Fixed W,E,R binds not working for object tool being set automatically
Set ObjectEditorTool alias back to "object". Resolves Facepunch/sbox-issues#6040
Move static Shortcuts that were on static class to the scene viewport (so you need to have it in focus)
Make F5 and F6 editor binds window-exclusive instead of application-wide
Force F1-F12 shortcuts to invoke properly when focused on Game tab.
Make SetTool and SetSubTool public so they are accessible to editor libraries
Remove optional argument from GetMethodsWithAttribute and instead have an overload with the parameter required. This should solve tests failing.
Unify the names of all tool shortcuts
Rebuild Keybind List widget on hotload (when Shortcuts are added/removed). Order Shortcuts alphabetically so list order isn't random
Add Shortcut for Object Tool, and only allow Subtool Shortcuts if proper parent Tool
Created EditorKeybinds.cs with a few starting keybinds
Move Keybinds into EditorPreferences since that makes more sense
Add RegisterShortcuts() function whenever shortcuts are registered and use the EditorPreferences keybind instead of hardcoded string
Added Editor Keybinds page to EditorPreferencesWindow
Subscribe all RegisterShortcut voids to keybinds.update EditorEvent
https://files.facepunch.com/CarsonKompon/2024/July/10_21-46-TautDuck.mp4
Create shortcut for EditorCycleViewMode
Make Keybinds page scrollable, add Reset to Default button, and add Are You Sure popup to Reset button
Use TitleAttribute for keybind names
https://files.facepunch.com/CarsonKompon/2024/July/10_22-23-FakeGourami.png
Add AllowModifiers to KeyBind widget, set to true for Editor Keybinds Page (Allows you to bind CTRL+SHIFT+ALT+Whatever)
Some FileOption binds, but they dont auto-update yet. Will need to find a good way to do that for Option entries
Call keybinds.update EditorEvent on Reset to Default
Created EditorShortcuts.cs to eventually replace EditorPreferences.Keybinds
Need to call this after EditorTypeLibrary is created
Register shortcuts elsewhere and remove some option shortcuts
Change default shortcut type
Register shortcuts on hotload
Convert some older shortcuts into the new [Shortcut] attribute
Change shortcut defaults
Update EditorShortcuts to include Identifier and Keys, including method to get current keys from overrides (player defined overrides)
Display [Shortcut] shortcuts in Editor Keybinds page instead of EditorPreferences.Keybinds
EditorShortcuts rebinding actually works now, much more lightweight than prior version
Make user overrides save properly
Get Name and Group properly, allow attributes to override.
Get keys from shortcut name in Option.cs
Allow non-static method shortcuts since there seems to be a good chunk of those
Stop feeding shortcut to Options for now
Fix size of Editor Keybinds page
Fix using the wrong widget for non-static shortcuts
Move EditorPreferences.Keybinds over to new [Shortcut] attribute system on each function
Completely remove EditorPreferences.Keybinds
Change name/groups for a few shortcuts
Order categories by name in PageKeybinds
Remove some debug logs
Create Texture Editor and Actiongraph shortcuts
Create ShaderGraph, Hotspot Editor and some more scene shortcuts
Add GameObject/Transform shortcuts and fix static method issues.
Made grid size shortcuts Window type instead of Widget type
Make all the different editors share a few binds (So there's not a Copy,Cut,Paste,Undo,Redo,ect. per-editor)
Make classes with [Shortcut] attribute properly rebindable (used for editortools)
Cleanup shortcut groups
Added individual Revert button when bind is different from the default
https://files.facepunch.com/CarsonKompon/2024/July/12_08-54-UnimportantTarantula.mp4
Qt Option now takes shortcut ident (eg. "editor.undo") and internally resolves bind (eg. "CTRL+Z"), updating when changed. No longer registers shortcut internally when set.
Shortcuts with Function Keys are always to editor even when Game Frame is in focus
F3 and F5 editor commands are now Shortcuts like everything else
Fix shortcut not displaying on Align To View option
Fix SaveMixer being static
Change "F5" -> "editor.toggle-play" on Play menu option
Cache the overrides so we don't have to keep checking against EditorCookie
Super minor cleanup
Rename Name -> DisplayName so there's no conflict on KeybindPanel
Fix ShortcutOverrides not loading properly
Use CodeToString(ButtonCode) instead of the weird enum parsing I was doing.
Remove `Editor.Option.ShortcutContext`
Strip native shortcuts from `Editor.Shortcut` class. Make class internal.
Documentation cleanup
Update Shortcut.Invoke so it handles Mode logic
EditorShortcut.Invoke is now a bool returning whether or not a shortcut was invoked from the pressed keys
Shortcuts are now invoked from Sandbox.Tools instead of thru native QT shortcut.
Make `scene.fullscreen` (F4) bind static. Fixes rebuilding issue.
Fix Function Keys not being sent when in-game since it was checking for a console bind instead of keybind
Fix number keys not working
Create keybinds for the different Tools now that Editor.Shortcut is internal
Create keybinds for the different subtools for the same reason
Mark `MenuAttribute.Shortcut` as Obsolete. Get identifier from `[Shortcut]` attribute if one exists.
Update Shortcut value in AssetInspector
Display shortcuts on Tool and Subtool buttons without need for ShortcutAttribute on the class
Mark Editor.Option.Shortcut as [Obsolete], telling users to use Editor.Option.ShortcutName instead
GlobalKeyPressed now passes KeyEvent instead of key int
Added KeyEvent.Name which returns the name of the key pressed based on it's KeyCode and NativeKeyCode
Strip the Shortcut class from EditorShortcuts altogether, reducing bloat and fixing widget focus issues. Pulled ShortcutType enum outside of ShortcutAttribute class.
Added `Widget.IsDescendantOf` and `Widget.IsAscenstorOf`
Check if widget is a descendant of the focused widget when invoking shortcuts
NRE fixes
Don't invoke shortcuts if the focused widget is an input field
Remove hack to call F1-F12 binds in the editor. Make F6 Editor Shortcut to replace F6 bind.
Merge pull request #1624 from Facepunch/editor-keybinds
Editor Keybinds
Add support for number pairs in `aspect-ratio`. Can supply as `16/9`, `4:3` or `2 1`. Resolves Facepunch/sbox-issues#5975
Fix Save All Scenes only saving the current scene
Added Vector2Int * Vector2Int operator since I forgot it
Add Gizmo.Draw.Grid(GridAxis, Vector2) to draw a grid of non-square size
Make LobbyCards look different from PackageCards so it's a bit more obvious that they are lobbies and not the games themselves.
Added OnOrg to PackageCard and PackageList. Added basic Org Page when clicking org on Main Menu. Helps users find games made by the same creator(s).
https://files.facepunch.com/CarsonKompon/2024/July/26_01-31-CuddlyCaracal.mp4
VectorInts are fields instead of properies (like they used to) with [JsonInclude] fields
Don't make VectorInt properties readonly since some games set them already (fixes tests failing)