diff --git a/Assets/Input/PlayerTouchActions.inputactions b/Assets/Input/PlayerTouchActions.inputactions new file mode 100644 index 00000000..d8ad8093 --- /dev/null +++ b/Assets/Input/PlayerTouchActions.inputactions @@ -0,0 +1,55 @@ +{ + "version": 1, + "name": "PlayerTouchActions", + "maps": [ + { + "name": "DefaultActionMap", + "id": "53d55b3c-f7c2-4706-a857-c615ecb16ff7", + "actions": [ + { + "name": "TouchPosition", + "type": "Value", + "id": "f615672c-a395-4335-826c-d14ae764c4b5", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "TouchPress", + "type": "Button", + "id": "a77a5b0d-26e8-4b6c-b23b-828c50b3108f", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "94ea85eb-4b37-460d-8b4d-518d80e63349", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "", + "action": "TouchPosition", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f3dcd77f-15e5-4621-af67-001e6b08e3e6", + "path": "/Press", + "interactions": "", + "processors": "", + "groups": "", + "action": "TouchPress", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [] +} \ No newline at end of file diff --git a/Assets/Scenes/AppleHillsOverwold.unity b/Assets/Scenes/AppleHillsOverwold.unity index 2e2bee04..6e9d90a0 100644 --- a/Assets/Scenes/AppleHillsOverwold.unity +++ b/Assets/Scenes/AppleHillsOverwold.unity @@ -119,6 +119,80 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &954512633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 954512636} + - component: {fileID: 954512635} + - component: {fileID: 954512634} + m_Layer: 0 + m_Name: InputManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &954512634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 954512633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actions: {fileID: -944628639613478452, guid: 8c9d13383e51cd0459cddd33020db763, type: 3} + m_NotificationBehavior: 3 + m_DeviceLostEvent: + m_PersistentCalls: + m_Calls: [] + m_DeviceRegainedEvent: + m_PersistentCalls: + m_Calls: [] + m_ControlsChangedEvent: + m_PersistentCalls: + m_Calls: [] + m_ActionEvents: [] + m_NeverAutoSwitchControlSchemes: 0 + m_DefaultControlScheme: + m_DefaultActionMap: DefaultActionMap + m_SplitScreenIndex: -1 + m_Camera: {fileID: 0} +--- !u!114 &954512635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 954512633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eaca18daca6d4bfd8026afb6dd5f8c61, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &954512636 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 954512633} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1728894744 GameObject: m_ObjectHideFlags: 0 @@ -22103,3 +22177,4 @@ SceneRoots: - {fileID: 1741016590} - {fileID: 1728894746} - {fileID: 8865498003578620591} + - {fileID: 954512636} diff --git a/Assets/Scripts/ITouchInputConsumer.cs b/Assets/Scripts/ITouchInputConsumer.cs new file mode 100644 index 00000000..9595c4b3 --- /dev/null +++ b/Assets/Scripts/ITouchInputConsumer.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +public interface ITouchInputConsumer +{ + void OnTouchPress(Vector2 screenPosition); + void OnTouchPosition(Vector2 screenPosition); +} + diff --git a/Assets/Scripts/InputManager.cs b/Assets/Scripts/InputManager.cs new file mode 100644 index 00000000..dbf96d55 --- /dev/null +++ b/Assets/Scripts/InputManager.cs @@ -0,0 +1,76 @@ +using UnityEngine; +using UnityEngine.InputSystem; +using System; + +public class InputManager : MonoBehaviour +{ + public static InputManager Instance { get; private set; } + private PlayerInput playerInput; + private InputAction touchPressAction; + private InputAction touchPositionAction; + private ITouchInputConsumer defaultConsumer; + + void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + Instance = this; + DontDestroyOnLoad(gameObject); + playerInput = GetComponent(); + if (playerInput == null) + { + Debug.LogError("InputManager requires a PlayerInput component attached to the same GameObject."); + return; + } + // Find actions by name in the assigned action map + touchPressAction = playerInput.actions.FindAction("TouchPress", false); + touchPositionAction = playerInput.actions.FindAction("TouchPosition", false); + } + + void OnEnable() + { + if (touchPressAction != null) + touchPressAction.performed += OnTouchPressPerformed; + if (touchPositionAction != null) + touchPositionAction.performed += OnTouchPositionPerformed; + } + + void OnDisable() + { + if (touchPressAction != null) + touchPressAction.performed -= OnTouchPressPerformed; + if (touchPositionAction != null) + touchPositionAction.performed -= OnTouchPositionPerformed; + } + + public void SetDefaultConsumer(ITouchInputConsumer consumer) + { + defaultConsumer = consumer; + } + + private void OnTouchPressPerformed(InputAction.CallbackContext ctx) + { + // For button actions, you may want to use InputValue or just handle the event + // If you need position, you can read it from touchPositionAction + Vector3 _screenPos = Camera.main.ScreenToWorldPoint(touchPositionAction.ReadValue()); + Vector2 screenPos = new Vector2(_screenPos.x, _screenPos.y); + if (!TryDelegateToInteractable(screenPos)) + defaultConsumer?.OnTouchPress(screenPos); + } + + private void OnTouchPositionPerformed(InputAction.CallbackContext ctx) + { + Vector2 pos = ctx.ReadValue(); + defaultConsumer?.OnTouchPosition(pos); + } + + private bool TryDelegateToInteractable(Vector2 screenPos) + { + // TODO: Raycast logic to find ITouchInputConsumer at screenPos + // For now, always return false (no interactable found) + return false; + } +} diff --git a/Assets/Scripts/PlayerTouchController.cs b/Assets/Scripts/PlayerTouchController.cs index fcfd3619..4ba8d1cd 100644 --- a/Assets/Scripts/PlayerTouchController.cs +++ b/Assets/Scripts/PlayerTouchController.cs @@ -5,7 +5,7 @@ using UnityEngine.InputSystem; // Basic touch/mouse movement controller suitable for top-down 2D or 3D overworld // Attach to the player GameObject. Works with or without Rigidbody/Rigidbody2D. -public class PlayerTouchController : MonoBehaviour +public class PlayerTouchController : MonoBehaviour, ITouchInputConsumer { public float moveSpeed = 5f; public float stopDistance = 0.1f; @@ -32,64 +32,40 @@ public class PlayerTouchController : MonoBehaviour hasTarget = false; } - void Update() + void OnEnable() + { + InputManager.Instance?.SetDefaultConsumer(this); + } + + // Remove Update and HandleInput + + public void OnTouchPress(Vector2 worldPosition) + { + Debug.Log($"PlayerTouchController.OnTouchPress received worldPosition: {worldPosition}"); + SetTargetPosition(worldPosition); + } + + public void OnTouchPosition(Vector2 screenPosition) + { + Debug.Log($"PlayerTouchController.OnTouchPosition called with screenPosition: {screenPosition}"); + // Optionally handle drag/move here + } + + void SetTargetPosition(Vector2 worldPosition) + { + Debug.Log($"PlayerTouchController.SetTargetPosition: worldPosition={worldPosition}"); + targetPosition = new Vector3(worldPosition.x, worldPosition.y, transform.position.z); + hasTarget = true; + } + + void FixedUpdate() { - HandleInput(); if (hasTarget) { MoveTowardsTarget(); } } - void HandleInput() - { -#if ENABLE_INPUT_SYSTEM - // Using the new Unity Input System (InputSystem package) only. - // Touch input (mobile) - if (Touchscreen.current != null && Touchscreen.current.touches.Count > 0) - { - var touch = Touchscreen.current.touches[0]; - // press indicates the touch is down; use position even while moved/held - if (touch.press != null && touch.press.isPressed) - { - Vector2 pos = touch.position.ReadValue(); - SetTargetFromScreenPoint(new Vector3(pos.x, pos.y, 0f)); - return; - } - } - - // Mouse support (Editor/PC) - if (Mouse.current != null && Mouse.current.leftButton != null && Mouse.current.leftButton.isPressed) - { - Vector2 mpos = Mouse.current.position.ReadValue(); - SetTargetFromScreenPoint(new Vector3(mpos.x, mpos.y, 0f)); - } -#else - // Input System package not yet enabled/installed. Provide a helpful runtime message. - // This branch ensures the script compiles until the package is installed and Player Settings are set. - if (Application.isPlaying) - { - Debug.LogError("PlayerTouchController: New Input System is not enabled. Install 'com.unity.inputsystem' and set Active Input Handling to 'Input System Package' (or Both) in Player Settings, then restart the Editor."); - } -#endif - } - - void SetTargetFromScreenPoint(Vector3 screenPoint) - { - Camera cam = Camera.main; - if (cam == null) - { - Debug.LogWarning("PlayerTouchController: No Camera.main found."); - return; - } - - // Convert screen point to world point at the player's depth - Vector3 worldPoint = cam.ScreenToWorldPoint(new Vector3(screenPoint.x, screenPoint.y, cam.WorldToScreenPoint(transform.position).z)); - // For 2D top-down games using orthographic camera, z will be player's z already. - targetPosition = worldPoint; - hasTarget = true; - } - void MoveTowardsTarget() { // Keep original y (or z for 2D) depending on scene setup. We assume the player moves on the plane defined by its current transform. diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 00000000..6350587d --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,42 @@ +{ + "dependencies": { + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.spriteshape": "11.0.0", + "com.unity.feature.2d": "2.0.1", + "com.unity.ide.rider": "3.0.36", + "com.unity.inputsystem": "1.14.2", + "com.unity.multiplayer.center": "1.0.0", + "com.unity.modules.accessibility": "1.0.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "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" + } +} diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json new file mode 100644 index 00000000..04ab216f --- /dev/null +++ b/Packages/packages-lock.json @@ -0,0 +1,459 @@ +{ + "dependencies": { + "com.unity.2d.animation": { + "version": "11.0.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "10.0.0", + "com.unity.2d.sprite": "1.0.0", + "com.unity.collections": "1.2.4", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.aseprite": { + "version": "1.2.5", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "10.0.0", + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.tilemap": "1.0.0", + "com.unity.mathematics": "1.2.6", + "com.unity.modules.animation": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.common": { + "version": "10.0.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.4", + "com.unity.2d.sprite": "1.0.0", + "com.unity.mathematics": "1.1.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.pixel-perfect": { + "version": "5.1.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.imgui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.psdimporter": { + "version": "10.1.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "10.0.0", + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.tilemap": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.sprite": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.2d.spriteshape": { + "version": "11.0.0", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "10.0.0", + "com.unity.mathematics": "1.1.0", + "com.unity.modules.physics2d": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.tilemap": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.2d.tilemap.extras": { + "version": "4.3.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.tilemap": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.burst": { + "version": "1.8.23", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.mathematics": "1.2.1", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.collections": { + "version": "2.5.1", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.17", + "com.unity.test-framework": "1.4.5", + "com.unity.nuget.mono-cecil": "1.11.4", + "com.unity.test-framework.performance": "3.0.3" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "2.0.5", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.feature.2d": { + "version": "2.0.1", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.2d.animation": "11.0.0", + "com.unity.2d.pixel-perfect": "5.1.0", + "com.unity.2d.psdimporter": "10.1.1", + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.spriteshape": "11.0.0", + "com.unity.2d.tilemap": "1.0.0", + "com.unity.2d.tilemap.extras": "4.3.1", + "com.unity.2d.aseprite": "1.2.5" + } + }, + "com.unity.ide.rider": { + "version": "3.0.36", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6" + }, + "url": "https://packages.unity.com" + }, + "com.unity.inputsystem": { + "version": "1.14.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.mathematics": { + "version": "1.3.2", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.multiplayer.center": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.nuget.mono-cecil": { + "version": "1.11.4", + "depth": 3, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework": { + "version": "1.5.1", + "depth": 3, + "source": "builtin", + "dependencies": { + "com.unity.ext.nunit": "2.0.3", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.test-framework.performance": { + "version": "3.1.0", + "depth": 3, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.33", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.modules.accessibility": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.hierarchycore": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "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.hierarchycore": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +}