Life and Style Media - UAlive


Dynamic C# Generator. Generate and Compile Native C# script definitions, and modify the contents on the fly. When you are finished, compile to non dependant code.

UAlive


Current Version: 1.0a1
Price: FREE
License: MIT
Type: Extension





MANUAL


SUMMARY
Ever wished you could speed up the flow of creating code? Compiling take way too much time out of your day? Maybe your a visual thinker, but wish you could do what every other programmer can do. This extension intends to solve this.

We are going through a 9 alpha release cycle to implement all features in the C# language. Our objective is turning every bit of C#, into a super fast on the fly dynamic implementation. Eventually you will be able to change every part of your code on the fly. When you are finished, you can compile to native C#. Weither you are developing an Editor Window, a Custom Unit, Jobs, Monobehaviour, and more, you will be able to see the changes whenever you change anything in the graph.



CREATING NEW OBJECTS

In most visual scripting plugins, you would probably create different graph types as different assets. In UAlive, one macro encompasses all ideas. Just like programming, if you have a class without inheritance, and change "class" to "struct", no errors would be thrown. The intention is to make it just as easy as coding, if not faster, and visual. In this case, we create an "Object Macro". You can find it by accessing the assets menu up top, or right clicking in the project tab.







COMPILING

Just like native Bolt, we also have our own toolbar that goes up top. Simply head over to the top menu and goto Window > Bolt > UAlive > Toolbar. Simple as that.





If you click the Live button, it will generate all Object Macros currently in the project, as dynamic live scripts. Unclicking will convert all back to native C#. While the button is or isn't toggled, clicking Generate will regenerate all current macros as live or not live depending on its state.



VARIABLES

In alpha 1, Variables are NOT dynamic. In alpha 2, they will 100% fully live editable and dynamic during both editor and runtime. That is the focus.

Properties are implemented, but not fully. You will be able to create basic variable types. Don't expect to use it to create anything above basic fields at this moment.

In alpha 2, you will have access to dynamically creating all parts of a variable EXCEPT class generics. That will be available not until version 9. Where dynamic type definitions will be available. Since it is a class based construct, it will be introduced during the appropriate release.







METHODS

Methods are the one thing right now that are dynamic. A methods definition is not live, but the contents are. Eventually just like variables, you will be able to define the entire thing live. Including generics and constraints. This will be saved for Alpha 3.








BOLT 2.0 ALPHA 5 UNIT FIX

At least on our end, we have experienced custom units not being available after generation. If you are also getting this behaviour, there is a simple modification to the source. All you need to do is find the source file UnitOptionsExtractor.cs. Goto line 359 and change ludiqRuntimeTypes to runtimeTypes. You will get all units in your fuzzy finder. Including obsolete. This is temporary. Should be fixed in next beta I'd assume.

() => options.UnionWith(
Codebase
.ludiqRuntimeTypes.SelectWhereTask(
"Standalones..."
, IsStandaloneUnitType, InstantiateStandaloneUnitType)),


() => options.UnionWith(
Codebase
.runtimeTypes.SelectWhereTask(
"Standalones..."
, IsStandaloneUnitType, InstantiateStandaloneUnitType)),





WHATS NEXT?

There is still a ton to go! Including Variables, Methods, Attributes, Class, Struct, Enum, and Interface definitions going fully dynamic, as well as other assorted items, like a live text code block. Hope you enjoy it.

If you are interested in helping out, we would love it that! It is a completely open source MIT extension. Head over to GITHUB to get the latest minor updates, and constribute with us! We would love help with generation with all unit types aside from what is complete (Logic). Otherwise, hit us up on Discord and get to talking. We will figure out more together.