From 4ea89950c4588333c6b24d3171801956a0477177 Mon Sep 17 00:00:00 2001 From: Miguel Alonso Jr <76960110+miguelalonsojr@users.noreply.github.com> Date: Tue, 25 Jul 2023 14:50:49 -0400 Subject: [PATCH] Update to 2022.3 LTS and batched raycasts (#5950) * Updated to Unity 2022.3. * Added support for batched raycasting in ray perception sensor. Only for 3D (batched raycasting is only supported in 3D). * Added batched raycast tests and docs. * Updated meta file validation exclude list. * Added unity physics module dependency to core package. --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .yamato/com.unity.ml-agents-pack.yml | 2 +- .yamato/com.unity.ml-agents-performance.yml | 4 +- .yamato/com.unity.ml-agents-promotion.yml | 2 +- .yamato/com.unity.ml-agents-test.yml | 4 +- .yamato/coverage_tests.metafile | 2 +- .yamato/standalone-build-webgl-test.yml | 2 +- .yamato/test_versions.metafile | 4 +- DevProject/Packages/manifest.json | 7 +- DevProject/Packages/packages-lock.json | 40 +- .../Settings.json | 4 +- DevProject/ProjectSettings/ProjectVersion.txt | 4 +- .../Scripts/PushBlockActions.cs | 59 +- .../Soccer/Prefabs/SoccerFieldTwos.prefab | 545 ++++++++++++++++-- .../Examples/Soccer/Scenes/SoccerTwos.unity | 340 +++++++---- Project/Packages/manifest.json | 15 +- Project/Packages/packages-lock.json | 64 +- Project/ProjectSettings/ProjectVersion.txt | 4 +- .../Editor/EditorExample.cs | 1 - .../Editor/RigidBodySensorComponentEditor.cs | 2 - .../Adaptors/Vector2InputActionAdaptor.cs | 1 - .../Runtime/Input/InputActionActuator.cs | 1 - .../Runtime/Input/InputActuatorComponent.cs | 1 - .../Input/InputActuatorEventContext.cs | 2 - .../Sensors/ArticulationBodyJointExtractor.cs | 4 +- .../Sensors/ArticulationBodyPoseExtractor.cs | 2 +- .../ArticulationBodySensorComponent.cs | 4 +- .../Runtime/Sensors/PoseExtractor.cs | 2 - .../Runtime/Sensors/RigidBodyPoseExtractor.cs | 4 +- .../Sensors/RigidBodySensorComponent.cs | 1 - .../Tests/Runtime/RuntimeExampleTest.cs | 4 - .../Sensors/ArticulationBodySensorTests.cs | 1 - .../Sensors/CountingGridSensorTests.cs | 6 +- .../Runtime/Sensors/PoseExtractorTests.cs | 6 - .../Sensors/RigidBodyPoseExtractorTests.cs | 2 - .../Runtime/Sensors/RigidBodySensorTests.cs | 2 - com.unity.ml-agents.extensions/package.json | 2 +- com.unity.ml-agents/CHANGELOG.md | 4 +- .../Editor/BufferSensorComponentEditor.cs | 1 - .../Editor/DemonstrationDrawer.cs | 1 - .../Editor/GridSensorComponentEditor.cs | 4 +- .../RayPerceptionSensorComponentBaseEditor.cs | 12 +- .../Runtime/Analytics/AnalyticsUtils.cs | 1 - com.unity.ml-agents/Runtime/AssemblyInfo.cs | 1 - .../Runtime/Communicator/RpcCommunicator.cs | 29 +- .../Runtime/DecisionRequester.cs | 2 +- .../Demonstrations/DemonstrationRecorder.cs | 6 +- .../Demonstrations/DemonstrationWriter.cs | 1 - .../Inference/BarracudaModelExtensions.cs | 32 +- .../Inference/BarracudaModelParamLoader.cs | 49 +- .../Runtime/Inference/ModelRunner.cs | 4 +- .../Runtime/Inference/TensorGenerator.cs | 1 - .../Runtime/Integrations/Match3/Move.cs | 1 - .../Runtime/MLAgentsSettingsManager.cs | 2 + com.unity.ml-agents/Runtime/Sampler.cs | 3 +- .../Runtime/Sensors/BoxOverlapChecker.cs | 1 + .../Runtime/Sensors/BufferSensorComponent.cs | 2 - .../Runtime/Sensors/RayPerceptionSensor.cs | 166 +++++- .../RayPerceptionSensorComponentBase.cs | 34 +- .../Runtime/Sensors/SensorShapeValidator.cs | 1 - .../EngineConfigurationChannel.cs | 1 - .../EnvironmentParametersChannel.cs | 1 - com.unity.ml-agents/Runtime/Timer.cs | 5 +- com.unity.ml-agents/Samples.meta | 8 + com.unity.ml-agents/Samples/3DBall.meta | 8 + .../Samples/3DBall/3DBall.unitypackage.meta | 7 + .../Tests/Editor/AcademyTests.cs | 2 - .../Editor/Actuators/ActionSegmentTests.cs | 3 +- .../Editor/Actuators/ActuatorManagerTests.cs | 1 - .../Tests/Editor/Actuators/TestActuator.cs | 1 - .../Areas/TrainingAreaReplicatorTests.cs | 2 - .../Communicator/RpcCommunicatorTests.cs | 2 - .../Communicator/UnityRLCapabilitiesTests.cs | 1 - .../DiscreteActionOutputApplierTest.cs | 1 - .../Tests/Editor/Inference/ModelRunnerTest.cs | 14 +- .../Integrations/Match3/AbstractBoardTests.cs | 6 +- .../Match3/Match3ActuatorTests.cs | 2 +- .../Integrations/Match3/Match3SensorTests.cs | 17 +- .../Editor/Integrations/Match3/MoveTests.cs | 1 - .../Editor/Policies/HeuristicPolicyTest.cs | 2 - .../Editor/PublicAPI/PublicApiValidation.cs | 3 +- .../Tests/Editor/SamplerTests.cs | 1 + .../Editor/Serialization/TestLoadOldPrefab.cs | 1 - .../EngineConfigurationChannelTests.cs | 2 - com.unity.ml-agents/Tests/Editor/TimerTest.cs | 2 - .../Runtime/Sensor/BoxOverlapCheckerTests.cs | 30 +- .../Sensor/CameraSensorComponentTest.cs | 1 - .../Tests/Runtime/Sensor/CameraSensorTest.cs | 1 - .../Runtime/Sensor/GridSensorTestUtils.cs | 1 - .../Tests/Runtime/Sensor/GridSensorTests.cs | 6 +- .../Sensor/ObservableAttributeTests.cs | 21 +- .../Sensor/RayPerceptionSensorTests.cs | 98 +++- .../Tests/Runtime/Sensor/SensorUtilTests.cs | 2 - com.unity.ml-agents/package.json | 5 +- docs/Installation.md | 4 +- docs/Learning-Environment-Design-Agents.md | 3 + docs/Migrating.md | 2 +- ...20\275\320\276\320\262\320\272\320\260.md" | 4 +- localized_docs/TR/docs/Installation.md | 4 +- ml-agents/tests/yamato/yamato_utils.py | 2 +- utils/validate_meta_files.py | 2 +- 101 files changed, 1325 insertions(+), 465 deletions(-) create mode 100644 com.unity.ml-agents/Samples.meta create mode 100644 com.unity.ml-agents/Samples/3DBall.meta create mode 100644 com.unity.ml-agents/Samples/3DBall/3DBall.unitypackage.meta diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9af9fb7a7a..e5fe730e6c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,7 +24,7 @@ Please wrap in triple backticks (```) to make it easier to read. If applicable, add screenshots to help explain your problem. **Environment (please complete the following information):** -- Unity Version: [e.g. Unity 2020.1f1] +- Unity Version: [e.g. Unity 2022.3f1] - OS + version: [e.g. Windows 10] - _ML-Agents version_: (e.g. ML-Agents v0.8, or latest `develop` branch from source) - _Torch version_: (you can run `pip3 show torch` to get this) diff --git a/.yamato/com.unity.ml-agents-pack.yml b/.yamato/com.unity.ml-agents-pack.yml index 71e6d5d9af..521881da4e 100644 --- a/.yamato/com.unity.ml-agents-pack.yml +++ b/.yamato/com.unity.ml-agents-pack.yml @@ -9,7 +9,7 @@ pack: eval "$($HOME/anaconda/bin/conda shell.bash hook)" conda activate python3.8 python3 -m pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple --upgrade - unity-downloader-cli -u 2021.3 -c editor --wait --fast + unity-downloader-cli -u 2022.3 -c editor --wait --fast ./.Editor/Unity -projectPath Project -batchMode -executeMethod Unity.MLAgents.SampleExporter.ExportCuratedSamples -logFile - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm upm-ci project pack --project-path Project diff --git a/.yamato/com.unity.ml-agents-performance.yml b/.yamato/com.unity.ml-agents-performance.yml index c9f16cf2a3..c86372414c 100644 --- a/.yamato/com.unity.ml-agents-performance.yml +++ b/.yamato/com.unity.ml-agents-performance.yml @@ -1,6 +1,6 @@ test_editors: - - version: 2021.3 - - version: 2022.1 + - version: 2022.3 + - version: 2023.1 --- {% for editor in test_editors %} Run_Mac_Perfomance_Tests{{ editor.version }}: diff --git a/.yamato/com.unity.ml-agents-promotion.yml b/.yamato/com.unity.ml-agents-promotion.yml index e4930acfea..dbf35cd812 100644 --- a/.yamato/com.unity.ml-agents-promotion.yml +++ b/.yamato/com.unity.ml-agents-promotion.yml @@ -1,5 +1,5 @@ test_editors: - - version: 2021.3 + - version: 2022.3 test_platforms: - name: win type: Unity::VM diff --git a/.yamato/com.unity.ml-agents-test.yml b/.yamato/com.unity.ml-agents-test.yml index 4fd987fd80..96bbc1c7fc 100644 --- a/.yamato/com.unity.ml-agents-test.yml +++ b/.yamato/com.unity.ml-agents-test.yml @@ -1,10 +1,10 @@ {% metadata_file .yamato/coverage_tests.metafile %} test_editors: - - version: 2021.3 + - version: 2022.3 # We want some scene tests to run in the DevProject, but packages there only support 2020+ testProject: Project enableNoDefaultPackages: !!bool true - - version: 2022.1 + - version: 2023.1 testProject: DevProject enableNoDefaultPackages: !!bool true diff --git a/.yamato/coverage_tests.metafile b/.yamato/coverage_tests.metafile index 7f5aaad096..29bcfd73e2 100644 --- a/.yamato/coverage_tests.metafile +++ b/.yamato/coverage_tests.metafile @@ -1,5 +1,5 @@ coverage_test_editors: - - version: 2021.3 + - version: 2022.3 testProject: DevProject coverage_test_platforms: diff --git a/.yamato/standalone-build-webgl-test.yml b/.yamato/standalone-build-webgl-test.yml index 8d7a699768..9c7ad0156e 100644 --- a/.yamato/standalone-build-webgl-test.yml +++ b/.yamato/standalone-build-webgl-test.yml @@ -1,4 +1,4 @@ -{% capture editor_version %}2021.3{% endcapture %} +{% capture editor_version %}2022.3{% endcapture %} test_webgl_standalone_{{ editor_version }}: name: Test WebGL Standalone {{ editor_version }} agent: diff --git a/.yamato/test_versions.metafile b/.yamato/test_versions.metafile index 8fdd62bb10..853348e5ba 100644 --- a/.yamato/test_versions.metafile +++ b/.yamato/test_versions.metafile @@ -3,9 +3,9 @@ # For each "other" test, we only run it against a single version of the # editor to reduce the number of yamato jobs test_editors: - - version: 2021.3 + - version: 2022.3 extra_test: gym - - version: 2022.1 + - version: 2023.1 extra_test: sensor - version: trunk extra_test: llapi diff --git a/DevProject/Packages/manifest.json b/DevProject/Packages/manifest.json index 2c41776004..467b9909f1 100644 --- a/DevProject/Packages/manifest.json +++ b/DevProject/Packages/manifest.json @@ -1,14 +1,15 @@ { "dependencies": { + "com.unity.ai.navigation": "1.1.4", "com.unity.coding": "0.1.0-preview.13", - "com.unity.inputsystem": "1.3.0", + "com.unity.inputsystem": "1.6.1", "com.unity.ml-agents": "file:../../com.unity.ml-agents", "com.unity.ml-agents.extensions": "file:../../com.unity.ml-agents.extensions", "com.unity.package-manager-doctools": "1.10.0-preview", "com.unity.package-validation-suite": "0.23.4-preview", - "com.unity.test-framework": "1.1.29", + "com.unity.test-framework": "1.1.33", "com.unity.test-framework.performance": "2.2.0-preview", - "com.unity.testtools.codecoverage": "1.0.0-pre.3", + "com.unity.testtools.codecoverage": "1.2.4", "com.unity.modules.imageconversion": "1.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.physics2d": "1.0.0", diff --git a/DevProject/Packages/packages-lock.json b/DevProject/Packages/packages-lock.json index 1e078c5929..e69b5e8baa 100644 --- a/DevProject/Packages/packages-lock.json +++ b/DevProject/Packages/packages-lock.json @@ -1,5 +1,14 @@ { "dependencies": { + "com.unity.ai.navigation": { + "version": "1.1.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.ai": "1.0.0" + }, + "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" + }, "com.unity.barracuda": { "version": "3.0.0", "depth": 1, @@ -12,7 +21,7 @@ "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.burst": { - "version": "1.6.6", + "version": "1.8.7", "depth": 2, "source": "registry", "dependencies": { @@ -37,7 +46,7 @@ "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.inputsystem": { - "version": "1.3.0", + "version": "1.6.1", "depth": 0, "source": "registry", "dependencies": { @@ -72,14 +81,14 @@ } }, "com.unity.nuget.mono-cecil": { - "version": "1.10.1", + "version": "1.11.4", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.nuget.newtonsoft-json": { - "version": "3.0.2", + "version": "3.2.1", "depth": 1, "source": "registry", "dependencies": {}, @@ -106,7 +115,7 @@ "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.settings-manager": { - "version": "1.0.3", + "version": "2.0.1", "depth": 1, "source": "registry", "dependencies": {}, @@ -120,7 +129,7 @@ "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.test-framework": { - "version": "1.1.29", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { @@ -141,7 +150,7 @@ "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, "com.unity.testtools.codecoverage": { - "version": "1.0.0-pre.3", + "version": "1.2.4", "depth": 0, "source": "registry", "dependencies": { @@ -166,6 +175,12 @@ }, "url": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates" }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, "com.unity.modules.imageconversion": { "version": "1.0.0", "depth": 0, @@ -206,17 +221,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/DevProject/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/DevProject/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json index 4201f40bd8..dea1af3839 100644 --- a/DevProject/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json +++ b/DevProject/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json @@ -1,6 +1,4 @@ { - "m_Name": "Settings", - "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json", "m_Dictionary": { "m_DictionaryValues": [ { @@ -20,4 +18,4 @@ } ] } -} +} \ No newline at end of file diff --git a/DevProject/ProjectSettings/ProjectVersion.txt b/DevProject/ProjectSettings/ProjectVersion.txt index 8ea1b855ae..e7e2f19822 100644 --- a/DevProject/ProjectSettings/ProjectVersion.txt +++ b/DevProject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.11f1 -m_EditorVersionWithRevision: 2021.3.11f1 (0a5ca18544bf) +m_EditorVersion: 2022.3.4f1 +m_EditorVersionWithRevision: 2022.3.4f1 (35713cd46cd7) diff --git a/Project/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs b/Project/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs index d328ee3ba2..c05997bbb9 100644 --- a/Project/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs +++ b/Project/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator -// version 1.3.0 +// version 1.6.1 // from Assets/ML-Agents/Examples/PushBlockWithInput/PushBlockActions.inputactions // // Changes to this file may cause incorrect behavior and will be lost if @@ -15,7 +15,7 @@ using UnityEngine.InputSystem; using UnityEngine.InputSystem.Utilities; -public partial class @PushBlockActions : IInputActionCollection2, IDisposable +public partial class @PushBlockActions: IInputActionCollection2, IDisposable { public InputActionAsset asset { get; } public @PushBlockActions() @@ -250,12 +250,14 @@ 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); @@ -263,7 +265,7 @@ public int FindBinding(InputBinding bindingMask, out InputAction action) // Movement private readonly InputActionMap m_Movement; - private IMovementActions m_MovementActionsCallbackInterface; + private List m_MovementActionsCallbackInterfaces = new List(); private readonly InputAction m_Movement_movement; private readonly InputAction m_Movement_jump; public struct MovementActions @@ -277,27 +279,40 @@ public struct MovementActions public void Disable() { Get().Disable(); } public bool enabled => Get().enabled; public static implicit operator InputActionMap(MovementActions set) { return set.Get(); } + public void AddCallbacks(IMovementActions instance) + { + if (instance == null || m_Wrapper.m_MovementActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_MovementActionsCallbackInterfaces.Add(instance); + @movement.started += instance.OnMovement; + @movement.performed += instance.OnMovement; + @movement.canceled += instance.OnMovement; + @jump.started += instance.OnJump; + @jump.performed += instance.OnJump; + @jump.canceled += instance.OnJump; + } + + private void UnregisterCallbacks(IMovementActions instance) + { + @movement.started -= instance.OnMovement; + @movement.performed -= instance.OnMovement; + @movement.canceled -= instance.OnMovement; + @jump.started -= instance.OnJump; + @jump.performed -= instance.OnJump; + @jump.canceled -= instance.OnJump; + } + + public void RemoveCallbacks(IMovementActions instance) + { + if (m_Wrapper.m_MovementActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + public void SetCallbacks(IMovementActions instance) { - if (m_Wrapper.m_MovementActionsCallbackInterface != null) - { - @movement.started -= m_Wrapper.m_MovementActionsCallbackInterface.OnMovement; - @movement.performed -= m_Wrapper.m_MovementActionsCallbackInterface.OnMovement; - @movement.canceled -= m_Wrapper.m_MovementActionsCallbackInterface.OnMovement; - @jump.started -= m_Wrapper.m_MovementActionsCallbackInterface.OnJump; - @jump.performed -= m_Wrapper.m_MovementActionsCallbackInterface.OnJump; - @jump.canceled -= m_Wrapper.m_MovementActionsCallbackInterface.OnJump; - } - m_Wrapper.m_MovementActionsCallbackInterface = instance; - if (instance != null) - { - @movement.started += instance.OnMovement; - @movement.performed += instance.OnMovement; - @movement.canceled += instance.OnMovement; - @jump.started += instance.OnJump; - @jump.performed += instance.OnJump; - @jump.canceled += instance.OnJump; - } + foreach (var item in m_Wrapper.m_MovementActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_MovementActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); } } public MovementActions @Movement => new MovementActions(this); diff --git a/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab b/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab index 613cf49812..33e7c3f39f 100644 --- a/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab +++ b/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab @@ -26,6 +26,7 @@ Transform: 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: 1730970187} - {fileID: 1013497680} @@ -59,6 +60,7 @@ Transform: m_LocalRotation: {x: 0, y: -0.5, z: 0, w: 0.8660254} m_LocalPosition: {x: -1446, y: 176, z: 641} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1013497680} m_RootOrder: 2 @@ -71,9 +73,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 25743880} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 4.8, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &129409745 @@ -103,6 +113,7 @@ Transform: m_LocalRotation: {x: 0, y: -0.5, z: 0, w: 0.8660254} m_LocalPosition: {x: -1446, y: 176, z: 641} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1730970187} m_RootOrder: 2 @@ -115,9 +126,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 129409745} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 4.8, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &159982127 @@ -149,6 +168,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1400, y: 0, z: 0} m_LocalScale: {x: 300, y: 10, z: 1200} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 13 @@ -169,9 +189,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 159982127} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 0 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &159982129 @@ -185,10 +213,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -213,6 +243,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &166240760 GameObject: m_ObjectHideFlags: 0 @@ -241,6 +272,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.000061035156, y: 1, z: 0.000061035156} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 1 @@ -264,10 +296,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -292,6 +326,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &257899725 GameObject: m_ObjectHideFlags: 0 @@ -322,6 +357,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3521401} - {fileID: 166240761} @@ -360,10 +396,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -388,6 +426,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &257899728 BoxCollider: m_ObjectHideFlags: 0 @@ -396,9 +435,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 257899725} m_Material: {fileID: 13400000, guid: 1d7384a79905e47399076985ef6317bb, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 3100, y: 100, z: 1500.0001} m_Center: {x: 0, y: -50, z: 0} --- !u!215 &257899727 @@ -461,6 +508,7 @@ Transform: m_LocalRotation: {x: -0, y: 0.49999917, z: -0, w: 0.86602587} m_LocalPosition: {x: 1446, y: 176, z: 641} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1013497680} m_RootOrder: 1 @@ -473,9 +521,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 309062024} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 4.8, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &459835897 @@ -505,6 +561,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 176, z: 775} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1730970187} m_RootOrder: 0 @@ -517,9 +574,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 459835897} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 31, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: -0.011573717} --- !u!1 &601292579 @@ -551,6 +616,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1400, y: 0, z: 0} m_LocalScale: {x: 300, y: 10, z: 1200} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 12 @@ -571,9 +637,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 601292579} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 0 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &601292581 @@ -587,10 +661,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -615,6 +691,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &695073581 GameObject: m_ObjectHideFlags: 0 @@ -642,6 +719,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 176, z: 775} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1013497680} m_RootOrder: 0 @@ -654,9 +732,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 695073581} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 31, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: -0.011573717} --- !u!1 &740089992 @@ -687,6 +773,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1643.9795, y: 186.06555, z: 0.49998474} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 7 @@ -710,10 +797,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -738,6 +827,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &784958406 GameObject: m_ObjectHideFlags: 0 @@ -765,6 +855,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 425, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 14 @@ -777,9 +868,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 784958406} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 30, y: 0.1, z: 16} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &809268601 @@ -811,6 +910,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1650, y: -25, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 5 @@ -834,10 +934,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -862,6 +964,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &809268603 BoxCollider: m_ObjectHideFlags: 0 @@ -870,9 +973,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 809268601} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200, y: 50, z: 850.0001} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &868835399 @@ -903,6 +1014,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1640.98, y: 186.06555, z: -0.50001526} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 9 @@ -926,10 +1038,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -954,6 +1068,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &901290776 GameObject: m_ObjectHideFlags: 0 @@ -982,6 +1097,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -774.99994, y: 175, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 10 @@ -1005,10 +1121,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1033,6 +1151,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &905539299 GameObject: m_ObjectHideFlags: 0 @@ -1060,6 +1179,7 @@ Transform: m_LocalRotation: {x: -0, y: 0.49999917, z: -0, w: 0.86602587} m_LocalPosition: {x: 1446, y: 176, z: 641} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1730970187} m_RootOrder: 1 @@ -1072,9 +1192,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 905539299} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 4.8, y: 4.5311604, z: 0.4607078} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &971710691 @@ -1106,6 +1234,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1650, y: -25, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 4 @@ -1129,10 +1258,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1157,6 +1288,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &971710693 BoxCollider: m_ObjectHideFlags: 0 @@ -1165,9 +1297,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 971710691} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200, y: 50, z: 850.0001} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1013497679 @@ -1196,6 +1336,7 @@ Transform: m_LocalRotation: {x: -0, y: -1, z: -0, w: 0.0000021010635} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 695073582} - {fileID: 309062025} @@ -1235,6 +1376,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1650, y: 192.0061, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 6 @@ -1258,10 +1400,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1287,6 +1431,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &1420281432 BoxCollider: m_ObjectHideFlags: 0 @@ -1295,9 +1440,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1420281427} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200.00024, y: 384.01212, z: 10} m_Center: {x: 0.00023841858, y: 0, z: -420} --- !u!65 &1420281431 @@ -1308,9 +1461,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1420281427} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200.00024, y: 384.01212, z: 10} m_Center: {x: 0.00023841858, y: 0, z: 420} --- !u!65 &1420281430 @@ -1321,9 +1482,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1420281427} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 12.737513, y: 384.01212, z: 830} m_Center: {x: -93.6311, y: 0, z: 0} --- !u!65 &1420281429 @@ -1334,9 +1503,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1420281427} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 186.31436, y: 7.4030876, z: 830} m_Center: {x: 6.8431735, y: 188.3043, z: 0} --- !u!1 &1730970186 @@ -1365,6 +1542,7 @@ Transform: 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: 459835898} - {fileID: 905539300} @@ -1400,6 +1578,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0, y: 272.05, z: -607.00037} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 3 @@ -1423,10 +1602,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1451,6 +1632,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2036291519 GameObject: m_ObjectHideFlags: 0 @@ -1483,6 +1665,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1647, y: 192.0061, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 8 @@ -1506,10 +1689,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1535,6 +1720,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &2036291524 BoxCollider: m_ObjectHideFlags: 0 @@ -1543,9 +1729,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036291519} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200.00047, y: 384.01212, z: 10} m_Center: {x: -0.00023841858, y: 0, z: -420} --- !u!65 &2036291523 @@ -1556,9 +1750,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036291519} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200.00047, y: 384.01212, z: 10} m_Center: {x: -0.00023841858, y: 0, z: 420} --- !u!65 &2036291522 @@ -1569,9 +1771,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036291519} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 10, y: 384.01212, z: 830} m_Center: {x: 93.6, y: 0, z: 0} --- !u!65 &2036291521 @@ -1582,9 +1792,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036291519} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 200.00047, y: 13.09334, z: 830} m_Center: {x: -0.00023841858, y: 185.45909, z: 0} --- !u!1 &2075395421 @@ -1615,6 +1833,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0, y: 272.05, z: 607.00037} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 2 @@ -1638,10 +1857,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1666,6 +1887,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2091312081 GameObject: m_ObjectHideFlags: 0 @@ -1694,6 +1916,7 @@ Transform: m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 775, y: 175, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 257899726} m_RootOrder: 11 @@ -1717,10 +1940,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1745,6 +1970,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1032056389038868 GameObject: m_ObjectHideFlags: 0 @@ -1772,6 +1998,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.15} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4991109413118678} m_RootOrder: 0 @@ -1790,9 +2017,17 @@ Camera: 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_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -1847,6 +2082,7 @@ Transform: 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: 4859417942674614} - {fileID: 4039980604236862} @@ -1875,10 +2111,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1903,6 +2141,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1095606497496374 GameObject: m_ObjectHideFlags: 0 @@ -1936,6 +2175,7 @@ Transform: m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: 3.19, y: 0.5, z: 1.2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4540034559941056} - {fileID: 2148914632064875291} @@ -1949,10 +2189,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1095606497496374} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 50 m_Drag: 3 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -1966,9 +2217,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1095606497496374} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114734187185382186 @@ -2000,6 +2259,7 @@ MonoBehaviour: TeamId: 1 m_UseChildSensors: 1 m_UseChildActuators: 1 + m_DeterministicInference: 0 m_ObservableAttributeHandling: 0 --- !u!114 &114492261207303438 MonoBehaviour: @@ -2050,6 +2310,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -2067,6 +2329,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: DecisionPeriod: 5 + DecisionStep: 0 TakeActionsBetweenDecisions: 1 --- !u!114 &798330825103180240 MonoBehaviour: @@ -2108,6 +2371,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.15} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4540034559941056} m_RootOrder: 0 @@ -2126,9 +2390,17 @@ Camera: 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_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -2188,6 +2460,7 @@ Transform: m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: -3.19, y: 0.5, z: 1.2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4991109413118678} - {fileID: 4942358209803819540} @@ -2201,10 +2474,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1131626411948014} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 50 m_Drag: 3 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -2218,9 +2502,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1131626411948014} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114387866097048300 @@ -2252,6 +2544,7 @@ MonoBehaviour: TeamId: 0 m_UseChildSensors: 1 m_UseChildActuators: 1 + m_DeterministicInference: 0 m_ObservableAttributeHandling: 0 --- !u!114 &114850431417842684 MonoBehaviour: @@ -2302,6 +2595,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -2319,6 +2614,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: DecisionPeriod: 5 + DecisionStep: 0 TakeActionsBetweenDecisions: 1 --- !u!114 &8557426429796011212 MonoBehaviour: @@ -2360,6 +2656,7 @@ Transform: 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: 4540201673231058} - {fileID: 4867652605555692} @@ -2369,7 +2666,7 @@ Transform: - {fileID: 5643284048999299831} - {fileID: 257899726} m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &8122248192225965164 MonoBehaviour: @@ -2431,6 +2728,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0.036135223, w: 0.999347} m_LocalPosition: {x: 0, y: 0.341, z: 0} m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4540034559941056} m_RootOrder: 4 @@ -2454,10 +2752,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2482,6 +2782,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1383518430785328 GameObject: m_ObjectHideFlags: 0 @@ -2508,6 +2809,7 @@ Transform: 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: 4558743310993102} m_RootOrder: 1 @@ -2540,6 +2842,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4991109413118678} m_RootOrder: 1 @@ -2563,10 +2866,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2591,6 +2896,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1623838202568698 GameObject: m_ObjectHideFlags: 0 @@ -2619,6 +2925,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054} m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4991109413118678} m_RootOrder: 3 @@ -2642,10 +2949,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2670,6 +2979,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1682753582128710 GameObject: m_ObjectHideFlags: 0 @@ -2701,6 +3011,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.5, z: 0} m_LocalScale: {x: 0.015, y: 0.015, z: 0.015} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4558743310993102} m_RootOrder: 0 @@ -2724,10 +3035,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2752,6 +3065,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!135 &135993924486820224 SphereCollider: m_ObjectHideFlags: 0 @@ -2760,9 +3074,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1682753582128710} m_Material: {fileID: 13400000, guid: 54ed79b9254e1456587c8cf3849f6dc1, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 41.61146 m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114273807544954564 @@ -2788,10 +3110,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1682753582128710} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 3 m_Drag: 1 m_AngularDrag: 1 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -2825,6 +3158,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 0.016506119, w: 0.9998638} m_LocalPosition: {x: 0, y: 0.341, z: 0} m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4991109413118678} m_RootOrder: 4 @@ -2848,10 +3182,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2876,6 +3212,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1836679221278734 GameObject: m_ObjectHideFlags: 0 @@ -2904,6 +3241,7 @@ Transform: 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: 4904293978873118} - {fileID: 4058002210749422} @@ -2932,10 +3270,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2960,6 +3300,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1841872787705274 GameObject: m_ObjectHideFlags: 0 @@ -2988,6 +3329,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4540034559941056} m_RootOrder: 1 @@ -3011,10 +3353,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3039,6 +3383,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1931023723143276 GameObject: m_ObjectHideFlags: 0 @@ -3067,6 +3412,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054} m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4540034559941056} m_RootOrder: 3 @@ -3090,10 +3436,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3118,6 +3466,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1933336248964008 GameObject: m_ObjectHideFlags: 0 @@ -3146,6 +3495,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4540034559941056} m_RootOrder: 2 @@ -3169,10 +3519,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3197,6 +3549,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1988976889579366 GameObject: m_ObjectHideFlags: 0 @@ -3225,6 +3578,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4991109413118678} m_RootOrder: 2 @@ -3248,10 +3602,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3276,6 +3632,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &736576636681813138 GameObject: m_ObjectHideFlags: 0 @@ -3303,6 +3660,7 @@ Transform: m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5643284048999299831} m_RootOrder: 1 @@ -3335,6 +3693,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -3366,6 +3726,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.15} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4355548278584398525} m_RootOrder: 0 @@ -3384,9 +3745,17 @@ Camera: 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_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -3440,6 +3809,7 @@ Transform: m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4444285537983296} m_RootOrder: 1 @@ -3472,6 +3842,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -3503,6 +3875,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.15} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3493354028456101517} m_RootOrder: 0 @@ -3521,9 +3894,17 @@ Camera: 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_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -3578,6 +3959,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3493354028456101517} m_RootOrder: 2 @@ -3601,10 +3983,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3629,6 +4013,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2909838886639257826 GameObject: m_ObjectHideFlags: 0 @@ -3657,6 +4042,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 0.016506119, w: 0.9998638} m_LocalPosition: {x: 0, y: 0.341, z: 0} m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3493354028456101517} m_RootOrder: 4 @@ -3680,10 +4066,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3708,6 +4096,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4407673136905670519 GameObject: m_ObjectHideFlags: 0 @@ -3735,6 +4124,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7843730402782877929} m_RootOrder: 1 @@ -3767,6 +4157,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -3799,6 +4191,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054} m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3493354028456101517} m_RootOrder: 3 @@ -3822,10 +4215,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3850,6 +4245,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6007240757639156798 GameObject: m_ObjectHideFlags: 0 @@ -3878,6 +4274,7 @@ Transform: 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: 3343797950804926185} - {fileID: 8909689398596890234} @@ -3906,10 +4303,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3934,6 +4333,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6257467487437560250 GameObject: m_ObjectHideFlags: 0 @@ -3967,6 +4367,7 @@ Transform: m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: 3.19, y: 0.5, z: -1.2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4355548278584398525} - {fileID: 1271329604630503873} @@ -3980,10 +4381,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6257467487437560250} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 50 m_Drag: 3 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -3997,9 +4409,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6257467487437560250} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!114 &8577361778124631730 @@ -4031,6 +4451,7 @@ MonoBehaviour: TeamId: 1 m_UseChildSensors: 1 m_UseChildActuators: 1 + m_DeterministicInference: 0 m_ObservableAttributeHandling: 0 --- !u!114 &5320024511406682322 MonoBehaviour: @@ -4081,6 +4502,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -4098,6 +4521,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: DecisionPeriod: 5 + DecisionStep: 0 TakeActionsBetweenDecisions: 1 --- !u!114 &6283479335904612434 MonoBehaviour: @@ -4140,6 +4564,7 @@ Transform: 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: 5868624583800292425} - {fileID: 5053100904557680885} @@ -4168,10 +4593,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4196,6 +4623,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7925489420550093475 GameObject: m_ObjectHideFlags: 0 @@ -4224,6 +4652,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3493354028456101517} m_RootOrder: 1 @@ -4247,10 +4676,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4275,6 +4706,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8225820398989514451 GameObject: m_ObjectHideFlags: 0 @@ -4303,6 +4735,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4355548278584398525} m_RootOrder: 1 @@ -4326,10 +4759,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4354,6 +4789,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8351168634331197049 GameObject: m_ObjectHideFlags: 0 @@ -4382,6 +4818,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054} m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4355548278584398525} m_RootOrder: 3 @@ -4405,10 +4842,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4433,6 +4872,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8360301818957399454 GameObject: m_ObjectHideFlags: 0 @@ -4466,6 +4906,7 @@ Transform: m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: -3.19, y: 0.5, z: -1.2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3493354028456101517} - {fileID: 8224668928246715092} @@ -4479,10 +4920,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8360301818957399454} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 50 m_Drag: 3 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -4496,9 +4948,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8360301818957399454} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!114 &3316085536305919483 @@ -4530,6 +4990,7 @@ MonoBehaviour: TeamId: 0 m_UseChildSensors: 1 m_UseChildActuators: 1 + m_DeterministicInference: 0 m_ObservableAttributeHandling: 0 --- !u!114 &5379409612883756837 MonoBehaviour: @@ -4580,6 +5041,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 @@ -4597,6 +5060,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: DecisionPeriod: 5 + DecisionStep: 0 TakeActionsBetweenDecisions: 1 --- !u!114 &6939753220642424022 MonoBehaviour: @@ -4639,6 +5103,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0.036135223, w: 0.999347} m_LocalPosition: {x: 0, y: 0.341, z: 0} m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4355548278584398525} m_RootOrder: 4 @@ -4662,10 +5127,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4690,6 +5157,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8902619455849538040 GameObject: m_ObjectHideFlags: 0 @@ -4718,6 +5186,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054} m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4355548278584398525} m_RootOrder: 2 @@ -4741,10 +5210,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4769,6 +5240,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &9136065168043485173 GameObject: m_ObjectHideFlags: 0 @@ -4796,6 +5268,7 @@ Transform: m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4277721046484044} m_RootOrder: 1 @@ -4828,6 +5301,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967291 m_ObservationStacks: 3 + m_AlternatingRayOrder: 1 + m_UseBatchedRaycasts: 1 rayHitColor: {r: 1, g: 0, b: 0, a: 1} rayMissColor: {r: 1, g: 1, b: 1, a: 1} m_StartVerticalOffset: 0.5 diff --git a/Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity b/Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity index fd8ff92498..121c15111a 100644 --- a/Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity +++ b/Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity @@ -38,12 +38,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_IndirectSpecularColor: {r: 0.44971454, g: 0.49977928, b: 0.5756385, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -54,7 +54,7 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 10 + serializedVersion: 12 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 @@ -62,6 +62,7 @@ LightmapSettings: m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 @@ -76,10 +77,16 @@ LightmapSettings: 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_PVRFilteringMode: 1 + m_PVREnvironmentMIS: 0 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 @@ -87,16 +94,18 @@ LightmapSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 112000002, guid: 03723c7f910c3423aa1974f1b9ce8392, type: 2} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 1909893171} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -109,7 +118,9 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -140,9 +151,10 @@ MonoBehaviour: m_GameObject: {fileID: 255077123} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} m_Name: m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -159,7 +171,7 @@ MonoBehaviour: m_GameObject: {fileID: 255077123} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} m_Name: m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} @@ -175,6 +187,7 @@ Transform: 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_RootOrder: 3 @@ -184,105 +197,110 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 12 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_RootOrder - value: 12 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} --- !u!1001 &478056696 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -293,6 +311,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: -40 @@ -305,6 +327,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -51 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -317,27 +343,27 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 8 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1001 &774084574 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_Name value: SoccerFieldTwos objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -350,6 +376,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -362,14 +392,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -383,6 +405,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1 &1009000883 GameObject: @@ -411,6 +436,7 @@ Transform: m_LocalRotation: {x: -0.25081208, y: 0.2871387, z: -0.07810445, w: -0.92116475} m_LocalPosition: {x: 25.6, y: 24.6, z: -34.5} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -427,10 +453,19 @@ Camera: m_ClearFlags: 2 m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1} m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} 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 @@ -462,6 +497,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -472,6 +508,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: -40 @@ -484,6 +524,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -76 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -496,21 +540,17 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 11 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1001 &1177695920 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -521,6 +561,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -533,6 +577,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -76 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -545,21 +593,17 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 5 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1001 &1325062279 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -570,6 +614,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -582,6 +630,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -26 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -594,23 +646,23 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 7 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1001 &1348885204 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -623,6 +675,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} + propertyPath: m_LocalRotation.w + value: 0.8681629 + objectReference: {fileID: 0} - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.x value: 0.31598538 @@ -635,19 +691,14 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0.13088542 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} - propertyPath: m_LocalRotation.w - value: 0.8681629 - objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 40 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} --- !u!1 &1574236047 GameObject: @@ -677,6 +728,7 @@ Transform: 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_RootOrder: 1 @@ -720,6 +772,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -730,6 +783,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: -40 @@ -742,6 +799,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -26 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -754,21 +815,17 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 9 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} --- !u!1001 &1748755984 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -779,6 +836,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: -40 @@ -791,6 +852,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -101 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -803,21 +868,81 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 10 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} +--- !u!850595691 &1909893171 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 6 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1001 &2043067438 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1141134673700168, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} @@ -828,6 +953,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -840,6 +969,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -51 objectReference: {fileID: 0} + - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -852,13 +985,8 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} - propertyPath: m_RootOrder - value: 6 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3} diff --git a/Project/Packages/manifest.json b/Project/Packages/manifest.json index f3e149c5f5..c2bdc9be6b 100644 --- a/Project/Packages/manifest.json +++ b/Project/Packages/manifest.json @@ -1,15 +1,16 @@ { "dependencies": { - "com.unity.formats.fbx": "4.1.3", - "com.unity.ide.rider": "3.0.5", - "com.unity.inputsystem": "1.3.0", + "com.unity.ai.navigation": "1.1.4", + "com.unity.formats.fbx": "4.2.1", + "com.unity.ide.rider": "3.0.24", + "com.unity.inputsystem": "1.6.1", "com.unity.ml-agents": "file:../../com.unity.ml-agents", "com.unity.ml-agents.extensions": "file:../../com.unity.ml-agents.extensions", - "com.unity.nuget.newtonsoft-json": "2.0.0", - "com.unity.recorder": "3.0.3", - "com.unity.test-framework": "1.1.29", + "com.unity.nuget.newtonsoft-json": "3.2.1", + "com.unity.recorder": "4.0.1", + "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", - "com.unity.toolchain.macos-x86_64-linux-x86_64": "2.0.3", + "com.unity.toolchain.macos-x86_64-linux-x86_64": "2.0.4", "com.unity.ugui": "1.0.0", "com.unity.modules.imageconversion": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0", diff --git a/Project/Packages/packages-lock.json b/Project/Packages/packages-lock.json index ff27d4ee4f..ebeac26fb5 100644 --- a/Project/Packages/packages-lock.json +++ b/Project/Packages/packages-lock.json @@ -1,12 +1,21 @@ { "dependencies": { "com.autodesk.fbx": { - "version": "4.1.2", + "version": "4.2.1", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, + "com.unity.ai.navigation": { + "version": "1.1.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.ai": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.barracuda": { "version": "3.0.0", "depth": 1, @@ -19,7 +28,7 @@ "url": "https://packages.unity.com" }, "com.unity.burst": { - "version": "1.6.6", + "version": "1.8.7", "depth": 2, "source": "registry", "dependencies": { @@ -35,24 +44,26 @@ "url": "https://packages.unity.com" }, "com.unity.formats.fbx": { - "version": "4.1.3", + "version": "4.2.1", "depth": 0, "source": "registry", "dependencies": { - "com.unity.timeline": "1.5.2", - "com.autodesk.fbx": "4.1.2" + "com.unity.timeline": "1.7.1", + "com.autodesk.fbx": "4.2.1" }, "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "3.0.5", + "version": "3.0.24", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.ext.nunit": "1.0.6" + }, "url": "https://packages.unity.com" }, "com.unity.inputsystem": { - "version": "1.3.0", + "version": "1.6.1", "depth": 0, "source": "registry", "dependencies": { @@ -87,14 +98,14 @@ } }, "com.unity.nuget.newtonsoft-json": { - "version": "2.0.0", + "version": "3.2.1", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.recorder": { - "version": "3.0.3", + "version": "4.0.1", "depth": 0, "source": "registry", "dependencies": { @@ -103,23 +114,23 @@ "url": "https://packages.unity.com" }, "com.unity.sysroot": { - "version": "2.0.4", + "version": "2.0.5", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.sysroot.linux-x86_64": { - "version": "2.0.3", + "version": "2.0.4", "depth": 1, "source": "registry", "dependencies": { - "com.unity.sysroot": "2.0.4" + "com.unity.sysroot": "2.0.5" }, "url": "https://packages.unity.com" }, "com.unity.test-framework": { - "version": "1.1.29", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { @@ -139,7 +150,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.6.4", + "version": "1.7.4", "depth": 1, "source": "registry", "dependencies": { @@ -151,12 +162,12 @@ "url": "https://packages.unity.com" }, "com.unity.toolchain.macos-x86_64-linux-x86_64": { - "version": "2.0.3", + "version": "2.0.4", "depth": 0, "source": "registry", "dependencies": { - "com.unity.sysroot": "2.0.4", - "com.unity.sysroot.linux-x86_64": "2.0.3" + "com.unity.sysroot": "2.0.5", + "com.unity.sysroot.linux-x86_64": "2.0.4" }, "url": "https://packages.unity.com" }, @@ -169,6 +180,12 @@ "com.unity.modules.imgui": "1.0.0" } }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, "com.unity.modules.animation": { "version": "1.0.0", "depth": 2, @@ -236,17 +253,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/Project/ProjectSettings/ProjectVersion.txt b/Project/ProjectSettings/ProjectVersion.txt index 8ea1b855ae..e7e2f19822 100644 --- a/Project/ProjectSettings/ProjectVersion.txt +++ b/Project/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.11f1 -m_EditorVersionWithRevision: 2021.3.11f1 (0a5ca18544bf) +m_EditorVersion: 2022.3.4f1 +m_EditorVersionWithRevision: 2022.3.4f1 (35713cd46cd7) diff --git a/com.unity.ml-agents.extensions/Editor/EditorExample.cs b/com.unity.ml-agents.extensions/Editor/EditorExample.cs index 16be9a585d..e5aaef1724 100644 --- a/com.unity.ml-agents.extensions/Editor/EditorExample.cs +++ b/com.unity.ml-agents.extensions/Editor/EditorExample.cs @@ -1,4 +1,3 @@ namespace Unity.MLAgents.Extensions.Editor { - } diff --git a/com.unity.ml-agents.extensions/Editor/RigidBodySensorComponentEditor.cs b/com.unity.ml-agents.extensions/Editor/RigidBodySensorComponentEditor.cs index f1606595fb..632a2e99e9 100644 --- a/com.unity.ml-agents.extensions/Editor/RigidBodySensorComponentEditor.cs +++ b/com.unity.ml-agents.extensions/Editor/RigidBodySensorComponentEditor.cs @@ -69,7 +69,5 @@ public override void OnInspectorGUI() rbSensorComp.ResetPoseExtractor(); } } - - } } diff --git a/com.unity.ml-agents.extensions/Runtime/Input/Adaptors/Vector2InputActionAdaptor.cs b/com.unity.ml-agents.extensions/Runtime/Input/Adaptors/Vector2InputActionAdaptor.cs index 744b894b72..e46c5a9ef2 100644 --- a/com.unity.ml-agents.extensions/Runtime/Input/Adaptors/Vector2InputActionAdaptor.cs +++ b/com.unity.ml-agents.extensions/Runtime/Input/Adaptors/Vector2InputActionAdaptor.cs @@ -37,7 +37,6 @@ public void WriteToHeuristic(InputAction action, in ActionBuffers actionBuffers) continuousActions[0] = value.x; continuousActions[1] = value.y; } - } } #endif // MLA_INPUT_SYSTEM diff --git a/com.unity.ml-agents.extensions/Runtime/Input/InputActionActuator.cs b/com.unity.ml-agents.extensions/Runtime/Input/InputActionActuator.cs index 4a6ecd4e41..8f7d4f530f 100644 --- a/com.unity.ml-agents.extensions/Runtime/Input/InputActionActuator.cs +++ b/com.unity.ml-agents.extensions/Runtime/Input/InputActionActuator.cs @@ -60,7 +60,6 @@ public void OnActionReceived(ActionBuffers actionBuffers) { m_InputAdaptor.WriteToInputEventForAction(eventPtr, m_Action, m_Control, ActionSpec, actionBuffers); } - } Profiler.EndSample(); } diff --git a/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorComponent.cs b/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorComponent.cs index 334d0d8cea..ac8ae75236 100644 --- a/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorComponent.cs +++ b/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorComponent.cs @@ -69,7 +69,6 @@ public override ActionSpec ActionSpec null, InputActuatorEventContext.s_EditorContext); m_ActionSpec = CombineActuatorActionSpecs(actuators); - } #endif return m_ActionSpec; diff --git a/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorEventContext.cs b/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorEventContext.cs index d7021ccd8f..816c55dbba 100644 --- a/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorEventContext.cs +++ b/com.unity.ml-agents.extensions/Runtime/Input/InputActuatorEventContext.cs @@ -16,7 +16,6 @@ namespace Unity.MLAgents.Extensions.Input /// public class InputActuatorEventContext : IDisposable { - /// /// The number of times to allow the use of an event before queuing it in the InputSystem. /// @@ -74,7 +73,6 @@ public void Dispose() InputSystem.QueueEvent(m_Ptr); m_EventBuffer.Dispose(); } - } } } diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyJointExtractor.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyJointExtractor.cs index 88c149e4be..fca56a4795 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyJointExtractor.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyJointExtractor.cs @@ -94,7 +94,7 @@ public int Write(PhysicsSensorSettings settings, ObservationWriter writer, int o for (var dofIndex = 0; dofIndex < m_Body.dofCount; dofIndex++) { // take tanh to keep in [-1, 1] - writer[currentOffset++] = (float) System.Math.Tanh(m_Body.jointForce[dofIndex]); + writer[currentOffset++] = (float)System.Math.Tanh(m_Body.jointForce[dofIndex]); } } @@ -140,7 +140,7 @@ float GetPrismaticValue() return normalized; } // take tanh() to keep in [-1, 1] - return (float) System.Math.Tanh(jointPos); + return (float)System.Math.Tanh(jointPos); } } } diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyPoseExtractor.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyPoseExtractor.cs index ceec6e0013..c307da0811 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyPoseExtractor.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodyPoseExtractor.cs @@ -25,7 +25,7 @@ public ArticulationBodyPoseExtractor(ArticulationBody rootBody) return; } - var bodies = rootBody.GetComponentsInChildren (); + var bodies = rootBody.GetComponentsInChildren(); if (bodies[0] != rootBody) { Debug.Log("Expected root body at index 0"); diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodySensorComponent.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodySensorComponent.cs index c62ea60b70..41e8acde56 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodySensorComponent.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/ArticulationBodySensorComponent.cs @@ -4,7 +4,7 @@ namespace Unity.MLAgents.Extensions.Sensors { - public class ArticulationBodySensorComponent : SensorComponent + public class ArticulationBodySensorComponent : SensorComponent { public ArticulationBody RootBody; @@ -20,8 +20,6 @@ public override ISensor[] CreateSensors() { return new ISensor[] {new PhysicsBodySensor(RootBody, Settings, sensorName)}; } - } - } #endif // UNITY_2020_1_OR_NEWER diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/PoseExtractor.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/PoseExtractor.cs index 059804377b..9777473a95 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/PoseExtractor.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/PoseExtractor.cs @@ -216,7 +216,6 @@ protected internal virtual Object GetObjectAt(int index) return null; } - /// /// Update the internal model space transform storage based on the underlying system. /// @@ -422,7 +421,6 @@ internal IList GetDisplayNodes() return nodesOut; } - } /// diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodyPoseExtractor.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodyPoseExtractor.cs index b54b0b5713..38fad10fde 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodyPoseExtractor.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodyPoseExtractor.cs @@ -3,7 +3,6 @@ namespace Unity.MLAgents.Extensions.Sensors { - /// /// Utility class to track a hierarchy of RigidBodies. These are assumed to have a root node, /// and child nodes are connect to their parents via Joints. @@ -28,7 +27,7 @@ public class RigidBodyPoseExtractor : PoseExtractor /// a stabilized reference frame, which can improve learning. /// Optional mapping of whether a body's psoe should be enabled or not. public RigidBodyPoseExtractor(Rigidbody rootBody, GameObject rootGameObject = null, - GameObject virtualRoot = null, Dictionary enableBodyPoses = null) + GameObject virtualRoot = null, Dictionary enableBodyPoses = null) { if (rootBody == null) { @@ -205,5 +204,4 @@ internal IEnumerable GetEnabledRigidbodies() } } } - } diff --git a/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodySensorComponent.cs b/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodySensorComponent.cs index a6dad23b66..283a37b3a5 100644 --- a/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodySensorComponent.cs +++ b/com.unity.ml-agents.extensions/Runtime/Sensors/RigidBodySensorComponent.cs @@ -110,5 +110,4 @@ internal bool IsTrivial() return false; } } - } diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/RuntimeExampleTest.cs b/com.unity.ml-agents.extensions/Tests/Runtime/RuntimeExampleTest.cs index f1ae3e0f8b..4065dce1dc 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/RuntimeExampleTest.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/RuntimeExampleTest.cs @@ -2,16 +2,12 @@ namespace Unity.MLAgents.Extensions.Tests { - internal class RuntimeExampleTest { - [Test] public void RuntimeTestMath() { Assert.AreEqual(2, 1 + 1); } - } - } diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/ArticulationBodySensorTests.cs b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/ArticulationBodySensorTests.cs index 03b429595b..322f934f74 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/ArticulationBodySensorTests.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/ArticulationBodySensorTests.cs @@ -6,7 +6,6 @@ namespace Unity.MLAgents.Extensions.Tests.Sensors { - public class ArticulationBodySensorTests { [Test] diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/CountingGridSensorTests.cs b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/CountingGridSensorTests.cs index fe0b71423d..4e2054358b 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/CountingGridSensorTests.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/CountingGridSensorTests.cs @@ -56,13 +56,15 @@ public void SetParameters(string[] detectableTags) protected override GridSensorBase[] GetGridSensors() { - return new GridSensorBase[] { + return new GridSensorBase[] + { new CountingGridSensor( "TestSensor", CellScale, GridSize, DetectableTags, - CompressionType) }; + CompressionType) + }; } } diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/PoseExtractorTests.cs b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/PoseExtractorTests.cs index 782b7da3a9..7aa8528a97 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/PoseExtractorTests.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/PoseExtractorTests.cs @@ -7,7 +7,6 @@ namespace Unity.MLAgents.Extensions.Tests.Sensors { public class PoseExtractorTests { - class BasicPoseExtractor : PoseExtractor { protected internal override Pose GetPoseAt(int index) @@ -80,7 +79,6 @@ public void TestSimpleExtractor() Assert.AreEqual(2, poseExtractor.NumPoses); } - /// /// A simple "chain" hierarchy, where each object is parented to the one before it. /// 0 <- 1 <- 2 <- ... @@ -113,7 +111,6 @@ protected internal override Vector3 GetLinearVelocityAt(int index) { return Vector3.zero; } - } [Test] @@ -139,7 +136,6 @@ public void TestChain() { var expectedModelTranslation = new Vector3(modelPoseIndex, modelPoseIndex, modelPoseIndex); Assert.IsTrue(expectedModelTranslation == modelSpace.position); - } modelPoseIndex++; } @@ -223,7 +219,6 @@ public void TestExpectedRoot() var unused = new BadPoseExtractor(); }); } - } public class PoseExtensionTests @@ -244,6 +239,5 @@ public void TestInverse() Assert.IsTrue(Pose.identity == product); } - } } diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodyPoseExtractorTests.cs b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodyPoseExtractorTests.cs index 3a8c7d88d7..a8a378beb0 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodyPoseExtractorTests.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodyPoseExtractorTests.cs @@ -178,8 +178,6 @@ public void TestBodyPosesEnabledDictionary() var poseExtractor2 = new RigidBodyPoseExtractor(rb1, null, null, bodyPosesEnabled); Assert.IsTrue(poseExtractor2.IsPoseEnabled(0)); Assert.IsFalse(poseExtractor2.IsPoseEnabled(1)); - - } } } diff --git a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodySensorTests.cs b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodySensorTests.cs index 28fbe95e74..f5b86e99de 100644 --- a/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodySensorTests.cs +++ b/com.unity.ml-agents.extensions/Tests/Runtime/Sensors/RigidBodySensorTests.cs @@ -5,7 +5,6 @@ namespace Unity.MLAgents.Extensions.Tests.Sensors { - public static class SensorTestHelper { public static void CompareObservation(ISensor sensor, float[] expected) @@ -139,7 +138,6 @@ public void TestBodiesWithJoint() }; SensorTestHelper.CompareObservation(sensor, expected); Assert.AreEqual(expected.Length, sensor.GetObservationSpec().Shape[0]); - } } } diff --git a/com.unity.ml-agents.extensions/package.json b/com.unity.ml-agents.extensions/package.json index d0a77e0c58..26bea420d3 100644 --- a/com.unity.ml-agents.extensions/package.json +++ b/com.unity.ml-agents.extensions/package.json @@ -2,7 +2,7 @@ "name": "com.unity.ml-agents.extensions", "displayName": "ML Agents Extensions", "version": "0.6.1-preview", - "unity": "2021.3", + "unity": "2022.3", "description": "A source-only package for new features based on ML-Agents", "dependencies": { "com.unity.ml-agents": "2.3.0-exp.4", diff --git a/com.unity.ml-agents/CHANGELOG.md b/com.unity.ml-agents/CHANGELOG.md index db3b194051..ca528f4d12 100755 --- a/com.unity.ml-agents/CHANGELOG.md +++ b/com.unity.ml-agents/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to ## [Unreleased] ### Major Changes #### com.unity.ml-agents / com.unity.ml-agents.extensions (C#) +- The minimum supported Unity version was updated to 2022.3. (#) +- Added batched raycast sensor option. (#) #### ml-agents / ml-agents-envs @@ -46,7 +48,7 @@ versioned under `ml-agents-envs` package in the future (#) #### com.unity.ml-agents / com.unity.ml-agents.extensions (C#) - Added switch to RayPerceptionSensor to allow rays to be ordered left to right. (#26) - Current alternating order is still the default but will be deprecated. -- Added suppport for enabling/disabling camera object attached to camera sensor in order to improve performance. (#31) +- Added support for enabling/disabling camera object attached to camera sensor in order to improve performance. (#31) #### ml-agents / ml-agents-envs - Renaming the path that shadows torch with "mlagents/trainers/torch_entities" and update respective imports (#) diff --git a/com.unity.ml-agents/Editor/BufferSensorComponentEditor.cs b/com.unity.ml-agents/Editor/BufferSensorComponentEditor.cs index f41edb2740..b4b478a35b 100644 --- a/com.unity.ml-agents/Editor/BufferSensorComponentEditor.cs +++ b/com.unity.ml-agents/Editor/BufferSensorComponentEditor.cs @@ -26,6 +26,5 @@ public override void OnInspectorGUI() so.ApplyModifiedProperties(); } - } } diff --git a/com.unity.ml-agents/Editor/DemonstrationDrawer.cs b/com.unity.ml-agents/Editor/DemonstrationDrawer.cs index d15baa9a1d..484e6b6a9a 100644 --- a/com.unity.ml-agents/Editor/DemonstrationDrawer.cs +++ b/com.unity.ml-agents/Editor/DemonstrationDrawer.cs @@ -109,7 +109,6 @@ void MakeObservationsProperty(SerializedProperty obsSummariesProperty) var shapeLabel = $"Shapes: {string.Join(", ", shapesLabels)}"; EditorGUILayout.LabelField(shapeLabel); - } public override void OnInspectorGUI() diff --git a/com.unity.ml-agents/Editor/GridSensorComponentEditor.cs b/com.unity.ml-agents/Editor/GridSensorComponentEditor.cs index fa9208e274..9541d869b5 100644 --- a/com.unity.ml-agents/Editor/GridSensorComponentEditor.cs +++ b/com.unity.ml-agents/Editor/GridSensorComponentEditor.cs @@ -12,8 +12,8 @@ public override void OnInspectorGUI() { #if !MLA_UNITY_PHYSICS_MODULE EditorGUILayout.HelpBox("The Physics Module is not currently present. " + - "Please add it to your project in order to use the GridSensor APIs in the " + - $"{nameof(GridSensorComponent)}", MessageType.Warning); + "Please add it to your project in order to use the GridSensor APIs in the " + + $"{nameof(GridSensorComponent)}", MessageType.Warning); #endif var so = serializedObject; diff --git a/com.unity.ml-agents/Editor/RayPerceptionSensorComponentBaseEditor.cs b/com.unity.ml-agents/Editor/RayPerceptionSensorComponentBaseEditor.cs index 4231c2776e..7fdfbc7c52 100644 --- a/com.unity.ml-agents/Editor/RayPerceptionSensorComponentBaseEditor.cs +++ b/com.unity.ml-agents/Editor/RayPerceptionSensorComponentBaseEditor.cs @@ -14,16 +14,16 @@ protected void OnRayPerceptionInspectorGUI(bool is3d) if (is3d) { EditorGUILayout.HelpBox("The Physics Module is not currently present. " + - "Please add it to your project in order to use the Ray Perception APIs in the " + - $"{nameof(RayPerceptionSensorComponent3D)}", MessageType.Warning); + "Please add it to your project in order to use the Ray Perception APIs in the " + + $"{nameof(RayPerceptionSensorComponent3D)}", MessageType.Warning); } #endif #if !MLA_UNITY_PHYSICS2D_MODULE if (!is3d) { EditorGUILayout.HelpBox("The Physics2D Module is not currently present. " + - "Please add it to your project in order to use the Ray Perception APIs in the " + - $"{nameof(RayPerceptionSensorComponent3D)}", MessageType.Warning); + "Please add it to your project in order to use the Ray Perception APIs in the " + + $"{nameof(RayPerceptionSensorComponent3D)}", MessageType.Warning); } #endif var so = serializedObject; @@ -64,6 +64,10 @@ protected void OnRayPerceptionInspectorGUI(bool is3d) } EditorGUILayout.PropertyField(so.FindProperty("m_AlternatingRayOrder"), true); + if (is3d) + { + EditorGUILayout.PropertyField(so.FindProperty("m_UseBatchedRaycasts"), true); + } EditorGUILayout.PropertyField(so.FindProperty("rayHitColor"), true); EditorGUILayout.PropertyField(so.FindProperty("rayMissColor"), true); diff --git a/com.unity.ml-agents/Runtime/Analytics/AnalyticsUtils.cs b/com.unity.ml-agents/Runtime/Analytics/AnalyticsUtils.cs index b206f6bd98..f0fcdbba19 100644 --- a/com.unity.ml-agents/Runtime/Analytics/AnalyticsUtils.cs +++ b/com.unity.ml-agents/Runtime/Analytics/AnalyticsUtils.cs @@ -5,7 +5,6 @@ namespace Unity.MLAgents.Analytics { - internal static class AnalyticsUtils { /// diff --git a/com.unity.ml-agents/Runtime/AssemblyInfo.cs b/com.unity.ml-agents/Runtime/AssemblyInfo.cs index 377c8b0870..5bb925003f 100644 --- a/com.unity.ml-agents/Runtime/AssemblyInfo.cs +++ b/com.unity.ml-agents/Runtime/AssemblyInfo.cs @@ -11,4 +11,3 @@ [assembly: InternalsVisibleTo("Unity.ML-Agents.Extensions.Tests")] [assembly: InternalsVisibleTo("Unity.ML-Agents.Pro")] [assembly: InternalsVisibleTo("Unity.ML-Agents.Pro.Tests")] - diff --git a/com.unity.ml-agents/Runtime/Communicator/RpcCommunicator.cs b/com.unity.ml-agents/Runtime/Communicator/RpcCommunicator.cs index 24d8ae563e..c1427715bc 100644 --- a/com.unity.ml-agents/Runtime/Communicator/RpcCommunicator.cs +++ b/com.unity.ml-agents/Runtime/Communicator/RpcCommunicator.cs @@ -73,7 +73,7 @@ public static RpcCommunicator Create() internal static bool CheckCommunicationVersionsAreCompatible( string unityCommunicationVersion, string pythonApiVersion - ) + ) { var unityVersion = new Version(unityCommunicationVersion); var pythonVersion = new Version(pythonApiVersion); @@ -131,7 +131,6 @@ out input { if (ex is RpcException rpcException) { - switch (rpcException.Status.StatusCode) { case StatusCode.Unavailable: @@ -294,23 +293,23 @@ void SendCommandEvent(CommandProto command) switch (command) { case CommandProto.Quit: - { - NotifyQuitAndShutDownChannel(); - return; - } + { + NotifyQuitAndShutDownChannel(); + return; + } case CommandProto.Reset: + { + foreach (var brainName in m_OrderedAgentsRequestingDecisions.Keys) { - foreach (var brainName in m_OrderedAgentsRequestingDecisions.Keys) - { - m_OrderedAgentsRequestingDecisions[brainName].Clear(); - } - ResetCommandReceived?.Invoke(); - return; + m_OrderedAgentsRequestingDecisions[brainName].Clear(); } + ResetCommandReceived?.Invoke(); + return; + } default: - { - return; - } + { + return; + } } } diff --git a/com.unity.ml-agents/Runtime/DecisionRequester.cs b/com.unity.ml-agents/Runtime/DecisionRequester.cs index cf2ae5dc71..37b5ad299c 100644 --- a/com.unity.ml-agents/Runtime/DecisionRequester.cs +++ b/com.unity.ml-agents/Runtime/DecisionRequester.cs @@ -33,7 +33,7 @@ public class DecisionRequester : MonoBehaviour /// /// Indicates when to requests a decision. By changing this value, the timing of decision /// can be shifted even among agents with the same decision period. The value can be - /// from 0 to DecisionPeriod - 1. + /// from 0 to DecisionPeriod - 1. /// [Range(0, 19)] [Tooltip("Indicates when to requests a decision. By changing this value, the timing " + diff --git a/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs b/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs index 00f6a77a59..c8a02ba708 100644 --- a/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs +++ b/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs @@ -37,7 +37,7 @@ public class DemonstrationRecorder : MonoBehaviour /// Set to zero to record indefinitely. /// [Tooltip("Number of steps to record. The editor will stop playing when it reaches this threshold. " + - "Set to zero to record indefinitely.")] + "Set to zero to record indefinitely.")] public int NumStepsToRecord; /// @@ -46,7 +46,7 @@ public class DemonstrationRecorder : MonoBehaviour /// [FormerlySerializedAs("demonstrationName")] [Tooltip("Base demonstration file name. If multiple files are saved, the additional " + - "filenames will have a unique number appended.")] + "filenames will have a unique number appended.")] public string DemonstrationName; /// @@ -55,7 +55,7 @@ public class DemonstrationRecorder : MonoBehaviour /// [FormerlySerializedAs("demonstrationDirectory")] [Tooltip("Directory to save the demo files. Will default to " + - "{Application.dataPath}/Demonstrations if not specified.")] + "{Application.dataPath}/Demonstrations if not specified.")] public string DemonstrationDirectory; DemonstrationWriter m_DemoWriter; diff --git a/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationWriter.cs b/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationWriter.cs index c29bec2c40..bd4426102f 100644 --- a/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationWriter.cs +++ b/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationWriter.cs @@ -131,7 +131,6 @@ internal void Record(AgentInfo info, List sensors) agentProto.WriteDelimitedTo(m_Writer); } - /// /// Performs all clean-up necessary. /// diff --git a/com.unity.ml-agents/Runtime/Inference/BarracudaModelExtensions.cs b/com.unity.ml-agents/Runtime/Inference/BarracudaModelExtensions.cs index 5e7338c057..0bc1eba2b6 100644 --- a/com.unity.ml-agents/Runtime/Inference/BarracudaModelExtensions.cs +++ b/com.unity.ml-agents/Runtime/Inference/BarracudaModelExtensions.cs @@ -165,12 +165,12 @@ public static bool HasContinuousOutputs(this Model model, bool deterministicInfe else { bool hasStochasticOutput = !deterministicInference && - model.outputs.Contains(TensorNames.ContinuousActionOutput); + model.outputs.Contains(TensorNames.ContinuousActionOutput); bool hasDeterministicOutput = deterministicInference && - model.outputs.Contains(TensorNames.DeterministicContinuousActionOutput); + model.outputs.Contains(TensorNames.DeterministicContinuousActionOutput); return (hasStochasticOutput || hasDeterministicOutput) && - (int)model.GetTensorByName(TensorNames.ContinuousActionOutputShape)[0] > 0; + (int)model.GetTensorByName(TensorNames.ContinuousActionOutputShape)[0] > 0; } } @@ -240,11 +240,11 @@ public static bool HasDiscreteOutputs(this Model model, bool deterministicInfere else { bool hasStochasticOutput = !deterministicInference && - model.outputs.Contains(TensorNames.DiscreteActionOutput); + model.outputs.Contains(TensorNames.DiscreteActionOutput); bool hasDeterministicOutput = deterministicInference && - model.outputs.Contains(TensorNames.DeterministicDiscreteActionOutput); + model.outputs.Contains(TensorNames.DeterministicDiscreteActionOutput); return (hasStochasticOutput || hasDeterministicOutput) && - model.DiscreteOutputSize() > 0; + model.DiscreteOutputSize() > 0; } } @@ -348,7 +348,7 @@ public static bool CheckExpectedTensors(this Model model, List fail { failedModelChecks.Add( FailedCheck.Warning($"Required constant \"{TensorNames.VersionNumber}\" was not found in the model file.") - ); + ); return false; } @@ -358,7 +358,7 @@ public static bool CheckExpectedTensors(this Model model, List fail { failedModelChecks.Add( FailedCheck.Warning($"Required constant \"{TensorNames.MemorySize}\" was not found in the model file.") - ); + ); return false; } @@ -371,7 +371,7 @@ public static bool CheckExpectedTensors(this Model model, List fail { failedModelChecks.Add( FailedCheck.Warning("The model does not contain any Action Output Node.") - ); + ); return false; } @@ -382,16 +382,16 @@ public static bool CheckExpectedTensors(this Model model, List fail { failedModelChecks.Add( FailedCheck.Warning("The model does not contain any Action Output Shape Node.") - ); + ); return false; } if (model.GetTensorByName(TensorNames.IsContinuousControlDeprecated) == null) { failedModelChecks.Add( FailedCheck.Warning($"Required constant \"{TensorNames.IsContinuousControlDeprecated}\" was " + - "not found in the model file. " + - "This is only required for model that uses a deprecated model format.") - ); + "not found in the model file. " + + "This is only required for model that uses a deprecated model format.") + ); return false; } } @@ -406,7 +406,6 @@ public static bool CheckExpectedTensors(this Model model, List fail ); return false; } - else if (!model.HasContinuousOutputs(deterministicInference)) { var actionType = deterministicInference ? "deterministic" : "stochastic"; @@ -436,12 +435,7 @@ public static bool CheckExpectedTensors(this Model model, List fail ); return false; } - } - - - - } return true; } diff --git a/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs b/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs index 724bf2750b..2d04c04e69 100644 --- a/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs +++ b/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs @@ -14,7 +14,6 @@ namespace Unity.MLAgents.Inference /// internal class BarracudaModelParamLoader { - internal enum ModelApiVersion { /// @@ -51,10 +50,12 @@ public static FailedCheck Info(string message) { return new FailedCheck { CheckType = CheckTypeEnum.Info, Message = message }; } + public static FailedCheck Warning(string message) { return new FailedCheck { CheckType = CheckTypeEnum.Warning, Message = message }; } + public static FailedCheck Error(string message) { return new FailedCheck { CheckType = CheckTypeEnum.Error, Message = message }; @@ -103,11 +104,8 @@ public static FailedCheck CheckModelVersion(Model model) ); } return null; - } - - /// /// Factory for the ModelParamLoader : Creates a ModelParamLoader and runs the checks /// on it. @@ -133,7 +131,7 @@ public static IEnumerable CheckModel( int observableAttributeTotalSize = 0, BehaviorType behaviorType = BehaviorType.Default, bool deterministicInference = false - ) + ) { List failedModelChecks = new List(); if (model == null) @@ -168,7 +166,7 @@ public static IEnumerable CheckModel( if (memorySize == -1) { failedModelChecks.Add(FailedCheck.Warning($"Missing node in the model provided : {TensorNames.MemorySize}" - )); + )); return failedModelChecks; } @@ -192,7 +190,6 @@ public static IEnumerable CheckModel( } - failedModelChecks.AddRange( CheckOutputTensorShape(model, brainParameters, actuatorComponents) ); @@ -236,8 +233,8 @@ ISensor[] sensors { failedModelChecks.Add( FailedCheck.Warning("The model does not contain a Vector Observation Placeholder Input. " + - "You must set the Vector Observation Space Size to 0.") - ); + "You must set the Vector Observation Space Size to 0.") + ); } // If there are not enough Visual Observation Input compared to what the @@ -253,8 +250,8 @@ ISensor[] sensors { failedModelChecks.Add( FailedCheck.Warning("The model does not contain a Visual Observation Placeholder Input " + - $"for sensor component {visObsIndex} ({sensor.GetType().Name}).") - ); + $"for sensor component {visObsIndex} ({sensor.GetType().Name}).") + ); } visObsIndex++; } @@ -265,11 +262,10 @@ ISensor[] sensors { failedModelChecks.Add( FailedCheck.Warning("The model does not contain an Observation Placeholder Input " + - $"for sensor component {sensorIndex} ({sensor.GetType().Name}).") - ); + $"for sensor component {sensorIndex} ({sensor.GetType().Name}).") + ); } } - } var expectedVisualObs = model.GetNumVisualInputs(); @@ -278,8 +274,8 @@ ISensor[] sensors { failedModelChecks.Add( FailedCheck.Warning($"The model expects {expectedVisualObs} visual inputs," + - $" but only found {visObsIndex} visual sensors.") - ); + $" but only found {visObsIndex} visual sensors.") + ); } // If the model has a non-negative memory size but requires a recurrent input @@ -301,7 +297,7 @@ ISensor[] sensors { failedModelChecks.Add( FailedCheck.Warning("The model does not contain an Action Mask but is using Discrete Control.") - ); + ); } } return failedModelChecks; @@ -345,7 +341,7 @@ static IEnumerable CheckInputTensorPresence( failedModelChecks.Add( FailedCheck.Warning("The model does not contain an Observation Placeholder Input " + $"for sensor component {sensorIndex} ({sensor.GetType().Name}).") - ); + ); } } @@ -356,8 +352,8 @@ static IEnumerable CheckInputTensorPresence( if (!tensorsNames.Any(x => x == TensorNames.RecurrentInPlaceholder)) { failedModelChecks.Add( - FailedCheck.Warning("The model does not contain a Recurrent Input Node but has memory_size.") - ); + FailedCheck.Warning("The model does not contain a Recurrent Input Node but has memory_size.") + ); } } @@ -368,7 +364,7 @@ static IEnumerable CheckInputTensorPresence( { failedModelChecks.Add( FailedCheck.Warning("The model does not contain an Action Mask but is using Discrete Control.") - ); + ); } } return failedModelChecks; @@ -399,9 +395,8 @@ static IEnumerable CheckOutputTensorPresence(Model model, int memor { failedModelChecks.Add( FailedCheck.Warning("The model does not contain a Recurrent Output Node but has memory_size.") - ); + ); } - } return failedModelChecks; } @@ -544,7 +539,6 @@ static IEnumerable CheckInputTensorShapeLegacy( var sens = sensors[sensorIndex]; if (sens.GetObservationSpec().Shape.Length == 3) { - tensorTester[TensorNames.GetVisualObservationName(visObsIndex)] = (bp, tensor, scs, i) => CheckVisualObsShape(tensor, sens); visObsIndex++; @@ -565,7 +559,7 @@ static IEnumerable CheckInputTensorShapeLegacy( { failedModelChecks.Add( FailedCheck.Warning("Model contains an unexpected input named : " + tensor.name) - ); + ); } } else @@ -643,7 +637,6 @@ static FailedCheck CheckVectorObsShapeLegacy( return null; } - /// /// Generates failed checks that correspond to inputs shapes incompatibilities between /// the model and the BrainParameters. @@ -695,7 +688,6 @@ static IEnumerable CheckInputTensorShape( tensorTester[TensorNames.GetObservationName(sensorIndex)] = (bp, tensor, scs, i) => CheckRankOneObsShape(tensor, sens); } - } // If the model expects an input but it is not in this list @@ -812,7 +804,6 @@ static IEnumerable CheckOutputTensorShape( static FailedCheck CheckDiscreteActionOutputShape( BrainParameters brainParameters, ActuatorComponent[] actuatorComponents, Tensor modelDiscreteBranches) { - var discreteActionBranches = brainParameters.ActionSpec.BranchSizes.ToList(); foreach (var actuatorComponent in actuatorComponents) { @@ -833,7 +824,7 @@ static FailedCheck CheckDiscreteActionOutputShape( if (modelDiscreteBranches != null && modelDiscreteBranches[i] != discreteActionBranches[i]) { return FailedCheck.Warning($"The number of Discrete Actions of branch {i} does not match. " + - $"Was expecting {discreteActionBranches[i]} but the model contains {modelDiscreteBranches[i]} " + $"Was expecting {discreteActionBranches[i]} but the model contains {modelDiscreteBranches[i]} " ); } } diff --git a/com.unity.ml-agents/Runtime/Inference/ModelRunner.cs b/com.unity.ml-agents/Runtime/Inference/ModelRunner.cs index 1ded24d115..e7d4c1c646 100644 --- a/com.unity.ml-agents/Runtime/Inference/ModelRunner.cs +++ b/com.unity.ml-agents/Runtime/Inference/ModelRunner.cs @@ -77,8 +77,8 @@ public ModelRunner( barracudaModel = ModelLoader.Load(model); var failedCheck = BarracudaModelParamLoader.CheckModelVersion( - barracudaModel - ); + barracudaModel + ); if (failedCheck != null) { if (failedCheck.CheckType == BarracudaModelParamLoader.FailedCheck.CheckTypeEnum.Error) diff --git a/com.unity.ml-agents/Runtime/Inference/TensorGenerator.cs b/com.unity.ml-agents/Runtime/Inference/TensorGenerator.cs index 39bed85792..f1a3578bdb 100644 --- a/com.unity.ml-agents/Runtime/Inference/TensorGenerator.cs +++ b/com.unity.ml-agents/Runtime/Inference/TensorGenerator.cs @@ -146,7 +146,6 @@ public void InitializeObservations(List sensors, ITensorAllocator alloc var obsGenName = TensorNames.GetObservationName(sensorIndex); obsGen.AddSensorIndex(sensorIndex); m_Dict[obsGenName] = obsGen; - } } } diff --git a/com.unity.ml-agents/Runtime/Integrations/Match3/Move.cs b/com.unity.ml-agents/Runtime/Integrations/Match3/Move.cs index 20bf0809bc..d4aac5f854 100644 --- a/com.unity.ml-agents/Runtime/Integrations/Match3/Move.cs +++ b/com.unity.ml-agents/Runtime/Integrations/Match3/Move.cs @@ -150,7 +150,6 @@ public void Next(BoardSize maxBoardSize) /// public static Move FromPositionAndDirection(int row, int col, Direction dir, BoardSize maxBoardSize) { - // Check for out-of-bounds if (row < 0 || row >= maxBoardSize.Rows) { diff --git a/com.unity.ml-agents/Runtime/MLAgentsSettingsManager.cs b/com.unity.ml-agents/Runtime/MLAgentsSettingsManager.cs index 2c54593497..86abeed74a 100644 --- a/com.unity.ml-agents/Runtime/MLAgentsSettingsManager.cs +++ b/com.unity.ml-agents/Runtime/MLAgentsSettingsManager.cs @@ -71,11 +71,13 @@ internal static void InitializeInEditor() } Settings = settings; } + #else internal static void InitializeInPlayer() { Settings = Resources.FindObjectsOfTypeAll().FirstOrDefault() ?? ScriptableObject.CreateInstance(); } + #endif internal static void ApplySettings() diff --git a/com.unity.ml-agents/Runtime/Sampler.cs b/com.unity.ml-agents/Runtime/Sampler.cs index 5135f368d5..15a83937d1 100644 --- a/com.unity.ml-agents/Runtime/Sampler.cs +++ b/com.unity.ml-agents/Runtime/Sampler.cs @@ -5,13 +5,11 @@ namespace Unity.MLAgents { - /// /// Takes a list of floats that encode a sampling distribution and returns the sampling function. /// internal static class SamplerFactory { - public static Func CreateUniformSampler(float min, float max, int seed) { Random distr = new Random(seed); @@ -63,6 +61,7 @@ float MultiRange() int sampledInterval = intervalDistr.Sample(intervalSizes); return intervalFuncs[sampledInterval].Invoke(); } + return MultiRange; } } diff --git a/com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs b/com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs index 1c290630cc..5ec58b1358 100644 --- a/com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs +++ b/com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs @@ -237,6 +237,7 @@ void ParseCollidersAll(Collider[] foundColliders, int numFound, int cellIndex, V } } } + #endif public void RegisterSensor(GridSensorBase sensor) diff --git a/com.unity.ml-agents/Runtime/Sensors/BufferSensorComponent.cs b/com.unity.ml-agents/Runtime/Sensors/BufferSensorComponent.cs index b825b4a974..8be049e8a2 100644 --- a/com.unity.ml-agents/Runtime/Sensors/BufferSensorComponent.cs +++ b/com.unity.ml-agents/Runtime/Sensors/BufferSensorComponent.cs @@ -2,14 +2,12 @@ namespace Unity.MLAgents.Sensors { - /// /// A SensorComponent that creates a . /// [AddComponentMenu("ML Agents/Buffer Sensor", (int)MenuGroup.Sensors)] public class BufferSensorComponent : SensorComponent { - /// /// Name of the generated object. /// Note that changing this at runtime does not affect how the Agent sorts the sensors. diff --git a/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs b/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs index 4cb67ec709..158d2a0391 100644 --- a/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs +++ b/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using Unity.Collections; +using Unity.Jobs; using UnityEngine; namespace Unity.MLAgents.Sensors @@ -72,6 +74,11 @@ public struct RayPerceptionInput /// public int LayerMask; + /// + /// Whether to use batched raycasts. + /// + public bool UseBatchedRaycasts; + /// /// Returns the expected number of floats in the output. /// @@ -245,6 +252,8 @@ public class RayPerceptionSensor : ISensor, IBuiltInSensor RayPerceptionInput m_RayPerceptionInput; RayPerceptionOutput m_RayPerceptionOutput; + bool m_UseBatchedRaycasts; + /// /// Time.frameCount at the last time Update() was called. This is only used for display in gizmos. /// @@ -264,6 +273,7 @@ public RayPerceptionSensor(string name, RayPerceptionInput rayInput) { m_Name = name; m_RayPerceptionInput = rayInput; + m_UseBatchedRaycasts = rayInput.UseBatchedRaycasts; SetNumObservations(rayInput.OutputSize()); @@ -339,10 +349,17 @@ public void Update() m_RayPerceptionOutput.RayOutputs = new RayPerceptionOutput.RayOutput[numRays]; } - // For each ray, do the casting and save the results. - for (var rayIndex = 0; rayIndex < numRays; rayIndex++) + if (m_UseBatchedRaycasts && m_RayPerceptionInput.CastType == RayPerceptionCastType.Cast3D) + { + PerceiveBatchedRays(ref m_RayPerceptionOutput.RayOutputs, m_RayPerceptionInput); + } + else { - m_RayPerceptionOutput.RayOutputs[rayIndex] = PerceiveSingleRay(m_RayPerceptionInput, rayIndex); + // For each ray, do the casting and save the results. + for (var rayIndex = 0; rayIndex < numRays; rayIndex++) + { + m_RayPerceptionOutput.RayOutputs[rayIndex] = PerceiveSingleRay(m_RayPerceptionInput, rayIndex); + } } } @@ -383,20 +400,157 @@ public BuiltInSensorType GetBuiltInSensorType() /// Evaluates the raycasts to be used as part of an observation of an agent. /// /// Input defining the rays that will be cast. + /// Use batched raycasts. /// Output struct containing the raycast results. - public static RayPerceptionOutput Perceive(RayPerceptionInput input) + public static RayPerceptionOutput Perceive(RayPerceptionInput input, bool batched) { RayPerceptionOutput output = new RayPerceptionOutput(); output.RayOutputs = new RayPerceptionOutput.RayOutput[input.Angles.Count]; - for (var rayIndex = 0; rayIndex < input.Angles.Count; rayIndex++) + if (batched) { - output.RayOutputs[rayIndex] = PerceiveSingleRay(input, rayIndex); + PerceiveBatchedRays(ref output.RayOutputs, input); + } + else + { + for (var rayIndex = 0; rayIndex < input.Angles.Count; rayIndex++) + { + output.RayOutputs[rayIndex] = PerceiveSingleRay(input, rayIndex); + } } return output; } + /// + /// Evaluate the raycast results of all the rays from the RayPerceptionInput as a batch. + /// + /// + /// + /// + internal static void PerceiveBatchedRays(ref RayPerceptionOutput.RayOutput[] batchedRaycastOutputs, RayPerceptionInput input) + { + var numRays = input.Angles.Count; + var results = new NativeArray(numRays, Allocator.TempJob); + var unscaledRayLength = input.RayLength; + var unscaledCastRadius = input.CastRadius; + + var raycastCommands = new NativeArray(unscaledCastRadius <= 0f ? numRays : 0, Allocator.TempJob); + var spherecastCommands = new NativeArray(unscaledCastRadius > 0f ? numRays : 0, Allocator.TempJob); + + // this is looped + + for (int i = 0; i < numRays; i++) + { + var extents = input.RayExtents(i); + var startPositionWorld = extents.StartPositionWorld; + var endPositionWorld = extents.EndPositionWorld; + + var rayDirection = endPositionWorld - startPositionWorld; + // If there is non-unity scale, |rayDirection| will be different from rayLength. + // We want to use this transformed ray length for determining cast length, hit fraction etc. + // We also it to scale up or down the sphere or circle radii + var scaledRayLength = rayDirection.magnitude; + // Avoid 0/0 if unscaledRayLength is 0 + var scaledCastRadius = unscaledRayLength > 0 ? + unscaledCastRadius * scaledRayLength / unscaledRayLength : + unscaledCastRadius; + + var queryParameters = QueryParameters.Default; + queryParameters.layerMask = input.LayerMask; + + var rayDirectionNormalized = rayDirection.normalized; + + if (scaledCastRadius > 0f) + { + spherecastCommands[i] = new SpherecastCommand(startPositionWorld, scaledCastRadius, rayDirectionNormalized, queryParameters, scaledRayLength); + } + else + { + raycastCommands[i] = new RaycastCommand(startPositionWorld, rayDirectionNormalized, queryParameters, scaledRayLength); + } + + batchedRaycastOutputs[i] = new RayPerceptionOutput.RayOutput + { + HitTaggedObject = false, + HitTagIndex = -1, + StartPositionWorld = startPositionWorld, + EndPositionWorld = endPositionWorld, + ScaledCastRadius = scaledCastRadius + }; + + } + + if (unscaledCastRadius > 0f) + { + JobHandle handle = SpherecastCommand.ScheduleBatch(spherecastCommands, results, 1, 1, default(JobHandle)); + handle.Complete(); + } + else + { + JobHandle handle = RaycastCommand.ScheduleBatch(raycastCommands, results, 1, 1, default(JobHandle)); + handle.Complete(); + } + + for (int i = 0; i < results.Length; i++) + { + var castHit = results[i].collider != null; + var hitFraction = 1.0f; + GameObject hitObject = null; + float scaledRayLength; + float scaledCastRadius = batchedRaycastOutputs[i].ScaledCastRadius; + if (scaledCastRadius > 0f) + { + scaledRayLength = spherecastCommands[i].distance; + } + else + { + scaledRayLength = raycastCommands[i].distance; + } + + // hitFraction = castHit ? (scaledRayLength > 0 ? results[i].distance / scaledRayLength : 0.0f) : 1.0f; + // Debug.Log(results[i].distance); + hitFraction = castHit ? (scaledRayLength > 0 ? results[i].distance / scaledRayLength : 0.0f) : 1.0f; + hitObject = castHit ? results[i].collider.gameObject : null; + + if (castHit) + { + var numTags = input.DetectableTags?.Count ?? 0; + for (int j = 0; j < numTags; j++) + { + var tagsEqual = false; + try + { + var tag = input.DetectableTags[j]; + if (!string.IsNullOrEmpty(tag)) + { + tagsEqual = hitObject.CompareTag(tag); + } + } + catch (UnityException) + { + } + + if (tagsEqual) + { + batchedRaycastOutputs[i].HitTaggedObject = true; + batchedRaycastOutputs[i].HitTagIndex = j; + break; + } + } + } + + batchedRaycastOutputs[i].HasHit = castHit; + batchedRaycastOutputs[i].HitFraction = hitFraction; + batchedRaycastOutputs[i].HitGameObject = hitObject; + + } + + results.Dispose(); + raycastCommands.Dispose(); + spherecastCommands.Dispose(); + } + /// /// Evaluate the raycast results of a single ray from the RayPerceptionInput. /// diff --git a/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensorComponentBase.cs b/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensorComponentBase.cs index 75a114382e..35c4fd5320 100644 --- a/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensorComponentBase.cs +++ b/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensorComponentBase.cs @@ -145,6 +145,20 @@ public bool AlternatingRayOrder set { m_AlternatingRayOrder = value; } } + [HideInInspector, SerializeField] + [Tooltip("Enable to use batched raycasts and the jobs system.")] + public bool m_UseBatchedRaycasts = false; + + /// + /// Determines whether to use batched raycasts and the jobs system. Default = false. + /// + public bool UseBatchedRaycasts + { + get { return m_UseBatchedRaycasts; } + set { m_UseBatchedRaycasts = value; } + } + + /// /// Color to code a ray that hits another object. /// @@ -289,6 +303,7 @@ public RayPerceptionInput GetRayPerceptionInput() rayPerceptionInput.Transform = transform; rayPerceptionInput.CastType = GetCastType(); rayPerceptionInput.LayerMask = RayLayerMask; + rayPerceptionInput.UseBatchedRaycasts = UseBatchedRaycasts; return rayPerceptionInput; } @@ -334,10 +349,23 @@ void OnDrawGizmosSelected() // and there's no way to turn off the "Tag ... is not defined" error logs. // So just don't use any tags here. rayInput.DetectableTags = null; - for (var rayIndex = 0; rayIndex < rayInput.Angles.Count; rayIndex++) + if (m_UseBatchedRaycasts && rayInput.CastType == RayPerceptionCastType.Cast3D) + { + // TODO add call to PerceiveBatchedRays() + var rayOutputs = new RayPerceptionOutput.RayOutput[rayInput.Angles.Count]; + RayPerceptionSensor.PerceiveBatchedRays(ref rayOutputs, rayInput); + for (var rayIndex = 0; rayIndex < rayInput.Angles.Count; rayIndex++) + { + DrawRaycastGizmos(rayOutputs[rayIndex]); + } + } + else { - var rayOutput = RayPerceptionSensor.PerceiveSingleRay(rayInput, rayIndex); - DrawRaycastGizmos(rayOutput); + for (var rayIndex = 0; rayIndex < rayInput.Angles.Count; rayIndex++) + { + var rayOutput = RayPerceptionSensor.PerceiveSingleRay(rayInput, rayIndex); + DrawRaycastGizmos(rayOutput); + } } } } diff --git a/com.unity.ml-agents/Runtime/Sensors/SensorShapeValidator.cs b/com.unity.ml-agents/Runtime/Sensors/SensorShapeValidator.cs index 9d45e673ed..2d80d75234 100644 --- a/com.unity.ml-agents/Runtime/Sensors/SensorShapeValidator.cs +++ b/com.unity.ml-agents/Runtime/Sensors/SensorShapeValidator.cs @@ -46,7 +46,6 @@ public void ValidateSensors(List sensors) cachedSpec.Shape, sensorSpec.Shape ); - } } } diff --git a/com.unity.ml-agents/Runtime/SideChannels/EngineConfigurationChannel.cs b/com.unity.ml-agents/Runtime/SideChannels/EngineConfigurationChannel.cs index 7bea193dd5..246ef50074 100644 --- a/com.unity.ml-agents/Runtime/SideChannels/EngineConfigurationChannel.cs +++ b/com.unity.ml-agents/Runtime/SideChannels/EngineConfigurationChannel.cs @@ -3,7 +3,6 @@ namespace Unity.MLAgents.SideChannels { - /// /// Side channel that supports modifying attributes specific to the Unity Engine. /// diff --git a/com.unity.ml-agents/Runtime/SideChannels/EnvironmentParametersChannel.cs b/com.unity.ml-agents/Runtime/SideChannels/EnvironmentParametersChannel.cs index 9b2842b300..0e2b88b6ec 100644 --- a/com.unity.ml-agents/Runtime/SideChannels/EnvironmentParametersChannel.cs +++ b/com.unity.ml-agents/Runtime/SideChannels/EnvironmentParametersChannel.cs @@ -32,7 +32,6 @@ internal enum SamplerType /// Samples a reset parameter from a MultiRangeUniform distribution. /// MultiRangeUniform = 2 - } /// diff --git a/com.unity.ml-agents/Runtime/Timer.cs b/com.unity.ml-agents/Runtime/Timer.cs index 35a6660e75..fe0ba47211 100644 --- a/com.unity.ml-agents/Runtime/Timer.cs +++ b/com.unity.ml-agents/Runtime/Timer.cs @@ -79,7 +79,7 @@ public long CurrentTicks public double TotalSeconds { get { return CurrentTicks * s_TicksToSeconds; } - set { } // Serialization needs this, but unused. + set { } // Serialization needs this, but unused. } /// @@ -102,7 +102,7 @@ public double SelfSeconds var selfTicks = Mathf.Max(0, CurrentTicks - totalChildTicks); return selfTicks * s_TicksToSeconds; } - set { } // Serialization needs this, but unused. + set { } // Serialization needs this, but unused. } public IReadOnlyDictionary Children @@ -234,6 +234,7 @@ public RootNode(string name = "root") : base(name, true) m_Metadata.Add("unity_version", Application.unityVersion); m_Metadata.Add("command_line_arguments", String.Join(" ", GetCleanedCommandLineArguments())); } + /// /// Cleans Environment CommandLine Argument from license infos /// diff --git a/com.unity.ml-agents/Samples.meta b/com.unity.ml-agents/Samples.meta new file mode 100644 index 0000000000..6bfe79069d --- /dev/null +++ b/com.unity.ml-agents/Samples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df09abf155607462ebf9ac4697220357 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.ml-agents/Samples/3DBall.meta b/com.unity.ml-agents/Samples/3DBall.meta new file mode 100644 index 0000000000..a52f058ba4 --- /dev/null +++ b/com.unity.ml-agents/Samples/3DBall.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7c3ff420d48043aea9c820c1f87c5f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.ml-agents/Samples/3DBall/3DBall.unitypackage.meta b/com.unity.ml-agents/Samples/3DBall/3DBall.unitypackage.meta new file mode 100644 index 0000000000..0301d45ba4 --- /dev/null +++ b/com.unity.ml-agents/Samples/3DBall/3DBall.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3eff7a05c1c4e459a90f7c9951f7d549 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.ml-agents/Tests/Editor/AcademyTests.cs b/com.unity.ml-agents/Tests/Editor/AcademyTests.cs index 61225acdab..0e1d08014d 100644 --- a/com.unity.ml-agents/Tests/Editor/AcademyTests.cs +++ b/com.unity.ml-agents/Tests/Editor/AcademyTests.cs @@ -46,7 +46,5 @@ public void TestRecursiveStepThrows() // Make sure the Academy reset to a good state and is still steppable. Academy.Instance.EnvironmentStep(); } - - } } diff --git a/com.unity.ml-agents/Tests/Editor/Actuators/ActionSegmentTests.cs b/com.unity.ml-agents/Tests/Editor/Actuators/ActionSegmentTests.cs index 817a9c1fc3..6fec579a34 100644 --- a/com.unity.ml-agents/Tests/Editor/Actuators/ActionSegmentTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Actuators/ActionSegmentTests.cs @@ -17,6 +17,7 @@ public void TestConstruction() var segment = new ActionSegment(Array.Empty(), 0, 0); Assert.AreEqual(segment, ActionSegment.Empty); } + [Test] public void TestIndexing() { @@ -57,7 +58,5 @@ public void TestNullConstructor() Assert.IsTrue(actionSegment.Length == 0); Assert.IsTrue(actionSegment.Array == Array.Empty()); } - } - } diff --git a/com.unity.ml-agents/Tests/Editor/Actuators/ActuatorManagerTests.cs b/com.unity.ml-agents/Tests/Editor/Actuators/ActuatorManagerTests.cs index 429d334828..63791b303c 100644 --- a/com.unity.ml-agents/Tests/Editor/Actuators/ActuatorManagerTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Actuators/ActuatorManagerTests.cs @@ -324,7 +324,6 @@ public void TestHeuristic() Assert.AreEqual(va2.m_DiscreteBufferSize, 4); } - /// /// Test that sensors sort by name consistently across culture settings. /// Example strings and cultures taken from diff --git a/com.unity.ml-agents/Tests/Editor/Actuators/TestActuator.cs b/com.unity.ml-agents/Tests/Editor/Actuators/TestActuator.cs index f4d32708f1..643e5131b1 100644 --- a/com.unity.ml-agents/Tests/Editor/Actuators/TestActuator.cs +++ b/com.unity.ml-agents/Tests/Editor/Actuators/TestActuator.cs @@ -22,7 +22,6 @@ public void OnActionReceived(ActionBuffers actionBuffers) public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) { - for (var i = 0; i < Masks.Length; i++) { foreach (var actionIndex in Masks[i]) diff --git a/com.unity.ml-agents/Tests/Editor/Areas/TrainingAreaReplicatorTests.cs b/com.unity.ml-agents/Tests/Editor/Areas/TrainingAreaReplicatorTests.cs index 5e5b54dc23..1daeb980ee 100644 --- a/com.unity.ml-agents/Tests/Editor/Areas/TrainingAreaReplicatorTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Areas/TrainingAreaReplicatorTests.cs @@ -67,7 +67,6 @@ public void TestAddEnvironments() m_Replicator.OnEnable(); var trainingAreas = Resources.FindObjectsOfTypeAll().Where(obj => obj.name == m_Replicator.TrainingAreaName); Assert.AreEqual(10, trainingAreas.Count()); - } [Test] @@ -79,7 +78,6 @@ public void TestAddEnvironmentsBuildOnly() m_Replicator.OnEnable(); var trainingAreas = Resources.FindObjectsOfTypeAll().Where(obj => obj.name == m_Replicator.TrainingAreaName); Assert.AreEqual(1, trainingAreas.Count()); - } } } diff --git a/com.unity.ml-agents/Tests/Editor/Communicator/RpcCommunicatorTests.cs b/com.unity.ml-agents/Tests/Editor/Communicator/RpcCommunicatorTests.cs index 4f62672f71..937c8555fa 100644 --- a/com.unity.ml-agents/Tests/Editor/Communicator/RpcCommunicatorTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Communicator/RpcCommunicatorTests.cs @@ -6,7 +6,6 @@ namespace Unity.MLAgents.Tests.Communicator [TestFixture] public class RpcCommunicatorTests { - [Test] public void TestCheckCommunicationVersionsAreCompatible() { @@ -36,7 +35,6 @@ public void TestCheckCommunicationVersionsAreCompatible() unityVerStr = "1.15.0"; Assert.IsFalse(RpcCommunicator.CheckCommunicationVersionsAreCompatible(unityVerStr, pythonVerStr)); - } } } diff --git a/com.unity.ml-agents/Tests/Editor/Communicator/UnityRLCapabilitiesTests.cs b/com.unity.ml-agents/Tests/Editor/Communicator/UnityRLCapabilitiesTests.cs index fd3ef3acee..402ceda612 100644 --- a/com.unity.ml-agents/Tests/Editor/Communicator/UnityRLCapabilitiesTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Communicator/UnityRLCapabilitiesTests.cs @@ -18,6 +18,5 @@ public void TestWarnOnPythonMissingBaseRLCapabilities() Assert.True(caps.WarnOnPythonMissingBaseRLCapabilities()); LogAssert.Expect(LogType.Warning, new Regex(".+")); } - } } diff --git a/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs index 58e6c9a95b..aa3fc8c40d 100644 --- a/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs +++ b/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs @@ -6,7 +6,6 @@ namespace Unity.MLAgents.Tests { - public class DiscreteActionOutputApplierTest { [Test] diff --git a/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs index da802a38d5..0fbc933f50 100644 --- a/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs +++ b/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs @@ -158,16 +158,20 @@ public void TestRunModel() var sensor_8 = new Sensors.VectorSensor(8, "VectorSensor8"); var info1 = new AgentInfo(); info1.episodeId = 1; - modelRunner.PutObservations(info1, new[] { + modelRunner.PutObservations(info1, new[] + { sensor_8, sensor_21_20_3.CreateSensors()[0], - sensor_20_22_3.CreateSensors()[0] }.ToList()); + sensor_20_22_3.CreateSensors()[0] + }.ToList()); var info2 = new AgentInfo(); info2.episodeId = 2; - modelRunner.PutObservations(info2, new[] { + modelRunner.PutObservations(info2, new[] + { sensor_8, sensor_21_20_3.CreateSensors()[0], - sensor_20_22_3.CreateSensors()[0] }.ToList()); + sensor_20_22_3.CreateSensors()[0] + }.ToList()); modelRunner.DecideBatch(); @@ -178,7 +182,6 @@ public void TestRunModel() modelRunner.Dispose(); } - [Test] public void TestRunModel_stochastic() { @@ -205,6 +208,7 @@ public void TestRunModel_stochastic() Assert.IsFalse(Enumerable.SequenceEqual(stochAction1, stochAction2, new FloatThresholdComparer(0.001f))); modelRunner.Dispose(); } + [Test] public void TestRunModel_deterministic() { diff --git a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/AbstractBoardTests.cs b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/AbstractBoardTests.cs index b8e9337c1e..3b46c7ec3e 100644 --- a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/AbstractBoardTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/AbstractBoardTests.cs @@ -75,7 +75,6 @@ public void SetSpecial(string newSpecial) NumSpecialTypes = Mathf.Max(NumSpecialTypes, GetSpecialType(r, c)); } } - } public override bool MakeMove(Move m) @@ -109,7 +108,6 @@ public override int GetSpecialType(int row, int col) var character = m_Special[m_Board.Length - 1 - row][col]; return (character - '0'); } - } public class AbstractBoardTests @@ -118,7 +116,7 @@ public class AbstractBoardTests public void TestBoardInit() { var boardString = - @"000 +@"000 000 010"; var gameObj = new GameObject("board"); @@ -174,7 +172,7 @@ public void TestCheckValidMoves(bool fullBoard) var board = gameObj.AddComponent(); var boardString = - @"0105 +@"0105 1024 0203 2022"; diff --git a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs index 2beea36b32..6711ed3b12 100644 --- a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs @@ -163,7 +163,7 @@ public void TestMasking(bool fullBoard) var board = gameObj.AddComponent(); var boardString = - @"0105 +@"0105 1024 0203 2022"; diff --git a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs index a376bd3523..8528b18464 100644 --- a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs @@ -22,7 +22,7 @@ public class Match3SensorTests public void TestVectorObservations(bool fullBoard) { var boardString = - @"000 +@"000 000 010"; var gameObj = new GameObject("board"); @@ -68,11 +68,11 @@ public void TestVectorObservations(bool fullBoard) public void TestVectorObservationsSpecial() { var boardString = - @"000 +@"000 000 010"; var specialString = - @"010 +@"010 200 000"; @@ -118,7 +118,7 @@ public void TestVectorObservationsSpecial() public void TestVisualObservations(bool fullBoard) { var boardString = - @"000 +@"000 000 010"; var gameObj = new GameObject("board"); @@ -181,11 +181,11 @@ public void TestVisualObservations(bool fullBoard) public void TestVisualObservationsSpecial() { var boardString = - @"000 +@"000 000 010"; var specialString = - @"010 +@"010 200 000"; @@ -257,7 +257,6 @@ public void TestVisualObservationsSpecial() Assert.IsNull(specialTexture); } - [TestCase(true, false, TestName = "Full Board, No Special")] [TestCase(false, false, TestName = "Small Board, No Special")] [TestCase(true, true, TestName = "Full Board, Special")] @@ -265,11 +264,11 @@ public void TestVisualObservationsSpecial() public void TestCompressedVisualObservationsSpecial(bool fullBoard, bool useSpecial) { var boardString = - @"003 +@"003 000 010"; var specialString = - @"014 +@"014 200 000"; diff --git a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/MoveTests.cs b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/MoveTests.cs index 8174e7e5db..f4755b4860 100644 --- a/com.unity.ml-agents/Tests/Editor/Integrations/Match3/MoveTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Integrations/Match3/MoveTests.cs @@ -60,7 +60,6 @@ public void TestInvalidMove(int row, int col, Direction dir) { Move.FromPositionAndDirection(row, col, dir, board10x10); }); - } } } diff --git a/com.unity.ml-agents/Tests/Editor/Policies/HeuristicPolicyTest.cs b/com.unity.ml-agents/Tests/Editor/Policies/HeuristicPolicyTest.cs index 740f6a1a6b..22b48ea9e7 100644 --- a/com.unity.ml-agents/Tests/Editor/Policies/HeuristicPolicyTest.cs +++ b/com.unity.ml-agents/Tests/Editor/Policies/HeuristicPolicyTest.cs @@ -38,7 +38,6 @@ static void CheckAndSetBuffer(in ActionBuffers actionsOut) } } - class ActionClearedAgent : Agent { public int HeuristicCalls; @@ -77,7 +76,6 @@ public void Heuristic(in ActionBuffers actionBuffersOut) public void ResetData() { - } } diff --git a/com.unity.ml-agents/Tests/Editor/PublicAPI/PublicApiValidation.cs b/com.unity.ml-agents/Tests/Editor/PublicAPI/PublicApiValidation.cs index 44b22d9c11..fd45bfefc5 100644 --- a/com.unity.ml-agents/Tests/Editor/PublicAPI/PublicApiValidation.cs +++ b/com.unity.ml-agents/Tests/Editor/PublicAPI/PublicApiValidation.cs @@ -73,8 +73,9 @@ public void CheckSetupRayPerceptionSensorComponent() var sensor = sensorComponent.RaySensor; sensor.Update(); var outputs = sensor.RayPerceptionOutput; - Assert.AreEqual(outputs.RayOutputs.Length, 2*sensorComponent.RaysPerDirection + 1); + Assert.AreEqual(outputs.RayOutputs.Length, 2 * sensorComponent.RaysPerDirection + 1); } + #endif /// diff --git a/com.unity.ml-agents/Tests/Editor/SamplerTests.cs b/com.unity.ml-agents/Tests/Editor/SamplerTests.cs index 95eab64c5a..3f8dfa6df2 100644 --- a/com.unity.ml-agents/Tests/Editor/SamplerTests.cs +++ b/com.unity.ml-agents/Tests/Editor/SamplerTests.cs @@ -20,6 +20,7 @@ public SamplerTests() SideChannelManager.RegisterSideChannel(m_Channel); } } + [Test] public void UniformSamplerTest() { diff --git a/com.unity.ml-agents/Tests/Editor/Serialization/TestLoadOldPrefab.cs b/com.unity.ml-agents/Tests/Editor/Serialization/TestLoadOldPrefab.cs index 7755ea6879..945ee199c1 100644 --- a/com.unity.ml-agents/Tests/Editor/Serialization/TestLoadOldPrefab.cs +++ b/com.unity.ml-agents/Tests/Editor/Serialization/TestLoadOldPrefab.cs @@ -21,6 +21,5 @@ public void TestDeserialization() Assert.AreEqual(bp.BrainParameters.ActionSpec.NumContinuousActions, k_numContinuousActions); Assert.AreEqual(bp.BrainParameters.VectorObservationSize, k_numVecObs); } - } } diff --git a/com.unity.ml-agents/Tests/Editor/SideChannels/EngineConfigurationChannelTests.cs b/com.unity.ml-agents/Tests/Editor/SideChannels/EngineConfigurationChannelTests.cs index 74bc2076c2..50be2de09a 100644 --- a/com.unity.ml-agents/Tests/Editor/SideChannels/EngineConfigurationChannelTests.cs +++ b/com.unity.ml-agents/Tests/Editor/SideChannels/EngineConfigurationChannelTests.cs @@ -38,7 +38,5 @@ public void TestTimeScaleClamping() Assert.AreEqual(1000.0f, Time.timeScale); #endif } - - } } diff --git a/com.unity.ml-agents/Tests/Editor/TimerTest.cs b/com.unity.ml-agents/Tests/Editor/TimerTest.cs index 58fc048c91..cc4ba18e8d 100644 --- a/com.unity.ml-agents/Tests/Editor/TimerTest.cs +++ b/com.unity.ml-agents/Tests/Editor/TimerTest.cs @@ -79,8 +79,6 @@ public void TestGauges() // The older values are actually weighted more heavily, so we expect the // increasing series to have a lower moving average. Assert.Less(increasingNode.weightedAverage, decreasingNode.weightedAverage); - - } } } diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs index ea30ed63c2..902a48836d 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs @@ -19,24 +19,24 @@ public TestBoxOverlapChecker( string[] detectableTags, int initialColliderBufferSize, int maxColliderBufferSize - ) : base( - cellScale, - gridSize, - rotateWithAgent, - colliderMask, - centerObject, - agentGameObject, - detectableTags, - initialColliderBufferSize, - maxColliderBufferSize) - { } + ) : base( + cellScale, + gridSize, + rotateWithAgent, + colliderMask, + centerObject, + agentGameObject, + detectableTags, + initialColliderBufferSize, + maxColliderBufferSize) + {} public Vector3[] CellLocalPositions { get { return (Vector3[])typeof(BoxOverlapChecker).GetField("m_CellLocalPositions", - BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); + BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); } } @@ -45,7 +45,7 @@ public Collider[] ColliderBuffer get { return (Collider[])typeof(BoxOverlapChecker).GetField("m_ColliderBuffer", - BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); + BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); } } @@ -199,7 +199,7 @@ public void TestParseCollidersClosest() gridSizeZ: 2, agentGameObject: testGo, centerObject: testGo, - detectableTags: new [] { tag1 }); + detectableTags: new[] { tag1 }); var helper = new VerifyParseCollidersHelper(); boxOverlap.GridOverlapDetectedClosest += helper.DetectedAction; @@ -236,7 +236,7 @@ public void TestParseCollidersAll() gridSizeZ: 2, agentGameObject: testGo, centerObject: testGo, - detectableTags: new [] { tag1 }); + detectableTags: new[] { tag1 }); var helper = new VerifyParseCollidersHelper(); boxOverlap.GridOverlapDetectedAll += helper.DetectedAction; diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorComponentTest.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorComponentTest.cs index b71c89e82e..bad7fefc4f 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorComponentTest.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorComponentTest.cs @@ -6,7 +6,6 @@ namespace Unity.MLAgents.Tests { - [TestFixture] public class CameraSensorComponentTest { diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorTest.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorTest.cs index 3a0bd17746..f075d1941d 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorTest.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/CameraSensorTest.cs @@ -5,7 +5,6 @@ namespace Unity.MLAgents.Tests { - [TestFixture] public class CameraSensorTest { diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTestUtils.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTestUtils.cs index 548262be96..8fd5a3b28b 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTestUtils.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTestUtils.cs @@ -22,7 +22,6 @@ public static float[][] DuplicateArray(float[] array, int numCopies) return duplicated; } - /// /// Asserts that the sub-arrays of the total array are equal to specific subarrays at specific subarray indicies and equal to a default everywhere else. /// diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTests.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTests.cs index d718133f49..f568b74952 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTests.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/GridSensorTests.cs @@ -77,7 +77,7 @@ public void TestInvalidCompressionConfiguration() var gridSensor = (GridSensorBase)gridSensorComponent.CreateSensors()[0]; LogAssert.Expect(LogType.Warning, $"Compression type {SensorCompressionType.PNG} is only supported with normalized data. " + - "The sensor will not compress the data."); + "The sensor will not compress the data."); Assert.AreEqual(gridSensor.CompressionType, SensorCompressionType.None); } @@ -89,8 +89,8 @@ public void TestCreateSensor() gridSensorComponent.SetComponentParameters(tags, useGridSensorBase: true); gridSensorComponent.CreateSensors(); - var componentSensor = (List)typeof(GridSensorComponent).GetField("m_Sensors", - BindingFlags.Instance | BindingFlags.NonPublic).GetValue(gridSensorComponent); + var componentSensor = (List) typeof(GridSensorComponent).GetField("m_Sensors", + BindingFlags.Instance | BindingFlags.NonPublic).GetValue(gridSensorComponent); Assert.AreEqual(componentSensor.Count, 1); } diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/ObservableAttributeTests.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/ObservableAttributeTests.cs index 76f76ba037..f71162ef53 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/ObservableAttributeTests.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/ObservableAttributeTests.cs @@ -169,7 +169,6 @@ public TestFlags FlagProperty get => m_FlagProperty; set => m_FlagProperty = value; } - } [Test] @@ -244,16 +243,16 @@ public void TestGetTotalObservationSize() var testClass = new TestClass(); var errors = new List(); var expectedObsSize = 2 * ( // two fields each of these - 1 // int - + 1 // float - + 1 // bool - + 2 // vector2 - + 3 // vector3 - + 4 // vector4 - + 4 // quaternion - + 3 // TestEnum - 3 values - + 3 // TestFlags - 3 values - ) + 1 // int + + 1 // float + + 1 // bool + + 2 // vector2 + + 3 // vector3 + + 4 // vector4 + + 4 // quaternion + + 3 // TestEnum - 3 values + + 3 // TestFlags - 3 values + ) + 3; // TestEnum with bad value Assert.AreEqual(expectedObsSize, ObservableAttribute.GetTotalObservationSize(testClass, false, errors)); Assert.AreEqual(0, errors.Count); diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/RayPerceptionSensorTests.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/RayPerceptionSensorTests.cs index da2ce43f0d..763dec4964 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/RayPerceptionSensorTests.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/RayPerceptionSensorTests.cs @@ -356,7 +356,7 @@ public void TestStaticPerceive() { perception.SphereCastRadius = castRadius; var castInput = perception.GetRayPerceptionInput(); - var castOutput = RayPerceptionSensor.Perceive(castInput); + var castOutput = RayPerceptionSensor.Perceive(castInput, false); Assert.AreEqual(1, castOutput.RayOutputs.Length); @@ -391,7 +391,7 @@ public void TestStaticPerceiveInvalidTags() // There's no clean way that I can find to check for a defined tag without // logging an error. LogAssert.Expect(LogType.Error, "Tag: Bad tag is not defined."); - var castOutput = RayPerceptionSensor.Perceive(castInput); + var castOutput = RayPerceptionSensor.Perceive(castInput, false); Assert.AreEqual(1, castOutput.RayOutputs.Length); @@ -418,7 +418,7 @@ public void TestStaticPerceiveNoTags() { perception.SphereCastRadius = castRadius; var castInput = perception.GetRayPerceptionInput(); - var castOutput = RayPerceptionSensor.Perceive(castInput); + var castOutput = RayPerceptionSensor.Perceive(castInput, false); Assert.AreEqual(1, castOutput.RayOutputs.Length); @@ -428,6 +428,97 @@ public void TestStaticPerceiveNoTags() } } + [Test] + public void TestStaticBatchedPerceive() + { + SetupScene(); + var obj = new GameObject("agent"); + var perception = obj.AddComponent(); + + perception.RaysPerDirection = 1; // three rays + perception.MaxRayDegrees = 45; + perception.RayLength = 20; + perception.DetectableTags = new List(); + perception.DetectableTags.Add(k_CubeTag); + perception.DetectableTags.Add(k_SphereTag); + + var radii = new[] { 0f, .5f }; + foreach (var castRadius in radii) + { + perception.SphereCastRadius = castRadius; + var castInput = perception.GetRayPerceptionInput(); + var castOutput = RayPerceptionSensor.Perceive(castInput, true); + + Assert.AreEqual(3, castOutput.RayOutputs.Length); + + // Expected to hit the cube + Assert.AreEqual("cube", castOutput.RayOutputs[0].HitGameObject.name); + Assert.AreEqual(0, castOutput.RayOutputs[0].HitTagIndex); + } + } + + [Test] + public void TestStaticPerceiveBatchedInvalidTags() + { + SetupScene(); + var obj = new GameObject("agent"); + var perception = obj.AddComponent(); + + perception.RaysPerDirection = 0; // three rays + perception.MaxRayDegrees = 45; + perception.RayLength = 20; + perception.DetectableTags = new List(); + perception.DetectableTags.Add("Bad tag"); + perception.DetectableTags.Add(null); + perception.DetectableTags.Add(""); + perception.DetectableTags.Add(k_CubeTag); + + var radii = new[] { 0f, .5f }; + foreach (var castRadius in radii) + { + perception.SphereCastRadius = castRadius; + var castInput = perception.GetRayPerceptionInput(); + + // There's no clean way that I can find to check for a defined tag without + // logging an error. + LogAssert.Expect(LogType.Error, "Tag: Bad tag is not defined."); + var castOutput = RayPerceptionSensor.Perceive(castInput, true); + + Assert.AreEqual(1, castOutput.RayOutputs.Length); + + // Expected to hit the cube + Assert.AreEqual("cube", castOutput.RayOutputs[0].HitGameObject.name); + Assert.AreEqual(3, castOutput.RayOutputs[0].HitTagIndex); + } + } + + [Test] + public void TestStaticPerceiveBatchedNoTags() + { + SetupScene(); + var obj = new GameObject("agent"); + var perception = obj.AddComponent(); + + perception.RaysPerDirection = 1; // single ray + perception.MaxRayDegrees = 45; + perception.RayLength = 20; + perception.DetectableTags = null; + + var radii = new[] { 0f, .5f }; + foreach (var castRadius in radii) + { + perception.SphereCastRadius = castRadius; + var castInput = perception.GetRayPerceptionInput(); + var castOutput = RayPerceptionSensor.Perceive(castInput, true); + + Assert.AreEqual(3, castOutput.RayOutputs.Length); + + // Expected to hit the cube + Assert.AreEqual("cube", castOutput.RayOutputs[0].HitGameObject.name); + Assert.AreEqual(-1, castOutput.RayOutputs[0].HitTagIndex); + } + } + [Test] public void TestCreateDefault() { @@ -440,6 +531,7 @@ public void TestCreateDefault() perception.CreateSensors(); }); } + #endif } } diff --git a/com.unity.ml-agents/Tests/Runtime/Sensor/SensorUtilTests.cs b/com.unity.ml-agents/Tests/Runtime/Sensor/SensorUtilTests.cs index e186f800c4..ae1e190035 100644 --- a/com.unity.ml-agents/Tests/Runtime/Sensor/SensorUtilTests.cs +++ b/com.unity.ml-agents/Tests/Runtime/Sensor/SensorUtilTests.cs @@ -7,7 +7,6 @@ namespace Unity.MLAgents.Tests { - [TestFixture] public class SensorUtilTests { @@ -51,6 +50,5 @@ public void TestSortCulture(string culture) Assert.AreEqual(sensor1, sensors[0]); Assert.AreEqual(sensor0, sensors[1]); } - } } diff --git a/com.unity.ml-agents/package.json b/com.unity.ml-agents/package.json index d9ed4ba010..2bfab776d9 100755 --- a/com.unity.ml-agents/package.json +++ b/com.unity.ml-agents/package.json @@ -2,11 +2,12 @@ "name": "com.unity.ml-agents", "displayName": "ML Agents", "version": "2.3.0-exp.4", - "unity": "2021.3", + "unity": "2022.3", "description": "Use state-of-the-art machine learning to create intelligent character behaviors in any Unity environment (games, robotics, film, etc.).", "dependencies": { "com.unity.barracuda": "3.0.0", "com.unity.modules.imageconversion": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0" } } diff --git a/docs/Installation.md b/docs/Installation.md index bf161ae758..f4bd381581 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -24,7 +24,7 @@ The ML-Agents Toolkit contains several components: Consequently, to install and use the ML-Agents Toolkit you will need to: -- Install Unity (2021.3 or later) +- Install Unity (2022.3 or later) - Install Python (3.8.13 or higher) - Clone this repository (Optional) - __Note:__ If you do not clone the repository, then you will not be @@ -36,7 +36,7 @@ Consequently, to install and use the ML-Agents Toolkit you will need to: - Install the `com.unity.ml-agents.extensions` Unity package (Optional) - Install the `mlagents` Python package -### Install **Unity 2021.3** or Later +### Install **Unity 2022.3** or Later [Download](https://unity3d.com/get-unity/download) and install Unity. We strongly recommend that you install Unity through the Unity Hub as it will diff --git a/docs/Learning-Environment-Design-Agents.md b/docs/Learning-Environment-Design-Agents.md index 667d8d03ff..b9a65a88bd 100644 --- a/docs/Learning-Environment-Design-Agents.md +++ b/docs/Learning-Environment-Design-Agents.md @@ -503,6 +503,7 @@ Both sensor components have several settings: delta, ..., (n-1)*delta, n*delta). For general usage there is no difference but if using custom models the left-to-right layout that matches the spatial structuring can be preferred (e.g. for processing with conv nets). +- _Use Batched Raycasts_ (3D only) Whether to use batched raycasts. Enable to use batched raycasts and the jobs system. In the example image above, the Agent has two `RayPerceptionSensorComponent3D`s. Both use 3 Rays Per Direction and 90 Max Ray Degrees. One of the components had @@ -528,6 +529,8 @@ setting the State Size. for the agent that doesn't require a fully rendered image to convey. - Use as few rays and tags as necessary to solve the problem in order to improve learning stability and agent performance. +- If you run into performance issues, try using batched raycasts by enabling the _Use Batched Raycast_ setting. + (Only available for 3D ray perception sensors.) ### Grid Observations Grid-base observations combine the advantages of 2D spatial representation in diff --git a/docs/Migrating.md b/docs/Migrating.md index 7cf0c7748e..dc29444749 100644 --- a/docs/Migrating.md +++ b/docs/Migrating.md @@ -20,7 +20,7 @@ from mlagents_envs.envs.unity_gym_env import UnityToGymWrapper ## Migrating the package to version 2.0 -- The official version of Unity ML-Agents supports is now 2021.3 LTS. If you run +- The official version of Unity ML-Agents supports is now 2022.3 LTS. If you run into issues, please consider deleting your project's Library folder and reponening your project. - If you used any of the APIs that were deprecated before version 2.0, you need to use their replacement. These diff --git "a/localized_docs/RU/docs/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260.md" "b/localized_docs/RU/docs/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260.md" index 6a81fbff20..bbcf313781 100644 --- "a/localized_docs/RU/docs/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260.md" +++ "b/localized_docs/RU/docs/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260.md" @@ -18,7 +18,7 @@ ML-Agents Toolkit состоит из нескольких компоненто где реализованы различные возможности ML-Agents для наглядности. Итого, чтобы установить и использовать ML-Agents, вам нужно: -- Установить Unity (2021.3 или более позднюю версию) +- Установить Unity (2022.3 или более позднюю версию) - Установить Python (3.8.13 или более позднюю версию) - Клонировать этот репозиторий (Опционально) - __Примечание:__ если вы не склонируете репозиторий, тогда у вас не будет доступа к примерам и конфигурациям обучения. @@ -26,7 +26,7 @@ ML-Agents Toolkit состоит из нескольких компоненто - Установить пакет `com.unity.ml-agents` Unity - Установить пакет `mlagents` Python -### Установка **Unity 2021.3** или более поздней версии +### Установка **Unity 2022.3** или более поздней версии [Загрузите](https://unity3d.com/get-unity/download) и установите движок Unity. Мы очень рекомендуем установить Unity через Unity Hub, так как последний позволяет управлять разными версиями движка. diff --git a/localized_docs/TR/docs/Installation.md b/localized_docs/TR/docs/Installation.md index b57209f258..6399512d6b 100644 --- a/localized_docs/TR/docs/Installation.md +++ b/localized_docs/TR/docs/Installation.md @@ -14,14 +14,14 @@ ML-Agents Araç Seti birkaç bileşen içermektedir: ML-Agents Toolkit 'i kurmanız için gerekenler: -- Unity yükleyin (2021.3 veya daha sonraki bir sürüm) +- Unity yükleyin (2022.3 veya daha sonraki bir sürüm) - Python yükleyin (3.8.13 veya daha yüksek bir sürüm) - Bu depoyu klonlayın (İsteğe bağlı) - __Not:__ Depoyu klonlamazsanız, örnek ortamlara ve eğitim yapılandırmalarına erişemezsiniz. Ek olarak, [Başlangıç Rehberi](Getting-Started.md) depoyu klonladığınızı varsayar. - `com.unity.ml-agents` ML-Agents Unity paketini yükleyin. - `mlagents` Python paketini yüklemek. -### **Unity 2021.3** veya Sonraki Bir Sürüm Yükleyin +### **Unity 2022.3** veya Sonraki Bir Sürüm Yükleyin [İndir](https://unity3d.com/get-unity/download) ve Unity'i yükle. Şiddetli bir şekilde Unity Hub üzerinden kurmanızı ve bu şekilde birden fazla Unity sürümünü yönetmenizi öneriyoruz. diff --git a/ml-agents/tests/yamato/yamato_utils.py b/ml-agents/tests/yamato/yamato_utils.py index 9ebc91043f..5474e56285 100644 --- a/ml-agents/tests/yamato/yamato_utils.py +++ b/ml-agents/tests/yamato/yamato_utils.py @@ -45,7 +45,7 @@ def run_standalone_build( unity_exe = get_unity_executable_path() print(f"Running BuildStandalonePlayer via {unity_exe}") - # enum values from https://docs.unity3d.com/2021.3/Documentation/ScriptReference/BuildTarget.html + # enum values from https://docs.unity3d.com/2022.3/Documentation/ScriptReference/BuildTarget.html build_target_to_enum: Mapping[Optional[str], str] = { "mac": "StandaloneOSX", "osx": "StandaloneOSX", diff --git a/utils/validate_meta_files.py b/utils/validate_meta_files.py index 38a3837540..9d247fa76f 100644 --- a/utils/validate_meta_files.py +++ b/utils/validate_meta_files.py @@ -22,13 +22,13 @@ def main(): "com.unity.ml-agents.extensions/.gitignore", "com.unity.ml-agents.extensions/.npmignore", "com.unity.ml-agents.extensions/Tests/.tests.json", + "com.unity.ml-agents/Samples/3DBall/.sample.json", ] ) ignored_dirs = { "Documentation~", ".github", ".yamato", - "Samples", } num_matched = 0