2.1.1 • Published 30 days ago

com.xavierarpa.uniflux v2.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
30 days ago

Logo

UniFlux - Flexible Event Driven and Flux for Unity

Unity MIT License Build status PRs Welcome

Releases UPM

GitHub all releases npm

CodeFactor

In this example, we call CastTest via "StarterFlux.CastTest" key

using UniFlux; // 1
public sealed class StarterFlux : MonoFlux // 2
{
  private void Start() => "StarterFlux.CastTest".Dispatch(); // 3
}
//...
public sealed class TestFlux : MonoFlux 
{
  [MethodFlux("StarterFlux.CastTest")] private void CastTest() =>   Debug.Log("Hello World"); // 4
}

Here we can use a local state and get's a reactive behaviour using "OnChange_Life", also we can call it using "Set_Life" or get the current state with "Get_Life"...

using UniFlux;
float _life;
public float Life
{
    [MethodFlux("Get_Life")] get => _life;
    [MethodFlux("Set_Life")] set 
    {
      _life = value;
      "OnChange_Life".Dispatch(value);
    }
}
//...
  [MethodFlux("OnChange_Life")] private void OnChange_Life(float value)
  {
    // ...
  }

Here are examples of what you can do:

"1".Dispatch(); // - Send a Message
int _2 = "2".Dispatch<int>(); // - Send a Message and return a value
"3".Dispatch<int>(42); // - Send a Message with an argument
int _4 = "4".Dispatch<int,int>(42); // - Send a Message with an argument and return a value

Also we made easily handle IEnumerators, Task and UniTask

"9".IEnumerator();
"10".Task();

// #define UNIFLUX_UNITASK_SUPPORT
// To enable UniTask integration from https://github.com/Cysharp/UniTask"
"123".UniTask();

You can use the KEY type as an TaskAwaiter, calling Task cast implicit !

private static async Task Example()
{
  await "KEY"; // Calls "KEY".Task();
}

Also can create anonimous subscriptions in case you don't want to do a method (not recommended)

"42".Store(()=>{}, true); // Anonimous Subscriptions

Compared methods of UniFlux | Name | Iterations | GC | Time | |-----------|--------------:|------:|-----:| | UniFlux (Dispatch int ) | 10.000 | 0B | 0ms | | UniFlux (Dispatch string ) | 10.000 | 0B | 1ms | | UniFlux (Store int ADD) | 10.000 | 1.2MB | ~3ms | | UniFlux (Store string ADD) | 10.000 | 1.2MB | ~3ms | | UniFlux (Store int REMOVE) | 10.000 | 1.2MB | ~30ms | | UniFlux (Store string REMOVE) | 10.000 | 1.2MB | ~30ms |

look how nice work Dispatching interger and string, Storing by design is planned to do it once so there's no problem in performance.

https://github.com/xavierarpa/UniFlux.git
  • You can install via openupm CLI
openupm add com.xavierarpa.uniflux
  • You can install via npm
npm i com.xavierarpa.uniflux

For support, email arpaxavier@gmail.com

Twitter LinkedIn

2.1.1

30 days ago

2.0.0

1 month ago

1.4.0

3 months ago