Releases: bryanedds/Nu
Release v0.997b - Implemented pluggable subsystems.
Now you can create your own subsystems for Nu such as AI, optimized special FX, et al by overriding NuPlugin.MakeSubsystems and providing an appropriate implementation of Nu.Subsystem!
Here are this release's changes in detail -
Moved Overlayer into WorldState. BREAKING CHANGE …
Started mucking about with subsystem generalization. c4b30a5
Moved message queues into subsystems. ab75812
Bit of code-rearrangement. 02cc5fa
Moar code clean-up. c9518d1
Placed existing subsystems into new subsystem container. 0cb1794
Implemented plug-ability of subsystems. 81a982e
Release v0.997 - Changed Nu's serialization format to be more human-editable.
There has a been a long-standing issue with the way Nu serializes its simulants. Basically, there was special treatment needed for fields that belonged to xtensions. Worse, a nearly-full type name had to be included with the tag of each serialized field. Fortunately, this issue has finally been fixed, and now xtension fields are serialized to the same format used by normal, .NET fields!
Unfortunately, this does incur some breakage to your existing data. Namely, that you must change all nugroup file data from this -
<Xtension>
<Parallax type="System.Single">0.1</Parallax>
<TileMapAsset type="Nu.AssetsModule+AssetTag">[Stage | BackgroundA]</TileMapAsset>
</Xtension>
-
to this -
<Parallax>0.1</Parallax> <TileMapAsset>[Stage | BackgroundA]</TileMapAsset>
And remove any lines like this -
<Xtension />
That should be all you need to do!
The only other implication from this is that you can no longer add or remove fields dynamically to entities in the editor. On the bright side, this never proved to be a useful feature in the face of facets, so it's no loss from what I can tell.
Nonetheless, I am obligated to apologize for data breakage like this, as with XML, we have no static type system to shows us our breakage.
Here's the change list in detail -
Revamping serialization to make XML more human-editable. BREAKING CHANGE 651aaa9
Updated data to reflect new format. dccedc7
Made .NET fields read differently. ec752cc
Merge branch 'revamp_serialization' 6210c1b
Revived one Xtension test and killed another. fc0ab34
Release v0.996e - Fixed NuEdit compile error in previous release...
Argh... I gotta quit forgetting to run my smoke tests before releasing...
I also fixed up some issues with Either.
And that's it!
Release v0.996d - Bit of API clean-up.
This release does little more than clean up Nu's API a bit. Fortunately, it's mostly at the edges of the API and is unlikely to affect many users.
Details below -
Cleaned up Observation API by removing 'using', and subscribeXXX2's. BREAKING CHANGE f894c22
Renamed Desync.nextE to next and removed its argument, and renamed next to pass (removing its argument as well). BREAKING CHANGES 40f030c
Added a few missing accessors. 04647a4
Replaced Add/RemovingEventAddress with one for Screen, Group, and Entity. BREAKING CHANGE
Made unit testing slightly more succinct with World.initAndMakeEmpty function. 52b233b
Release v0.996c - Added a ton of documentation comments, renamed 'Observable' to 'Observation'.
Also, while writing said doc comments, I realized how badly 'Oberservable' was named, so I renamed it to 'Observation' along with its module (which was previously called 'Observer'). So, you will have to update all the using expressions that open 'Observer' to now open 'Observation'. Not a big deal.
Here's lies more change notes -
Fixed over-specificity of Observer arrows. BREAKING CHANGE
Added world state -> world state Observer arrows. a6e604d
Made change publishing TRUE by default (disable only those that actually cause perf issues.) BREAKING CHANGE
Implemented change events for Group, Screen, and Game. 825f9a0
A lot more documentation comments. 0fddd43
More documentation comments. 7a8ef61
Added lots of documentation comments. c1dca88
More documentation comments. 1c18662
Renamed 'Observer' and 'Observable' to 'Observation'. BREAKING CHANGE eabe5c8
Release v0.996b - Improved Nu's discrete functional reactive programming model.
Bits of restructuring and refactoring were done to implement more powerful / flexible discrete functional reactive programming (DFRP) in Nu. Now we have the ability to directly propagate an entity's field to the field of another entity, a la Elm (albeit with not quite as nice syntax) -
let world =
world |>
(BobAddress, Entity.getVisible) --> (JimAddress, Entity.setVisible) |>
(JimAddress, Entity.getEnable) --> (BobAddress, not >> Entity.setEnabled)
Here we set up the propagation of Bob's visibility changes to Jim's, and set up the not'd propagation of Jim's enabled state to Bob's.
As said, not the prettiest syntactic form, but does the job in the cases where this type of functionality is needed!
Additionally, there is now an event for changes to the world's state in addition to that of changes of entity's state. Because of that, the camera was moved into the world state so that events apply to its updates as well.
Another change to the world was how all simulants are now stored in a single recursive map, including the game value. If you weren't already, you should now access the game value via the World.getGame function.
Also, there were unrelated, general simplifcations of Nu's API, remarkably the simulant updating and removing functions.
Finally, please note I have not yet provided update events for simulants other than entities, so that will come up very soon. Sorry it didn't make it in time for this release!
Here are the notable changes in detail -
Implement ntoa name-to-address converter. f9ea37c
Playing with DFRP. 79b675f
More work on DfrpExperiment. e6f73b3
More work on DfrpExperiment. 4cb341e
Simplified API for removing simulants from the world. BREAKING CHANGE 55dc34a
Added field getters for simulants. f1b494f
More work on DFRP capabilities. cf36af5
Genericized EntityChangeData to SimulantChangeData. BREAKING CHANGE 7e2a03c
Added genericized simulant Desync functions. ba135b7
Privatized some externally-useless parts of Nu's API. BREAKING CHANGE 6ec600e
Implemented WorldState events. ad02276
Moved Camera field into WorldState. BREAKING CHANGE … 11a0485
Release v0.996 - Repository rescue
Thanks to some git tool whose name I shan't mention, this release is a redux of v0.996.
There were many breaking changes this release, but the history has sadly been lost. If anyone has issues with trying to figure out what to change, please send me an e-mail at bryanedds@gmail.com and we can figure it out together.
As for me, I have learned my lesson about trying to use tools that change the history of a repository; that is, don't do it.