Skip to content

Releases: cs-util-com/cscore

1.10.0

06 Jul 06:58
1ba8774
Compare
Choose a tag to compare

This update contains changes in a few different categories:

Image Alogrithms added:

There are multiple image algorithms now added to cscore by different people, a few simpler ones like resizing, cropping etc all in pure C# but also a few more complex ones around image diffing (to get rid of the Image Magic library dependency long term) and also a ported global alpha matting algorithm to cut our objects from their image background.

  • 4e95e20 Added Methods to Flip Images Horizontally and Vartically
  • Added image algorithms such as GuidedFilter, BoxFilter, Global Alpha Matting
  • d69e935 added dilate and erode to filter class
  • aa0b146 Added simple ImageCompare method, which compares the color of each pixel with a ColorLoad function of an ImageResult class
  • cc5b113 Included the StbImageWriteSharp library (for the lib to work we had to change the solution to allow unsafe classes). Fixed the TestImageCompare method to output the result image in the temporary folder.
  • c6716af Added MeanSquare Error measure for distortion in ImageCompare method. Created CompareResult class for structured return in ImageCompare. Changed the test to work with new CompareResult class. The resulting picture now changes the red value of a picture depending on the distortion. There is a value on how strongly the output red will show the differences (maybe put it as input in the ImageCompare method for flexible use.

Other relevant changes:

Other changes relate to the ESC system, a few new Unity UIs (including generic graphics settings), support for Unity Text Mesh Pro, OpenAI improvements.

  • OpenAI method improvements
  • 7714e91 Issue#109: CSVtoJson conversion test done
  • 0a2db1e feat: Introduced new logic for CsvParser
  • e4cfa00 Added Mat class tests and extended functionability
  • 9780d4a Smaller fixes while running the xunit tests in Unity
  • 059f439 Since there is a lot of weather APIs that are not working rewrote the logic to skip these to instead check if they are still not working and failing once they are back online
  • b3ce067 Bugfix/revert of recent change to not do generic head requests for pinging in webgl since in the browser this will typically fail due to CORS prevention
  • e5d98de Improved the XUnitTestRunner to automatically move the tests in a useful order for regular test execution
  • f30c305 Switch to player prefs based key value store in xunittest runner ui
  • 2a9d28e Added a helper class that collects the local network IPs
  • 5fb1062 Added method to access underlying full IP address object
  • c5d01b0 Unity dialogs now throw explicit errors if their show methods are triggered while not in play mode
  • 74270f4 refactor(OpenAiTest): exampleUsage 6 comments
  • 8e4eba5 chore: Add links to openai documentation for audio class
  • acac05d Extended API to show a model in a view via a presenter
  • 19f0b35 TMP Dropdowns are now also have the common extension methods
  • c075741 Prepared an JSON schema UI generator annotation to combine multiple fields into a single generated dropdown UI element
  • 0cea41c Now copy and paste rect transform values is in the context menu of the transform (when right clicking on it)
  • 445b773 Added more TextMesh Pro based versions of the UI prefabs
  • 59f3203 Some assertions added for view stack logic
  • 362d85b GraphicsSettings UX added that can be used generically in and game
  • 3ac9ea7 Added physics to graphics settings scene
  • c3b857c Some improvements to the power consumption reducer logic to generate good default curves
  • 6a41c7f Separated generic settings ui prefab from variant that is for graphics settings
  • 0466466 Refactorings to make settings ui also reusable for other settings
  • 53a8d4e Smaller improvements to runtime logging console
  • 17aaf22 Added some addition thread sync lock for the zip file based key value store
  • 0c6700f Added logic in Theme class to not constantly do ui element color updates by default during runtime since normally that is not needed
  • f5aba0c https://wttr.in/ seams to be working again
  • 4b9664c Added another short example how to use the Dall E API to generate multiple images in parallel
  • 5e7be9f Changed CreateJsonInstructions() in ChatGptExtensions to allow giving multiple examples for a json response
  • 7866bc9 added helper method to determine if the entity is active in the entire hirarchy or just its own active flag is true
  • 18ae2f9 added parallel matrix multiplication and addition with operator overloading
  • 2610f9e Added a few helper methods for generating valid google maps links from GPS coordinates
  • 9ab6ae3 Changed CreateJsonInstructions() to throw an InvalidOperationException when it's been called without examples. Removed redundant check for empty example array later on in function.
  • 3d17731 Added a Unity specific version of ThrowErrorIfNullOrDestroyed for Unity objects that also provides better context where the error happened
  • 4217351 Improvements to naming of math that converts between global and local ecs poses
  • 989bddf Made loading of entities from disk in the TemplateIO system explicit and side-effect free
  • 01110dc Introduced new versions of the MergeJson diffing methods that use the new JsonDiffPath.DiffV2 methods and deprecated the old ones
  • 6e5ba94 Extended the ECS tests a bit to include example logic how to keep global pose of child when its moved to new parents
  • 49c0281 Added a way for a component in an ECS entity to listen to changes of its entity
  • f13099f Added an entity.TryGetComponents(out var compList) helper methods that returns multiple components of the specified type
  • 70b2d9f Allow ecsEntity.GetComponent to also look for Interfaces etc by not enforcing that the returned type has to implement IComponentData
  • fce1cf1 Added ToStringV2 helper methods for number formats to always return invariant consistent number formatting on any environment
  • bbda9b7 Added new update type to be able to differentiate between template updates and normal ecs updates
  • cecabaa Updated ChatGpt models to latest default ones
  • efbfae4 Added a alternative real floodfill method that does not visit all pixels
  • 8bbcc6b Improved default transparent (background) color value

All changes can be seen here:
v1.9.0...v1.10.0

1.9.0

08 Feb 07:48
8634f4f
Compare
Choose a tag to compare

This update is a rather big one but as always backwards compatible.

Most relevant changes:

  • 47d08f2 Added interface to expose the access to the parent store from each sliced store
  • 438f12d Splitting extension method collection for redux store and adding new methods for SubState class
  • 352edc1 Further simplifications for substate ui logic
  • b56a92a Error improvements if prefab is not found
  • 816af7d More UI extensions for substates
  • fda8f71 Added a substate AddStateChangeListener that allows to register a listener for the entire substate
  • 848e847 Added some helper methods for the virtualized scroll rect
  • 5936fa6 #108 Added a TextMesh PRO based Default Input v2 that is as close as possible to the original one
  • 9e9d901 #108 Now for all InputField extension methods there are also the same ones for the TMP_InputField
  • 15357d8 Now the new DefaultInputV2 has a nice second placeholder that shows while the primary placeholder is not visible
  • 1238f17 Added a default text using TMP similar to the default input
  • 8e42a05 Smaller improvements to screen navigation and ui loading
  • a17a3cf Added a first draft of a generic UnityEcsPresenter that can take an pure c# ecs and generate game objects from it that are the views of the underlying ecs and keep up to date with the model
  • a109b8d Added a few helper methods for Poses of the ecs elements
  • 8c189c2 Interface improvements for the ecs unity presenters
  • 932fb1c Added helper method to set sprite renderer width based on its texture aspect ratio
  • be3bb77 Smaller optional features added to the Billboard component (lerping and only rotating around the y axis)
  • 7439956 Enforcing that AddComponent needs to create a usable view (Unity component) for an input component data
  • e76d272 allowing read access to the mapping to the entity and component views
  • e7221cf Renaming Pose to Pose3d to avoid clash with Unity class with same name
  • 2cc54a6 Disabling memory collection in StopWatch by default since its not accurate and consumes a lot of time
  • 36d99b4 do the callback as the very last thing to avoid strange effects if in the callback another state change triggers the same listener again
  • 5118ee5 Bugfixes for all variants of CalcEntryChangesToOldState, introduced a new CalcEntryChangesToOldState and deprecated the old one
  • c63c35a Bugfixes in state compare logic for dictionaries
  • 8e3730a Switching to new entry change calculation
  • 306708b If there are both world and screen space root canvases prefer the screen space ones for the automatic main root canvas selection
  • e970eb6 Added new default button that uses TMP
  • 1393f35 Added Unity helper methods to allow copying of transform values from one GameObject to another via Ctrl + Shift + C and V
  • cea654d Smaller fixes in UI benchmark example 7
  • 32c675a Simplified main thread implementation since it had random bugs from time to time
  • 66e566e Changed Pose3d to be a class so that Pose3d = default does make sense (now is null, before was not identity pose)
  • 2aada29 Added another move method that is usable on immutable lists
  • cdafe02 Reevaluated that 2 enumerables (eg lists) that have the same sequence with the same objects should be considered unchanged even if their pointers changed to allow using Linq etc in Redux listeners
  • 1b2c8b5 Improving logging output when using Log.MethodDoneWith(..)
  • c57546c Added method to switch an ientity to active/inactive
  • b5a6aab Added a few more helper methods for Matrix4x4
  • 3bd7f2c Added a helper method that converts a global pose to a local pose in the context of a target entity
  • 762a1d4 Extracted an interface from the datastore that can be used more generically if the component using it only always needs to dispatch but never needs to access the actual model/state in the store
  • 221cd6f Added a pure C# implementation of Quaternion.LookRotation
  • f5c2d7a Improved the LookAt Billboard to by default not use the forward approach and instead a look at target approach so that when the user rotates the camera the object does not rotate, looks more natural in most cases
  • 4c2dbf1 Made a more generic version of the DisposerMono to also use it for unsubscribing from the EventBus on destroy of Unity objects
  • a80ff0b The Redux data store now remembers the last dispatched action so that listeners can typically perform the same actions as middlewares
  • 1c72fe7 Added a new version of the key value store that uses google sheets as a datasource that uses the CSV approach
  • dfa91d0 Moved relevant method from feature flag system up to interface
  • 5685145 Bugfix to not store arbitrary args in app flow event jsons
  • 56f13cb Deprecated the old LocalAnalytics and introduced a new one that uses an input directory instead
  • 0a8e3f6 Switched everywhere to the new LocalAnalyticsV2 but kept previous test coverage of old version to ensure also backwards compatibility
  • 9901149 Bugfix if Toast.Show is triggered during edit mode
  • 5009554 Switched to new approach to access the google sheet via the csv url
  • e106acd Improvements to the news manager UX example
  • c5b02ec Added thread lock in new local analytics system to avoid creating a store for the same category twice
  • f1f3191 Added another helper method for UI presenters that uses the main view stack to show the newly loaded UI prefab
  • b4bc80e Bugfix for missing logic when root of chain is reached in ecsEntity.ToLocalPose(globalPose)
  • 474a30d Added another helper method to check if an ecs entity has a component of a certain type
  • 11687fa Added helper methods to calculate mean and median of lists of Vector3s
  • b838b30 Added a DiffV2 method that cleans up the diff if some invalid diff findings are reported (seems to happen for float numbers especially)
  • 84cd1e4 Finished improvements to the json diffing logic to produce less diffs if numbers in the diff are below a certain threshold
  • beea2aa Introduced a UnityEventV2 that allows to ask it if it has any listeners set (including runtime listeners)
  • b011d2b Added https://gist.github.com/yasirkula/06edc780beaa4d8705b3564d60886fa6 - Right click anywhere in Scene view to show a context menu displaying the UI objects under the cursor
  • 0c589fe Added method to ask user for location permission including an explanation why the app needs to use GPS
  • 7980ee1 Added helper function that makes it easier to discover how to convert a world position to a local position
  • 571902b Added [ MAIN THREAD ] to default unity logger to signat which things happen on the Unity rendering thread
  • 8311119 Introduced new version of GetSubStateForUnity on the IDataStore
  • 4f784f3 Added assertions that the poses of loaded prefabs should normally be identity
  • 5e73154 Added a helper function to change the time scaling of an animation curve
  • 5f434ce Saving template io changes now with retry if it fails for any reason
  • 8588860 Improved logging of IgnoreRootCanvas logic
  • 51a6774 Analog to viewStack.SwitchToView there is now also a viewstack.ShowView method that takes in only the prefab name
  • 32620cb Added a UI aspect ratio fitter that will make sure a transform keeps its original relative size to a reference transform (normally its parent)
  • 788810f Added a DestroyGoWhenViewStackDestroyed. Can be used to monitor the viewstack in the children of this gameobject and destroy this gameobject when the viewstack is destroyed. This is useful e.g. for cleanups of a parent GO structure placed in 3d space that should disappear when the viewstack is destroyed.
  • 754e643 Added backwards compatible fix to destroy the entire view stack and not only the last view so that the behavior is the same for the back button listener and for viewstack.SwitchBackToLastView
  • 6041088 Improved logging output from potentially unsuccessful REST requests
  • 054bad8 Removed all usage of AssertV2 (Switched to v3)
  • 51317c5 Cleanups in static ApplicationV2.is.. methods
  • df6cccf Made showing Toasts usable from background threads
  • db4bb2a The Confirm/Cancel dialog now has simpler access to set a custom text for the cancel text
  • b2e3527 Added error wrapper in one of the singleton assertions since it will always fail in Unity when used from a background thread
  • 3d9e098 Helper methods for DateTimeOffset added
  • 4221445 Introduced a new version of the LocalAnalytics system, that uses zip based key value stores instead of real folders to increase performance
  • 58b2787 Improved dragging component to be better usable for world space UIs
  • fa2fdb6 Improvements to adding views to the right view stack
  • 59d013a SliderAnimated: Added a simple replacement for Slider that can be swapped in to animate a UI slider when a new Slider.value is set
  • 2660218 Making elements involved in progression system all DisposableV2
  • c7892df Changed that the injectors GetAll logic automatically filters out disposed objects (but logs an error if it finds any to warn about missing cleanup)
  • adccd3a Changed cleanup logic of progression system and related actors so that the used resources underneeth are properly released
  • 0ca48a4 Introduced restRequest.AddStreamViaForm method
  • 699e20d Added helper method to find out if a GameObject is with any of its parts in the field of view of a camera
  • 48022fe Added easing function animation curve templates from https://github.com/qwe321qwe321qwe321/Unity-EasingAnimationCurve
  • 4def42d If ResourcesV2.LoadV2 is called this method loads a Texture2d and returns it as a Sprite now
  • 2d58faf Made virtualized scroll rect more robust
  • b2b97a0 In the list.AddOrCreate method assert by default now that the entry is not yet contained in the target list (check will only be done in debug mode)
  • b3aeba9 Some ecs refactorings to be able to control when the template variants apply the template changes to themselves and when not
  • f4b769f Added simple object pooling + an example scene in the Demo Scenes that demonstrates its API and performance difference to creating obj...
Read more

1.8.12

12 Nov 09:14
2b33f29
Compare
Choose a tag to compare

Most relevant changes:

  • 7460dfc Merge pull request #1 from cs-util-com/feature/webglAdditions
  • 27e4c80 Add ShareManager DemoSceen and small change to canShare
  • f72619c Merge pull request #97 from HtoTheB/feature/mergeParentImprovements
  • ea9cbb0 Updated webgl package to use latest cscore dependencies
  • cf2811a Made image loading via the background or main thread more comparable, the timings need to exclude the actual download of the image from the internet, since the relevant number is how quick the texture can be constructed from the image binary input
  • e87b7d5 Switched now to the faster Unity texture2d loading in some of the image helper methods and a fix in the image loading demo
  • c909ee9 #104 Added draft for interfacing with environment variables
  • 99f862f Added TryGetComponent helper method
  • 9cf468f Added a .MapValues helper method for dictionaries
  • 08ce3c8 Added a helper method for curve fitting input points to a polynomial y = a + bx + cx^2 + .. and returning the best coefficients
  • 7d54e13 Extended the curve fitting logic with a helper method that will try to find the best number of coefficients automatically and other extension on top of that that will also handle outliers in the input data
  • de90fbe Switching to the median for the total model error (that is reported to the ransac system) so that outliers are much more punished, because the curve fitting is very sensible against outliers in the input data
  • 740f818 #114 Updated Magick NET to latest version
  • e2af775 Some improvements to the assert methods to be aligned with the xunit Assert class interface
  • b1bd934 SubState listeners on the Redux store now only subscribe themselves to the store once this is needed (eg because there is a child subsubstate listener registered on them). This allows to use them as both wrappers for always accessing the latest substate in the store and also as subscriptions to parts of the store
  • 9600bf5 Fixed a bug that the changes to the entities were not always persisted in the template io system so variants of the entities were not correctly updated in all cases. Fixed that by only providing an update method now and not a separate manual save changes method
  • 11ea41c Added a Model Actions concept to be able to better split the pure C# business logic from the Unity related view logic
  • 12fd6c3 Modified Unity assert class to be closer to the xunit one
  • e7979a4 Added concept of flushing to the file based key value store so that the one using zip files can use it to persist open changes to the zip
  • b0a11d9 Added test that checks that operations in parallel do not break the Zip key value store (that now constantly flushes its open changes to disk)
  • 1574622 Added a method to manually call flush open changes for eg the zip file based key value store
  • 89d0b97 Small improvement for logging in unity debug console for log events that arrive before the main thread is ready to pass them into the unity UI
  • eff332f Some improvements and fixes to the GetComponent method of the ecs
  • 843e89c Improved redux store logging
  • 07f927f IEntity now stores its state if it was destroyed/disposed to ensure calls to methods like GetComponent fail afterwards
  • f73a01d Updates to the OpenAI APIs to include the latest model changes etc
  • 343ca3a Renaming some of the more complex Redux store tests to make it easier to discover which examples to find where
  • 611dc30 Completed the cleanups and additional actions, now data slices can also be added and removed dynamically from the store
  • c6af01a Deprecated the Composite store to inform developers to migrate away from it
  • 3402b94 simplified logic to apply middlewares to dispatcher
  • 63f9227 Added a middleware helper method to get slice callbacks
  • 2589785 Introduced additional redux store parent interface to be able to only expose the reducer function
  • be13f87 Added another example how to get json responses out of the ChatGpt API

All changes can be seen here:
v1.8.11...v1.8.12

1.8.11

28 Sep 07:19
e61622d
Compare
Choose a tag to compare

Most relevant changes:

  • be55731 Added a producer consumer code example that uses Threading.Channels
  • ad40665 Added check that enum.ContainsFlag is only called on enums that have all entry int values set correctly as power of 2
  • 99962e1 Made the output of the default logging middleware more readable by splitting the action and new state in separate log entries
  • 01375b9 Changed that the ECS uses a dictionary for the components instead of a list
  • 1ca8340 Switched to using GetSubState instead of using NewSubStateListener (the now deprecated previous version of the same concept)
  • 60820bc Renamed fileEntry.OpenAsZip to fileEntry.OpenOrCreateAsZip (deprecated the old method name)
  • eac8f01 Introduced a parentId field in the ecs entity instead of caching the parents in the ecs class itself so that navigation on the scene graph becomes much easier in both directions
  • 40ae705 There is now a disposableV2.ThrowErrorIfDisposed() method that can be used analog to ThrowErrorIfNull etc
  • 11e3580 #100 avoid spamming consolve with error in case version check cant be performed
  • f3d7f3a Adjusting stryker config to latest stryker version and excluding all integration tests

All changes can be seen here:
v1.8.10...v1.8.11

1.8.10

08 Jun 17:28
1d919db
Compare
Choose a tag to compare

Most relevant changes:

  • Added multiple WebGL related components such as a browser window AlertManager
  • Added OpenAI ChatGpt API support + a short usage example
  • Improved color theme for dialogs so that the confirm button uses the accent color
  • Removed outdated WebGL templates (unity includes those and more options by default now)
  • Improvement for showing toasts always on top of other UIs even if these use a CanvasOrderOnTop component as well and where spawned after the toast container
  • Added a DialogForTextInput that includes also an optional user input validation step
  • Small improvement to not call the validation more often then it has to
  • Added a myUnityVector.WithLength(100) extension method
  • Added interface to mark actions as not to be logged by the default logging middleware
  • Added another user input example scene and created a Joystick prefab and a 3d space dragger to be used in this new example scene
  • Now the 3d drag handler can apply its drag to a target transform to be able to move any kind of objects by providing a drag handle
  • Making the raw drag event data accessible via a property of the Joystick UI
  • Added a transform move stick implementation that allows to use the joystick to move a transform
  • Added a pure C# version of myQuaternion.GetEulerAngles that returns pitch yaw roll and was intensly tested for all possible edge cases
  • Added a quaternion.Rotate(myVector1) extension method
  • FixedSizedQueue now implements IEnumerable so that the typical extension methods can be used on it (including CalcMedian and CalcMean, added an example for this)
  • Added line renderer from https://github.com/cs-util/XRLineRenderer/tree/main
  • Further example material improvements and demo scene cleanup
  • Introduced an IClock interface for the DateTimeV2 logic so that it is cleaner to interact with
  • Made access to InputSystem abstraction public so that it can be cached in the scripts that use it
  • Renamed IsSimilarTo extension method to IsAlmostEqual and added example usage for it
  • Updated the Unity UI ViewGenerator scene to use the latest version of the view canvas
  • Added helper methods to make it easier to generate UIs to edit models
  • Additional helper method to also let the developer discover the autogenerated UIs from the methods of the ViewStack
  • Fixed shader category typo
  • Added a method to transform a set of trajectory points based on an updated end pose, useful eg for AR loop closure
  • Added helper method to remove a registered singleton again
  • Refactorings to reduce garbage collection
  • Added usage example of ChatGPT v4, using the same prompt to compare quality of v3 to v4 when telling jokes (v4 actually produces a few good ones where v3 never really created responses that were believable)
  • Added examples of dynamic json parsing into dictionaries and JObjects
  • Added Wikipedia as another example API
  • Added an example usage of the csv parser
  • Extended the csv logic to also be able to convert the csv data into json
  • Added a second usage example that parses the csv data directly into a target class
  • Added Zip file based KeyValue store plus some performance tests on the different ways how to access zip files
  • Refactorings in package installer helper method
  • Added 2 new valuable additions to the default packages
  • Added outline shader from https://github.com/chrisnolet/QuickOutline
  • Added https://github.com/neosmart/AsyncLock
  • Extended the file access performance tests
  • Added an in memory test as well as a baseline
  • Deprecated helper methods that do use wrong (unnecessary long) folder pathes
  • Added a disposable collection that can be used to group together multiple disposables and dispose them
  • Bugfix that the "Singletons" UnityObject was not always found and thus duplicated
  • Fixes for log console in editor mode after stopping playmode
  • Bugfix for new text input dialog
  • Updated Magick.NET to 13.0.1
  • Zio lib update to include latest security patches
  • Updated SharpZipLib to 1.4.2
  • Added a CompositeDataStore and a few usage examples for this new store
  • Added an ECS serialization system that supports templates/prefabs and variants using JSON diffs
  • Added helper to load audio files in Unity from disk during runtime
  • Making sure the ECS interfaces only expose read only information to allow for immutable entities
  • Added a more complex pose math test to validate that arbitrary nested scene graphs work correctly
  • Added Atom XML class and an example usage (parsing a google alerts RSS feed with it)
  • Updated Unity to version 2023.1.0b19 and with that also to the latest newtonsoft json verion
  • Added new extension method to mutate entries of a ImmutableList
  • Progress fixes based on feedback
  • Added another test that tests offline capabilities of the file ref download logic

All changes can be seen here:
v1.8.8...v1.8.10

1.8.8

01 Mar 07:31
f4c80d9
Compare
Choose a tag to compare

Most relevant changes:

  • Improvements to ActionMenu logic
  • Unity seems to have a bug where GetComponent internally has an exception and because of this does not return null anymore if a component does not exist. Compensating for this now
  • Adding an extra check in the rootCanvas access to avoid a Unity bug that the convas sometimes seems to think its a root canvas even if its a child of a parent canvas in the GameObject tree

All changes can be seen here:
v1.8.7...v1.8.8

1.8.7

22 Feb 05:46
e947d33
Compare
Choose a tag to compare

Most relevant changes:

  • Based on https://learn.microsoft.com/en-us/nuget/create-packages/package-authoring-best-practices#readme added the readme to the published package
  • Added more debug output if destroying of an unity object fails for any reason
  • Added new methods to generate random (but pleasing) colors and created a test scene to evaluate their appearance
  • Improved logging in middleware for actions that are ignored by all reducers
  • Documentation improved
  • Updated versions of default packages, and removed a few that were either not needed or caused problems
  • Disabling access to memory via c# api on Android since it seems to not be supported anymore in newer Unity versions
  • Improved AssertV3.IsNull to include the actual value
  • Added a simple billboard that can be used eg to have UIs always facing the main camera
  • Added new weather apis as api examples and deprecated MetaWeatherCom
  • Set default parallax value of Image aspect ratio fitter to 0 so that the main task becomes applying the aspect ratio to the image
  • Added helper method to track a task in a MonoBehaviour (mainly for error logging)
  • Added graph clustering algorithm Chinese Whispers (see https://en.wikipedia.org/wiki/Chinese_Whispers_(clustering_method) )
  • Updated example text in 3d ui demo scene to include formatting, colors etc in a single standard UI text
  • #89 fix to reduce Spamming message of "namespace missing"
  • Redux store refactorings to make it more readable
  • Changed memory collection in Unity, in recent versions of the Unity editor memory collection causes massive main thread freezing for at least 1 second per usage
  • Added an extension method to allow monitoring a task with a TaskCompletionSource
  • Improved the error logging for the injector logic, now eg the singleton method can look up who else already set up a singleton and can include this in the exception that another singleton cant be created
  • #55 Improve parallel execution of unit tests by adding a cleanup helper that runs its cleanup tasks automatically after the xunit test is done

All changes can be seen here:
v1.8.6...v1.8.7

1.8.6

28 Dec 14:16
85396ca
Compare
Choose a tag to compare

Most relevant changes:

  • Added an IgnoreRootCanvas component to allow having UIs in the scene that are ignored by the UI system
  • Made it easier to find and add the Safe Area Resizer for UI screens (eg mobile screens with notches where not the full display can be used for normal UI screens
  • Added methods to calculate both the Median and the Mean(Average) of an arbitrary collections
  • Added a Delaunay mesh triangulator using the PolygonCollider2D logic that comes with Unity
  • Improved mesh triangulation to ensure that the global pose of the triangulator does not affect the created mesh
  • Added a helper method for reading from zips
  • Refactorings to improve the new approach to read from zip files
  • Added extension method variants to allow dictionary.AddRange(..)
  • Added json diffing extensions
  • Setting stream to start before saving it to disk, and after save resetting curser again in case it will still be used
  • Switched to new image placeholder online service and making sure error instructions for stream resetting failed are clear
  • Introduced a new GoogleSheets loader logic that does not need API keys and instead uses published CSV files ( In Google Sheets go to File => Publish to the web => Publish there as a CSV )
  • Added a setter and getter for the UserAgent that directly forwards to the used httpClient
  • Fully deprecated the old UnityRestFactory now that it was marked as outdated for a while
  • Improved performance of IsNullOrEmtpy check for collections
  • Changed the interface of the gps math method to zeroPoint.CalcRelativeCoordsInMeters(double latitude, double longitude, double[] resultCoordsInMeters) so the zero reference now has to still be a IHasLatLong but the other coordinate can either be a IHasLatLong or directly the lat long doubles from another datastructure (where you might not have control over)
  • Deprecated AssertV2 and introduced an AssertV3 with the same methods except that its optimized to only generate the error messages if the assertion fails
  • Switched over to use new AssertV3 class everywhere in cscore internally
  • versioned missing meta file
  • Always enque into main thread action list if possible to ensure consistent execution order where possible. With that also deprecated the function variant that is not async since it requires direct execution when triggered from the main thread to not get into a possible deadlock where the main thread waits for itself
  • Added an improved version of canvas.IsRootCanvas that compensates for a Unity bug that it will return invalid results during the initialization of a MonoBehavior
  • Added an optional "include start" flag in the SubstringAfter method to provide the same feature as the Substring method
  • Added an improvement to the default logging middleware to not print out the json diff anymore once creating the diff of the entire store state gets too slow
  • Added TaskV2.WhenAnySuccessful() - A method that allows to await the first succesful task execution similar to Task.WhenAny but ensuring that at least one of the tasks was successful, logging the failing tasks by default and throwing an inner exception if all of the tasks fail
  • Added logging for the task.WithTimeout(123); method so that an exception in the original task that was not awaited due to the timeout is not lost and instead logged by default
  • Added a first version of a generic ransac algorithm
  • Fixing compilation problems for some platforms
  • Added an implementation to calculate a weighted median value and added a unit test that demonstrates its usage
  • Turn off power consumption reducer by default when testing in Unity Editor
  • Added a concurrent set that internally uses a concurrent dictionary
  • Fixes for "possible multiple enumerations" in different places
  • Now that the OpenAI image generation api is available switched over to the official one
  • Bugfix in Unity dialog, that caused one of the tests to fail

All changes can be seen here:
v1.8.5...v1.8.6

1.8.5

23 Oct 17:15
928c0a6
Compare
Choose a tag to compare

Most relevant changes:

  • Introduced new Task AsThrottledDebounceV2 methods (and deprecated the existing ones) to improve their default behavior
  • Improved the debouncing logic of the GoogleSheetsKeyValueStore
  • Made GoogleSheetsKeyValueStore.latestRawSheetData private so that the sheet data only can be accessed via the default getters and setters
  • Improved error logging
  • Bugfix for missing cleanup of injectorNames when an injector is removed from the injection logic
  • Added a test that ensures that AddStateChangeListener correctly checks that the substate selector always returns the same output for the same input
  • Bugfix in localAnalytics.IsNotificationMinXDaysOld logic
  • Added methods to make count comparisons on IEnumerables that terminate faster then traditional .Count usage
  • Some vector math for geometric algorithms added to pure C# code (Unity brings these out of the box already)
  • Ported a Kabsch Solver written for Unity to pure C#
  • Added gps math to convert coordinates to a local coordinate space
  • Added myMatrix.Transform extension methods for Vector3s
  • Added some helper method to work with the devices Gyroscope
  • Potential bugfix for LogConsoleUi
  • Improved the inapp logging UI which errors it will show
  • Finetuning the debug output console for mobile screens
  • Added a helper for setting up typed json logic (eg so that it is used in the persistence of a KeyValueStore)
  • Added 2 new helpers to move through the file tree to find specific folders in the parents
  • Refactoring to provide an InstantiatePrefab method in ResourcesV2
  • Some refactoring to move the xml parsing logic to its own class
  • Added a diffing helper logic for ienumerables to generically find out what was added, changed and removed in a collection (eg a List or Dictionary)
  • Using the new CalcEntryChanges logic to provide a store.AddStateChangeListenerForDictionary method now to get automatic feedback what in the dictionary changed
  • Extension method to get screen orientation as an angle
  • Added an extension method to make it easier to get a diff between two rotation quaternions

All changes can be seen here:
v1.8.4...v1.8.5

1.8.4

18 Aug 07:16
aa84561
Compare
Choose a tag to compare

Most relevant changes:

  • Smaller fixes for Snackbars to allow using them as tutorial instructions
  • Bugfix for ToggleGroupListener to delay its toggle state evaluation entirely to the debounced part of its logic
  • Added a short tutorial to test that Snackbars are usable for such instructions and to validate the ui event logic works
  • Extended the example tutorial a bit further to test all different UI low level events that now can be awaited
  • Added an example how to allow the user to close the tutorial snackbar UIs before completing the task
  • Switched from net core app 3 to net 6 for the runtime of the xUnit tests (and updated testing libraries to their latest versions)
  • Ensuring that only C# 8.0 features are used in the xunit tests so that this code still can be included in a Unity project (which uses .NET Standard 2.1), see https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version#defaults
  • Introduced IRestFactory interface that is used in the injection logic now
  • Deprecated old UnityRestFactory and created a new one that does everything the same as the default RestFactory except the ping logic which seems to not work correctly for IPs in the latest Unity version
  • Fixed compilation of library code for webgl target
  • Fixed webgl compilation settings to enable exceptions in the mode "full without stacktrace"
  • Fixed usage of Task Delay which is mainly relevant for webgl compilation
  • Added fallback for webgl to use Unity web request logic and default .net one for all other platforms
  • Refactored the interface IsDisposable to extend IDisposable and be renamed to make it clear it extends default features of IDisposable plus holds the state if the object is disposed
  • Added a new observable key value store that can wrap a key value store chain to listen to events to this target key value store. This also deprecates MutationObserverKeyValueStore which was a previous implementation of this concept
  • Created a test scene that uses a key value store to demonstrate the new Observable key value store and a debug UI as a next step
  • Added an example UI how to use the new ObservableKeyValueStore to monitor its content
  • Moved debug UI for key value store to the correct folder to be used not only in the demo scenes but in any app
  • Improved the implementation of dispatching async tasks to the Unity MainThread
  • Added more rest request tests and added a patch method and a setter for timeouts
  • Bugfixes in DataTime.ParseUtc logic to return a correct UTC object
  • Added the OpenAI Text to Image endpoint to the API and created a test to show how to use it
  • Added the PromiseMap pattern described at https://news.ycombinator.com/item?id=32189416 : The PromiseMap represents a caching pattern where instead of having a key:value cache instead key:promise-that-resolves-to-value—doing is used, this gives you dog piling prevention for free, because the first lookup of a value triggers the computation to fetch it while subsequent lookups wait on the same promise to resolve—or resolve instantly if the computation has completed
  • Fix for date time string parsing
  • Added assertion to inform developer if a substate listener does not correctly return the same substate for the same input state every time
  • Bugfix for string decryption to read the full string when decrypting (based on https://stackoverflow.com/a/69911546/165106 )

All changes can be seen here:
v1.8.3...v1.8.4