34ce2ba534
serv5 ( #6496 )
...
* Add source generator for DataDefinition validation
* Add source generator for reading
* Add source generator for writing
* Include prototypes and other meansdatadefinition types
* Target ISerializationGenerated in data definitions
* Murder
* Use array, struct, enum methods
* Source generate get field definitions
* serv5
* Fix and pray
* Fix release compile
* Tayrtahn review
* a
* Generator bugfix
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com >
2026-07-08 22:18:35 +10:00
83c2a1be11
[Dependency] source generator part 2 ( #6550 )
...
* [Dependency] source generator
No more reflection, no more codegen at runtime
Also various changes to Roslyn helpers to make this easier to write.
Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.
No fallback is available for [field: Dependency] properties, due to a Roslyn bug.
Code Fixes exist. We love Roslyn
* Apply dependencies generator changes to all code
* Release notes
* Preprocessor got hands
* Handle nullable dependencies
These are bad but gotta deal with it.
* Apply suggestions from code review
Co-authored-by: Moony <moony@hellomouse.net >
* Fine, let's not use collection expressions
---------
Co-authored-by: Moony <moony@hellomouse.net >
2026-05-08 12:38:33 +02:00
Leon Friedrich and GitHub
80dbf02af4
Log errors when encountering entity data fields ( #5578 )
...
* Log errors when encountering entity data fields
* Cleanup & comments
* Remove unnecessary GetGenericTypeDefinition
2025-01-07 16:54:25 +01:00
9837c33de7
Add sourcegenned field deltas ( #5155 )
...
* Remove full "delta" states
* Update MapGridComponentState
* abstract ComponentState
* Release notes
* Fix tests
* Fix nullable errors
* A
* Sourcegen component deltas
* Audio deltas + methids
* Also eye
* Optimise out the dictionary
* Minor fixes
* Physics deltas
* Also this
* Fix field deltas
* remove old release notes
* Make IComponentDelta implement IComponent
* add sourcegen launch settings
* make silent error loud
* Review
* UI deltas
* Slimmer
* Sourcegen bandaid
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com >
2024-12-21 15:48:33 +11:00
41c40f1a94
Fix checking wrong property in TryGetVariableType() ( #5120 )
...
Co-authored-by: amylizzle <amylizzle@users.noreply.github.com >
2024-05-14 08:44:19 +10:00
ccbb6ddec7
Add method for getting type of var ( #5070 )
...
Co-authored-by: amylizzle <amylizzle@users.noreply.github.com >
2024-05-06 20:39:32 +02:00
2733435218
Audio rework unrevert + audio packaging ( #4555 )
...
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com >
2023-11-27 22:12:26 +11:00
DrSmugleaf and GitHub
66239d23ea
Refactor serialization copying to use source generators ( #4286 )
2023-08-22 17:37:13 -07:00
Leon Friedrich and GitHub
9a06a5727e
Make DataDefinitions check for private constructors ( #3845 )
2023-03-17 12:49:02 +11:00
DrSmugleaf and GitHub
ae27023283
Fix concurrent update error in SerializationManager._copyByRefRegistrations ( #3796 )
2023-02-21 16:07:16 +01:00
Pieter-Jan Briers and GitHub
84733a335c
Prototype load parallelization ( #3502 )
2022-12-20 22:46:30 +01:00
Pieter-Jan Briers
20c8eca6bf
Use ConcurrentDictionary in SerializationManager.
...
Better GC behavior.
2022-12-19 02:39:28 +01:00
be8147a722
serv4 ( #3527 )
...
Co-authored-by: Paul <ritter.paul1@gmail.com >
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com >
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com >
2022-11-27 19:23:58 +01:00
1646297039
Remove most static IoCManager. accesses from engine. ( #3466 )
...
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com >
2022-11-15 22:00:28 +11:00
Paul Ritter and GitHub
329e2b0cdc
removes beforeserialization hook ( #3422 )
2022-11-03 12:50:40 +11:00
1ed9796700
Add DataRecordAttribute to turn a whole record into a data definition ( #3207 )
...
Co-authored-by: Paul <ritter.paul1@googlemail.com >
2022-09-01 01:13:43 +02:00
14c0c58e87
adds includedatafields to serv3 ( #3101 )
...
* adds includedatafields to serv3
* fixes some stuff and adds tests
* checks for circular include
* fix writing
* this one should fix it frfrf
* ok now this one is gonna be it i swear
* we can save a few operations here
* goofy string
Co-authored-by: Paul <ritter.paul1@gmail.com >
2022-08-29 17:16:04 +02:00
Paul Ritter and GitHub
45cb04f928
makes all serv3 null checks use the proper logic ( #3128 )
2022-08-27 21:37:38 +02:00
6f557ac821
cleans up copy and removes ipopulatedefaultvalues ( #3085 )
...
Co-authored-by: Paul <ritter.paul1@gmail.com >
2022-08-13 23:12:04 +02:00
wrexbe and GitHub
ba70a7c95e
Fix ResourcePath serialize copy ( #3127 )
2022-08-13 22:19:56 +02:00
Leon Friedrich and GitHub
f6f1f76980
Fix nullable yaml validation ( #3106 )
2022-08-10 01:00:47 +02:00
Leon Friedrich and GitHub
bea91d119e
Fix CustomHashSetSerializer bug ( #3087 )
...
* Fix CustomHashSetSerializer bug
* Create a copy of source if target is null
* null !
2022-08-08 18:05:23 +02:00
Paul Ritter and GitHub
3d43fc510e
refactors copy api to use ref ( #3093 )
2022-08-05 08:17:02 +10:00
Leon Friedrich and GitHub
4ec019078d
Add enum and custom hash set serializers ( #2973 )
2022-07-08 07:25:23 +10:00
Paul Ritter and GitHub
a4ad98519e
serv3 now writes proper null values (oops) ( #3026 )
2022-07-06 00:23:13 +10:00
wrexbe and GitHub
f90872b085
Various test changes ( #2930 )
2022-06-20 10:03:17 +10:00
77493b5d14
caches reflection in serv3 datadefinition delegates ( #2790 )
...
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com >
2022-05-14 16:37:18 +10:00
8491f7be24
New Serv3 api just dropped ( #2605 )
...
Co-authored-by: Paul Ritter <ritter.paul1@gmail.com >
2022-04-03 01:59:48 +02:00
de4d255841
Analyzer to enforce classes to be either [Virtual], abstract, or sealed. ( #2469 )
...
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com >
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com >
2022-02-05 19:31:58 +01:00
Javier Guardia Fernández and GitHub
0cbff8dee1
Change serialization reading to only do type checks once per type ( #2018 )
...
* Change serialization reading to only do type checks once per type
* Optimize for sealed types in arrays
* Oops the context
* Fix ISelfSerialize node type and null values
* Add int read test
* Remove nullability from constructor and property of DeserializedValue
* Add clearing readers to serialization shutdown
* Fix struct populate default values
Remove some notnull constraints
* Replace robust gen with normal il generator
2021-09-13 18:14:52 +02:00
Javier Guardia Fernández and GitHub
e804994a5b
Fix serialization manager shutdown ( #2011 )
2021-09-11 00:00:31 +02:00
Javier Guardia Fernández and GitHub
1c816941ec
Change serialization writing with serializers to use expression trees ( #2010 )
...
* Change serialization writing with serializers to use expression trees
* Add test
2021-09-08 13:05:34 +02:00
Javier Guardia Fernández and GitHub
2143c9abc3
Change serialization reading with serializers to use expression trees ( #2009 )
...
* Change serialization reading with serializers to use expression trees
* Add test
* Eliminate lambda capture
2021-09-08 12:07:17 +02:00
Javier Guardia Fernández and GitHub
69921da034
Change serialization copying with serializers to use expression trees ( #2008 )
2021-09-07 08:09:26 +02:00
Pieter-Jan Briers
0fd210481a
Multithread SerializationManager initialize.
2021-09-01 13:38:34 +02:00
baef2bc7f8
some misc serv3 fixes ( #1861 )
...
adds a typeserializer
adds null parser to read
adds another overload for deserializationresult.value
Co-authored-by: Paul <ritter.paul1+git@googlemail.com >
2021-07-11 15:44:12 +02:00
Pieter-Jan Briers
e4449c4901
Cache data definitions statically.
...
Significantly improves integration test times.
2021-06-21 01:31:13 +02:00
metalgearsloth and GitHub
ae36529744
Emit line for mapping node exceptions ( #1764 )
...
Makes it a billion times more useful when I dun screwed up
2021-05-22 11:36:28 +02:00
DrSmugleaf and GitHub
32f0c49484
Fix missing Attribute suffix from some serialization attributes ( #1741 )
...
* Fix missing Attribute suffix from some serialization attributes
* Rename DataDefinition namespace to Definition
2021-05-07 14:23:21 +02:00
DrSmugleaf and GitHub
07867acb9a
Add serialization writing benchmark, optimize writing ( #1739 )
...
* Add serialization write benchmark
* Add baseline test and rename AddNode to Add in mapping extensions
* Optimize serialization writing
* Make reader delegate private
* Unhardcode baseline test
2021-05-04 14:25:13 +02:00
DrSmugleaf and GitHub
3e28b083b9
Cleanup serialization markdown, add extensions for easier mapping node manipulation ( #1738 )
2021-05-04 13:01:07 +02:00
DrSmugleaf and GitHub
5f31036ab2
Cleanup serialization code ( #1735 )
...
* Cleanup serialization code
* Merge fixes
* american codebase
2021-05-02 14:23:39 +02:00
DrSmugleaf and GitHub
f9cd9ac12a
Add serialization copy benchmark, optimize copying and reading with IL generators ( #1729 )
...
* Create serialization copy benchmark
* Optimize copy generic method call
Before
| Method | Mean | Error | StdDev | Median |
|----------------------------------- |-------------:|-----------:|-----------:|-------------:|
| CreateCopyString | 43.54 ns | 0.918 ns | 0.859 ns | 43.74 ns |
| CreateCopyInteger | 19.33 ns | 0.388 ns | 0.860 ns | 19.24 ns |
| CreateCopyDataDefinitionWithString | 3,971.42 ns | 78.974 ns | 213.512 ns | 3,902.54 ns |
| CreateCopySeedDataDefinition | 49,916.69 ns | 264.992 ns | 221.280 ns | 49,950.53 ns |
After
| Method | Mean | Error | StdDev |
|----------------------------------- |-------------:|-----------:|-----------:|
| CreateCopyString | 43.15 ns | 0.917 ns | 1.766 ns |
| CreateCopyInteger | 17.91 ns | 0.366 ns | 0.305 ns |
| CreateCopyDataDefinitionWithString | 544.20 ns | 8.137 ns | 7.611 ns |
| CreateCopySeedDataDefinition | 18,233.34 ns | 357.861 ns | 397.761 ns |
* Change populate delegate to use IL
| Method | Mean | Error | StdDev |
|----------------------------- |------------:|----------:|----------:|
| ReadString | 190.7 ns | 3.48 ns | 5.63 ns |
| ReadInteger | 218.8 ns | 4.29 ns | 6.01 ns |
| ReadDataDefinitionWithString | 677.5 ns | 13.34 ns | 24.06 ns |
| ReadSeedDataDefinition | 11,067.0 ns | 219.19 ns | 260.93 ns |
| Method | Mean | Error | StdDev |
|----------------------------------- |-------------:|-----------:|-----------:|
| CreateCopyString | 42.69 ns | 0.926 ns | 1.414 ns |
| CreateCopyInteger | 18.02 ns | 0.268 ns | 0.237 ns |
| CreateCopyDataDefinitionWithString | 556.80 ns | 11.206 ns | 21.589 ns |
| CreateCopySeedDataDefinition | 13,797.07 ns | 256.011 ns | 367.163 ns |
* Make copying use IL to get values
| Method | Mean | Error | StdDev |
|------------------------------------- |------------:|-----------:|-----------:|
| CreateCopyString | 42.55 ns | 0.889 ns | 1.357 ns |
| CreateCopyInteger | 18.72 ns | 0.394 ns | 0.740 ns |
| CreateCopyDataDefinitionWithString | 398.98 ns | 7.853 ns | 12.682 ns |
| CreateCopySeedDataDefinition | 5,996.60 ns | 118.724 ns | 181.304 ns |
| BaselineCreateCopySeedDataDefinition | 340.85 ns | 6.811 ns | 12.281 ns |
* Rest in peace the fast path
For now
* Fix serialization copying not passing the target ref properly
* Fix field assigners for structs
2021-05-02 12:09:12 +02:00
DrSmugleaf and GitHub
91d58dbca4
Make serialization work with backing fields automatically ( #1727 )
...
* Make serialization work with backing fields automatically
* Fix not taking priorities into account, make the test fail when that is the case
* Turn fieldDefs back into a list
* Format it better
* Remove GetInheritanceBehaviour, expose immutable array of base field definitions
2021-04-27 14:11:06 +02:00
DrSmugleaf and GitHub
1fa979c0f6
Add serialization manager shutdown method and initialize benchmark ( #1728 )
2021-04-25 13:00:31 -07:00
DrSmugleaf and GitHub
2a349eb023
Optimize serialization reading, create benchmarks ( #1679 )
...
* Add Robust.Benchmarks and read string benchmark
* Separate serialization manager methods, use compiled lambdas to call manager read
4 us > 200 ns
* Add int and data definition with string benchmarks
* Make serialization population use expressions to create definitions
* Make benchmark classes internal and create seed data definition
* Add complex data definition read benchmark
* Create primitive serializers, remove primitive special case
| Method | Mean | Error | StdDev |
|----------------------- |------------:|----------:|----------:|
| ReadString | 227.1 ns | 4.47 ns | 5.65 ns |
| ReadInteger | 245.4 ns | 4.82 ns | 6.26 ns |
| ReadDataDefWithString | 804.7 ns | 15.27 ns | 16.34 ns |
| ReadSeedDataDefinition | 15,846.8 ns | 312.89 ns | 773.39 ns |
* Remove testing code
* Setup delegates during initialize
* Revert "Setup delegates during initialize"
This reverts commit 7ff4d4eaaa .
* Store delegates in a concurrent dictionary because I really cannot be arsed to generate them on initialize at this point
2021-04-05 14:50:33 +02:00
DrSmugleaf and GitHub
4864096b2a
Add prototype id list serializer and tests ( #1658 )
...
* Add prototype id list serializer and tests
* Bring old .Value code back
* Paul made me do this
2021-03-26 20:52:22 +01:00
ShadowCommander and GitHub
2fa1e98faf
Fix CopyWithTypeSerializer not copying when null ( #1651 )
2021-03-22 11:02:32 +01:00
Paul Ritter and GitHub
7d2fb85a04
adds custom typeserializers ( #1636 )
...
retires DataFieldWithConstantAttribute & DataFieldWithFlagAttribute in favor of new customtypeserializers
adds prototypeidvalidation, just needs to be added to the corresponding fields
fixes some behaviour in yamllinter
2021-03-15 13:24:29 +01:00
DrSmugleaf and GitHub
37bbdfe7ff
Fix serialization logging not printing messages ( #1628 )
2021-03-13 20:12:41 +01:00