891 Commits over 1,308 Days - 0.03cph!
Code-first typed leaderboards, support for creation / writing / reading
Check type inits before loading an assembly Facepunch/sbox-issues#2313
Main menu Leaderboard visual tweaks
Fixed submitting to typed leaderboards from the server
Main menu leaderboards support new types / multiple fields
Started on leaderboard definition code gen
Typed leaderboard score encoding
Typed score decoding
Moved setting for which leaderboards are visible in the menu
Added ExpandGroup.SetHeaderWidget
Added "danger" button type in tools
Let FloatProperty widget support more than 2 dp of precision
First pass of leaderboard type editor done
Fixed integer division in Link.cs
Converting long / double to / from string
Added MinValue / MaxValue to Float / IntProperty editors
Make PropertySheet.AddProperty() return a Widget
Leaderboard configs, typed leaderboards
WIP leaderboard type editor
In-game leaderboard UI tweaks with title / player count
https://files.facepunch.com/ziks/1b1011b1/sbox_zdvdjjzfiN.png
New Leaderboards API wraps Steam Leaderboards
Handle clients disconnecting while submitting a score
Added server-side Leaderboard.Submit( client, score ) extension
Added wrapper around Steamworks leaderboards
Allow querying leaderboards from menu code
Add DefaultLeaderboards addon metadata, for which boards to show in menu
Format for substituting in dates to default leaderboard names
Let date formats like yy-MM-dd survive string.ToTitleCase()
Added yy-MM-dd date format tests for string.ToTitleCase()
Use DateTime.UtcNow.Date for date substitution in leaderboard names
Get rid of LeaderboardSort enum, just use a bool IsAscending
Made Leaderboard const fields private
Rename GameIdent to PackageIdent in new leaderboard wrapper
Make LeaderboardEntry.Details internal for now
Added wrapper around Steamworks leaderboards
Allow querying leaderboards from menu code
Add DefaultLeaderboards addon metadata, for which boards to show in menu
Format for substituting in dates to default leaderboard names
Let date formats like yy-MM-dd survive string.ToTitleCase()
Added yy-MM-dd date format tests for string.ToTitleCase()
Use DateTime.UtcNow.Date for date substitution in leaderboard names
Get rid of LeaderboardSort enum, just use a bool IsAscending
Made Leaderboard const fields private
Rename GameIdent to PackageIdent in new leaderboard wrapper
Make LeaderboardEntry.Details internal for now
Let date formats like yy-MM-dd survive string.ToTitleCase()
Format for substituting in dates to default leaderboard names
Add DefaultLeaderboards addon metadata, for which boards to show in menu
Allow querying leaderboards from menu code
Add DefaultLeaderboard addon metadata, selecting board to show in menu
Added wrapper around Steamworks leaderboards
Fixed ambiguous property match in HasSkipHotloadAttribute
Fixed PropertySheet AmbiguousMatchException
Would happen if a subclass redeclared a property with "new"
Added TrustedBinaryStream
* Required by AssemblyRegistation
* Only created by AccessControl
Rename `AssemblyRegistation` to `AssemblyRegistration`
Move TrustedBinaryStream to Sandbox.Access, so it's hidden from users
Added TrustedBinaryStream
* Required by AssemblyRegistation
* Only created by AccessControl
Rename `AssemblyRegistation` to `AssemblyRegistration`
Move TrustedBinaryStream to Sandbox.Access, so it's hidden from users
Rename `AssemblyRegistation` to `AssemblyRegistration`
Added TrustedBinaryStream
* Required by AssemblyRegistation
* Only created by AccessControl
▅▍▌▌ ▉▉▄▍▍▉▇▆▋▍▇ #▊█▋
! ▄▊▋▉▌ ▊█▆▌▌▇ ▉▌▋▆▉▇█ ▇▊▇ ▊▄▌▆▊▄ ▋▆ ▆▉▅▄▌▇▋▋, ▊▅▆▇▇ #▊▅▊
▄▋▄▍ ▋▄▆▍█▅█▄▍▌▉ #▅▋▆
! ▍▄▆▉▅ ▆▄▊██▆ ▇▇▋▊█▍▆ ▄▍▊ ▇▍▊▍▅▍ ▅▍ ▅▅▉▊▄█▍▍, ▉▊▌▌▄ #▉▌▊
Allow loose .txt and .csv files in published addons
Added TypeDescription.GetAttributes<T>()
Fixed -tools not starting if `ServerAddons.TryAdd()` returns null
Added Color[32].FromRgb[a]
Color[32] property consistency cleanup
Added some Color[32] tests
Added Color[32].FromRgb[a]
Color[32] property consistency cleanup
Added some Color[32] tests
Move hotload unsupported warnings to Sandbox.Generator
Added warning for static fields in generic types
Fixed some addon DLLs not getting watched
Introduced by bb5359a20
Added failing hotload static primitive field test
Repros Facepunch/sbox-issues#1918
Fixed hotloading static fields of auto-skipped types
Fixes Facepunch/sbox-issues#1918
Fixed hotloading concurrent containers
EntityManager.OnHotloaded safety
Handle entities being added / removed during the event.
Fixed possible exception in ToTitleCase()
ToTitleCase(string) tests
Use memoization for short strings in ToTitleCase
More ToTitleCase tests
More persistent caching between hotloads
HotloadManager name consistency
Added failing hotload test for static initonly HashSets
Added ConcurrentQueueUpgrader
Fixed in-place hotload of a HashSet<T>
Allow individual types to be added to hotload SkipUpgrader
Skip hotload for types in System.Net.Http and System.Text.RegularExpressions
Fixed some false negatives when checking if a type is blittable
Added ConcurrentDictionaryUpgrader, fixed ConcurrentQueueUpgrader
Only start addon worker threads when first needed
Make sure hotload verbose log works with and without -tools
Cache which static fields need to be watched in hotload
Some extra timing info for hotload
Added InstanceUpgrader.GetUpgraderOrDefault<T>()
DefaultUpgrader field caching, now uses auto-skip
Added InstanceUpgrader.GetUpgraderOrDefault<T>()
DefaultUpgrader field caching, now uses auto-skip
Added failing hotload test for static initonly HashSets
Added ConcurrentQueueUpgrader
Fixed in-place hotload of a HashSet<T>
Allow individual types to be added to hotload SkipUpgrader
Skip hotload for types in System.Net.Http and System.Text.RegularExpressions
Fixed some false negatives when checking if a type is blittable
Added ConcurrentDictionaryUpgrader, fixed ConcurrentQueueUpgrader
Only start addon worker threads when first needed
Make sure hotload verbose log works with and without -tools
Cache which static fields need to be watched in hotload
Some extra timing info for hotload
Fixed verbose hotload log formatting
Fix error in JsonSerializerOptionsUpgrader on hotload
Added HasSkipHotloadAttribute() helper method
ArrayUpgrader now checks AutoSkipUpgrader
Added SkipHotload to Arguments array in LogEvent
Fixed AutoSkipUpgrader check in ArrayUpgrader
Fixed DelegateUpgrader missing some replacements
AutoSkipUpgrader is now optional for ArrayUpgrader
Added failing test involving JsonSerializerOptions
Moved special handling hotload upgraders
Special json hotload handling, fixes #213
Fixed bug hotloading lambdas in generic methods
AsyncTasks tests stability
More helpful worker task yielding error
Merge branch 'master' of sbox
Expirable SyncContext refactor
* Rename MainThreadContext to ExpirableSynchronizationContext
* ExpirableSynchronizationContext supports having multiple live instances on different threads
* Added SyncContext static class to handle resetting on session end
* MainThreadContext.Instance is now SyncContext.MainThread etc
More control over addon tasks running on worker threads
* Added an ExpirableSynchronizationContext for worker tasks
* WorkerThread.Start() spawns a bunch of long running tasks to process addon tasks off the main thread
* WorkerThread.Stop() causes those worker tasks to exit, can be restarted later
* Stop worker threads during hotload
* Fixed case where addon tasks that refuse to cancel could keep running forever on a worker thread
Fixed errors after rebase
Expirable SyncContext refactor
* Rename MainThreadContext to ExpirableSynchronizationContext
* ExpirableSynchronizationContext supports having multiple live instances on different threads
* Added SyncContext static class to handle resetting on session end
* MainThreadContext.Instance is now SyncContext.MainThread etc
More control over addon tasks running on worker threads
* Added an ExpirableSynchronizationContext for worker tasks
* WorkerThread.Start() spawns a bunch of long running tasks to process addon tasks off the main thread
* WorkerThread.Stop() causes those worker tasks to exit, can be restarted later
* Stop worker threads during hotload
* Fixed case where addon tasks that refuse to cancel could keep running forever on a worker thread
Fixed errors after rebase
Expirable SyncContext refactor
* Rename MainThreadContext to ExpirableSynchronizationContext
* ExpirableSynchronizationContext supports having multiple live instances on different threads
* Added SyncContext static class to handle resetting on session end
* MainThreadContext.Instance is now SyncContext.MainThread etc
More control over addon tasks running on worker threads
* Added an ExpirableSynchronizationContext for worker tasks
* WorkerThread.Start() spawns a bunch of long running tasks to process addon tasks off the main thread
* WorkerThread.Stop() causes those worker tasks to exit, can be restarted later
* Stop worker threads during hotload
* Fixed case where addon tasks that refuse to cancel could keep running forever on a worker thread