1,056 Commits over 183 Days - 0.24cph!
Fix Save All Scenes only saving the current scene
Added Click and Drag to move tiles in Tileset Editor
https://files.facepunch.com/CarsonKompon/2024/July/28_16-49-VibrantIvorybilledwoodpecker.mp4
Added Vector2Int * Vector2Int operator since I forgot it
Fix divide by zero error when dragging sprite with single frame in first animation
Support TileSize of non-square size. Draw grid accordingly.
Push the example assets for now since old ones are ancient
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.
Fix divide by zero error when dragging sprite with single frame in first animation
Update SpriteTools
Move Player Nametags code into its own razor panel so it can update with Time.Now without updating everything else
Hopefully fix most of the animation networking issues. Also fix sounds for other players not playing
Remove cooldown on resize so it's snappier
Added Multi-Select to Tiles List and supported MultiEdit in the Selected Tile Inspector.
Adding/Removing tiles no longer rebuilds entire list, only makes necessary changes. Also fixed a few NREs from previous commit
Can remove from selection when CTRL selecting in tile list
Can now MultiSelect from gizmos directly
https://files.facepunch.com/CarsonKompon/2024/July/26_20-12-InsidiousChinchilla.mp4
Can now create new tile even if tiles have yet to be generated. Will use current settings from Setup tab. Updated warning box text in Tiles tab to fit. Update inspector when adding first tile/removing last.
Adding/Removing tiles by clicking on gizmos are part of the undo stack
Tiles have their own Guid now. This does not get serialized and are assigned on load
Don't allow to box to resize into others. Prevent deselecting gizmo when resizing up-left
LabelTextEntry text now updates when property updates (if it was edited elsewhere)
Added "Selected Tile" section to Tileset Editor Inspector
Put Selected Tile section in an Expand Group so we can have ControlSheet groups within that are less confusing
Display [ReadOnly] Index in Selected Tile group
Removed TilesetResource.SheetRect and replaced it with two Vector2Ints (Position and Size).
Fixed can drag logic on Corners
Draw selected widget above others
Add CornerDrag Gizmos to Selected Tile. Change cursor when hovering based on direction. Show as hidden when movement is invalid.
Can click and drag Corners to resize the tile. Bunch of updates to invalid resize checks
https://files.facepunch.com/CarsonKompon/2024/July/26_14-08-PlainArmednylonshrimp.mp4
Move Editor Controls to Controls folder
Clean up some tile control styling
Added SelectedTile to Tileset Editor. Can select from list.
Deleted tiles show as ghost tiles, selected tile is highlighted and is a different colour.
Can click on Tile Gizmo to select it, right click to delete. Deleting selected tile will select first tile it can.
Clicking on ghost tile creates tile at that position. Make necessary fixes to allow swapping out sheets
https://files.facepunch.com/CarsonKompon/2024/July/26_12-06-NextMealworm.mp4
Organized Editor folder and made LabelTextEntry agnostic with OnStopEditing action
Add Name to TileResource.Tile
Fix not used warning
Add EmptyValue to LabelTextEntry
Add PixmapCache for creating cropped pixmaps from textures
Use PixmapCache in SpriteEditor
Created TileListControl and TileControl for TilesetEditor. Shows list of all created tiles. Shows preview icon. Can be renamed/reordered/ect.
https://files.facepunch.com/CarsonKompon/2024/July/26_10-38-TrickyHellbender.mp4
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
Add Regenerate Tiles button with warning beneath explaining what it will do
Only show warning when tiles already exist
Display image in Preview when set/updated.
Show import gizmos when in setup tab. Show WarningBox with a different message when trying to view Tiles tab with no Tiles
Generate Tiles button generates tiles from shown import gizmos. Doesnt display in Tiles tab yet
Start on Tiles tab if Tileset already has Tiles
Onlyu display new import gizmos when no tiles exist or when hovering the Regenerate Button
Added "Delete All Tiles" button when resource has tiles. When undoing/redoing an action the inspector will rebuild appropriately
Added Tile Gizmos. Hovering over a Tile Gizmo will highlight it. Implemented TilesetResource.CurrentTileSize so Setup variable can affect current tiles (with optional regeneration button)
https://files.facepunch.com/CarsonKompon/2024/July/26_00-18-MadeupHoneybee.mp4
MultiPick -> MultiSelect
Add SegmentedControl to Tileset Editor with Setup and Tiles tabs
Tileset Editor undo/redo works properly now and has undo steps for properties changing
Add Inspector to Tileset Editor
Add RenderingWidget/Preview to Tileset Editor
Add base settings to TilesetEditor Inspector. Minor changes to TilesetResource
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)
Added a lot more functionality to Vector2Int and Vector3Int. Much more in line with their floating-point counterparts now, only including what makes the most sense for integer values. Also added documentation/summaries to everything. Resolves Facepunch/sbox-issues#5254
Fix Vector3Int converter error
Fix Vector2.Json serialization only loading x value when supplying string as json object and not number array. Also updated function summaries that said "vector4" instead of "vector2"
Vector2Int and Vector3Int values now serialize to/from JSON properly. Resolves Facepunch/sbox-issues#5821
Created Vector2Int/Vector3Int ControlWidgets. Resolves Facepunch/sbox-issues#5606
Move SpriteRenderingWidget up to SpriteTools namespace
Move SpritesheetImporter from SpriteTools.SpriteEditor namespace to SpriteTools namespace and make import an Action that SpriteEditor hooks into.
Hook up SpritesheetImporter to TilesetEditor window
Updated TileResource structure and prepared for creating Tileset Editor
Move UndoStack from SpriteTools.SpriteEditor to SpriteTools namespace
Removed AllWindows from SpriteEditor. Removed some debug logs from SpriteEditor. StateCookie is based on resource opened
More updates to TilesetResource. TilesetResource is titled "2D Tileset" and Tileset Component is "2D Tileset component".
Added SpriteComponent and TilesetComponent to "2D" category
Basic TilesetEditor (Empty Window for now. Fitted with asset saving/loading, toolbars, undostack, ect.
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
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
Fix Function Keys not being sent when in-game since it was checking for a console bind instead of keybind
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.
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.
Fix e defined but not set
Removed unused variable viewerPosition
Show preview tile under cursor when in Tileset Tool. Fit to Grid nicely
Import some tile assets
Test Tileset Resource
TilesetLayerControl deletes on right click without the additional popup
Rebuild TilesetToolInspector when Selected Layer changes. Serialize Selected Layer as part of the ControlSheet
Fixed TilesetComponent SceneObject vertex maths. Each layer now gets its own material, sharing materials between layers if same atlas is used.
Update Grid Size to follow Tileset size
Fix Selected Layer inspector update
TilesetComponent NRE fixes
Sync attacking animation
Broadcast Explosion animation for Exploder
Fix Fade-In. Do it entirely thru CSS so UI doesnt rebuild every frame while fading.
No longer take ownership of Manager GameObject
No longer take ownership of the GameObjects that shouldn't be owned by anyone
Mark a bunch of client-side prefabs as Never Network
Update Shadow Spawning and make them client-side. Reduces a ton of network load.
Remove .wav files from ResourceFiles
Move SpawnShadow from OnAwake to OnStart to ensure GameManager initializes
Stop looping through every player and doing sqrt calculations for each individual sfx
Don't network Current/Required Experience since it isn't shown to other players
Don't run certain Spitter code on non-host
EnemyBullets should only check collisions on host
Don't update Hud on Time.Now, make fade in client-side
Save game.scene after having it run the JsonUpgraders
Only check for StartupScene in Publish Wizard if Type == "game"
Fix error when startup scene is set but not immediately recognized
Ask for confirmation before deleting animation w/ right click
Added .Copy() functions to Tile and Layer classes
TilesetToolInspector NRE fix
Added Context Menu to TilesetLayerControl
https://files.facepunch.com/CarsonKompon/2024/July/23_07-52-ImperfectAmphibian.mp4
Fix TilesetLayerListControl Height
Create TilesetSceneObject for drawing tiles in a single Graphics.Draw call.
Replace Delete IconButton with Lock Button.
https://files.facepunch.com/CarsonKompon/2024/July/23_08-49-GrowingMastiff.png
Fix NRE when opening PublishPage directly
Added Warning to Publishing Wizard telling you which issues need to be resolved in order to upload. Don't allow upload if startup scene is not set or is set and does not exist.
https://files.facepunch.com/CarsonKompon/2024/July/23_07-24-LovablePaintedladybutterfly.png
Added Dragging to re-order Layers
https://files.facepunch.com/CarsonKompon/2024/July/22_23-09-ThoughtfulNabarlek.mp4
Change Height of Layer Scroll Area
Darken the layer being dragged
Moved existing Code files into a "Sprite" folder
Create Tileset folder and add a basic TilesetResource
Add empty TilesetComponent with stripped Tile class. Will optimize this further later.
Began basic Tileset Tool, Draw grid with gizmo instead
Create TilesetToolInspector, rebuild on hotload
Strip TilesetComponent.Tile class and add TilesetComponent.Layer class
TileMapTools -> TilesetTools. Add ControlSheet to TilesetToolInspector
Create GameObject w Component when necessary
Added SelectedLayer and Active to TilesetTool.
Tileset Tool Header shows Selected Layer
Created Layer List Widget and Layer Widget, displays in both ToolInspector and TileComponent
https://files.facepunch.com/CarsonKompon/2024/July/22_22-51-HugeOtter.mp4
TilesetComponent.Layers is now a property under the Layers group
Add Storage Usage Widget to Publisher Wizard. Useful for finding out what has the largest impact on file size.
https://files.facepunch.com/CarsonKompon/2024/July/22_15-25-WellgroomedKomododragon.mp4
Combed Network Mode, Network Interpolation, and Advanced Network Settings into one condensed menu
https://files.facepunch.com/CarsonKompon/2024/July/22_12-45-ClearcutGlobefish.mp4
Added [Icon] attributes to NetworkOrphaned and OwnerTransfer enums
Move Interpolation Icon to be the same as the other options. Remove unnecessary code and comments.
Give Network Options button ToolTip
Change Network Orphaned -> "Orphaned Mode" and Network Interpolation -> "Interpolation"
Disable extra network settings when Network Mode is not set to Network Object. Radio Options no longer interactive when disabled
Grey out interpolation icon when disabled
Merge pull request #1631 from Facepunch/new-inspector-network-menu
Updated Network Settings Menu in GameObject Inspector
Grey out interpolation icon when disabled
Disable extra network settings when Network Mode is not set to Network Object. Radio Options no longer interactive when disabled
Change Network Orphaned -> "Orphaned Mode" and Network Interpolation -> "Interpolation"
Combed Network Mode, Network Interpolation, and Advanced Network Settings into one condensed menu
https://files.facepunch.com/CarsonKompon/2024/July/22_12-45-ClearcutGlobefish.mp4
Added [Icon] attributes to NetworkOrphaned and OwnerTransfer enums
Move Interpolation Icon to be the same as the other options. Remove unnecessary code and comments.
Give Network Options button ToolTip
Show Prefab Variable button before Nullable button in ControlSheet
Fix gizmo bounds on SpriteComponent when origin was in lower-left quadrant
Add Box Gizmo to Hitbox Component
Fix RoomManager gizmos
Update Sprite Tools
Fix Texture.Load issue in ItemComponent
Updated Sprite Tools
Show Aggro Range gizmo when enemy selected