Namespace IdleKit.Core
Classes
ActionResolver
ActionService
A basic implementation of IActionService that handles IAction and IStateAction. One can extend this class to perform IStateAction that requires asynchronous server-side validations.
ActionService.ListenerPriorityComparer
ActionService.NullObject
AddDataPhase
AddDataProvidersPhase
AddressableAssetCache
AddressableAssetReference<TAsset>
AddressableAssetService
This implementation of IAssetService uses Unity's Addressable Assets as a backend. Assets are managed in the Addressable Asset Settings via the Addressables Editor Windows and this service loads and unloads them from there. Assets loaded with this service are injected the first time they are loaded if possible.
AppInformation
Returns information about the application. Extend this class to customize the provided information.
ApplyLoggingConfigPhase
This ILoadPhase will apply a ILoggingConfig to the Logging module.
It expects that the following methods have already been called: Initialize(IIKLogger, ILoggingConfig, IEnvironmentConfig) It also requires that the IDataService has been initialized.
AssemblyUtility
The methods in this class can be slow and could impact performance if used during runtime. It is recommended to avoid using this class at runtime.
AssetReferenceMissingKeyException
AssetsInvalidReferenceException
AssetsLogging
AssetsMissingComponentException
AssetsMissingKeyException
AssetsNotLoadedException
AssetsNotSupportedException
AssetsNullAssetException
AsyncHelper
This class should be used for code that needs to run over multiple frames.
AsyncHelper.CoroutineRunner
AsyncLogging
AsyncOperationKeyInUseException
BindDataPhase
Binding
An implementation of IBinding
BindingException
An exception that is fired when IBinding conflicts are detected while they are being bound or resolved.
BindingService
An abstract class that has consolidated Bind<TContract>() and Unbind<TContract>() logic specific to IdleKit. When an object with an id is bound or unbound in IdleKit, bindings associated with all the object's parent classes and interfaces (except IInjectable and Object) using the same id would also be created.
CachedProvider
Provides an instance using the IProvider. Unlike the other IProvider, the CachedProvider keeps track of the WasCached so it does not get injected when GetInstance() is called again.
CleanupServicesPhase
ComponentAssetReference<T>
ComponentReference
ComponentReference<T>
Container
An implementation of the IResolver, IBinder, and IContainer
Context
A base implementation of the IContext. Override this class to provide your own Container and Installer.
CoreConstants
CoreExtensions
CoreFilesystemException
CoreInstaller
CoreNotSupportedException
DataLogging
DataService
This implementation of IDataService caches data under all Types possible. Once data has been added you can access it via any base or interface Types that also implement IData. This service does not handle any direct loading or unloading operations for data, however by passing a ISingleDataProvider<TOutputData> or IMultipleDataProvider<TOutputData> you can have the provider load the data asynchronously when this attempts to retrieve it.
DataStoreLogging
DataStoreMissingKeyException
DataStoreMissingValueException
DataStoreNullKeyException
DefaultLogger
EnvironmentAssetReference
EnvironmentConfig
EnvironmentConfigAsset
GuidReferenceableAttribute
Attribute that associates EntityData with its respective EntityDataAsset. For example: between ICurrencyData and its counter part CurrencyDataAsset below. In addition, this also helps to locate the EntityData from another EntityDataAsset.
GuidReferenceAttribute
Attribute that links a type to an identifier. It is used by the GuidReferenceHelper to link data together without using a hard reference. It should be used on string fields that represent the datas id. Ultimately, this id is later used by the IDataService to look up the data.
InitializeAddressablesPhase
InitializeServicesPhase
InjectGameObjectsPhase
Injector
An implementation of IInjector
Installer
A base implementation of the interface IInstaller. Override this class to create your own implementation of the IInstaller.
InstanceProvider
Provides an instance using the _object injected in the constructor.
InvalidDataException
InvalidSequenceableException
InvalidSequenceStateException
InvalidServiceException
ListenerPriority
Predefined constants to set as priority in IActionService.
The higher the priority the earlier the listener will be called when an IAction from the IActionService is dispatched.
LoadAssetReferencesPhase
This ILoadPhase will call LoadAssetReferences<TAsset>(IEnumerable<IAssetReference<TAsset>>, Action<List<TAsset>>) with the provided asset key. Once the assets have been loaded, an optional callback with a list of the loaded assets will be broadcast. This phase is only required if you are using an implementation of IAssetService that requires loading. It can be a nice way to manage preloading assets so they can be synchronously accessed later.
LoadAssetsPhase
This ILoadPhase will call LoadAssets(String, Action<List<Object>>) with the provided asset key. Once the assets have been loaded, an optional callback with a list of the loaded assets will be broadcast. This phase is only required if you are using an implementation of IAssetService that requires loading. It can be a nice way to manage preloading assets so they can be synchronously accessed later.
LoadDataPhase
This ILoadPhase will retrieve data from the IAssetService and add it to the IDataService. It supports IMultipleDataProvider<TOutputData>, ISingleDataProvider<TOutputData> and IData assets.
Loader
LoadingLogging
LoadPhaseBase
It is recommended to avoid using Inject(IResolver) to resolve dependencies in ILoadPhase objects and instead resolve dependencies when the phase is started using the cached IResolver. This can avoid issues where the dependency in question has not been bound to the container when the ILoadPhase is created.
LogCategory
LoggingConfig
LoggingConfigAsset
LoggingConfigAssetReference
LoggingEnvironmentConfig
LoggingEnvironmentConfigAsset
LoggingEnvironmentConfigAssetReference
LoggingMissingReferenceException
LoggingUninitializedException
Logs
The IdleKit logging class. Use this to output log messages and handle exceptions. It is configurable per IEnvironmentConfig by creating ILoggingEnvironmentConfig objects.
MethodProvider
Provides an instance using the _funcProvider method injected in the constructor.
MonoContext
An implementation of the IContext based on MonoBehaviour. This should be attached to a GameObject that has the _installer linked via the Unity inspector.
MonoInstaller
A MonoBehaviour based implementation of the interface IInstaller. Override this class to create your own MonoBehaviour based IInstaller. This should be linked via the Unity inspector for MonoContext.
ParallelLoadPhaseCollection
ParallelSequenceableCollectionBase<TSequenceable>
PlayerPrefsDataStoreService
PlayerPrefsDataStoreService.DataWrapper<TValue>
PrefabAssetReference
PrefabReference
ReadOnlyAttribute
This attribute allows a serialized field to appear in the Unity Inspector while not being editable.
ReflectionUtility
RemoveDataPhase
RemoveDataProvidersPhase
ScriptableObjectAssetReference<TAsset>
ScriptableObjectBaseData<TInterface, TConcrete>
Extend this class to reduce the amount of boilerplate required for a ScriptableObject based IDataProvider. This version is meant to contain a single IData object. See ScriptableObjectBaseDataCollection<TInterface, TConcrete> for a version that uses IMultipleDataProvider<TOutputData>.
ScriptableObjectBaseDataCollection<TInterface, TConcrete>
Extend this class to reduce the amount of boilerplate required for a ScriptableObject based IDataProvider. This version is meant to contain multiple IData objects. See ScriptableObjectBaseData<TInterface, TConcrete> for a version that uses ISingleDataProvider<TOutputData>.
ScriptableObjectReference<T>
SequenceableBase
SequencerBase<TSequenceable>
SequencesLogging
SerializableDictionary<K, V>
A serializable form of a Dictionary.
SerializedType
A class that converts a Type into a serializable object.
ServiceBase
ServiceUtility
StaticDataAddedAction
Sent when new data is added to the IDataService
StaticDataRemovedAction
Sent when static data is removed from IDataService
StripFromStackTraceAttribute
Will remove any method with this attribute from a custom stack trace.
TaskExtensions
TimeUtility
ToggleableFloat
A float that can have various behaviours applied when its value is set.
ToggleableSetting
An object that can optionally apply various behaviour to its value when changed. We have included various implementations of this. For example: ToggleableTransformFloat is a float that can be set to override, add or multiply when the value is changed.
ToggleableSetting<T>
A base class for ToggleableSetting<T> objects.
ToggleableTransformFloat
A float that can have various behaviours applied when its value is set.
ToggleableTransformVector2
A Vector2 that can have various behaviours applied when its value is set.
ToggleableTransformVector3
A Vector3 that can have various behaviours applied when its value is set.
ToggleableVector2
A Vector2 that can have various behaviours applied when its value is set.
ToggleableVector3
A Vector3 that can have various behaviours applied when its value is set.
TransformFloat
A float that can have various behaviours applied when its value is set.
TransformSetting
TransformSetting<T>
Base class for objects that will have behaviour defined by TransformBehaviour.
TransformVector2
A Vector2 that can have various behaviours applied when its value is set.
TransformVector3
A Vector3 that can have various behaviours applied when its value is set.
TransientProvider
Provides an instance using the Type injected in the constructor and Activator to create a new instance every time.
TypeConstraintAttribute
Constrains a property to a range of Types.
TypedResolver<T>
UnityAction
UnityEventListener
An Unity MonoBehaviour implementation of the IUnityEventListener
UnityFixedUpdatedAction
UnityLateUpdatedAction
UnityPausedAction
UnityTerminatedAction
UnityUpdatedAction
UnloadAssetReferencesPhase
This ILoadPhase will call UnloadAssets(String) with the provided asset key. Once the assets have been loaded, an optional callback with a list of the loaded assets will be broadcast. This phase is only required if you are using an implementation of IAssetService that requires loading. It can be a nice way to manage preloading assets so they can be synchronously accessed later.
UnloadAssetsPhase
This ILoadPhase will call UnloadAssets(String) with the provided asset key. This phase is only required if you are using an implementation of IAssetService that requires loading / unloading.
UnsupportedSequenceStateException
VectorUtility
Structs
AsyncHelper.CoroutineData
BindIndex
Provides the index that can be used to lookup the IBinding in Container. This is based on a Type and id Object.
LogEntry
Contains a single log entry and config regarding the entry.
SerializableDateTime
A serializable version of DateTime.
Interfaces
IAction
An IAction in IdleKit contains the following properties:
- an IAction does not alter saved data, use an IStateAction if saved data is going to be altered
- an IAction perform no direct operations
- an IAction can contain optional parameters such as the caller
- an IAction is only dispatched once, and is fire and forget
Any object can fire and receive any IAction as long as they Subscribe<T>(Action<T>, Int32) to it.
Any IActions that affect the player's persistent data directly should instead be an IStateAction. This is to allow for the possibility of sending the calls to a remote server for validation.
IActionResolver
A specialized abstracted version of ITypedResolver<T> that only allows resolving of IAction granting limited accesses to the IContainer.
IActionService
An IService that defines either an implementation for (un)subscribing listeners, and dispatching of IActions.
IAppInformation
A collection of common application details.
IAssetReference<TAsset>
An Asset Reference is meant to be used like a "load on demand" container for an asset. It should allow for easy asset assignment and loading / unloading. The referenced asset should not be loaded into memory until the load methods are used.
IAssetService
This service is used to load and unload assets. These assets can be anything from basic objects to prefabs and ScriptableObject data. Assets are stored under a provided key. This key can be passed through the various methods to help identify what assets to work with.
IAuthenticator
This authenticator is used to sign a collection of data with a secret key and return that data in string form. Web requests will be the main user of authenticators.
IBinder
Allows the creation and deletion of IBinding which is a mapping contract that contains optional information between a Type and a provider IProvider of a dependency denoted by the Type.
IBinding
IBinding allows mapping of a contract type ContractType to an
IProvider that provides the dependency for the type. It contains extra information that enables
the IResolver to locate the correct IBinding and IProvider.
IBinding also contains convenient methods that allow us to chain method calls.
container.Bind<IEventService>().To<EventService>().AsSingle().Conclude();
ICompletable
An interface used to indicate completion of such operation.
IContainer
The combination of IResolver and IBinder and this should only be used in an IContext. Most of the time classes that require the dependency should only be using an IResolver to resolve the dependency. This is following the principle of Interface Segregation.
IContext
The IContext class hosts the dependency IContainer and the blueprints of most of the dependencies to its contract types. It uses the IInstaller during Bind() and Unbind() to setup and teardown the dependency graph in the IContainer.
IData
The most basic requirements of serialized data in IdleKit which are later loaded by the IDataService.
IDataProvider
Wraps one or more data objects and allows access to them. Useful for separating data from ScriptableObjects for unit tests. This is meant to act as a base interface for more derived interfaces that work with data in various ways.
IDataService
This service caches IData objects and provides access to them. Data can be added to or removed from it as simple IData objects or as IDataProvider objects. A Type is passed as an argument or generic parameter to allow for implementations to manage their cache with it.
IDataStoreService
This service is meant to act as a simple key/value store.
dataStoreService.Set("foo", "bar");
dataStoreService.Get("foo") = "bar"
dataStoreService.Get("foo", "default") = "bar"
dataStoreService.Get("invalid", "default") = "default"
IEnvironmentConfig
A wrapper for development environment data. This is used by services to separate config between different environments. This allows you to have one configuration on a dev environment and another in production. See ILoggingEnvironmentConfig for an example of this.
IGuidReferenceableAsset
The based interface for all IData related data assets. This is only used when we do not (need to) specify the type of the IData in the editor code.
IGuidReferenceableAsset<TData>
The interface implemented by all IDatas data assets. This interface that marks a ScriptableObject (or other serialized type) as a holder of IData. The concrete implementation must contain a GuidReferenceableAttribute if you wish to use the Unity asset GuidReference tool in IdleKit.
IIKLogger
Handles all of IdleKits logging and exceptions.
IInjectable
The IInjectable interface enable a class to have its dependencies injected by the IInjector in the form of an IResolver.
IInjector
The IInjector injects the dependencies into the object.
IInstaller
An IInstaller is used by the IContext to Install(IContainer) and Uninstall(IContainer) the IBinding to the IContainer.
ILoader
A ILoader is used to load content over time. This content is broken up into a collection of ILoadPhase objects. These get queued and loaded in the foreground or background.
ILoadPhase
A ISequenceable object meant to be used with a ILoader to handle loading content over time.
ILogCategory
Used to separate logging into groups that can be customized or toggled.
ILoggingConfig
A collection of ILoggingEnvironmentConfig objects, and a means of getting one relevant to the IEnvironmentConfig you are using.
ILoggingEnvironmentConfig
Logging configuration for a specific IEnvironmentConfig.
IMultipleDataProvider<TOutputData>
This interface should be used to provide access to a set of IData objects.
IParallelSequenceCollection<TSequenceable>
This is meant to be used to run multiple ISequenceable objects in parallel.
IProgressable
An interface used to indicate progress of operation.
IProgressCompletable
An interface used to indicate progress of operation and completion of such operation.
IProvider
IProvider provides an instance for the IBinding that contains this IProvider.
IResolver
An IResolver enables the dependency to be resolved based on the contract type and an optional id. This interface should not be cached in any object unless its a service level object.
ISequenceable
A ISequenceable object is run in a queue by a ISequencer<TSequenceable>. These objects can be run sequentially or in parallel with other ISequenceable objects.
ISequencer<TSequenceable>
An ISequencer<TSequenceable> queues and runs a collection of ISequenceable objects. These objects can be run sequentially or in parallel as the queue is processed.
IService
All IdleKit Services implement this interface. A Service handles logic involving different components or externally communication with non-IdleKit domains.
ISingleDataProvider<TOutputData>
This interface should be used to provide access to a single IData object.
IStateAction
An IStateAction is an IAction with the following rules:
ITypedResolver<T>
A specialized interface version of IResolver that only allows resolving of
T
granting limited accesses to the IContainer.
IUnityEventListener
An interface that handles receiving platform or game engine specific events that do not originate from the IdleKit such as the Update(), FixedUpdate(), and ApplicationPause() events from the Unity engine.
The "events" mentioned here should not to be mistaken with IdleKit's IAction) and do not use the IActionService as this is an external facing class.
Enums
Lifestyle
The scope of the instance that provided by the IProvider
LogSeverity
Used to determine the severity of a logged message. These severities can be filtered and organized by other systems.
SequenceFlow
The behaviour in which a sequence runs. Sequences can either run sequentially or in parallel with other running sequences.
TransformBehaviour
Various behaviours that can be applied to TransformSetting objects.