unity-atoms/docs/api/unityatoms.md
2020-03-02 20:12:38 +01:00

1890 lines
33 KiB
Markdown

---
id: unityatoms
title: UnityAtoms
hide_title: true
sidebar_label: UnityAtoms
---
# Namespace - `UnityAtoms`
## `Void`
Dummy module class used for representing nothing in for example empty Events, eg: `AtomEvent<Void>`
---
## `AtomEventInstancer<T,E>`
#### Type Parameters
- `T` - The value type.
- `E` - Event of type T.
An Event Instancer is a MonoBehaviour that takes an Event as a base and creates an in memory copy of it OnEnable. This is handy when you want to use Events for prefabs that are instantiated at runtime.
### Variables
#### `_base`
The Event that the in memory copy will be based on when created at runtime.
### Properties
#### `Event`
Getter for retrieving the in memory runtime Event.
---
## `AtomReferenceBase`
None generic base class for `AtomReference<T, C, V, E1, E2, F, VI>`.
### Variables
#### `_usage`
Descries how we use the Reference and where the value comes from.
---
## `AtomReferenceBase.Usage`
Enum for how to use the Reference.
---
## `AtomReference<T,P,C,V,E1,E2,F,VI>0`
#### Type Parameters
- `T` - The type of the variable.
- `P` - IPair of type `T`.
- `C` - Constant of type `T`.
- `V` - Variable of type `T`.
- `E1` - Event of type `T`.
- `E2` - Event of type `IPair<T>`.
- `F` - Function of type `T => T`.
- `VI` - Variable Instancer of type `T`.
A Reference lets you define a variable in your script where you then from the inspector can choose if it's going to be taking the value from a Constant, Variable, Value or a Variable Instancer.
### Variables
#### `_value`
Value used if `Usage` is set to `Value`.
---
#### `_constant`
Constant used if `Usage` is set to `Constant`.
---
#### `_variable`
Variable used if `Usage` is set to `Variable`.
---
#### `_variableInstancer`
Variable Instancer used if `Usage` is set to `VariableInstancer`.
### Properties
#### `Value`
Get or set the value for the Reference.
---
## `AtomEventReference<T,V,E,VI,EI>`
#### Type Parameters
- `T` - The type of the event.
- `V` - Variable of type `T`.
- `E` - Event of type `T`.
- `VI` - Variable Instancer of type `T`.
- `EI` - Event Instancer of type `T`.
An Event Reference lets you define an event in your script where you then from the inspector can choose if it's going to use the Event from an Event, Event Instancer, Variable or a Variable Instancer.
### Variables
#### `_event`
Event used if `Usage` is set to `Event`.
---
#### `_eventInstancer`
EventInstancer used if `Usage` is set to `EventInstancer`.
---
#### `_variable`
Variable used if `Usage` is set to `Variable`.
---
#### `_variableInstancer`
Variable Instancer used if `Usage` is set to `VariableInstancer`.
### Properties
#### `Event`
Get the event for the Event Reference.
### Methods
#### `GetEvent<E>`
Get event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Returns
The event.
---
#### `SetEvent<E>(e)`
Set event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Parameters
- `e` - The new event value.
---
## `AtomEventReferenceBase`
None generic base class for `AtomEventReference<...>`.
### Variables
#### `_usage`
Describes how we use the Event Reference.
---
## `AtomEventReferenceBase.Usage`
Enum for how to use the Event Reference.
---
## `AtomVariableInstancer<V,P,T,E1,E2,F>`
#### Type Parameters
- `V` - Variable of type T.
- `P` - IPair of type `T`.
- `T` - The value type.
- `E1` - Event of type T.
- `E2` - Event x 2 of type T.
- `F` - Function of type T => T
A Variable Instancer is a MonoBehaviour that takes a variable as a base and creates an in memory copy of it OnEnable. This is handy when you want to use atoms for prefabs that are instantiated at runtime. Use together with AtomCollection to react accordingly when a prefab with an assoicated atom is added or deleted to the scene.
### Variables
#### `_base`
The variable that the in memory copy will be based on when created at runtime.
---
#### `_syncToCollection`
If assigned the in memory copy variable will be added to the collection on Start using the gameObject's instance id as key. The value will also be removed from the collection OnDestroy.
---
#### `_syncToList`
If assigned the in memory copy variable will be added to the list on Start. The value will also be removed from the list OnDestroy.
### Properties
#### `Variable`
Getter for retrieving the in memory runtime variable.
---
#### `Value`
Getter for retrieving the value of the in memory runtime variable.
### Methods
#### `GetEvent<E>`
Get event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Returns
The event.
---
#### `SetEvent<E>(e)`
Set event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Parameters
- `e` - The new event value.
---
## `Runtime`
Internal constant and static readonly members for runtime usage.
### Properties
#### `IsUnityAtomsRepo`
Determine if we are working the Unity Atoms source library / repo or not.
---
## `Runtime.Constants`
Runtime constants
### Variables
#### `LOG_PREFIX`
Prefix that should be pre-pended to all Debug.Logs made from UnityAtoms to help immediately inform a user that those logs are made from this library.
---
## `DynamicAtoms`
Static helper class for when creating Atoms a runtime (yes it is indeed possible 🤯).
### Methods
#### `CreateVariable<T,P,V,E1,E2,F>(initialValue,changed,changedWithHistory,preChangeTransformers)`
Create a Variable at runtime.
#### Type Parameters
- `T` - The Variable value type.
- `P` - IPair of type `T`.
- `V` - The Variable type AtomVariable<T, E1, E2>`.
- `E1` - The type of the `changed` Event of type `AtomEvent<T>`.
- `E2` - The type of the `changedWithHistory` Event of type `AtomEvent<T, T>`.
- `F` - The type of the `preChangeTransformers` Functions of type `AtomFunction<T, T>`.
##### Parameters
- `initialValue` - Inital value of the Variable created.
- `changed` - Changed Event of type `E1`.
- `changedWithHistory` - Changed with history Event of type `E2`.
- `preChangeTransformers` - List of pre change transformers of the type `List<F>`.
##### Returns
The Variable created.
---
#### `CreateValueList<T,L,E>(added,removed,cleared)`
Create a Value List at runtime.
#### Type Parameters
- `T` - The list item type.
- `L` - The List type to create of type `AtomList<T, E>`.
- `E` - The Event tyoe used for `removed` and `added` of type `AtomEvent<T>`.
##### Parameters
- `added` - Added Event of type `E`.
- `removed` - Removed Event of type `E`.
- `cleared` - Cleared Event of type `Void`.
##### Returns
The List created.
---
#### `CreateAction<A,T1>(action)`
Create an Action at runtime.
#### Type Parameters
- `A` - The Action created of type `AtomAction<T>`.
- `T1` - The type of the first parameter of the Action.
##### Parameters
- `action` - The action.
##### Returns
The Action created
---
#### `CreateAction<A,T1,T2>(action)`
Create an Action at runtime.
#### Type Parameters
- `A` - The Action created of type `AtomAction<T1, T2>`.
- `T1` - The type of the first parameter of the Action.
- `T2` - The type of the second parameter of the Action.
##### Parameters
- `action` - The action.
##### Returns
The Action created
---
#### `CreateAction<A,T1,T2,T3>(action)`
Create an Action at runtime.
#### Type Parameters
- `A` - The Action created of type `AtomAction<T1, T2, T3>`.
- `T1` - The type of the first parameter of the Action.
- `T2` - The type of the second parameter of the Action.
- `T3` - The type of the third parameter of the Action.
##### Parameters
- `action` - The action.
##### Returns
The Action created
---
#### `CreateAction<A,T1,T2,T3,T4>(action)`
Create an Action at runtime.
#### Type Parameters
- `A` - The Action created of type `AtomAction<T1, T2, T3, T4>`.
- `T1` - The type of the first parameter of the Action.
- `T2` - The type of the second parameter of the Action.
- `T3` - The type of the third parameter of the Action.
- `T4` - The type of the fourth parameter of the Action.
##### Parameters
- `action` - The action.
##### Returns
The Action created
---
#### `CreateAction<A,T1,T2,T3,T4,T5>(action)`
Create an Action at runtime.
#### Type Parameters
- `A` - The Action created of type `AtomAction<T1, T2, T3, T4, T5>`.
- `T1` - The type of the first parameter of the Action.
- `T2` - The type of the second parameter of the Action.
- `T3` - The type of the third parameter of the Action.
- `T4` - The type of the fourth parameter of the Action.
- `T5` - The type of the fifth parameter of the Action.
##### Parameters
- `action` - The action.
##### Returns
The Action created
---
#### `CreateFunction<F,R>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R>`.
- `R` - The return type.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
#### `CreateFunction<F,R,T1>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R, T1>`.
- `R` - The return type.
- `T1` - The type of the first parameter of the Function.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
#### `CreateFunction<F,R,T1,T2>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R, T1, T2>`.
- `R` - The return type.
- `T1` - The type of the first parameter of the Function.
- `T2` - The type of the second parameter of the Function.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
#### `CreateFunction<F,R,T1,T2,T3>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R, T1, T2, T3>`.
- `R` - The return type.
- `T1` - The type of the first parameter of the Function.
- `T2` - The type of the second parameter of the Function.
- `T3` - The type of the third parameter of the Function.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
#### `CreateFunction<F,R,T1,T2,T3,T4>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R, T1, T2, T3, T4>`.
- `R` - The return type.
- `T1` - The type of the first parameter of the Function.
- `T2` - The type of the second parameter of the Function.
- `T3` - The type of the third parameter of the Function.
- `T4` - The type of the fourth parameter of the Function.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
#### `CreateFunction<F,R,T1,T2,T3,T4,T5>(func)`
Create a Function at runtime.
#### Type Parameters
- `F` - The Function created of type `AtomFunction<R, T1, T2, T3, T4, T5>`.
- `R` - The return type.
- `T1` - The type of the first parameter of the Function.
- `T2` - The type of the second parameter of the Function.
- `T3` - The type of the third parameter of the Function.
- `T4` - The type of the fourth parameter of the Function.
- `T5` - The type of the fifth parameter of the Function.
##### Parameters
- `func` - The function.
##### Returns
The Function crated.
---
## `EditorIcon`
Specify a texture name from your assets which you want to be assigned as an icon to the MonoScript.
---
## `ReadOnlyAttribute`
Use to make a field read only in the Unity inspector. Solution taken from here: https://answers.unity.com/questions/489942/how-to-make-a-readonly-property-in-inspector.html
---
## `AtomBaseVariable`
None generic base class for Variables. Inherits from `BaseAtom`.
### Properties
#### `BaseValue`
The Variable value as an `object`.abstract Beware of boxing! 🥊
### Methods
#### `Reset(System.Boolean)`
Abstract method that could be implemented to reset the Variable value.
---
## `AtomBaseVariable<T>`
#### Type Parameters
- `T` - The Variable value type.
Generic base class for Variables. Inherits from `AtomBaseVariable`.
### Properties
#### `BaseValue`
The Variable value as an `object`.abstract Beware of boxing! 🥊
---
#### `Value`
The Variable value as a property.
### Methods
#### `Equals(other)`
Determines equality between Variables.
##### Parameters
- `other` - The other Variable to compare.
##### Returns
`true` if they are equal, otherwise `false`.
---
#### `Reset(System.Boolean)`
Not implemented.abstract Throws Exception
---
## `AtomVariable<T,P,E1,E2,F>`
#### Type Parameters
- `T` - The Variable value type.
- `P` - IPair of type `T`.
- `E1` - Event of type `AtomEvent<T>`.
- `E2` - Event of type `AtomEvent<T, T>`.
- `F` - Function of type `FunctionEvent<T, T>`.
Generic base class for Variables. Inherits from `AtomBaseVariable<T>`.
### Variables
#### `_initialValue`
The inital value of the Variable.
---
#### `Changed`
Changed Event triggered when the Variable value gets changed.
---
#### `ChangedWithHistory`
Changed with history Event triggered when the Variable value gets changed.
### Properties
#### `Value`
The Variable value as a property.
---
#### `InitialValue`
The inital Variable value as a property.
---
#### `OldValue`
The value the Variable had before its value got changed last time.
---
#### `PreChangeTransformers`
When setting the value of a Variable the new value will be piped through all the pre change transformers, which allows you to create custom logic and restriction on for example what values can be set for this Variable.
### Methods
#### `Reset(System.Boolean)`
Reset the Variable to its `_initalValue`.
##### Parameters
- `shouldTriggerEvents` - Set to `true` if Events should be triggered on reset, otherwise `false`.
---
#### `SetValue(newValue)`
Set the Variable value.
##### Parameters
- `newValue` - The new value to set.
##### Returns
`true` if the value got changed, otherwise `false`.
---
#### `SetValue(variable)`
Set the Variable value.
##### Parameters
- `variable` - The value to set provided from another Variable.
##### Returns
`true` if the value got changed, otherwise `false`.
---
#### `ObserveChange`
Turn the Variable's change Event into an `IObservable<T>`. Makes the Variable's change Event compatible with for example UniRx.
##### Returns
The Variable's change Event as an `IObservable<T>`.
---
#### `ObserveChangeWithHistory`
Turn the Variable's change with history Event into an `IObservable<T, T>`. Makes the Variable's change with history Event compatible with for example UniRx.
##### Returns
The Variable's change Event as an `IObservable<T, T>`.
---
#### `GetEvent<E>`
Get event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Returns
The event.
---
#### `SetEvent<E>(e)`
Set event by type. Don't use directly! Used only so that we don't need two implementations of Event Instancer and Listeners (one for `T` and one for `IPair<T>`)
#### Type Parameters
- `E` - undefined
##### Parameters
- `e` - The new event value.
---
## `AtomAction`
Base abstract class for Actions. Inherits from `BaseAtom`.
### Variables
#### `ActionNoValue`
The actual Action.
### Methods
#### `Do`
Perform the Action.
---
## `AtomAction<T1>`
#### Type Parameters
- `T1` - The type for this Action.
Generic abstract base class for Actions. Inherits from `AtomAction`.
### Variables
#### `Action`
The actual Action.
### Methods
#### `Do(t1)`
Perform the Action.
##### Parameters
- `t1` - The first parameter.
---
## `AtomAction<T1,T2>`
#### Type Parameters
- `T1` - The first type for this Action.
- `T2` - The second type for this Action.
Generic abstract base class for Actions. Inherits from `AtomAction`.
### Variables
#### `Action`
The actual Action.
### Methods
#### `Do(t1,t2)`
Perform the Action.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
---
## `AtomAction<T1,T2,T3>`
#### Type Parameters
- `T1` - The first type for this Action.
- `T2` - The second type for this Action.
- `T3` - The third type for this Action.
Generic abstract base class for Actions. Inherits from `AtomAction`.
### Variables
#### `Action`
The actual Action.
### Methods
#### `Do(t1,t2,t3)`
Perform the Action.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
---
## `AtomAction<T1,T2,T3,T4>`
#### Type Parameters
- `T1` - The first type for this Action.
- `T2` - The second type for this Action.
- `T3` - The third type for this Action.
- `T4` - The fourth type for this Action.
Generic abstract base class for Actions. Inherits from `AtomAction`.
### Variables
#### `Action`
The actual Action.
### Methods
#### `Do(t1,t2,t3,t4)`
Perform the Action.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
- `t4` - The fourth parameter.
---
## `AtomAction<T1,T2,T3,T4,T5>`
#### Type Parameters
- `T1` - The first type for this Action.
- `T2` - The second type for this Action.
- `T3` - The third type for this Action.
- `T4` - The fourth type for this Action.
- `T5` - The fifth type for this Action.
Generic abstract base class for Actions. Inherits from `AtomAction`.
### Variables
#### `Action`
The actual Action.
### Methods
#### `Do(t1,t2,t3,t4,t5)`
Perform the Action.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
- `t4` - The fourth parameter.
- `t5` - The fifth parameter.
---
## `VoidAction`
Action of type `Void`. Inherits from `AtomAction<Void>`.
### Methods
#### `Do(UnityAtoms.Void)`
Do the Action.
##### Parameters
- `_` - Dummy Void parameter.
---
## `AtomFunction<R>`
#### Type Parameters
- `R` - The type to return from the Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call`
Call the Function.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<R>`.
##### Parameters
- `func` - The `Func<R>` to set.
##### Returns
An `AtomFunction<R>`.
---
## `AtomFunction<R,T1>`
#### Type Parameters
- `R` - The type to return from the Function.
- `T1` - The parameter type for this Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call(t1)`
Call the Function.
##### Parameters
- `t1` - The first parameter.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<T1, R>`.
##### Parameters
- `func` - The `Func<T1, R>` to set.
##### Returns
An `AtomFunction<R, T1>`.
---
## `AtomFunction<R,T1,T2>`
#### Type Parameters
- `R` - The type to return from the Function.
- `T1` - The first parameter type for this Function.
- `T2` - The second parameter type for this Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call(t1,t2)`
Call the Function.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<T1, T2, R>`.
##### Parameters
- `func` - The `Func<T1, T2, R>` to set.
##### Returns
An `AtomFunction<R, T1, T2>`.
---
## `AtomFunction<R,T1,T2,T3>`
#### Type Parameters
- `R` - The type to return from the Function.
- `T1` - The first parameter type for this Function.
- `T2` - The second parameter type for this Function.
- `T3` - The third parameter type for this Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call(t1,t2,t3)`
Call the Function.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<T1, T2, T3, R>`.
##### Parameters
- `func` - The `Func<T1, T2, T3, R>` to set.
##### Returns
An `AtomFunction<R, T1, T2, T3>`.
---
## `AtomFunction<R,T1,T2,T3,T4>`
#### Type Parameters
- `R` - The type to return from the Function.
- `T1` - The first parameter type for this Function.
- `T2` - The second parameter type for this Function.
- `T3` - The third parameter type for this Function.
- `T4` - The fourth parameter type for this Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call(t1,t2,t3,t4)`
Call the Function.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
- `t4` - The fourth parameter.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<T1, T2, T3, T4 R>`.
##### Parameters
- `func` - The `Func<T1, T2, T3, T4, R>` to set.
##### Returns
An `AtomFunction<R, T1, T2, T3, T4>`.
---
## `AtomFunction<R,T1,T2,T3,T4,T5>`
#### Type Parameters
- `R` - The type to return from the Function.
- `T1` - The first parameter type for this Function.
- `T2` - The second parameter type for this Function.
- `T3` - The third parameter type for this Function.
- `T4` - The fourth parameter type for this Function.
- `T5` - The fifth parameter type for this Function.
Generic abstract base class for Functions. Inherits from `BaseAtom`.
### Variables
#### `Func`
The actual function.
### Methods
#### `Call(t1,t2,t3,t4,t5)`
Call the Function.
##### Parameters
- `t1` - The first parameter.
- `t2` - The second parameter.
- `t3` - The third parameter.
- `t4` - The fourth parameter.
- `t5` - The fifth parameter.
##### Returns
Whatever the function decides to return of type `R`.
---
#### `SetFunc(func)`
Set the Function providing a `Func<T1, T2, T3, T4, T5 R>`.
##### Parameters
- `func` - The `Func<T1, T2, T3, T4, T5, R>` to set.
##### Returns
An `AtomFunction<R, T1, T2, T3, T4, T5>`.
---
## `AtomEventBase`
None generic base class for Events. Inherits from `BaseAtom` and `ISerializationCallbackReceiver`.
### Methods
#### `Register(System.Action)`
Register handler to be called when the Event triggers.
##### Parameters
- `del` - The handler.
---
#### `Unregister(System.Action)`
Unregister handler that was registered using the `Register` method.
##### Parameters
- `del` - The handler.
---
#### `RegisterListener(UnityAtoms.IAtomListener)`
Register a Listener that in turn trigger all its associated handlers when the Event triggers.
##### Parameters
- `listener` - The Listener to register.
---
#### `UnregisterListener(UnityAtoms.IAtomListener)`
Unregister a listener that was registered using the `RegisterListener` method.
##### Parameters
- `listener` - The Listener to unregister.
---
## `AtomEvent<T>`
#### Type Parameters
- `T` - The type for this Event.
Generic base class for Events. Inherits from `AtomEventBase`.
### Variables
#### `_replayBufferSize`
The event replays the specified number of old values to new subscribers. Works like a ReplaySubject in Rx.
---
#### `_inspectorRaiseValue`
Used when raising values from the inspector for debugging purposes.
### Methods
#### `Raise(item)`
Raise the Event.
##### Parameters
- `item` - The value associated with the Event.
---
#### `Register(action)`
Register handler to be called when the Event triggers.
##### Parameters
- `action` - The handler.
---
#### `Unregister(action)`
Unregister handler that was registered using the `Register` method.
##### Parameters
- `action` - The handler.
---
#### `RegisterListener(listener)`
Register a Listener that in turn trigger all its associated handlers when the Event triggers.
##### Parameters
- `listener` - The Listener to register.
---
#### `UnregisterListener(listener)`
Unregister a listener that was registered using the `RegisterListener` method.
##### Parameters
- `listener` - The Listener to unregister.
---
#### `Observe`
Turn the Event into an `IObservable<T>`. Makes Events compatible with for example UniRx.
##### Returns
The Event as an `IObservable<T>`.
---
## `AtomBaseVariableEvent`
Event of type `AtomBaseVariable`. Inherits from `AtomEvent<AtomBaseVariable>`.
---
## `VoidEvent`
Event of type `Void`. Inherits from `AtomEvent<Void>`.
---
## `AtomEventReferenceListener<T,A,V,E,VI,EI,ER,UER>`
#### Type Parameters
- `T` - The type that we are listening for.
- `A` - Acion of type `T`.
- `V` - Variable of type `T`.
- `E` - Event of type `T`.
- `VI` - Variable Instancer of type `T`.
- `EI` - Event Instancer of type `T`.
- `ER` - Event Reference of type `T`.
- `UER` - UnityEvent of type `T`.
Generic base class for Listeners using Event Reference. Inherits from `AtomListener<T, A, E, UER>` and implements `IAtomListener<T>`.
### Variables
#### `_eventReference`
The Event Reference that we are listening to.
### Properties
#### `Event`
The Event we are listening for as a property.
---
## `AtomBaseListener`
None generic base class for all Listeners.
### Variables
#### `_developerDescription`
A description of the Listener made for documentation purposes.
---
## `AtomBaseListener<T,A,E,UER>`
#### Type Parameters
- `T` - The type that we are listening for.
- `A` - Acion of type `T`.
- `E` - Event of type `T`.
- `UER` - UnityEvent of type `T`.
Generic base class for Listeners. Inherits from `AtomBaseListener` and implements `IAtomListener<T>`.
### Variables
#### `_unityEventResponse`
The Unity Event responses. NOTE: This variable is public due to this bug: https://issuetracker.unity3d.com/issues/events-generated-by-the-player-input-component-do-not-have-callbackcontext-set-as-their-parameter-type. Will be changed back to private when fixed (this could happen in a none major update).
---
#### `_actionResponses`
The Action responses;
### Properties
#### `Event`
The Event we are listening for as a property.
### Methods
#### `OnEventRaised(item)`
Handler for when the Event gets raised.
##### Parameters
- `item` - The Event type.
---
#### `DebugLog(`0)`
Helper to regiser as listener callback
---
## `AtomEventListener<T,A,E,UER>`
#### Type Parameters
- `T` - The type that we are listening for.
- `A` - Acion of type `T`.
- `E` - Event of type `T`.
- `UER` - UnityEvent of type `T`.
Generic base class for Listeners using Event. Inherits from `AtomListener<T, A, E, UER>` and implements `IAtomListener<T>`.
### Variables
#### `_event`
The Event that we are listening to.
### Properties
#### `Event`
The Event we are listening for as a property.
---
## `BaseAtom`
None generic base class for all Atoms.
### Variables
#### `_developerDescription`
A description of the Atom made for documentation purposes.
---
## `AtomValueList<T,E>`
#### Type Parameters
- `T` - The list item type.
- `E` - Event of type `AtomEvent<T>`.
Generic base class for Value Lists. Inherits from `BaseAtomList` and `IList<T>`.
### Variables
#### `Added`
Event for when something is added to the list.
---
#### `Removed`
Event for when something is removed from the list.
---
#### `list`
Actual `List<T>`.
### Properties
#### `Count`
Get the count of the list.
---
#### `IsReadOnly`
Is the list read only?
---
#### `List`
The actual `List<T>` as a property.
---
#### `Item(System.Int32)`
Indexer of the list.
### Methods
#### `Add(item)`
Add an item to the list.
##### Parameters
- `item` - The item to add.
---
#### `Remove(item)`
Remove an item from the list.
##### Parameters
- `item` - The item to remove.
##### Returns
True if it was removed, otherwise false..
---
#### `Contains(item)`
Does the list contain the item provided?
##### Parameters
- `item` - The item to check if it is contained in the list.
##### Returns
`true` if the item exists in the list, otherwise `false`.
---
#### `Get(System.Int32)`
Get item at index.
##### Parameters
- `i` - The index.
##### Returns
The item if it exists.
---
#### `CopyTo(array,arrayIndex)`
Copies the entire List to a compatible one-dimensional array, starting at the specified index of the target array.
##### Parameters
- `array` - The one-dimensional Array that is the destination of the elements copied from List. The Array must have zero-based indexing.
- `arrayIndex` - The zero-based index in `array` at which copying begins.
---
#### `GetEnumerator`
Get an `IEnumerator<T>` of the list.
##### Returns
An `IEnumerator<T>`
---
#### `IndexOf(item)`
Returns the index of the specified item.
##### Parameters
- `item` - The item to search for.
##### Returns
The zero-based index of the first occurrence of `item`. If not found it returns -1.
---
#### `RemoveAt(System.Int32)`
Remove an item at provided index.
##### Parameters
- `index` - The index to remove item at.
---
#### `Insert(index,item)`
Insert item at index.
##### Parameters
- `index` - Index to insert item at.
- `item` - Item to insert.
---
#### `ObserveAdd`
Make the add event into an `IObservable<T>`. Makes Value List's add Event compatible with for example UniRx.
##### Returns
The add Event as an `IObservable<T>`.
---
#### `ObserveRemove`
Make the remove event into an `IObservable<T>`. Makes Value List's remove Event compatible with for example UniRx.
##### Returns
The remove Event as an `IObservable<T>`.
---
#### `ObserveClear`
Make the clear event into an `IObservable<Void>`. Makes Value List's clear Event compatible with for example UniRx.
##### Returns
The clear Event as an `IObservable<Void>`.
---
## `BaseAtomValueList`
None generic base class of Lists. Inherits from `BaseAtom`.
### Variables
#### `Cleared`
Event for when the list is cleared.
### Methods
#### `Clear`
Clear the list.
---
## `IMGUIUtils`
Utility methods for IMGUI.
### Methods
#### `SnipRectH(UnityEngine.Rect,System.Single)`
Snip a `Rect` horizontally.
##### Parameters
- `rect` - The rect.
- `range` - The range.
##### Returns
A new `Rect` snipped horizontally.
---
#### `SnipRectH(UnityEngine.Rect,System.Single,UnityEngine.Rect@,System.Single)`
Snip a `Rect` horizontally.
##### Parameters
- `rect` - The rect.
- `range` - The range.
- `rest` - Rest rect.
- `gutter` - Gutter
##### Returns
A new `Rect` snipped horizontally.
---
#### `SnipRectV(UnityEngine.Rect,System.Single)`
Snip a `Rect` vertically.
##### Parameters
- `rect` - The rect.
- `range` - The range.
##### Returns
A new `Rect` snipped vertically.
---
#### `SnipRectV(UnityEngine.Rect,System.Single,UnityEngine.Rect@,System.Single)`
Snip a `Rect` vertically.
##### Parameters
- `rect` - The rect.
- `range` - The range.
- `rest` - Rest rect.
- `gutter` - Gutter
##### Returns
A new `Rect` snipped vertically.
---
## `StringExtensions`
Internal extension class for strings.
### Methods
#### `ToInt(System.String,System.Int32)`
Tries to parse a string to an int.
##### Parameters
- `str` - The string to parse.
- `def` - The default value if not able to parse the provided string.
##### Returns
Returns the string parsed to an int. If not able to parse the string, it returns the default value provided to the method.
---
#### `Repeat(System.String,System.Int32)`
Repeats the string X amount of times.
##### Parameters
- `str` - The string to repeat.
- `times` - The number of times to repeat the provided string.
##### Returns
The string repeated X amount of times.
---
#### `Capitalize(System.String)`
Capitalize the provided string.
##### Parameters
- `str` - The string to capitalize.
##### Returns
A capitalized version of the string provided.
---
## `SetVariableValue<T,P,C,R,E1,E2,F,VI>1`
#### Type Parameters
- `T` - The type of the Variable to set.
- `P` - A IPair of type T.
- `C` - A Constant class of type `T` to set.
- `R` - A Reference of type `T`.
- `E1` - An Event of type `T`.
- `E2` - An Event x 2 of type `T`.
- `F` - A Function x 2 of type `T`.
- `VI` - A Variable Instancer of type `T`.
Base class for all SetVariableValue Actions. Inherits from `VoidAction`.
### Variables
#### `_variable`
The Variable to set.
---
#### `_value`
The value to set.
### Methods
#### `Do`
Perform the action.
---