diff --git a/.gitignore b/.gitignore
index fad728d..48be77e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,9 @@
**.idea/
+# Unity Engine
+
+!/[Aa]ssets/**/*.meta
+[Aa]ssets/**/csc.*
+
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
@@ -6,22 +11,76 @@
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
-
-# MemoryCaptures can get excessive in size.
-# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
-
-# Recordings can get excessive in size
/[Rr]ecordings/
+/[Aa]ssets/AssetStoreTools*
+/[Aa]ssets/Plugins/Editor/JetBrains*
+/[Bb]uild/
+/[Kk]eys/
+/[Tt]rash/
+/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
+/[Aa]ssets/[Ss]treamingAssets/aa.meta
+/[Aa]ssets/[Ss]treamingAssets/aa/*
+crashlytics-build.properties
+
+*/[Uu]ser[Ss]ettings/
+*/Library/
+*/[Ll]ibrary/
+*/[Tt]emp/
+*/[Oo]bj/
+*/[Bb]uild/
+*/[Bb]uilds/
+*/[Ll]ogs/
+*/[Aa]ssets/[Ll]ogs/*
+*/[Aa]ssets/[Ll]og/*
+*/[Mm]emoryCaptures/
+*/Logs/
+*/.vs/
+*ExportedObj/
+.consulo/
+*.csproj
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+*/sysinfo.txt
+*.apk
+*.unitypackage
+crashlytics-build.properties
-# Uncomment this line if you wish to ignore the asset store tools plugin
-# /[Aa]ssets/AssetStoreTools*
+**Logs/
+**Examples/
+**Builds/
+**Samples/
+**/Samples.meta
+*/Examples/
+*/Examples.meta
-# Autogenerated Jetbrains Rider plugin
-/[Aa]ssets/Plugins/Editor/JetBrains*
+#### Trash folder for temperary solution and removed mechanics. ####
+**[Tt]rash/
+**[Tt]rash/**/*.meta
+SpaceSuspect/Assets/Trash.meta
+
+# Unity Spine
+**/Spine Examples/
+/[Ss]pine Examples/*
-# Visual Studio cache directory
+# Visual Strudio
.vs/
+*.vsconfig
+.vsconfig
# Gradle cache directory
.gradle/
@@ -58,11 +117,550 @@ sysinfo.txt
*.unitypackage
*.app
-# Crashlytics generated file
+
+# Exceptions
+!*.dll
+!*.obj
+
+#Auto
+/UnityLockfile
+
+#VS Code
+.vscode
+*.vscode/*
+*.vscode
+.vscode/
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+.history
+
+# Windows
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Rider
+**/.idea/
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+#Visual Studio files
+*.[Oo]bj
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+.pyc
+.xml
+ipch/
+obj/
+[Bb]in
+[Dd]ebug/
+[Rr]elease/
+Ankh.NoLoad
+
+#Tooling
+_ReSharper*/
+.resharper
+[Tt]est[Rr]esult
+
+#Project files
+[Bb]uild/
+
+#Subversion files
+.svn
+
+#macOS
+# Created by https://www.gitignore.io/api/git,unity,macos,csharp,windows,visualstudio,visualstudiocode
+# Edit at https://www.gitignore.io/?templates=git,unity,macos,csharp,windows,visualstudio,visualstudiocode
+
+### Csharp ###
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+#**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+### Git ###
+# Created by git for backups. To disable backups in Git:
+# $ git config --global mergetool.keepBackup false
+*.orig
+
+# Created by git when using merge tools for conflicts
+*.BACKUP.*
+*.BASE.*
+*.LOCAL.*
+*.REMOTE.*
+*_BACKUP_*.txt
+*_BASE_*.txt
+*_LOCAL_*.txt
+*_REMOTE_*.txt
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
-# Packed Addressables
-/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
diff --git a/UnityActionUpdaterService/Assets/Internal.meta b/UnityActionUpdaterService/Assets/Internal.meta
new file mode 100644
index 0000000..f056b6a
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9f642e664a97e6c45b8f3d641c8b7ce9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase.meta b/UnityActionUpdaterService/Assets/Internal/Codebase.meta
new file mode 100644
index 0000000..2b45e48
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 175e3bd80f9351f49b6d48a822cfa99a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater.meta
new file mode 100644
index 0000000..43a3433
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f04f59c827ada854596cba6caa270a7f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher.meta
new file mode 100644
index 0000000..97491d8
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2a20ebd80e35454ca2b2f96fcc0568d9
+timeCreated: 1700078481
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs
new file mode 100644
index 0000000..658dd31
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs
@@ -0,0 +1,72 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using Zenject;
+using UnityEngine;
+using RimuruDev.Internal.Codebase.ActionUpdater.Service;
+
+namespace RimuruDev.Internal.Codebase.ActionUpdater.Dispatcher
+{
+ ///
+ /// The ActionUpdateDispatcher is responsible for dispatching update calls
+ /// to the IActionUpdaterService. It ensures that these updates continue
+ /// across different scenes, as it persists across scene loads.
+ ///
+ [DisallowMultipleComponent]
+ public sealed class ActionUpdateDispatcher : MonoBehaviour
+ {
+ private IActionUpdaterService actionUpdater;
+
+ ///
+ /// Injects the IActionUpdaterService dependency.
+ /// This method is called by Zenject to provide the service instance.
+ ///
+ /// The action updater service to be used for dispatching update events.
+ [Inject]
+ private void Constructor(IActionUpdaterService actionUpdater) =>
+ this.actionUpdater = actionUpdater;
+
+ ///
+ /// Called when the script instance is being loaded.
+ /// Ensures this object is not destroyed when loading a new scene.
+ ///
+ private void Awake()
+ {
+ transform.SetParent(null);
+ DontDestroyOnLoad(gameObject);
+ }
+
+ ///
+ /// Called every fixed framerate frame. Delegates the call to the action updater service.
+ ///
+ private void FixedUpdate() =>
+ actionUpdater?.FixedUpdate();
+
+ ///
+ /// Called every frame. Delegates the call to the action updater service.
+ ///
+ private void Update() =>
+ actionUpdater?.Update();
+
+ ///
+ /// Called every frame after Update. Delegates the call to the action updater service.
+ ///
+ private void LateUpdate() =>
+ actionUpdater?.LateUpdate();
+
+ ///
+ /// Called when the application is quitting. Disposes the action updater service.
+ ///
+ private void OnApplicationQuit() =>
+ actionUpdater?.Dispose();
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs.meta
new file mode 100644
index 0000000..da8b185
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Dispatcher/ActionUpdateDispatcher.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 64fe7a25dc404739b3df57dbe5447840
+timeCreated: 1700078207
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum.meta
new file mode 100644
index 0000000..3746314
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c228d094dab04d49b59679c9c5d7276f
+timeCreated: 1700078521
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs
new file mode 100644
index 0000000..b247a35
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs
@@ -0,0 +1,40 @@
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using System;
+
+namespace RimuruDev.Internal.Codebase.ActionUpdater.Enum
+{
+ ///
+ /// Specifies the type of update method to which an action can be subscribed.
+ ///
+ [Serializable]
+ public enum UpdateType : byte
+ {
+ ///
+ /// Subscribe to the FixedUpdate method, which is called every fixed framerate frame.
+ /// Suitable for updates in physics calculations.
+ ///
+ FixedUpdate = 0,
+
+ ///
+ /// Subscribe to the Update method, which is called once per frame.
+ /// Suitable for most game logic.
+ ///
+ Update = 1,
+
+ ///
+ /// Subscribe to the LateUpdate method, which is called once per frame after Update.
+ /// Suitable for actions that require objects to be updated first.
+ ///
+ LateUpdate = 2,
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs.meta
new file mode 100644
index 0000000..ac74d21
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Enum/UpdateType.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bdfdd938168f48cd80d6a06005143a0d
+timeCreated: 1700077180
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service.meta
new file mode 100644
index 0000000..d91bc89
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f58f598be3d047d98e189a0e7b560336
+timeCreated: 1700078494
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs
new file mode 100644
index 0000000..5e4e033
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs
@@ -0,0 +1,149 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using System;
+using UnityEngine;
+using System.Linq;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using RimuruDev.Internal.Codebase.ActionUpdater.Enum;
+
+namespace RimuruDev.Internal.Codebase.ActionUpdater.Service
+{
+ ///
+ /// Manages the subscription of actions to Unity's update methods (FixedUpdate, Update, LateUpdate).
+ /// Allows for centralized control of update logic, with the ability to pause all actions.
+ ///
+ public sealed class ActionUpdaterService : IActionUpdaterService
+ {
+ private readonly List fixedUpdateActionCache = new();
+ private readonly List updateActionCache = new();
+ private readonly List lateUpdateActionCache = new();
+
+ private event Action OnFixedUpdate;
+ private event Action OnUpdate;
+ private event Action OnLateUpdate;
+
+ private bool isPause;
+
+ ///
+ /// Subscribes an action to a specified update method.
+ ///
+ /// The action to subscribe.
+ /// The type of update method to subscribe to (FixedUpdate, Update, or LateUpdate).
+ public void Subscribe([NotNull] Action updateable, UpdateType updateType)
+ {
+ switch (updateType)
+ {
+ case UpdateType.FixedUpdate:
+ OnFixedUpdate += updateable;
+ fixedUpdateActionCache.Add(updateable);
+ break;
+ case UpdateType.Update:
+ OnUpdate += updateable;
+ updateActionCache.Add(updateable);
+ break;
+ case UpdateType.LateUpdate:
+ OnLateUpdate += updateable;
+ lateUpdateActionCache.Add(updateable);
+ break;
+ default:
+ Debug.LogError($"ArgumentOutOfRangeException: {nameof(updateType)}, {updateType}");
+ break;
+ }
+ }
+
+ ///
+ /// Unsubscribes an action from a specified update method.
+ ///
+ /// The action to unsubscribe.
+ /// The type of update method to unsubscribe from.
+ public void Unsubscribe([NotNull] Action updateable, UpdateType updateType)
+ {
+ switch (updateType)
+ {
+ case UpdateType.FixedUpdate:
+ OnFixedUpdate -= updateable;
+ fixedUpdateActionCache.Remove(updateable);
+ break;
+ case UpdateType.Update:
+ OnUpdate -= updateable;
+ updateActionCache.Remove(updateable);
+ break;
+ case UpdateType.LateUpdate:
+ OnLateUpdate -= updateable;
+ lateUpdateActionCache.Remove(updateable);
+ break;
+ default:
+ Debug.LogError($"ArgumentOutOfRangeException: {nameof(updateType)}, {updateType}");
+ break;
+ }
+ }
+
+ ///
+ /// Invokes all actions subscribed to FixedUpdate.
+ ///
+ public void FixedUpdate()
+ {
+ if (isPause)
+ return;
+
+ OnFixedUpdate?.Invoke();
+ }
+
+ ///
+ /// Invokes all actions subscribed to Update.
+ ///
+ public void Update()
+ {
+ if (isPause)
+ return;
+
+ OnUpdate?.Invoke();
+ }
+
+ ///
+ /// Invokes all actions subscribed to LateUpdate.
+ ///
+ public void LateUpdate()
+ {
+ if (isPause)
+ return;
+
+ OnLateUpdate?.Invoke();
+ }
+
+ ///
+ /// Sets or unsets the pause state of the update actions.
+ ///
+ /// True to pause, false to resume.
+ public void SetPause(bool pause) =>
+ isPause = pause;
+
+ ///
+ /// Unsubscribes all actions from their respective update methods.
+ ///
+ public void Dispose()
+ {
+ UnsubscribeAll(fixedUpdateActionCache, ref OnFixedUpdate);
+ UnsubscribeAll(updateActionCache, ref OnUpdate);
+ UnsubscribeAll(lateUpdateActionCache, ref OnLateUpdate);
+ }
+
+ private static void UnsubscribeAll(ICollection actionList, ref Action eventDelegate)
+ {
+ eventDelegate = actionList.Aggregate(eventDelegate, (current, action) => current - action);
+
+ actionList.Clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs.meta
new file mode 100644
index 0000000..8b2031a
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/ActionUpdaterService.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bcccbe046a054fb8a91bb959416a0184
+timeCreated: 1700075330
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs
new file mode 100644
index 0000000..8c8d73e
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs
@@ -0,0 +1,59 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+using RimuruDev.Internal.Codebase.ActionUpdater.Enum;
+
+namespace RimuruDev.Internal.Codebase.ActionUpdater.Service
+{
+ ///
+ /// Provides a service for subscribing actions to Unity's lifecycle methods.
+ ///
+ public interface IActionUpdaterService : IDisposable
+ {
+ ///
+ /// Subscribes an action to a specified update type.
+ ///
+ /// The action to subscribe.
+ /// The type of update to subscribe to (FixedUpdate, Update, or LateUpdate).
+ public void Subscribe([NotNull] Action updateable, UpdateType updateType);
+
+ ///
+ /// Unsubscribes an action from a specified update type.
+ ///
+ /// The action to unsubscribe.
+ /// The type of update to unsubscribe from.
+ public void Unsubscribe([NotNull] Action updateable, UpdateType updateType);
+
+ ///
+ /// Invokes actions subscribed to FixedUpdate.
+ ///
+ public void FixedUpdate();
+
+ ///
+ /// Invokes actions subscribed to Update.
+ ///
+ public void Update();
+
+ ///
+ /// Invokes actions subscribed to LateUpdate.
+ ///
+ public void LateUpdate();
+
+ ///
+ /// Pauses or resumes the execution of subscribed actions.
+ ///
+ /// True to pause actions, false to resume.
+ public void SetPause(bool pause);
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs.meta
new file mode 100644
index 0000000..9d54421
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/ActionUpdater/Service/IActionUpdaterService.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 778dae435f234497a2c5a9935d36a823
+timeCreated: 1700077175
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/Example.meta
new file mode 100644
index 0000000..8b9ec9b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2f27a36986e347bb9fc51576c387e4ad
+timeCreated: 1700078604
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs
new file mode 100644
index 0000000..1c709c8
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs
@@ -0,0 +1,48 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using Zenject;
+using UnityEngine;
+using RimuruDev.Internal.Codebase.ActionUpdater.Service;
+
+namespace RimuruDev.Internal.Codebase.Example
+{
+ ///
+ /// ExampleBehaviour demonstrates how to use the IActionUpdaterService in a MonoBehaviour.
+ /// It initializes and uses a Hero object which is not a MonoBehaviour.
+ ///
+ [DisallowMultipleComponent]
+ public sealed class ExampleBehaviour : MonoBehaviour
+ {
+ private Hero hero;
+ private IActionUpdaterService actionUpdater;
+
+ ///
+ /// Injects the IActionUpdaterService dependency.
+ /// This method is called by Zenject to provide the service instance.
+ ///
+ /// The action updater service to be used.
+ [Inject]
+ private void Constructor(IActionUpdaterService actionUpdater) =>
+ this.actionUpdater = actionUpdater;
+
+ ///
+ /// Called when the script instance is being loaded.
+ /// Initializes the Hero object and prepares it for updates.
+ ///
+ private void Start()
+ {
+ hero = new Hero(actionUpdater);
+ hero.Prepare();
+ }
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs.meta
new file mode 100644
index 0000000..0a97ab9
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ExampleBehaviour.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c77685354f2b408c952b912974615fbe
+timeCreated: 1700078812
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs
new file mode 100644
index 0000000..c58ca69
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs
@@ -0,0 +1,62 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+
+using UnityEngine;
+using RimuruDev.Internal.Codebase.ActionUpdater.Enum;
+using RimuruDev.Internal.Codebase.ActionUpdater.Service;
+
+namespace RimuruDev.Internal.Codebase.Example
+{
+ ///
+ /// Hero class that demonstrates how to subscribe to update events using the IActionUpdaterService.
+ /// It logs different types of updates: FixedUpdate, Update, and LateUpdate.
+ ///
+ public sealed class Hero
+ {
+ private const string DebugFormat = "{0}";
+ private readonly IActionUpdaterService updaterService;
+
+ ///
+ /// Initializes a new instance of the Hero class.
+ ///
+ /// The IActionUpdaterService instance to use for subscribing to update events.
+ public Hero(IActionUpdaterService updaterService) =>
+ this.updaterService = updaterService;
+
+ ///
+ /// Prepares the Hero by subscribing to various update types.
+ ///
+ public void Prepare()
+ {
+ updaterService.Subscribe(OnFixedUpdate, UpdateType.FixedUpdate);
+ updaterService.Subscribe(OnUpdate, UpdateType.Update);
+ updaterService.Subscribe(OnLateUpdate, UpdateType.LateUpdate);
+ }
+
+ private void OnFixedUpdate() =>
+ LogFormat("OnFixedUpdate");
+
+ private void OnUpdate() =>
+ LogFormat("OnUpdate");
+
+ private void OnLateUpdate() =>
+ LogFormat("OnLateUpdate");
+
+ ///
+ /// Logs the specified message in a formatted manner.
+ ///
+ /// The message to log.
+ private void LogFormat(string message) =>
+ Debug.LogFormat(DebugFormat, message);
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs.meta
new file mode 100644
index 0000000..4a74d7a
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/Hero.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 903a2dde4bbe4006bbddf3cbc645b3a1
+timeCreated: 1700079254
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs
new file mode 100644
index 0000000..4affb45
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs
@@ -0,0 +1,22 @@
+// Resharper disable all
+// **************************************************************** //
+//
+// Copyright (c) RimuruDev. All rights reserved.
+// Contact me:
+// - Gmail: rimuru.dev@gmail.com
+// - GitHub: https://github.com/RimuruDev
+// - LinkedIn: https://www.linkedin.com/in/rimuru/
+// - GitHub Organizations: https://github.com/Rimuru-Dev
+//
+// **************************************************************** //
+
+using Zenject;
+using RimuruDev.Internal.Codebase.ActionUpdater.Service;
+
+namespace RimuruDev.Internal.Codebase.Example
+{
+ public sealed class ServicesInstaller : MonoInstaller
+ {
+ public override void InstallBindings() => Container.Bind().To().AsSingle();
+ }
+}
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs.meta b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs.meta
new file mode 100644
index 0000000..f2a4a3b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Codebase/Example/ServicesInstaller.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c8a5b6d620b74e5299d770435fc5cd30
+timeCreated: 1700078659
\ No newline at end of file
diff --git a/UnityActionUpdaterService/Assets/Internal/Scenes.meta b/UnityActionUpdaterService/Assets/Internal/Scenes.meta
new file mode 100644
index 0000000..bcdd36e
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 59cff8f52240ff94096ca3c08f4e12c0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity b/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity
new file mode 100644
index 0000000..c0b83be
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity
@@ -0,0 +1,490 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 705507994}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &167001496
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 167001497}
+ m_Layer: 0
+ m_Name: Default
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &167001497
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 167001496}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 963194228}
+ - {fileID: 705507995}
+ m_Father: {fileID: 483265470}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &483265469
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 483265470}
+ m_Layer: 0
+ m_Name: '[=== Level ===]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &483265470
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 483265469}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 167001497}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &705507993
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 705507995}
+ - component: {fileID: 705507994}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &705507994
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 1
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &705507995
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 167001497}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &731004644
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 731004645}
+ m_Layer: 0
+ m_Name: '[ === Logic ===]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &731004645
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 731004644}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1592165483}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &963194225
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 963194228}
+ - component: {fileID: 963194227}
+ - component: {fileID: 963194226}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 167001497}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1592165482
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1592165483}
+ - component: {fileID: 1592165484}
+ - component: {fileID: 1592165485}
+ m_Layer: 0
+ m_Name: Example
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1592165483
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1592165482}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 731004645}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1592165484
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1592165482}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c77685354f2b408c952b912974615fbe, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1592165485
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1592165482}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 89715ad69b973a14899afa2c6730b30b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _scriptableObjectInstallers: []
+ _monoInstallers: []
+ _installerPrefabs: []
+ _autoRun: 1
+ OnPreInstall:
+ m_PersistentCalls:
+ m_Calls: []
+ OnPostInstall:
+ m_PersistentCalls:
+ m_Calls: []
+ OnPreResolve:
+ m_PersistentCalls:
+ m_Calls: []
+ OnPostResolve:
+ m_PersistentCalls:
+ m_Calls: []
+ _parentNewObjectsUnderSceneContext: 0
+ _contractNames: []
+ _parentContractNames: []
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 731004645}
+ - {fileID: 483265470}
diff --git a/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity.meta b/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity.meta
new file mode 100644
index 0000000..952bd1e
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Internal/Scenes/SampleScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9fc0d4010bbf28b4594072e72b8655ab
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins.meta b/UnityActionUpdaterService/Assets/Plugins.meta
new file mode 100644
index 0000000..620f704
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f2fbb4840767b2f40aea5c5af3dcb040
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject.meta
new file mode 100644
index 0000000..c17969c
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4a7d1a42c093ce541aa4be581b78bedf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt b/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt
new file mode 100644
index 0000000..4602c9f
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) 2010-2015 Modest Tree Media http://www.modesttree.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+https://github.com/svermeulen/Extenject/blob/master/License.md
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt.meta
new file mode 100644
index 0000000..93b9dcd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/LICENSE.txt.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 75406829aaca6154491302d85b26270a
+timeCreated: 1427860624
+licenseType: Store
+TextScriptImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url b/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url
new file mode 100644
index 0000000..7fecc01
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/svermeulen/Extenject
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url.meta
new file mode 100644
index 0000000..088afbe
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/ReadMe.url.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 937aea47cf7f0864cb39571ca85e205d
+timeCreated: 1529238438
+licenseType: Store
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source.meta
new file mode 100644
index 0000000..2cf0cda
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9180a9720c42cb94f9b30a7c0c938d90
+folderAsset: yes
+timeCreated: 1452188407
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding.meta
new file mode 100644
index 0000000..2a9e72c
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e92094ea8d3ee634f858163622b6abbb
+folderAsset: yes
+timeCreated: 1459463884
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo.meta
new file mode 100644
index 0000000..d78bc8b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: a78a183f887b72e45b2ec6d77fb514d8
+folderAsset: yes
+timeCreated: 1461708046
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs
new file mode 100644
index 0000000..6d0c754
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using Zenject.Internal;
+
+namespace Zenject
+{
+ public enum ScopeTypes
+ {
+ Unset,
+ Transient,
+ Singleton
+ }
+
+ public enum ToChoices
+ {
+ Self,
+ Concrete
+ }
+
+ public enum InvalidBindResponses
+ {
+ Assert,
+ Skip
+ }
+
+ public enum BindingInheritanceMethods
+ {
+ None,
+ CopyIntoAll,
+ CopyDirectOnly,
+ MoveIntoAll,
+ MoveDirectOnly
+ }
+
+ [NoReflectionBaking]
+ public class BindInfo : IDisposable
+ {
+ public bool MarkAsCreationBinding;
+ public bool MarkAsUniqueSingleton;
+ public object ConcreteIdentifier;
+ public bool SaveProvider;
+ public bool OnlyBindIfNotBound;
+ public bool RequireExplicitScope;
+ public object Identifier;
+ public readonly List ContractTypes;
+ public BindingInheritanceMethods BindingInheritanceMethod;
+ public InvalidBindResponses InvalidBindResponse;
+ public bool NonLazy;
+ public BindingCondition Condition;
+ public ToChoices ToChoice;
+ public string ContextInfo;
+ public readonly List ToTypes; // Only relevant with ToChoices.Concrete
+ public ScopeTypes Scope;
+ public readonly List Arguments;
+ public Action InstantiatedCallback;
+
+ public BindInfo()
+ {
+ ContractTypes = new List();
+ ToTypes = new List();
+ Arguments = new List();
+
+ Reset();
+ }
+
+ public void Dispose()
+ {
+ ZenPools.DespawnBindInfo(this);
+ }
+
+ [Conditional("UNITY_EDITOR")]
+ public void SetContextInfo(string contextInfo)
+ {
+ ContextInfo = contextInfo;
+ }
+
+ public void Reset()
+ {
+ MarkAsCreationBinding = true;
+ MarkAsUniqueSingleton = false;
+ ConcreteIdentifier = null;
+ SaveProvider = false;
+ OnlyBindIfNotBound = false;
+ RequireExplicitScope = false;
+ Identifier = null;
+ ContractTypes.Clear();
+ BindingInheritanceMethod = BindingInheritanceMethods.None;
+ InvalidBindResponse = InvalidBindResponses.Assert;
+ NonLazy = false;
+ Condition = null;
+ ToChoice = ToChoices.Self;
+ ContextInfo = null;
+ ToTypes.Clear();
+ Scope = ScopeTypes.Unset;
+ Arguments.Clear();
+ InstantiatedCallback = null;
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs.meta
new file mode 100644
index 0000000..5732ba9
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 647e28e377c50e549b443131ce6163fc
+timeCreated: 1461708051
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs
new file mode 100644
index 0000000..c3e9993
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using ModestTree;
+using Zenject.Internal;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class BindStatement : IDisposable
+ {
+ readonly List _disposables;
+ IBindingFinalizer _bindingFinalizer;
+
+ public BindStatement()
+ {
+ _disposables = new List();
+ Reset();
+ }
+
+ public BindingInheritanceMethods BindingInheritanceMethod
+ {
+ get
+ {
+ AssertHasFinalizer();
+ return _bindingFinalizer.BindingInheritanceMethod;
+ }
+ }
+
+ public bool HasFinalizer
+ {
+ get { return _bindingFinalizer != null; }
+ }
+
+ public void SetFinalizer(IBindingFinalizer bindingFinalizer)
+ {
+ _bindingFinalizer = bindingFinalizer;
+ }
+
+ void AssertHasFinalizer()
+ {
+ if (_bindingFinalizer == null)
+ {
+ throw Assert.CreateException(
+ "Unfinished binding! Some required information was left unspecified.");
+ }
+ }
+
+ public void AddDisposable(IDisposable disposable)
+ {
+ _disposables.Add(disposable);
+ }
+
+ public BindInfo SpawnBindInfo()
+ {
+ var bindInfo = ZenPools.SpawnBindInfo();
+ AddDisposable(bindInfo);
+ return bindInfo;
+ }
+
+ public void FinalizeBinding(DiContainer container)
+ {
+ AssertHasFinalizer();
+ _bindingFinalizer.FinalizeBinding(container);
+ }
+
+ public void Reset()
+ {
+ _bindingFinalizer = null;
+
+ for (int i = 0; i < _disposables.Count; i++)
+ {
+ _disposables[i].Dispose();
+ }
+
+ _disposables.Clear();
+ }
+
+ public void Dispose()
+ {
+ ZenPools.DespawnStatement(this);
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs.meta
new file mode 100644
index 0000000..d563e24
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/BindStatement.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 63a8f1068d150404f820c8cc9057dbc8
+timeCreated: 1535868299
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs
new file mode 100644
index 0000000..c15cf2e
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryBindInfo
+ {
+ public FactoryBindInfo(Type factoryType)
+ {
+ FactoryType = factoryType;
+ Arguments = new List();
+ }
+
+ public Type FactoryType
+ {
+ get; private set;
+ }
+
+ public Func ProviderFunc
+ {
+ get; set;
+ }
+
+ public List Arguments
+ {
+ get;
+ set;
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs.meta
new file mode 100644
index 0000000..80e44ba
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/FactoryBindInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e69b2b4566e331e44a9f92e4e309816a
+timeCreated: 1484520532
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs
new file mode 100644
index 0000000..ab1774c
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs
@@ -0,0 +1,93 @@
+#if !NOT_UNITY3D
+
+using System;
+using UnityEngine;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class GameObjectCreationParameters
+ {
+ public string Name
+ {
+ get;
+ set;
+ }
+
+ public string GroupName
+ {
+ get;
+ set;
+ }
+
+ public Transform ParentTransform
+ {
+ get;
+ set;
+ }
+
+ public Func ParentTransformGetter
+ {
+ get;
+ set;
+ }
+
+ public Vector3? Position
+ {
+ get;
+ set;
+ }
+
+ public Quaternion? Rotation
+ {
+ get;
+ set;
+ }
+
+ public static readonly GameObjectCreationParameters Default = new GameObjectCreationParameters();
+
+ public override int GetHashCode()
+ {
+ unchecked // Overflow is fine, just wrap
+ {
+ int hash = 17;
+ hash = hash * 29 + (Name == null ? 0 : Name.GetHashCode());
+ hash = hash * 29 + (GroupName == null ? 0 : GroupName.GetHashCode());
+ hash = hash * 29 + (ParentTransform == null ? 0 : ParentTransform.GetHashCode());
+ hash = hash * 29 + (ParentTransformGetter == null ? 0 : ParentTransformGetter.GetHashCode());
+ hash = hash * 29 + (!Position.HasValue ? 0 : Position.Value.GetHashCode());
+ hash = hash * 29 + (!Rotation.HasValue ? 0 : Rotation.Value.GetHashCode());
+ return hash;
+ }
+ }
+
+ public override bool Equals(object other)
+ {
+ if (other is GameObjectCreationParameters)
+ {
+ GameObjectCreationParameters otherId = (GameObjectCreationParameters)other;
+ return otherId == this;
+ }
+
+ return false;
+ }
+
+ public bool Equals(GameObjectCreationParameters that)
+ {
+ return this == that;
+ }
+
+ public static bool operator ==(GameObjectCreationParameters left, GameObjectCreationParameters right)
+ {
+ return Equals(left.Name, right.Name)
+ && Equals(left.GroupName, right.GroupName);
+ }
+
+ public static bool operator !=(GameObjectCreationParameters left, GameObjectCreationParameters right)
+ {
+ return !left.Equals(right);
+ }
+ }
+}
+
+#endif
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs.meta
new file mode 100644
index 0000000..5a28c63
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/GameObjectCreationParameters.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2b708f7f76ea5574e9a39b60cc5a8238
+timeCreated: 1477163090
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs
new file mode 100644
index 0000000..5ca06a3
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs
@@ -0,0 +1,35 @@
+namespace Zenject
+{
+ public enum PoolExpandMethods
+ {
+ OneAtATime,
+ Double,
+ Disabled
+ }
+
+ [NoReflectionBaking]
+ public class MemoryPoolBindInfo
+ {
+ public MemoryPoolBindInfo()
+ {
+ ExpandMethod = PoolExpandMethods.OneAtATime;
+ MaxSize = int.MaxValue;
+ }
+
+ public PoolExpandMethods ExpandMethod
+ {
+ get; set;
+ }
+
+ public int InitialSize
+ {
+ get; set;
+ }
+
+ public int MaxSize
+ {
+ get; set;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs.meta
new file mode 100644
index 0000000..22d71e5
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/BindInfo/MemoryPoolBindInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3f8798fbf64bca945a7be04615c08c4f
+timeCreated: 1485711462
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders.meta
new file mode 100644
index 0000000..b33afc1
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 3e0d343c02f9d0a488a62abffae00ceb
+folderAsset: yes
+timeCreated: 1461708046
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs
new file mode 100644
index 0000000..21bb923
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs
@@ -0,0 +1,106 @@
+using System.Collections.Generic;
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ArgConditionCopyNonLazyBinder : InstantiateCallbackConditionCopyNonLazyBinder
+ {
+ public ArgConditionCopyNonLazyBinder(BindInfo bindInfo)
+ : base(bindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(T param)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(TParam1 param1, TParam2 param2)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param1));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param2));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param1));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param2));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param3));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param1));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param2));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param3));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param4));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4, TParam5 param5)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param1));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param2));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param3));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param4));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param5));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4, TParam5 param5, TParam6 param6)
+ {
+ BindInfo.Arguments.Clear();
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param1));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param2));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param3));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param4));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param5));
+ BindInfo.Arguments.Add(InjectUtil.CreateTypePair(param6));
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArguments(object[] args)
+ {
+ BindInfo.Arguments.Clear();
+
+ for (int i = 0; i < args.Length; i++)
+ {
+ var arg = args[i];
+
+ Assert.IsNotNull(arg,
+ "Cannot include null values when creating a zenject argument list because zenject has no way of deducing the type from a null value. If you want to allow null, use the Explicit form.");
+
+ BindInfo.Arguments.Add(
+ new TypeValuePair(arg.GetType(), arg));
+ }
+ return this;
+ }
+
+ public InstantiateCallbackConditionCopyNonLazyBinder WithArgumentsExplicit(IEnumerable extraArgs)
+ {
+ BindInfo.Arguments.Clear();
+
+ foreach (var arg in extraArgs)
+ {
+ BindInfo.Arguments.Add(arg);
+ }
+ return this;
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs.meta
new file mode 100644
index 0000000..89f9067
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ArgConditionCopyNonLazyBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d0eff25a90fc7a4479dbb9a1f74dddc2
+timeCreated: 1483833202
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders.meta
new file mode 100644
index 0000000..7087823
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: b3b29de51c8625443984cbd926505d00
+folderAsset: yes
+timeCreated: 1461708047
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs
new file mode 100644
index 0000000..957f69c
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs
@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConcreteBinderGeneric : FromBinderGeneric
+ {
+ public ConcreteBinderGeneric(
+ DiContainer bindContainer, BindInfo bindInfo,
+ BindStatement bindStatement)
+ : base(bindContainer, bindInfo, bindStatement)
+ {
+ ToSelf();
+ }
+
+ // Note that this is the default, so not necessary to call
+ public FromBinderGeneric ToSelf()
+ {
+ Assert.IsEqual(BindInfo.ToChoice, ToChoices.Self);
+
+ BindInfo.RequireExplicitScope = true;
+ SubFinalizer = new ScopableBindingFinalizer(
+ BindInfo, (container, type) => new TransientProvider(
+ type, container, BindInfo.Arguments,
+ BindInfo.ContextInfo, BindInfo.ConcreteIdentifier,
+ BindInfo.InstantiatedCallback));
+
+ return this;
+ }
+
+ public FromBinderGeneric To()
+ where TConcrete : TContract
+ {
+ BindInfo.ToChoice = ToChoices.Concrete;
+ BindInfo.ToTypes.Clear();
+ BindInfo.ToTypes.Add(typeof(TConcrete));
+
+ return new FromBinderGeneric(
+ BindContainer, BindInfo, BindStatement);
+ }
+
+ public FromBinderNonGeneric To(params Type[] concreteTypes)
+ {
+ return To((IEnumerable)concreteTypes);
+ }
+
+ public FromBinderNonGeneric To(IEnumerable concreteTypes)
+ {
+ BindingUtil.AssertIsDerivedFromTypes(
+ concreteTypes, BindInfo.ContractTypes, BindInfo.InvalidBindResponse);
+
+ BindInfo.ToChoice = ToChoices.Concrete;
+ BindInfo.ToTypes.Clear();
+ BindInfo.ToTypes.AddRange(concreteTypes);
+
+ return new FromBinderNonGeneric(
+ BindContainer, BindInfo, BindStatement);
+ }
+
+#if !(UNITY_WSA && ENABLE_DOTNET)
+ public FromBinderNonGeneric To(
+ Action generator)
+ {
+ var bindInfo = new ConventionBindInfo();
+
+ // Automatically filter by the given contract types
+ bindInfo.AddTypeFilter(
+ concreteType => BindInfo.ContractTypes.All(contractType => concreteType.DerivesFromOrEqual(contractType)));
+
+ generator(new ConventionSelectTypesBinder(bindInfo));
+ return To(bindInfo.ResolveTypes());
+ }
+#endif
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs.meta
new file mode 100644
index 0000000..a8ddd43
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderGeneric.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 62ec581e8d820a74797d1dabf19d85c3
+timeCreated: 1461708051
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs
new file mode 100644
index 0000000..3bf7135
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConcreteBinderNonGeneric : FromBinderNonGeneric
+ {
+ public ConcreteBinderNonGeneric(
+ DiContainer bindContainer, BindInfo bindInfo,
+ BindStatement bindStatement)
+ : base(bindContainer, bindInfo, bindStatement)
+ {
+ ToSelf();
+ }
+
+ // Note that this is the default, so not necessary to call
+ public FromBinderNonGeneric ToSelf()
+ {
+ Assert.IsEqual(BindInfo.ToChoice, ToChoices.Self);
+
+ BindInfo.RequireExplicitScope = true;
+ SubFinalizer = new ScopableBindingFinalizer(
+ BindInfo, (container, type) => new TransientProvider(
+ type, container, BindInfo.Arguments, BindInfo.ContextInfo, BindInfo.ConcreteIdentifier,
+ BindInfo.InstantiatedCallback));
+
+ return this;
+ }
+
+ public FromBinderNonGeneric To()
+ {
+ return To(typeof(TConcrete));
+ }
+
+ public FromBinderNonGeneric To(params Type[] concreteTypes)
+ {
+ return To((IEnumerable)concreteTypes);
+ }
+
+ public FromBinderNonGeneric To(IEnumerable concreteTypes)
+ {
+ BindInfo.ToChoice = ToChoices.Concrete;
+ BindInfo.ToTypes.Clear();
+ BindInfo.ToTypes.AddRange(concreteTypes);
+
+ if (BindInfo.ToTypes.Count > 1 && BindInfo.ContractTypes.Count > 1)
+ {
+ // Be more lenient in this case to behave similar to convention based bindings
+ BindInfo.InvalidBindResponse = InvalidBindResponses.Skip;
+ }
+ else
+ {
+ BindingUtil.AssertIsDerivedFromTypes(concreteTypes, BindInfo.ContractTypes, BindInfo.InvalidBindResponse);
+ }
+
+ return this;
+ }
+
+#if !(UNITY_WSA && ENABLE_DOTNET)
+ public FromBinderNonGeneric To(
+ Action generator)
+ {
+ var bindInfo = new ConventionBindInfo();
+
+ // This is nice because it allows us to do things like Bind(all interfaces).To(specific types)
+ // instead of having to do Bind(all interfaces).To(specific types that inherit from one of these interfaces)
+ BindInfo.InvalidBindResponse = InvalidBindResponses.Skip;
+
+ generator(new ConventionSelectTypesBinder(bindInfo));
+
+ BindInfo.ToChoice = ToChoices.Concrete;
+ BindInfo.ToTypes.Clear();
+ BindInfo.ToTypes.AddRange(bindInfo.ResolveTypes());
+
+ return this;
+ }
+#endif
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs.meta
new file mode 100644
index 0000000..783b034
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteBinderNonGeneric.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b04935d23b1499e42a242d63a3fe248b
+timeCreated: 1461708052
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs
new file mode 100644
index 0000000..f351e2a
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs
@@ -0,0 +1,20 @@
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConcreteIdBinderGeneric : ConcreteBinderGeneric
+ {
+ public ConcreteIdBinderGeneric(
+ DiContainer bindContainer, BindInfo bindInfo,
+ BindStatement bindStatement)
+ : base(bindContainer, bindInfo, bindStatement)
+ {
+ }
+
+ public ConcreteBinderGeneric WithId(object identifier)
+ {
+ BindInfo.Identifier = identifier;
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs.meta
new file mode 100644
index 0000000..5b29cbd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderGeneric.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 358cdf402ef00ff40ac81f3bbe7018f0
+timeCreated: 1463318690
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs
new file mode 100644
index 0000000..d80f2ca
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs
@@ -0,0 +1,20 @@
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConcreteIdBinderNonGeneric : ConcreteBinderNonGeneric
+ {
+ public ConcreteIdBinderNonGeneric(
+ DiContainer bindContainer, BindInfo bindInfo,
+ BindStatement bindStatement)
+ : base(bindContainer, bindInfo, bindStatement)
+ {
+ }
+
+ public ConcreteBinderNonGeneric WithId(object identifier)
+ {
+ BindInfo.Identifier = identifier;
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs.meta
new file mode 100644
index 0000000..7179ace
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteBinders/ConcreteIdBinderNonGeneric.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1251d518904c9574897614d756f76756
+timeCreated: 1463318690
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs
new file mode 100644
index 0000000..4b84dbf
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs
@@ -0,0 +1,17 @@
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConcreteIdArgConditionCopyNonLazyBinder : ArgConditionCopyNonLazyBinder
+ {
+ public ConcreteIdArgConditionCopyNonLazyBinder(BindInfo bindInfo)
+ : base(bindInfo)
+ {
+ }
+
+ public ArgConditionCopyNonLazyBinder WithConcreteId(object id)
+ {
+ BindInfo.ConcreteIdentifier = id;
+ return this;
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs.meta
new file mode 100644
index 0000000..26a444b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConcreteIdArgConditionCopyNonLazyBinder.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 5803a20c252d8ae4498e79e8b3bb09e0
+timeCreated: 1523257672
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs
new file mode 100644
index 0000000..27feedd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Linq;
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConditionCopyNonLazyBinder : CopyNonLazyBinder
+ {
+ public ConditionCopyNonLazyBinder(BindInfo bindInfo)
+ : base(bindInfo)
+ {
+ }
+
+ public CopyNonLazyBinder When(BindingCondition condition)
+ {
+ BindInfo.Condition = condition;
+ return this;
+ }
+
+ public CopyNonLazyBinder WhenInjectedIntoInstance(object instance)
+ {
+ return When(r => ReferenceEquals(r.ObjectInstance, instance));
+ }
+
+ public CopyNonLazyBinder WhenInjectedInto(params Type[] targets)
+ {
+ return When(r => targets.Where(x => r.ObjectType != null && r.ObjectType.DerivesFromOrEqual(x)).Any());
+ }
+
+ public CopyNonLazyBinder WhenInjectedInto()
+ {
+ return When(r => r.ObjectType != null && r.ObjectType.DerivesFromOrEqual(typeof(T)));
+ }
+
+ public CopyNonLazyBinder WhenNotInjectedInto()
+ {
+ return When(r => r.ObjectType == null || !r.ObjectType.DerivesFromOrEqual(typeof(T)));
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs.meta
new file mode 100644
index 0000000..ad17b93
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/ConditionCopyNonLazyBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a638543bf618ed94fb418f48d9ea9329
+timeCreated: 1483833202
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions.meta
new file mode 100644
index 0000000..58cc4d2
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: cecd58a5468ced54aabe6cc4d2eed9a8
+folderAsset: yes
+timeCreated: 1462127452
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs
new file mode 100644
index 0000000..4f560c9
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs
@@ -0,0 +1,72 @@
+#if !(UNITY_WSA && ENABLE_DOTNET)
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConventionAssemblySelectionBinder
+ {
+ public ConventionAssemblySelectionBinder(ConventionBindInfo bindInfo)
+ {
+ BindInfo = bindInfo;
+ }
+
+ protected ConventionBindInfo BindInfo
+ {
+ get;
+ private set;
+ }
+
+ public void FromAllAssemblies()
+ {
+ // Do nothing
+ // This is the default
+ }
+
+ public void FromAssemblyContaining()
+ {
+ FromAssembliesContaining(typeof(T));
+ }
+
+ public void FromAssembliesContaining(params Type[] types)
+ {
+ FromAssembliesContaining((IEnumerable)types);
+ }
+
+ public void FromAssembliesContaining(IEnumerable types)
+ {
+ FromAssemblies(types.Select(t => t.Assembly).Distinct());
+ }
+
+ public void FromThisAssembly()
+ {
+ FromAssemblies(Assembly.GetCallingAssembly());
+ }
+
+ public void FromAssembly(Assembly assembly)
+ {
+ FromAssemblies(assembly);
+ }
+
+ public void FromAssemblies(params Assembly[] assemblies)
+ {
+ FromAssemblies((IEnumerable)assemblies);
+ }
+
+ public void FromAssemblies(IEnumerable assemblies)
+ {
+ BindInfo.AddAssemblyFilter(assembly => assemblies.Contains(assembly));
+ }
+
+ public void FromAssembliesWhere(Func predicate)
+ {
+ BindInfo.AddAssemblyFilter(predicate);
+ }
+ }
+}
+
+#endif
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs.meta
new file mode 100644
index 0000000..5b056fd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionAssemblySelectionBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5229c122d45b5634ebd4b9bccee749ac
+timeCreated: 1462127487
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs
new file mode 100644
index 0000000..6a9662f
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs
@@ -0,0 +1,77 @@
+#if !(UNITY_WSA && ENABLE_DOTNET)
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConventionBindInfo
+ {
+ readonly List> _typeFilters = new List>();
+ readonly List> _assemblyFilters = new List>();
+
+#if ZEN_MULTITHREADING
+ readonly object _locker = new object();
+#endif
+ static Dictionary _assemblyTypeCache = new Dictionary();
+
+ public void AddAssemblyFilter(Func predicate)
+ {
+ _assemblyFilters.Add(predicate);
+ }
+
+ public void AddTypeFilter(Func predicate)
+ {
+ _typeFilters.Add(predicate);
+ }
+
+ IEnumerable GetAllAssemblies()
+ {
+ // This seems fast enough that it's not worth caching
+ // We also want to allow dynamically loading assemblies
+ return AppDomain.CurrentDomain.GetAssemblies();
+ }
+
+ bool ShouldIncludeAssembly(Assembly assembly)
+ {
+ return _assemblyFilters.All(predicate => predicate(assembly));
+ }
+
+ bool ShouldIncludeType(Type type)
+ {
+ return _typeFilters.All(predicate => predicate(type));
+ }
+
+ Type[] GetTypes(Assembly assembly)
+ {
+ Type[] types;
+
+#if ZEN_MULTITHREADING
+ lock (_locker)
+#endif
+ {
+ // This is much faster than calling assembly.GetTypes() every time
+ if (!_assemblyTypeCache.TryGetValue(assembly, out types))
+ {
+ types = assembly.GetTypes();
+ _assemblyTypeCache[assembly] = types;
+ }
+ }
+
+ return types;
+ }
+
+ public List ResolveTypes()
+ {
+ return GetAllAssemblies()
+ .Where(ShouldIncludeAssembly)
+ .SelectMany(assembly => GetTypes(assembly))
+ .Where(ShouldIncludeType).ToList();
+ }
+ }
+}
+
+#endif
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs.meta
new file mode 100644
index 0000000..6acbf25
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionBindInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f1e908965ce63ab40b271724cb5490aa
+timeCreated: 1462127523
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs
new file mode 100644
index 0000000..2fe5cb0
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs
@@ -0,0 +1,139 @@
+#if !(UNITY_WSA && ENABLE_DOTNET)
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConventionFilterTypesBinder : ConventionAssemblySelectionBinder
+ {
+ public ConventionFilterTypesBinder(ConventionBindInfo bindInfo)
+ : base(bindInfo)
+ {
+ }
+
+ public ConventionFilterTypesBinder DerivingFromOrEqual()
+ {
+ return DerivingFromOrEqual(typeof(T));
+ }
+
+ public ConventionFilterTypesBinder DerivingFromOrEqual(Type parentType)
+ {
+ BindInfo.AddTypeFilter(type => type.DerivesFromOrEqual(parentType));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder DerivingFrom()
+ {
+ return DerivingFrom(typeof(T));
+ }
+
+ public ConventionFilterTypesBinder DerivingFrom(Type parentType)
+ {
+ BindInfo.AddTypeFilter(type => type.DerivesFrom(parentType));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder WithAttribute()
+ where T : Attribute
+ {
+ return WithAttribute(typeof(T));
+ }
+
+ public ConventionFilterTypesBinder WithAttribute(Type attribute)
+ {
+ Assert.That(attribute.DerivesFrom());
+ BindInfo.AddTypeFilter(t => t.HasAttribute(attribute));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder WithoutAttribute()
+ where T : Attribute
+ {
+ return WithoutAttribute(typeof(T));
+ }
+
+ public ConventionFilterTypesBinder WithoutAttribute(Type attribute)
+ {
+ Assert.That(attribute.DerivesFrom());
+ BindInfo.AddTypeFilter(t => !t.HasAttribute(attribute));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder WithAttributeWhere(Func predicate)
+ where T : Attribute
+ {
+ BindInfo.AddTypeFilter(t => t.HasAttribute() && t.AllAttributes().All(predicate));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder Where(Func predicate)
+ {
+ BindInfo.AddTypeFilter(predicate);
+ return this;
+ }
+
+ public ConventionFilterTypesBinder InNamespace(string ns)
+ {
+ return InNamespaces(ns);
+ }
+
+ public ConventionFilterTypesBinder InNamespaces(params string[] namespaces)
+ {
+ return InNamespaces((IEnumerable)namespaces);
+ }
+
+ public ConventionFilterTypesBinder InNamespaces(IEnumerable namespaces)
+ {
+ BindInfo.AddTypeFilter(t => namespaces.Any(n => IsInNamespace(t, n)));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder WithSuffix(string suffix)
+ {
+ BindInfo.AddTypeFilter(t => t.Name.EndsWith(suffix));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder WithPrefix(string prefix)
+ {
+ BindInfo.AddTypeFilter(t => t.Name.StartsWith(prefix));
+ return this;
+ }
+
+ public ConventionFilterTypesBinder MatchingRegex(string pattern)
+ {
+ return MatchingRegex(pattern, RegexOptions.None);
+ }
+
+ public ConventionFilterTypesBinder MatchingRegex(string pattern, RegexOptions options)
+ {
+ return MatchingRegex(new Regex(pattern, options));
+ }
+
+ public ConventionFilterTypesBinder MatchingRegex(Regex regex)
+ {
+ BindInfo.AddTypeFilter(t => regex.IsMatch(t.Name));
+ return this;
+ }
+
+ static bool IsInNamespace(Type type, string requiredNs)
+ {
+ var actualNs = type.Namespace ?? "";
+
+ if (requiredNs.Length > actualNs.Length)
+ {
+ return false;
+ }
+
+ return actualNs.StartsWith(requiredNs)
+ && (actualNs.Length == requiredNs.Length || actualNs[requiredNs.Length] == '.');
+ }
+ }
+}
+
+#endif
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs.meta
new file mode 100644
index 0000000..525d91b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionFilterTypesBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fc3e9c89606ca52458403153ad0d9b3e
+timeCreated: 1462127525
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs
new file mode 100644
index 0000000..fee1245
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs
@@ -0,0 +1,52 @@
+#if !(UNITY_WSA && ENABLE_DOTNET)
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class ConventionSelectTypesBinder
+ {
+ readonly ConventionBindInfo _bindInfo;
+
+ public ConventionSelectTypesBinder(ConventionBindInfo bindInfo)
+ {
+ _bindInfo = bindInfo;
+ }
+
+ ConventionFilterTypesBinder CreateNextBinder()
+ {
+ return new ConventionFilterTypesBinder(_bindInfo);
+ }
+
+ public ConventionFilterTypesBinder AllTypes()
+ {
+ // Do nothing (this is the default)
+ return CreateNextBinder();
+ }
+
+ public ConventionFilterTypesBinder AllClasses()
+ {
+ _bindInfo.AddTypeFilter(t => t.IsClass);
+ return CreateNextBinder();
+ }
+
+ public ConventionFilterTypesBinder AllNonAbstractClasses()
+ {
+ _bindInfo.AddTypeFilter(t => t.IsClass && !t.IsAbstract);
+ return CreateNextBinder();
+ }
+
+ public ConventionFilterTypesBinder AllAbstractClasses()
+ {
+ _bindInfo.AddTypeFilter(t => t.IsClass && t.IsAbstract);
+ return CreateNextBinder();
+ }
+
+ public ConventionFilterTypesBinder AllInterfaces()
+ {
+ _bindInfo.AddTypeFilter(t => t.IsInterface);
+ return CreateNextBinder();
+ }
+ }
+}
+
+#endif
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs.meta
new file mode 100644
index 0000000..3965875
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Conventions/ConventionSelectTypesBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 05d17b3e7f09bc44f8be86e01642ee8d
+timeCreated: 1462127469
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs
new file mode 100644
index 0000000..0688112
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs
@@ -0,0 +1,66 @@
+using System.Collections.Generic;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class CopyNonLazyBinder : NonLazyBinder
+ {
+ List _secondaryBindInfos;
+
+ public CopyNonLazyBinder(BindInfo bindInfo)
+ : base(bindInfo)
+ {
+ }
+
+ // This is used in cases where you have multiple bindings that depend on each other so should
+ // be inherited together (eg. FromIFactory)
+ internal void AddSecondaryCopyBindInfo(BindInfo bindInfo)
+ {
+ if (_secondaryBindInfos == null)
+ {
+ _secondaryBindInfos = new List();
+ }
+ _secondaryBindInfos.Add(bindInfo);
+ }
+
+ public NonLazyBinder CopyIntoAllSubContainers()
+ {
+ SetInheritanceMethod(BindingInheritanceMethods.CopyIntoAll);
+ return this;
+ }
+
+ // Only copy the binding into children and not grandchildren
+ public NonLazyBinder CopyIntoDirectSubContainers()
+ {
+ SetInheritanceMethod(BindingInheritanceMethods.CopyDirectOnly);
+ return this;
+ }
+
+ // Do not apply the binding on the current container
+ public NonLazyBinder MoveIntoAllSubContainers()
+ {
+ SetInheritanceMethod(BindingInheritanceMethods.MoveIntoAll);
+ return this;
+ }
+
+ // Do not apply the binding on the current container
+ public NonLazyBinder MoveIntoDirectSubContainers()
+ {
+ SetInheritanceMethod(BindingInheritanceMethods.MoveDirectOnly);
+ return this;
+ }
+
+ void SetInheritanceMethod(BindingInheritanceMethods method)
+ {
+ BindInfo.BindingInheritanceMethod = method;
+
+ if (_secondaryBindInfos != null)
+ {
+ foreach (var secondaryBindInfo in _secondaryBindInfos)
+ {
+ secondaryBindInfo.BindingInheritanceMethod = method;
+ }
+ }
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs.meta
new file mode 100644
index 0000000..099b4cb
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/CopyNonLazyBinder.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6cf2e5d7a11cf6c418960ff59949b5fa
+timeCreated: 1483833202
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs
new file mode 100644
index 0000000..e47c270
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs
@@ -0,0 +1,24 @@
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder : ScopeConcreteIdArgConditionCopyNonLazyBinder
+ {
+ public DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder(
+ SubContainerCreatorBindInfo subContainerBindInfo, BindInfo bindInfo)
+ : base(bindInfo)
+ {
+ SubContainerCreatorBindInfo = subContainerBindInfo;
+ }
+
+ protected SubContainerCreatorBindInfo SubContainerCreatorBindInfo
+ {
+ get; private set;
+ }
+
+ public ScopeConcreteIdArgConditionCopyNonLazyBinder WithDefaultGameObjectParent(string defaultParentName)
+ {
+ SubContainerCreatorBindInfo.DefaultParentName = defaultParentName;
+ return this;
+ }
+ }
+}
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs.meta
new file mode 100644
index 0000000..e21fa65
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/DefaultParentScopeConcreteIdArgConditionCopyNonLazyBinder.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f6b4e164706b85c408cd7e8f28266747
+timeCreated: 1535254660
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory.meta
new file mode 100644
index 0000000..85d5ce2
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 580f48a64cf849041937c7ad570aaf89
+folderAsset: yes
+timeCreated: 1461708047
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder.meta
new file mode 100644
index 0000000..7b73054
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 3fd0e848e31df144fbbeab59a2c137e2
+folderAsset: yes
+timeCreated: 1528637818
+licenseType: Store
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs
new file mode 100644
index 0000000..70eaa44
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TParam1 param1, TParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4, TParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TParam1 param1, TParam2 param2, TParam3 param3, TParam4 param4, TParam5 param5, TParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs.meta
new file mode 100644
index 0000000..244958b
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder0.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: ca3197650e9628a45b99e79b8dea27d9
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs
new file mode 100644
index 0000000..480e4a4
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs.meta
new file mode 100644
index 0000000..4c7af67
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder1.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: a37e124df695f644e87579f08ea443f7
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs
new file mode 100644
index 0000000..d8d043f
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs.meta
new file mode 100644
index 0000000..c506e1c
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder10.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 614bb4e31afa5154487c94e128e9461a
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs
new file mode 100644
index 0000000..48b49b5
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs.meta
new file mode 100644
index 0000000..308748d
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder2.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 3b450191ad6422c4f841a99cdf3d108a
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs
new file mode 100644
index 0000000..f0f5b46
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs.meta
new file mode 100644
index 0000000..ef3e973
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder3.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 667d9c959f8ba004f86c8202d637f9ce
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs
new file mode 100644
index 0000000..eee66e6
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs.meta
new file mode 100644
index 0000000..c29c8a2
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder4.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: ce44f168dd48e1442b43a43c925abc47
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs
new file mode 100644
index 0000000..dbd7ffd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs.meta
new file mode 100644
index 0000000..25b31c4
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder5.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f3c4d5776729d2d4abae523dd6dce595
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs
new file mode 100644
index 0000000..304e9eb
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryArgumentsToChoiceBinder : FactoryToChoiceBinder
+ {
+ public FactoryArgumentsToChoiceBinder(
+ DiContainer bindContainer, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(bindContainer, bindInfo, factoryBindInfo)
+ {
+ }
+
+ // We use generics instead of params object[] so that we preserve type info
+ // So that you can for example pass in a variable that is null and the type info will
+ // still be used to map null on to the correct field
+ public FactoryToChoiceBinder WithFactoryArguments(T param)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(TFactoryParam1 param1, TFactoryParam2 param2)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(
+ TFactoryParam1 param1, TFactoryParam2 param2, TFactoryParam3 param3, TFactoryParam4 param4, TFactoryParam5 param5, TFactoryParam6 param6)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgListExplicit(param1, param2, param3, param4, param5, param6);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArguments(object[] args)
+ {
+ FactoryBindInfo.Arguments = InjectUtil.CreateArgList(args);
+ return this;
+ }
+
+ public FactoryToChoiceBinder WithFactoryArgumentsExplicit(IEnumerable extraArgs)
+ {
+ FactoryBindInfo.Arguments = extraArgs.ToList();
+ return this;
+ }
+ }
+}
+
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs.meta
new file mode 100644
index 0000000..2a5ee44
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryArgumentsToChoiceBinder/FactoryArgumentsToChoiceBinder6.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 22836272211e07a459544765e2e7c098
+timeCreated: 1528637818
+licenseType: Store
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder.meta b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder.meta
new file mode 100644
index 0000000..65655dd
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: aa754ab1fdfa8714fb6eddd17108e5c6
+folderAsset: yes
+timeCreated: 1461708047
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder/FactoryFromBinder0.cs b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder/FactoryFromBinder0.cs
new file mode 100644
index 0000000..28338a4
--- /dev/null
+++ b/UnityActionUpdaterService/Assets/Plugins/Zenject/Source/Binding/Binders/Factory/FactoryFromBinder/FactoryFromBinder0.cs
@@ -0,0 +1,182 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+#if !NOT_UNITY3D
+using UnityEngine;
+#endif
+using ModestTree;
+
+namespace Zenject
+{
+ [NoReflectionBaking]
+ public class FactoryFromBinder : FactoryFromBinderBase
+ {
+ public FactoryFromBinder(
+ DiContainer container, BindInfo bindInfo, FactoryBindInfo factoryBindInfo)
+ : base(container, typeof(TContract), bindInfo, factoryBindInfo)
+ {
+ }
+
+ public ConditionCopyNonLazyBinder FromResolveGetter(Func method)
+ {
+ return FromResolveGetter(null, method);
+ }
+
+ public ConditionCopyNonLazyBinder FromResolveGetter(
+ object subIdentifier, Func method)
+ {
+ return FromResolveGetter(subIdentifier, method, InjectSources.Any);
+ }
+
+ public ConditionCopyNonLazyBinder FromResolveGetter(
+ object subIdentifier, Func method, InjectSources source)
+ {
+ FactoryBindInfo.ProviderFunc =
+ (container) => new GetterProvider(subIdentifier, method, container, source, false);
+
+ return this;
+ }
+
+ public ConditionCopyNonLazyBinder FromMethod(Func method)
+ {
+ ProviderFunc =
+ (container) => new MethodProviderWithContainer(method);
+
+ return this;
+ }
+
+ // Shortcut for FromIFactory and also for backwards compatibility
+ public ArgConditionCopyNonLazyBinder FromFactory()
+ where TSubFactory : IFactory
+ {
+ return this.FromIFactory(x => x.To().AsCached());
+ }
+
+ public FactorySubContainerBinder FromSubContainerResolve()
+ {
+ return FromSubContainerResolve(null);
+ }
+
+ public FactorySubContainerBinder FromSubContainerResolve(object subIdentifier)
+ {
+ return new FactorySubContainerBinder(
+ BindContainer, BindInfo, FactoryBindInfo, subIdentifier);
+ }
+
+#if !NOT_UNITY3D
+
+ public ConditionCopyNonLazyBinder FromComponentInHierarchy(
+ bool includeInactive = true)
+ {
+ BindingUtil.AssertIsInterfaceOrComponent(ContractType);
+
+ return FromMethod(_ =>
+ {
+ var res = BindContainer.Resolve().GetRootGameObjects()
+ .Select(x => x.GetComponentInChildren(includeInactive))
+ .Where(x => x != null).FirstOrDefault();
+
+ Assert.IsNotNull(res,
+ "Could not find component '{0}' through FromComponentInHierarchy factory binding", typeof(TContract));
+
+ return res;
+ });
+ }
+#endif
+ }
+
+ // These methods have to be extension methods for the UWP build (with .NET backend) to work correctly
+ // When these are instance methods it takes a really long time then fails with StackOverflowException
+ public static class FactoryFromBinder0Extensions
+ {
+ public static ArgConditionCopyNonLazyBinder FromPoolableMemoryPool(
+ this FactoryFromBinder fromBinder,
+ Action> poolBindGenerator)
+ // Unfortunately we have to pass the same contract in again to satisfy the generic
+ // constraints below
+ where TContract : IPoolable
+ where TMemoryPool : MemoryPool
+ {
+ // Use a random ID so that our provider is the only one that can find it and so it doesn't
+ // conflict with anything else
+ var poolId = Guid.NewGuid();
+
+ // Important to use NoFlush otherwise the binding will be finalized early
+ var binder = fromBinder.BindContainer.BindMemoryPoolCustomInterfaceNoFlush().WithId(poolId);
+
+ // Always make it non lazy by default in case the user sets an InitialSize
+ binder.NonLazy();
+
+ poolBindGenerator(binder);
+
+ fromBinder.ProviderFunc =
+ (container) => { return new PoolableMemoryPoolProvider(container, poolId); };
+
+ return new ArgConditionCopyNonLazyBinder(fromBinder.BindInfo);
+ }
+
+ public static ArgConditionCopyNonLazyBinder FromPoolableMemoryPool(
+ this FactoryFromBinder fromBinder)
+ // Unfortunately we have to pass the same contract in again to satisfy the generic
+ // constraints below
+ where TContract : IPoolable
+ {
+ return fromBinder.FromPoolableMemoryPool(x => {});
+ }
+
+ public static ArgConditionCopyNonLazyBinder FromPoolableMemoryPool(
+ this FactoryFromBinder fromBinder,
+ Action> poolBindGenerator)
+ // Unfortunately we have to pass the same contract in again to satisfy the generic
+ // constraints below
+ where TContract : IPoolable
+ {
+ return fromBinder.FromPoolableMemoryPool>(poolBindGenerator);
+ }
+
+#if !NOT_UNITY3D
+ public static ArgConditionCopyNonLazyBinder FromMonoPoolableMemoryPool(
+ this FactoryFromBinder fromBinder)
+ // Unfortunately we have to pass the same contract in again to satisfy the generic
+ // constraints below
+ where TContract : Component, IPoolable
+ {
+ return fromBinder.FromMonoPoolableMemoryPool(x => {});
+ }
+
+ public static ArgConditionCopyNonLazyBinder FromMonoPoolableMemoryPool(
+ this FactoryFromBinder fromBinder,
+ Action> poolBindGenerator)
+ // Unfortunately we have to pass the same contract in again to satisfy the generic
+ // constraints below
+ where TContract : Component, IPoolable