diff --git a/.gitignore b/.gitignore index 153665c..a569340 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ # Asset meta data should only be ignored when the corresponding asset is also ignored !/[Aa]ssets/**/*.meta +# NuGet +/[Aa]ssets/Packages/ + # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* @@ -22,6 +25,7 @@ # Visual Studio cache directory .vs/ +.vscode/ # Gradle cache directory .gradle/ diff --git a/Assets/NuGet.config b/Assets/NuGet.config new file mode 100644 index 0000000..0c08388 --- /dev/null +++ b/Assets/NuGet.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/NuGet.config.meta b/Assets/NuGet.config.meta new file mode 100644 index 0000000..9920bb2 --- /dev/null +++ b/Assets/NuGet.config.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 5fcb44657516930458983ea8ec3d7e54 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages.meta b/Assets/Packages.meta new file mode 100644 index 0000000..a071bea --- /dev/null +++ b/Assets/Packages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f92b5df0512fc3d448105abf6192a1bc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/packages.config b/Assets/packages.config new file mode 100644 index 0000000..d602b5c --- /dev/null +++ b/Assets/packages.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/packages.config.meta b/Assets/packages.config.meta new file mode 100644 index 0000000..c572bb1 --- /dev/null +++ b/Assets/packages.config.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: f2cacee18db90d5428688b8eca3b08e2 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d013ff..7f33e96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.1.0] - 2024-11-11 + +### Changed + +- Updated from UniRx to R3 +- Changed code to work for R3 +- README update for R3 + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Controller/FirstPersonController.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Controller/FirstPersonController.cs index 8bd2bbf..04c78a9 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Controller/FirstPersonController.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Controller/FirstPersonController.cs @@ -1,6 +1,5 @@ -using System; -using UniRx; -using UniRx.Triggers; +using R3; +using R3.Triggers; using UnityEngine; namespace DyrdaDev.FirstPersonController @@ -13,19 +12,19 @@ public class FirstPersonController : MonoBehaviour, ICharacterSignals { #region Character Signals - public IObservable Moved => _moved; + public Observable Moved => _moved; private Subject _moved; public ReactiveProperty IsRunning => _isRunning; private ReactiveProperty _isRunning; - public IObservable Landed => _landed; + public Observable Landed => _landed; private Subject _landed; - public IObservable Jumped => _jumped; + public Observable Jumped => _jumped; private Subject _jumped; - public IObservable Stepped => _stepped; + public Observable Stepped => _stepped; private Subject _stepped; #endregion @@ -114,7 +113,7 @@ private void HandleLocomotion() } // Horizontal movement: - var currentSpeed = firstPersonControllerInput.Run.Value ? runSpeed : walkSpeed; + var currentSpeed = firstPersonControllerInput.Run.CurrentValue ? runSpeed : walkSpeed; var horizontalVelocity = i.Move * currentSpeed; //Calculate velocity (direction * speed). // Combine horizontal and vertical movement. @@ -146,7 +145,7 @@ private void HandleLocomotionCharacterSignalsIteration(bool wasGrounded, bool is { // The character is running if the input is active and // the character is actually moving on the ground - tempIsRunning = firstPersonControllerInput.Run.Value; + tempIsRunning = firstPersonControllerInput.Run.CurrentValue; } } diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/DyrdaDev.FirstPersonController.Runtime.asmdef b/Packages/dev.dyrda.first-person-controller/Runtime/DyrdaDev.FirstPersonController.Runtime.asmdef index 3a8aece..badc338 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/DyrdaDev.FirstPersonController.Runtime.asmdef +++ b/Packages/dev.dyrda.first-person-controller/Runtime/DyrdaDev.FirstPersonController.Runtime.asmdef @@ -2,8 +2,9 @@ "name": "DyrdaDev.FirstPersonController.Runtime", "rootNamespace": "", "references": [ - "UniRx", - "Unity.InputSystem" + "R3", + "Unity.InputSystem", + "R3.Unity" ], "includePlatforms": [], "excludePlatforms": [], @@ -14,4 +15,4 @@ "defineConstraints": [], "versionDefines": [], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/CharacterMovementAudio.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/CharacterMovementAudio.cs index 9bde806..bf468a4 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/CharacterMovementAudio.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/CharacterMovementAudio.cs @@ -1,4 +1,4 @@ -using UniRx; +using R3; using UnityEngine; namespace DyrdaDev.FirstPersonController diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/HeadBob.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/HeadBob.cs index 72e8b3b..1a20b4d 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/HeadBob.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/HeadBob.cs @@ -1,4 +1,4 @@ -using UniRx; +using R3; using UnityEngine; namespace DyrdaDev.FirstPersonController diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/ICharacterSignals.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/ICharacterSignals.cs index 70d6099..13fe5af 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Effects/ICharacterSignals.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Effects/ICharacterSignals.cs @@ -1,5 +1,5 @@ using System; -using UniRx; +using R3; using UnityEngine; namespace DyrdaDev.FirstPersonController @@ -19,21 +19,21 @@ public interface ICharacterSignals /// /// A stream with the vectors the character has moved. /// - IObservable Moved { get; } + Observable Moved { get; } /// /// A stream with landed events. Triggered when the character switches form airborne to grounded. /// - IObservable Landed { get; } + Observable Landed { get; } /// /// A stream with jumped events. Triggered when the character starts to jump. /// - IObservable Jumped { get; } + Observable Jumped { get; } /// /// A stream with stepped events. Triggered when the camera has moved one stride length. /// - IObservable Stepped { get; } + Observable Stepped { get; } } } \ No newline at end of file diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Input/FirstPersonControllerInput.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Input/FirstPersonControllerInput.cs index 300e274..b24dd62 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Input/FirstPersonControllerInput.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Input/FirstPersonControllerInput.cs @@ -1,5 +1,5 @@ using System; -using UniRx; +using R3; using UnityEngine; namespace DyrdaDev.FirstPersonController @@ -10,13 +10,13 @@ public abstract class FirstPersonControllerInput : MonoBehaviour /// Move axes in WASD / D-Pad style. /// Interaction type: continuous axes. /// - public abstract IObservable Move { get; } + public abstract Observable Move { get; } /// /// Jump button. /// Interaction type: Trigger. /// - public abstract IObservable Jump { get; } + public abstract Observable Jump { get; } /// /// Run button. @@ -28,6 +28,6 @@ public abstract class FirstPersonControllerInput : MonoBehaviour /// Look axes following the free look (mouse look) pattern. /// Interaction type: continuous axes. /// - public abstract IObservable Look { get; } + public abstract Observable Look { get; } } } \ No newline at end of file diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.cs index a1a71c2..f3b9397 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.cs @@ -1,4 +1,13 @@ -// GENERATED AUTOMATICALLY FROM 'Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.inputactions' +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.7.0 +// from Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/FirstPersonInputAction.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ using System; using System.Collections; @@ -8,7 +17,7 @@ namespace DyrdaDev.FirstPersonController { - public class @FirstPersonInputAction : IInputActionCollection, IDisposable + public partial class @FirstPersonInputAction: IInputActionCollection2, IDisposable { public InputActionAsset asset { get; } public @FirstPersonInputAction() @@ -26,7 +35,8 @@ public @FirstPersonInputAction() ""id"": ""a02c7e65-907b-4355-b47c-af824ac533ef"", ""expectedControlType"": ""Vector2"", ""processors"": """", - ""interactions"": """" + ""interactions"": """", + ""initialStateCheck"": true }, { ""name"": ""Look"", @@ -34,7 +44,8 @@ public @FirstPersonInputAction() ""id"": ""826f13c1-d6be-40e8-9748-ed4418144c3e"", ""expectedControlType"": ""Vector2"", ""processors"": """", - ""interactions"": """" + ""interactions"": """", + ""initialStateCheck"": true }, { ""name"": ""Jump"", @@ -42,7 +53,8 @@ public @FirstPersonInputAction() ""id"": ""5f89c388-a1bd-4f57-af51-f686858f7e99"", ""expectedControlType"": ""Button"", ""processors"": """", - ""interactions"": """" + ""interactions"": """", + ""initialStateCheck"": false }, { ""name"": ""Run"", @@ -50,7 +62,8 @@ public @FirstPersonInputAction() ""id"": ""397fae28-9f60-4931-a66d-8f18c4b9dbe6"", ""expectedControlType"": ""Button"", ""processors"": """", - ""interactions"": """" + ""interactions"": """", + ""initialStateCheck"": false } ], ""bindings"": [ @@ -326,9 +339,21 @@ public void Disable() asset.Disable(); } + public IEnumerable bindings => asset.bindings; + + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + // Character private readonly InputActionMap m_Character; - private ICharacterActions m_CharacterActionsCallbackInterface; + private List m_CharacterActionsCallbackInterfaces = new List(); private readonly InputAction m_Character_Move; private readonly InputAction m_Character_Look; private readonly InputAction m_Character_Jump; @@ -346,39 +371,52 @@ public struct CharacterActions public void Disable() { Get().Disable(); } public bool enabled => Get().enabled; public static implicit operator InputActionMap(CharacterActions set) { return set.Get(); } + public void AddCallbacks(ICharacterActions instance) + { + if (instance == null || m_Wrapper.m_CharacterActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_CharacterActionsCallbackInterfaces.Add(instance); + @Move.started += instance.OnMove; + @Move.performed += instance.OnMove; + @Move.canceled += instance.OnMove; + @Look.started += instance.OnLook; + @Look.performed += instance.OnLook; + @Look.canceled += instance.OnLook; + @Jump.started += instance.OnJump; + @Jump.performed += instance.OnJump; + @Jump.canceled += instance.OnJump; + @Run.started += instance.OnRun; + @Run.performed += instance.OnRun; + @Run.canceled += instance.OnRun; + } + + private void UnregisterCallbacks(ICharacterActions instance) + { + @Move.started -= instance.OnMove; + @Move.performed -= instance.OnMove; + @Move.canceled -= instance.OnMove; + @Look.started -= instance.OnLook; + @Look.performed -= instance.OnLook; + @Look.canceled -= instance.OnLook; + @Jump.started -= instance.OnJump; + @Jump.performed -= instance.OnJump; + @Jump.canceled -= instance.OnJump; + @Run.started -= instance.OnRun; + @Run.performed -= instance.OnRun; + @Run.canceled -= instance.OnRun; + } + + public void RemoveCallbacks(ICharacterActions instance) + { + if (m_Wrapper.m_CharacterActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + public void SetCallbacks(ICharacterActions instance) { - if (m_Wrapper.m_CharacterActionsCallbackInterface != null) - { - @Move.started -= m_Wrapper.m_CharacterActionsCallbackInterface.OnMove; - @Move.performed -= m_Wrapper.m_CharacterActionsCallbackInterface.OnMove; - @Move.canceled -= m_Wrapper.m_CharacterActionsCallbackInterface.OnMove; - @Look.started -= m_Wrapper.m_CharacterActionsCallbackInterface.OnLook; - @Look.performed -= m_Wrapper.m_CharacterActionsCallbackInterface.OnLook; - @Look.canceled -= m_Wrapper.m_CharacterActionsCallbackInterface.OnLook; - @Jump.started -= m_Wrapper.m_CharacterActionsCallbackInterface.OnJump; - @Jump.performed -= m_Wrapper.m_CharacterActionsCallbackInterface.OnJump; - @Jump.canceled -= m_Wrapper.m_CharacterActionsCallbackInterface.OnJump; - @Run.started -= m_Wrapper.m_CharacterActionsCallbackInterface.OnRun; - @Run.performed -= m_Wrapper.m_CharacterActionsCallbackInterface.OnRun; - @Run.canceled -= m_Wrapper.m_CharacterActionsCallbackInterface.OnRun; - } - m_Wrapper.m_CharacterActionsCallbackInterface = instance; - if (instance != null) - { - @Move.started += instance.OnMove; - @Move.performed += instance.OnMove; - @Move.canceled += instance.OnMove; - @Look.started += instance.OnLook; - @Look.performed += instance.OnLook; - @Look.canceled += instance.OnLook; - @Jump.started += instance.OnJump; - @Jump.performed += instance.OnJump; - @Jump.canceled += instance.OnJump; - @Run.started += instance.OnRun; - @Run.performed += instance.OnRun; - @Run.canceled += instance.OnRun; - } + foreach (var item in m_Wrapper.m_CharacterActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_CharacterActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); } } public CharacterActions @Character => new CharacterActions(this); diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/InputActionBasedFirstPersonControllerInput.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/InputActionBasedFirstPersonControllerInput.cs index 5b725c9..fdcaee8 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/InputActionBasedFirstPersonControllerInput.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Input/PlayerInput/InputActionBasedFirstPersonControllerInput.cs @@ -1,6 +1,6 @@ using System; -using UniRx; -using UniRx.Triggers; +using R3; +using R3.Triggers; using UnityEngine; namespace DyrdaDev.FirstPersonController @@ -9,17 +9,17 @@ public class InputActionBasedFirstPersonControllerInput : FirstPersonControllerI { #region Controller Input Fields - public override IObservable Move => _move; - private IObservable _move; + public override Observable Move => _move; + private Observable _move; - public override IObservable Jump => _jump; + public override Observable Jump => _jump; private Subject _jump; public override ReadOnlyReactiveProperty Run => _run; private ReadOnlyReactiveProperty _run; - public override IObservable Look => _look; - private IObservable _look; + public override Observable Look => _look; + private Observable _look; #endregion diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/LatchObservables.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/LatchObservables.cs index 912915d..2a295b4 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/LatchObservables.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/LatchObservables.cs @@ -1,14 +1,14 @@ using System; using System.Diagnostics; -using UniRx; -using UniRx.Triggers; +using R3; +using R3.Triggers; using Random = UnityEngine.Random; namespace DyrdaDev.FirstPersonController { public static class LatchObservables { - public static IObservable Latch(IObservable tick, IObservable latchTrue, bool initialValue) + public static Observable Latch(Observable tick, Observable latchTrue, bool initialValue) { // This custom observable is based on the "ReactiveX and Unity" tutorial series by Tyler Coles. // https://ornithoptergames.com/reactivex-and-unity3d-part-3/ @@ -18,21 +18,21 @@ public static IObservable Latch(IObservable tick, IObservable var state = initialValue; // Whenever latch fires, state is set to true. - var latchSubscribtion = latchTrue.Subscribe(_ => state = true); + var latchSubscription = latchTrue.Subscribe(_ => state = true); // Whenever tick fires, emit the current value and reset state. - var tickSubscribtion = tick.Subscribe(_ => + var tickSubscription = tick.Subscribe(_ => { observer.OnNext(state); state = false; }, - observer.OnError, + observer.OnErrorResume, observer.OnCompleted); return Disposable.Create(() => { - latchSubscribtion.Dispose(); - tickSubscribtion.Dispose(); + latchSubscription.Dispose(); + tickSubscription.Dispose(); }); }); } diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/SelectItemObservables.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/SelectItemObservables.cs index 81e2689..0b8aa54 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/SelectItemObservables.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/CustomObersvables/SelectItemObservables.cs @@ -1,7 +1,7 @@ using System; using System.Diagnostics; -using UniRx; -using UniRx.Triggers; +using R3; +using R3.Triggers; using Random = UnityEngine.Random; namespace DyrdaDev.FirstPersonController @@ -15,7 +15,7 @@ public static class SelectItemObservables /// /// /// - public static IObservable SelectRandom(this IObservable eventObs, T[] items) + public static Observable SelectRandom(this Observable eventObs, T[] items) { if (items.Length == 0) { @@ -29,7 +29,7 @@ public static IObservable SelectRandom(this IObservable eventObs, T[ // Select random item and emit it. observer.OnNext(items[Random.Range(0, items.Length)]); }, - observer.OnError, + observer.OnErrorResume, observer.OnCompleted); return Disposable.Create(() => sub.Dispose()); @@ -43,7 +43,7 @@ public static IObservable SelectRandom(this IObservable eventObs, T[ /// /// /// - public static IObservable SelectAlternating(this IObservable eventObs, T[] items) + public static Observable SelectAlternating(this Observable eventObs, T[] items) { switch (items.Length) { @@ -68,7 +68,7 @@ public static IObservable SelectAlternating(this IObservable eventOb // Emit the selected value. observer.OnNext(items[i]); }, - observer.OnError, + observer.OnErrorResume, observer.OnCompleted); return Disposable.Create(() => sub.Dispose()); diff --git a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/RotationTools.cs b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/RotationTools.cs index fa2eaab..bc090da 100644 --- a/Packages/dev.dyrda.first-person-controller/Runtime/Utility/RotationTools.cs +++ b/Packages/dev.dyrda.first-person-controller/Runtime/Utility/RotationTools.cs @@ -4,21 +4,21 @@ namespace DyrdaDev.FirstPersonController { public static class RotationTools { - public static Quaternion ClampRotationAroundXAxis(Quaternion q, float minAngle, float maxAngle) - { - // You can find an alternative implementation in the MouseLook script of the unity standard assets. - // Or check out https://ornithoptergames.com/reactivex-and-unity3d-part-3/ + // Ripped straight out of the Standard Assets MouseLook script. (This should really be a standard function...) + public static Quaternion ClampRotationAroundXAxis(Quaternion q, float minAngle, float maxAngle) { + q.x /= q.w; + q.y /= q.w; + q.z /= q.w; + q.w = 1.0f; - var euler = q.eulerAngles; + float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan(q.x); - if (euler.x > 180) - { - euler.x -= 360; - } + angleX = Mathf.Clamp(angleX, minAngle, maxAngle); - euler.x = Mathf.Clamp(euler.x, minAngle, maxAngle); + q.x = Mathf.Tan(0.5f * Mathf.Deg2Rad * angleX); + + return q; + } - return Quaternion.Euler(euler); - } } } \ No newline at end of file diff --git a/Packages/dev.dyrda.first-person-controller/package.json b/Packages/dev.dyrda.first-person-controller/package.json index 23ac6c1..5265a9b 100644 --- a/Packages/dev.dyrda.first-person-controller/package.json +++ b/Packages/dev.dyrda.first-person-controller/package.json @@ -1,6 +1,6 @@ { "name": "dev.dyrda.first-person-controller", - "version": "0.0.2", + "version": "0.1.0", "displayName": "First Person Controller", "keywords": [], "author": { diff --git a/Packages/manifest.json b/Packages/manifest.json index e8ef263..c9d31a8 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,13 +1,16 @@ { "dependencies": { - "com.unity.collab-proxy": "1.3.9", - "com.unity.ide.rider": "2.0.7", - "com.unity.ide.visualstudio": "2.0.7", - "com.unity.ide.vscode": "1.2.3", - "com.unity.probuilder": "4.2.3", - "com.unity.test-framework": "1.1.24", - "com.unity.textmeshpro": "3.0.1", - "com.unity.timeline": "1.4.7", + "com.cysharp.r3": "https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity#1.2.9", + "com.github-glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity", + "com.unity.ai.navigation": "1.1.5", + "com.unity.collab-proxy": "2.4.4", + "com.unity.ide.rider": "3.0.31", + "com.unity.ide.visualstudio": "2.0.22", + "com.unity.ide.vscode": "1.2.5", + "com.unity.probuilder": "5.2.3", + "com.unity.test-framework": "1.1.33", + "com.unity.textmeshpro": "3.0.6", + "com.unity.timeline": "1.7.6", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", @@ -39,7 +42,6 @@ "com.unity.modules.video": "1.0.0", "com.unity.modules.vr": "1.0.0", "com.unity.modules.wind": "1.0.0", - "com.unity.modules.xr": "1.0.0", - "com.neuecc.unirx": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts" + "com.unity.modules.xr": "1.0.0" } } diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 72d587e..78174c7 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,14 +1,32 @@ { "dependencies": { - "com.neuecc.unirx": { - "version": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", + "com.cysharp.r3": { + "version": "https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity#1.2.9", + "depth": 0, + "source": "git", + "dependencies": { + "com.unity.modules.imgui": "1.0.0" + }, + "hash": "9b18209448c5e1f4572a4191b1f4f530a1d26c01" + }, + "com.github-glitchenzo.nugetforunity": { + "version": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity", "depth": 0, "source": "git", "dependencies": {}, - "hash": "284d5c50d3f1ddd9fa7df3d382ea904732a9c2ff" + "hash": "0d0e4af9c79d63224ae26f1a3e822300b1475da7" + }, + "com.unity.ai.navigation": { + "version": "1.1.5", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.ai": "1.0.0" + }, + "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "1.3.9", + "version": "2.4.4", "depth": 0, "source": "registry", "dependencies": {}, @@ -22,16 +40,16 @@ "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "2.0.7", + "version": "3.0.31", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.1" + "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.7", + "version": "2.0.22", "depth": 0, "source": "registry", "dependencies": { @@ -40,37 +58,41 @@ "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { - "version": "1.2.3", + "version": "1.2.5", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.inputsystem": { - "version": "1.0.1", + "version": "1.7.0", "depth": 1, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, "url": "https://packages.unity.com" }, "com.unity.probuilder": { - "version": "4.2.3", + "version": "5.2.3", "depth": 0, "source": "registry", "dependencies": { - "com.unity.settings-manager": "1.0.0" + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.settings-manager": "1.0.3" }, "url": "https://packages.unity.com" }, "com.unity.settings-manager": { - "version": "1.0.0", + "version": "2.0.1", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.test-framework": { - "version": "1.1.24", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { @@ -81,7 +103,7 @@ "url": "https://packages.unity.com" }, "com.unity.textmeshpro": { - "version": "3.0.1", + "version": "3.0.6", "depth": 0, "source": "registry", "dependencies": { @@ -90,13 +112,13 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.4.7", + "version": "1.7.6", "depth": 0, "source": "registry", "dependencies": { + "com.unity.modules.audio": "1.0.0", "com.unity.modules.director": "1.0.0", "com.unity.modules.animation": "1.0.0", - "com.unity.modules.audio": "1.0.0", "com.unity.modules.particlesystem": "1.0.0" }, "url": "https://packages.unity.com" @@ -250,17 +272,6 @@ "version": "1.0.0", "depth": 0, "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.uielementsnative": "1.0.0" - } - }, - "com.unity.modules.uielementsnative": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", "dependencies": { "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0", diff --git a/ProjectSettings/MemorySettings.asset b/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/ProjectSettings/Packages/com.unity.probuilder/Settings.json b/ProjectSettings/Packages/com.unity.probuilder/Settings.json index 55add6c..2ddc51c 100644 --- a/ProjectSettings/Packages/com.unity.probuilder/Settings.json +++ b/ProjectSettings/Packages/com.unity.probuilder/Settings.json @@ -1,6 +1,4 @@ { - "m_Name": "Settings", - "m_Path": "ProjectSettings/Packages/com.unity.probuilder/Settings.json", "m_Dictionary": { "m_DictionaryValues": [ { @@ -21,12 +19,12 @@ { "type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "key": "about.identifier", - "value": "{\"m_Value\":{\"m_Major\":4,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" + "value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" }, { "type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "key": "preferences.version", - "value": "{\"m_Value\":{\"m_Major\":4,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" + "value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" }, { "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", @@ -42,6 +40,11 @@ "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "key": "editor.stripProBuilderScriptsOnBuild", "value": "{\"m_Value\":true}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "experimental.enabled", + "value": "{\"m_Value\":false}" } ] } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index e5b7f25..ed25584 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 22 + serializedVersion: 26 productGUID: 3f8e53e0d7a697648b651232b856e02e AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -48,14 +48,16 @@ PlayerSettings: defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 + unsupportedMSAAFallback: 0 + m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 + numberOfMipsStrippedPerMipmapLimitGroup: {} m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 - iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 @@ -68,6 +70,13 @@ PlayerSettings: androidRenderOutsideSafeArea: 1 androidUseSwappy: 0 androidBlitType: 0 + androidResizableWindow: 0 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + androidAutoRotationBehavior: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 @@ -79,6 +88,7 @@ PlayerSettings: hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 + dedicatedServerOptimizations: 0 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 @@ -113,20 +123,22 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + switchGpuScratchPoolGranularity: 2097152 + switchAllowGpuScratchShrinking: 0 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 + switchNVNGraphicsFirmwareMemory: 32 + switchMaxWorkerMultiple: 8 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 + vulkanEnableCommandBufferRecycling: 1 + loadStoreDebugModeEnabled: 0 + visionOSBundleVersion: 1.0 + tvOSBundleVersion: 1.0 bundleVersion: 0.1 preloadedAssets: - {fileID: 0} @@ -140,21 +152,25 @@ PlayerSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 + enableOpenGLProfilerGPURecorders: 1 + allowHDRDisplaySupport: 0 useHDRDisplay: 0 - D3DHDRBitDepth: 0 + hdrBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 + resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: {} buildNumber: Standalone: 0 + VisionOS: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 19 + AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: @@ -167,12 +183,15 @@ PlayerSettings: APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 + strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 11.0 + iOSTargetOSVersionString: 12.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 11.0 + tvOSTargetOSVersionString: 12.0 + VisionOSSdkVersion: 0 + VisionOSTargetOSVersionString: 1.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 @@ -210,17 +229,21 @@ PlayerSettings: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] + macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 + metalCompileShaderBinary: 0 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: + VisionOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 + VisionOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 @@ -235,12 +258,15 @@ PlayerSettings: useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 + useCustomGradleSettingsTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 1 + AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: AndroidKeyaliasName: + AndroidEnableArmv9SecurityFeatures: 0 AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 @@ -253,13 +279,105 @@ PlayerSettings: height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 - AndroidMinifyWithR8: 0 + chromeosInputEmulation: 1 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 @@ -276,6 +394,7 @@ PlayerSettings: - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 + m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 @@ -311,7 +430,7 @@ PlayerSettings: m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 150000000b000000 - m_Automatic: 0 + m_Automatic: 1 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 @@ -327,6 +446,8 @@ PlayerSettings: m_Devices: - Oculus - OpenVR + m_DefaultShaderChunkSizeInMB: 16 + m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 @@ -336,8 +457,11 @@ PlayerSettings: iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupHDRCubemapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: [] + m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -347,6 +471,8 @@ PlayerSettings: cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: + bluetoothUsageDescription: + macOSTargetOSVersion: 10.13.0 switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 @@ -354,9 +480,11 @@ PlayerSettings: switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 - switchUseGOLDLinker: 0 + switchEnableFileSystemTrace: 0 + switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: + switchCompilerFlags: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: @@ -430,7 +558,6 @@ PlayerSettings: switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 - switchTouchScreenUsage: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: @@ -472,6 +599,7 @@ PlayerSettings: switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 + switchEnableTouchScreen: 1 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 @@ -482,8 +610,12 @@ PlayerSettings: switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 - switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 + switchUseLegacyFmodPriorities: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: @@ -554,6 +686,7 @@ PlayerSettings: ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] @@ -566,6 +699,7 @@ PlayerSettings: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 + webGLShowDiagnostics: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: @@ -578,22 +712,41 @@ PlayerSettings: webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 + webGLInitialMemorySize: 32 + webGLMaximumMemorySize: 2048 + webGLMemoryGrowthMode: 2 + webGLMemoryLinearGrowthStep: 16 + webGLMemoryGeometricGrowthStep: 0.2 + webGLMemoryGeometricGrowthCap: 96 + webGLPowerPreference: 2 scriptingDefineSymbols: {} additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} - managedStrippingLevel: {} + il2cppCodeGeneration: {} + managedStrippingLevel: + EmbeddedLinux: 1 + GameCoreScarlett: 1 + GameCoreXboxOne: 1 + Nintendo Switch: 1 + PS4: 1 + PS5: 1 + QNX: 1 + Stadia: 1 + VisionOS: 1 + WebGL: 1 + Windows Store Apps: 1 + XboxOne: 1 + iPhone: 1 + tvOS: 1 incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 - useReferenceAssemblies: 1 - enableRoslynAnalyzers: 1 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 - assemblyVersionValidation: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: {} m_RenderingPath: 1 @@ -620,11 +773,13 @@ PlayerSettings: metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 + syncCapabilities: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: + vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: @@ -666,8 +821,14 @@ PlayerSettings: luminVersion: m_VersionCode: 1 m_VersionName: + hmiPlayerDataPath: + hmiForceSRGBBlit: 1 + embeddedLinuxEnableGamepadInput: 1 + hmiLogStartupTiming: 0 + hmiCpuConfiguration: apiCompatibilityLevel: 6 activeInputHandler: 1 + windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] @@ -675,4 +836,7 @@ PlayerSettings: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 0 + hmiLoadingImage: {fileID: 0} + platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 + insecureHttpOption: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index c053a43..224decf 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.3.4f1 -m_EditorVersionWithRevision: 2020.3.4f1 (0abb6314276a) +m_EditorVersion: 2022.3.20f1 +m_EditorVersionWithRevision: 2022.3.20f1 (61c2feb0970d) diff --git a/README.md b/README.md index 70445d6..b805ccd 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,8 @@ This package includes a First-Person Controller for Unity. Check out the [Featur ## Quick Start -1. **Install the First Person Controller:** Install this package as described [below](#install-the-package). -2. **Install UniRx:** The package depends on [UniRx](https://github.com/neuecc/UniRx). Unfortunately, this dependency cannot be included automatically; the reason is described below in the ["Special Dependencies"](#unirx) section. You have to include UniRx in your project. UniRx is available [as UPM package](https://github.com/neuecc/UniRx#upm-package) or you can import it [from the Asset Store](https://assetstore.unity.com/packages/tools/integration/unirx-reactive-extensions-for-unity-17276). +1. **Install R3:** The package depends on [R3](https://github.com/Cysharp/R3). Unfortunately, this dependency cannot be included automatically; the reason is described below in the ["Special Dependencies"](#unirx) section. You have to include R3 in your project. An installation guide is available [here](https://github.com/Cysharp/R3#unity). +2. **Install the First Person Controller:** Install this package as described [below](#install-the-package). 3. **Update to Unity's new Input System** This package uses Unity's [Input System](https://docs.unity3d.com/2020.2/Documentation/Manual/com.unity.inputsystem.html) package. When asked from Unity, update to Unity's new Input System. Alternatively, you can implement your own ```FirstPersonControllerInput``` class and ignore the existing PlayerInput folder. 4. **Explore your scene:** Add the "FirstPersonPlayer" prefab from the package to your scene. Now you can explore your scene with the First-Person Controller. @@ -50,18 +50,20 @@ I recommend **installing this package from a Git URL using the Package Manager w 1. Open the Package Manager window in your Unity editor (Window ➜ Package Manager) 2. Click "+" in the upper left corner ➜ "Add package from git URL" -3. Enter the Git URL of the latest release: ```https://github.com/dyrdadev/first-person-controller-for-unity.git#0.0.4``` and click "Add" +3. Enter the Git URL of the latest release: ```https://github.com/dyrdadev/first-person-controller-for-unity.git#0.1.0``` and click "Add" > You can find more information [here](https://docs.unity3d.com/Manual/upm-ui-giturl.html). ## Special Dependencies -## UniRx +## R3 -The controller depends on [UniRx](https://github.com/neuecc/UniRx). UniRx is the implementation of [ReactiveX](http://reactivex.io/) for Unity. Unfortunately, it is not possible to add it as a dependency because Unity doesn’t support Git URLs for indirect dependencies. UniRx has to be installed manually in your project that uses the First Person Controller. UniRx is available [as UPM package](https://github.com/neuecc/UniRx#upm-package) or you can import it [from the Asset Store](https://assetstore.unity.com/packages/tools/integration/unirx-reactive-extensions-for-unity-17276). +The controller depends on [R3](https://github.com/Cysharp/R3). R3 is the implementation of [ReactiveX](http://reactivex.io/) for Unity. Unfortunately, it is not possible to add it as a dependency because Unity doesn’t support Git URLs for indirect dependencies. R3 has to be installed manually in your project that uses the First Person Controller. An installation guide is available [here](https://github.com/Cysharp/R3#unity). -If you want to learn UniRx to extend the controller or use it for other components, I recommend the tutorial series ["ReactiveX and Unity3D"](https://javadocmd.com/blog/reactivex-unity3d-part-1/) by Tyler Coles. Also check out the official material of [UniRx](https://github.com/neuecc/UniRx) and [ReactiveX](http://reactivex.io/). +If you want to learn reactive programming in games to extend the controller or use it for other components, I recommend the tutorial series ["ReactiveX and Unity3D"](https://javadocmd.com/blog/reactivex-unity3d-part-1/) by Tyler Coles (Implemented with UniRx). Also check out the official material of [R3](https://github.com/Cysharp/R3) and [ReactiveX](http://reactivex.io/). + +> **_NOTE:_** The tutorial series by Tyler Coles is about the predecessor UniRx, not R3. However, much of the syntax has remained between the versions, with the biggest change being the change from `IObserver`/`IObservable` to the classes provided by R3 `Observer`/`Observable`, respectively. ## Input System Package @@ -96,7 +98,7 @@ This project was inspired by the tutorial series ["ReactiveX and Unity3D"](https ## Support & Contribute -This project was created by [Daniel Dyrda](https://dyrda.page). +This project was created by [Daniel Dyrda](https://dyrda.page) and migrated to R3 by Martin Schacherbauer. > Daniel: _If you want to support me and my projects, you can follow me on [GitHub (dyrdadev)](https://github.com/dyrdadev) and [Mastodon](https://dyrda.page/contact). Just come by and say hello, I would love to hear how you are using the project._