diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 24c086bb8..d994e4c2c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: platform: - - ubuntu-latest + - ubuntu-22.04 # Maintain compatibility down to Ubuntu 22.04. - macos-latest - windows-latest steps: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 0a4a402e7..ee76830a2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -14,12 +14,12 @@ on: jobs: test-plugins: - name: Test plugins on ${{ matrix.os }} - runs-on: ${{ matrix.os }} + name: Test plugins for ${{ matrix.platform }} + runs-on: ${{ matrix.platform }} strategy: fail-fast: false matrix: - os: + platform: - ubuntu-latest - macos-latest - windows-latest @@ -39,7 +39,7 @@ jobs: - name: Test plugins working-directory: plugins - run: bazel test --test_output=errors //... + run: bazel test -c opt --test_output=errors //... test-all-modes: name: Test in ${{ matrix.testMode }} @@ -56,6 +56,17 @@ jobs: with: persist-credentials: false + - name: Free disk space + uses: jlumbroso/free-disk-space@v1.3.1 + with: + tool-cache: false + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: false # Unity test runner uses Docker. + swap-storage: false + - uses: actions/cache@v6 with: path: Library diff --git a/Assets/Plugins/assignment.dll b/Assets/Plugins/assignment.dll index 15471df88..7a43bc960 100755 Binary files a/Assets/Plugins/assignment.dll and b/Assets/Plugins/assignment.dll differ diff --git a/Assets/Plugins/libassignment.dylib b/Assets/Plugins/libassignment.dylib index 310bdd0a9..3d22f3673 100755 Binary files a/Assets/Plugins/libassignment.dylib and b/Assets/Plugins/libassignment.dylib differ diff --git a/Assets/Plugins/libprotobuf.dylib b/Assets/Plugins/libprotobuf.dylib index b44b02c91..d7d333f39 100755 Binary files a/Assets/Plugins/libprotobuf.dylib and b/Assets/Plugins/libprotobuf.dylib differ diff --git a/Assets/Plugins/libprotobuf.so b/Assets/Plugins/libprotobuf.so index 14a5194c5..7574e38db 100755 Binary files a/Assets/Plugins/libprotobuf.so and b/Assets/Plugins/libprotobuf.so differ diff --git a/Assets/Plugins/protobuf.dll b/Assets/Plugins/protobuf.dll index 3538e5315..2226a1aae 100755 Binary files a/Assets/Plugins/protobuf.dll and b/Assets/Plugins/protobuf.dll differ diff --git a/Assets/Proto/Configs/static_config.proto b/Assets/Proto/Configs/static_config.proto index 60a4c431c..42ea961ee 100644 --- a/Assets/Proto/Configs/static_config.proto +++ b/Assets/Proto/Configs/static_config.proto @@ -5,16 +5,17 @@ package configs; // Agent type enumeration. enum AgentType { INVALID_TYPE = 0; + IADS = 1; // Interceptor types. - VESSEL = 1; - SHORE_BATTERY = 2; - CARRIER_INTERCEPTOR = 3; - MISSILE_INTERCEPTOR = 4; + VESSEL = 2; + SHORE_BATTERY = 3; + CARRIER_INTERCEPTOR = 4; + MISSILE_INTERCEPTOR = 5; // Threat types. - FIXED_WING_THREAT = 5; - ROTARY_WING_THREAT = 6; + FIXED_WING_THREAT = 6; + ROTARY_WING_THREAT = 7; } // Power enumeration. diff --git a/Assets/Resources/Prefabs/Managers/CommsManager.prefab b/Assets/Resources/Prefabs/Managers/CommsManager.prefab new file mode 100644 index 000000000..8330b296d --- /dev/null +++ b/Assets/Resources/Prefabs/Managers/CommsManager.prefab @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &413281702720819039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1906153742283451389} + - component: {fileID: 6909024437189232778} + m_Layer: 0 + m_Name: CommsManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1906153742283451389 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413281702720819039} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6909024437189232778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413281702720819039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 98fda1ef67f74fdb8900b1f26efe0efc, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Resources/Prefabs/Managers/CommsManager.prefab.meta b/Assets/Resources/Prefabs/Managers/CommsManager.prefab.meta new file mode 100644 index 000000000..379bc0414 --- /dev/null +++ b/Assets/Resources/Prefabs/Managers/CommsManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5d1db500d81874c14b143801f271517b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index 237b2dcd3..650e25093 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -183,8 +183,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Version: 3 m_UsePipelineSettings: 1 m_AdditionalLightsShadowResolutionTier: 2 @@ -541,8 +541,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d419cc9870420964599b3a589b104ffd, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 2100000, guid: e5948286d83b8054cb204ff999348af1, type: 2} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -613,8 +613,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -860,8 +860,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -903,7 +903,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &123099734 @@ -916,8 +916,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1102,8 +1102,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1140,8 +1140,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_ShowMaskGraphic: 0 --- !u!1 &220406059 GameObject: @@ -1190,8 +1190,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1435,8 +1435,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1571,8 +1571,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1707,8 +1707,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1952,8 +1952,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2088,8 +2088,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2143,8 +2143,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -2160,8 +2160,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 1 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1.5 @@ -2229,8 +2229,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b078e3e02b9c70645a97175561678909, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: _cameraPanel: {fileID: 1417973884} _tacticalPanel: {fileID: 803864271} _configSelectorPanel: {fileID: 1419019256} @@ -2299,8 +2299,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -2363,8 +2363,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2438,8 +2438,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2574,8 +2574,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2844,8 +2844,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Version: 3 m_UsePipelineSettings: 1 m_AdditionalLightsShadowResolutionTier: 2 @@ -2984,8 +2984,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -3082,8 +3082,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 84f2990fd69b0284ca96912cbe968b62, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!1 &461629472 GameObject: m_ObjectHideFlags: 0 @@ -3131,8 +3131,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -3489,8 +3489,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -3639,8 +3639,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Version: 3 m_UsePipelineSettings: 1 m_AdditionalLightsShadowResolutionTier: 2 @@ -3779,8 +3779,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -3897,8 +3897,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_RenderShadows: 1 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 @@ -4062,8 +4062,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_RenderShadows: 0 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 @@ -4211,8 +4211,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -4254,7 +4254,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &731065850 @@ -4267,8 +4267,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -4375,8 +4375,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -4513,8 +4513,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 71cb2e74f96324049b5d271eda75374d, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: _radarUIGroup: {fileID: 98040369} --- !u!114 &803864274 MonoBehaviour: @@ -4526,8 +4526,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.7529412, g: 0.88235295, b: 1, a: 1} m_RaycastTarget: 1 @@ -4601,8 +4601,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -4796,8 +4796,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_RenderShadows: 1 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 @@ -4840,8 +4840,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9e222cf9df32df4196f08036d68d740, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: _cameraSpeedNormal: 300 _cameraSpeedMax: 2000 _speedH: 0.5 @@ -4912,8 +4912,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -4987,8 +4987,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -5171,8 +5171,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.23921569, g: 0.23921569, b: 0.23921569, a: 1} m_RaycastTarget: 1 @@ -5209,8 +5209,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_EffectColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 0.23921569} m_EffectDistance: {x: 0.5, y: -0.5} m_UseGraphicAlpha: 1 @@ -5261,8 +5261,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -5397,8 +5397,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_RaycastTarget: 1 @@ -5472,8 +5472,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -5611,8 +5611,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Content: {fileID: 19990207} m_Horizontal: 0 m_Vertical: 1 @@ -5641,8 +5641,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -5716,8 +5716,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -5832,8 +5832,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a5899f1049cf3d64e8c06c1db772c879, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!4 &1134242715 Transform: m_ObjectHideFlags: 0 @@ -5896,8 +5896,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -6034,8 +6034,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -6170,8 +6170,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -6334,8 +6334,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 068905b160d9e47dbbdf3437f1ebd554, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!1 &1254435375 GameObject: m_ObjectHideFlags: 0 @@ -6502,8 +6502,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -6747,8 +6747,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -6885,8 +6885,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -7063,8 +7063,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -7107,8 +7107,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -7183,8 +7183,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.392} m_RaycastTarget: 1 @@ -7265,8 +7265,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.2264151, g: 0.2264151, b: 0.2264151, a: 0.89411765} m_RaycastTarget: 1 @@ -7303,8 +7303,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 08d6199088fb8554fa7335c18db3ace4, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Delegates: [] --- !u!114 &1419019261 MonoBehaviour: @@ -7316,8 +7316,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 8b4602e26cd6ff342a532880fc8ac6b8, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Delegates: [] --- !u!1 &1439327977 GameObject: @@ -7366,8 +7366,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -7503,8 +7503,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 @@ -7578,8 +7578,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -7676,8 +7676,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0ff28c82c06ecce48b4b845c5f43de4c, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!1 &1556586297 GameObject: m_ObjectHideFlags: 0 @@ -7725,8 +7725,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -7802,8 +7802,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -7845,7 +7845,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &1557255954 @@ -7858,8 +7858,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -8044,8 +8044,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -8131,8 +8131,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -8174,7 +8174,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &1733325078 @@ -8187,8 +8187,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -8262,8 +8262,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -8398,8 +8398,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -8584,8 +8584,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.1509434, g: 0.1509434, b: 0.1509434, a: 1} m_RaycastTarget: 1 @@ -8641,8 +8641,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -8658,8 +8658,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 0 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -8856,8 +8856,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.23899364, g: 0.23899364, b: 0.23899364, a: 1} m_RaycastTarget: 1 @@ -8894,8 +8894,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_EffectColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 0.23921569} m_EffectDistance: {x: 0.5, y: -0.5} m_UseGraphicAlpha: 1 @@ -8946,8 +8946,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9084,8 +9084,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9230,8 +9230,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.23921569, g: 0.23921569, b: 0.23921569, a: 1} m_RaycastTarget: 1 @@ -9268,8 +9268,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_EffectColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 0.23921569} m_EffectDistance: {x: 0.5, y: -0.5} m_UseGraphicAlpha: 1 @@ -9320,8 +9320,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9458,8 +9458,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.23921569, g: 0.23921569, b: 0.23921569, a: 1} m_RaycastTarget: 1 @@ -9496,8 +9496,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_EffectColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 0.23921569} m_EffectDistance: {x: 0.5, y: -0.5} m_UseGraphicAlpha: 1 @@ -9550,8 +9550,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -9599,8 +9599,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9674,8 +9674,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9812,8 +9812,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -9855,7 +9855,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &2037993927 @@ -9868,8 +9868,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -9924,8 +9924,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical @@ -9944,8 +9944,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -10047,8 +10047,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -10122,8 +10122,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -10268,6 +10268,63 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ee3a105ec5b4dcf4fbf012ad57cd9a65, type: 3} +--- !u!1001 &2232610091417715941 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 413281702720819039, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_Name + value: CommsManager + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1906153742283451389, guid: 5d1db500d81874c14b143801f271517b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5d1db500d81874c14b143801f271517b, type: 3} --- !u!1001 &2555751187746303554 PrefabInstance: m_ObjectHideFlags: 0 @@ -10375,11 +10432,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8453457817924536687, guid: aa7ae4d8098e76042adf44084e6d17b7, type: 3} propertyPath: ThreatTrailMatFaded - value: + value: objectReference: {fileID: 2100000, guid: 53fa63d934ec00746a0e8e0926461afd, type: 2} - target: {fileID: 8453457817924536687, guid: aa7ae4d8098e76042adf44084e6d17b7, type: 3} propertyPath: InterceptorTrailMatFaded - value: + value: objectReference: {fileID: 2100000, guid: 37be7f5b4882cc146afeec6c0247c1fb, type: 2} - target: {fileID: 8837696709373837493, guid: aa7ae4d8098e76042adf44084e6d17b7, type: 3} propertyPath: m_Name @@ -10466,6 +10523,7 @@ SceneRoots: - {fileID: 566761699} - {fileID: 50643634} - {fileID: 396716026} + - {fileID: 2232610091417715941} - {fileID: 1134242715} - {fileID: 4968717530266207679} - {fileID: 738403218} diff --git a/Assets/Scripts/Agents/AgentBase.cs b/Assets/Scripts/Agents/AgentBase.cs index 78dbf917f..b75822f5b 100644 --- a/Assets/Scripts/Agents/AgentBase.cs +++ b/Assets/Scripts/Agents/AgentBase.cs @@ -1,10 +1,11 @@ +using System; using UnityEngine; // Base implementation of an agent. // // See the agent interface for property and method documentation. -public class AgentBase : MonoBehaviour, IAgent { - public event AgentTerminatedEventHandler OnTerminated; +public class AgentBase : MonoBehaviour, IAgent, ICommsEndpoint { + public event Action OnTerminated; private const float _epsilon = 1e-12f; @@ -109,6 +110,9 @@ public Vector3 AccelerationInput { // The inverse rotation is cached and updated before every fixed update. public Quaternion InverseRotation { get; private set; } + // Communication node managed by the communication manager. + public CommsNode CommsNode { get; set; } + public float MaxForwardAcceleration() { return StaticConfig.AccelerationConfig?.MaxForwardAcceleration ?? 0; } diff --git a/Assets/Scripts/Agents/IAgent.cs b/Assets/Scripts/Agents/IAgent.cs index 28a036fb1..329966b90 100644 --- a/Assets/Scripts/Agents/IAgent.cs +++ b/Assets/Scripts/Agents/IAgent.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; // Interface for an agent. @@ -5,10 +6,8 @@ // An agent represents a physical entity, such as a ship, an interceptor, or a threat subject to the // laws of physics. -public delegate void AgentTerminatedEventHandler(IAgent agent); - public interface IAgent { - event AgentTerminatedEventHandler OnTerminated; + event Action OnTerminated; HierarchicalAgent HierarchicalAgent { get; set; } @@ -45,6 +44,7 @@ public interface IAgent { Vector3 Forward { get; } Vector3 Right { get; } Quaternion InverseRotation { get; } + CommsNode CommsNode { get; set; } float MaxForwardAcceleration(); float MaxNormalAcceleration(); diff --git a/Assets/Scripts/Communication/CommsNode.cs b/Assets/Scripts/Communication/CommsNode.cs new file mode 100644 index 000000000..a63dd2c51 --- /dev/null +++ b/Assets/Scripts/Communication/CommsNode.cs @@ -0,0 +1,18 @@ +using System; + +// The communication node is an endpoint encapsulated by an agent or system like the IADS to +// interface with the mailbox. +public sealed class CommsNode { + public Configs.AgentType EndpointType { get; init; } + + // The OnReceived event handler is called when the communication node receives a message. + public event Action OnReceived; + + public CommsNode(Configs.AgentType endpointType) { + EndpointType = endpointType; + } + + public void Receive(Message message) { + OnReceived?.Invoke(message); + } +} diff --git a/Assets/Scripts/Communication/CommsNode.cs.meta b/Assets/Scripts/Communication/CommsNode.cs.meta new file mode 100644 index 000000000..4894f414e --- /dev/null +++ b/Assets/Scripts/Communication/CommsNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d165fa49100e46a8a183244b6bc15f10 diff --git a/Assets/Scripts/Communication/ICommsEndpoint.cs b/Assets/Scripts/Communication/ICommsEndpoint.cs new file mode 100644 index 000000000..2209ab087 --- /dev/null +++ b/Assets/Scripts/Communication/ICommsEndpoint.cs @@ -0,0 +1,4 @@ +// Interface for a communication endpoint. +public interface ICommsEndpoint { + CommsNode CommsNode { get; } +} diff --git a/Assets/Scripts/Communication/ICommsEndpoint.cs.meta b/Assets/Scripts/Communication/ICommsEndpoint.cs.meta new file mode 100644 index 000000000..723904aa3 --- /dev/null +++ b/Assets/Scripts/Communication/ICommsEndpoint.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5d342e2b2a05641ad80db6c6dc18f544 \ No newline at end of file diff --git a/Assets/Scripts/Communication/Message.cs b/Assets/Scripts/Communication/Message.cs index dd65402df..ff8434abd 100644 --- a/Assets/Scripts/Communication/Message.cs +++ b/Assets/Scripts/Communication/Message.cs @@ -11,13 +11,13 @@ public enum MessageType { } public abstract class Message { - public IAgent Sender { get; } - public IAgent Receiver { get; } + public CommsNode Sender { get; } + public CommsNode Receiver { get; } public MessageType Type { get; } public abstract IMessagePayload Payload { get; } - protected Message(IAgent sender, IAgent receiver, MessageType type) { + protected Message(CommsNode sender, CommsNode receiver, MessageType type) { Sender = sender ?? throw new ArgumentNullException(nameof(sender)); Receiver = receiver ?? throw new ArgumentNullException(nameof(receiver)); Type = type; @@ -29,7 +29,7 @@ public abstract class Message : Message where TPayload : class, IMessagePayload { public TPayload PayloadData { get; } public sealed override IMessagePayload Payload => PayloadData; - protected Message(IAgent sender, IAgent receiver, MessageType type, TPayload payload) + protected Message(CommsNode sender, CommsNode receiver, MessageType type, TPayload payload) : base(sender, receiver, type) { PayloadData = payload ?? throw new ArgumentNullException(nameof(payload)); } @@ -38,7 +38,8 @@ protected Message(IAgent sender, IAgent receiver, MessageType type, TPayload pay // This message is sent upwards to a parent interceptor or IADS when a sub-interceptor has no target // and is requesting a new target. public sealed class AssignTargetRequestMessage : Message { - public AssignTargetRequestMessage(IAgent sender, IAgent receiver, IInterceptor subInterceptor) + public AssignTargetRequestMessage(CommsNode sender, CommsNode receiver, + IInterceptor subInterceptor) : base(sender, receiver, MessageType.AssignTargetRequest, new AssignTargetRequestPayload(subInterceptor)) {} } @@ -46,7 +47,7 @@ public AssignTargetRequestMessage(IAgent sender, IAgent receiver, IInterceptor s // This message is sent downwards from the IADS or a parent interceptor to inform the // sub-interceptor of a new target. public sealed class AssignTargetResponseMessage : Message { - public AssignTargetResponseMessage(IAgent sender, IAgent receiver, IHierarchical target) + public AssignTargetResponseMessage(CommsNode sender, CommsNode receiver, IHierarchical target) : base(sender, receiver, MessageType.AssignTargetResponse, new AssignTargetResponsePayload(target)) {} } @@ -55,7 +56,7 @@ public AssignTargetResponseMessage(IAgent sender, IAgent receiver, IHierarchical // pursue the current target and is requesting the parent interceptor or IADS to reassign that // target elsewhere. public sealed class ReassignTargetRequestMessage : Message { - public ReassignTargetRequestMessage(IAgent sender, IAgent receiver, IHierarchical target) + public ReassignTargetRequestMessage(CommsNode sender, CommsNode receiver, IHierarchical target) : base(sender, receiver, MessageType.ReassignTargetRequest, new ReassignTargetRequestPayload(target)) {} } diff --git a/Assets/Scripts/Communication/PendingMessage.cs b/Assets/Scripts/Communication/PendingMessage.cs index acf14674f..243a44194 100644 --- a/Assets/Scripts/Communication/PendingMessage.cs +++ b/Assets/Scripts/Communication/PendingMessage.cs @@ -10,8 +10,8 @@ // Absolute simulation time in seconds when the mailbox should deliver this message. public float DeliverAt { get; } - public IAgent Sender => Message?.Sender; - public IAgent Receiver => Message?.Receiver; + public CommsNode Sender => Message?.Sender; + public CommsNode Receiver => Message?.Receiver; public PendingMessage(Message message, float deliverAt) { if (float.IsNaN(deliverAt) || float.IsInfinity(deliverAt) || deliverAt < 0f) { diff --git a/Assets/Scripts/Config/ConfigLoader.cs b/Assets/Scripts/Config/ConfigLoader.cs index 1d7e78b5f..52823b7b4 100644 --- a/Assets/Scripts/Config/ConfigLoader.cs +++ b/Assets/Scripts/Config/ConfigLoader.cs @@ -7,6 +7,7 @@ public static class ConfigLoader { // message as an output argument. private delegate Plugin.StatusCode SerializedProtobufLengthDelegate(string file, out int serializedLength); + // Delegate for loading from a Protobuf text file to binary format and returning the length of the // serialized message as an output argument. private delegate Plugin.StatusCode LoadProtobufDelegate(string file, byte[] buffer, diff --git a/Assets/Scripts/Generated/Proto/StaticConfig.cs b/Assets/Scripts/Generated/Proto/StaticConfig.cs index 723f8c7fc..d2c200933 100644 --- a/Assets/Scripts/Generated/Proto/StaticConfig.cs +++ b/Assets/Scripts/Generated/Proto/StaticConfig.cs @@ -49,12 +49,13 @@ static StaticConfigReflection() { "cy5IaXRDb25maWcSNAoRY29udHJvbGxlcl9jb25maWcYCSABKAsyGS5jb25m", "aWdzLkNvbnRyb2xsZXJDb25maWcSLQoLcG93ZXJfdGFibGUYCiADKAsyGC5j", "b25maWdzLlBvd2VyVGFibGVFbnRyeRI6ChR2aXN1YWxpemF0aW9uX2NvbmZp", - "ZxgLIAEoCzIcLmNvbmZpZ3MuVmlzdWFsaXphdGlvbkNvbmZpZyqdAQoJQWdl", - "bnRUeXBlEhAKDElOVkFMSURfVFlQRRAAEgoKBlZFU1NFTBABEhEKDVNIT1JF", - "X0JBVFRFUlkQAhIXChNDQVJSSUVSX0lOVEVSQ0VQVE9SEAMSFwoTTUlTU0lM", - "RV9JTlRFUkNFUFRPUhAEEhUKEUZJWEVEX1dJTkdfVEhSRUFUEAUSFgoSUk9U", - "QVJZX1dJTkdfVEhSRUFUEAYqOAoFUG93ZXISCAoESURMRRAAEgcKA0xPVxAB", - "EgoKBkNSVUlTRRACEgcKA01JTBADEgcKA01BWBAEYgZwcm90bzM=")); + "ZxgLIAEoCzIcLmNvbmZpZ3MuVmlzdWFsaXphdGlvbkNvbmZpZyqnAQoJQWdl", + "bnRUeXBlEhAKDElOVkFMSURfVFlQRRAAEggKBElBRFMQARIKCgZWRVNTRUwQ", + "AhIRCg1TSE9SRV9CQVRURVJZEAMSFwoTQ0FSUklFUl9JTlRFUkNFUFRPUhAE", + "EhcKE01JU1NJTEVfSU5URVJDRVBUT1IQBRIVChFGSVhFRF9XSU5HX1RIUkVB", + "VBAGEhYKElJPVEFSWV9XSU5HX1RIUkVBVBAHKjgKBVBvd2VyEggKBElETEUQ", + "ABIHCgNMT1cQARIKCgZDUlVJU0UQAhIHCgNNSUwQAxIHCgNNQVgQBGIGcHJv", + "dG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Configs.AgentType), typeof(global::Configs.Power), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -78,18 +79,19 @@ static StaticConfigReflection() { /// public enum AgentType { [pbr::OriginalName("INVALID_TYPE")] InvalidType = 0, + [pbr::OriginalName("IADS")] Iads = 1, /// /// Interceptor types. /// - [pbr::OriginalName("VESSEL")] Vessel = 1, - [pbr::OriginalName("SHORE_BATTERY")] ShoreBattery = 2, - [pbr::OriginalName("CARRIER_INTERCEPTOR")] CarrierInterceptor = 3, - [pbr::OriginalName("MISSILE_INTERCEPTOR")] MissileInterceptor = 4, + [pbr::OriginalName("VESSEL")] Vessel = 2, + [pbr::OriginalName("SHORE_BATTERY")] ShoreBattery = 3, + [pbr::OriginalName("CARRIER_INTERCEPTOR")] CarrierInterceptor = 4, + [pbr::OriginalName("MISSILE_INTERCEPTOR")] MissileInterceptor = 5, /// /// Threat types. /// - [pbr::OriginalName("FIXED_WING_THREAT")] FixedWingThreat = 5, - [pbr::OriginalName("ROTARY_WING_THREAT")] RotaryWingThreat = 6, + [pbr::OriginalName("FIXED_WING_THREAT")] FixedWingThreat = 6, + [pbr::OriginalName("ROTARY_WING_THREAT")] RotaryWingThreat = 7, } /// diff --git a/Assets/Scripts/IADS/IADS.cs b/Assets/Scripts/IADS/IADS.cs index 88a309e7c..cf7492a34 100644 --- a/Assets/Scripts/IADS/IADS.cs +++ b/Assets/Scripts/IADS/IADS.cs @@ -5,7 +5,7 @@ // The Integrated Air Defense System (IADS) manages the air defense strategy. // It implements the singleton pattern to ensure that only one instance exists. -public class IADS : MonoBehaviour { +public class IADS : MonoBehaviour, ICommsEndpoint { // Hierarchy parameters. private const float _hierarchyUpdatePeriod = 5f; private const float _coverageFactor = 1f; @@ -28,12 +28,14 @@ public class IADS : MonoBehaviour { public IReadOnlyList Launchers => _launchers.AsReadOnly(); + public CommsNode CommsNode { get; private set; } + private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); - } else { - Instance = this; + return; } + Instance = this; } private void Start() { @@ -42,6 +44,10 @@ private void Start() { SimManager.Instance.OnNewAsset += RegisterNewAsset; SimManager.Instance.OnNewLauncher += RegisterNewLauncher; SimManager.Instance.OnNewThreat += RegisterNewThreat; + + // Create a communication node for the IADS. + CommsNode = new CommsNode(Configs.AgentType.Iads); + CommsManager.Instance.AddNode(CommsNode); } private void OnDestroy() { diff --git a/Assets/Scripts/Interceptors/IInterceptor.cs b/Assets/Scripts/Interceptors/IInterceptor.cs index 0e20d35c2..3f821b233 100644 --- a/Assets/Scripts/Interceptors/IInterceptor.cs +++ b/Assets/Scripts/Interceptors/IInterceptor.cs @@ -1,26 +1,24 @@ +using System; + // Interface for an interceptor. // // Interceptors defend the asset against incoming threats. - -public delegate void InterceptorEventHandler(IInterceptor interceptor); -public delegate void TargetReassignEventHandler(IHierarchical target); - public interface IInterceptor : IAgent { // The OnHit event handler is called when the interceptor successfully intercepts a threat. - event InterceptorEventHandler OnHit; + event Action OnHit; // The OnMiss event handler is called when the interceptor misses its target but is not destroyed. - event InterceptorEventHandler OnMiss; + event Action OnMiss; // The OnDestroyed event handler is called when the interceptor is destroyed prior to intercepting // a threat, e.g., through a ground collision. - event InterceptorEventHandler OnDestroyed; + event Action OnDestroyed; // The OnAssignSubInterceptor event handler is called when a sub-interceptor has no assigned // target and should be assigned one. - event InterceptorEventHandler OnAssignSubInterceptor; + event Action OnAssignSubInterceptor; // The OnReassignTarget event handler is called when a target needs to be re-assigned to another // interceptor. - event TargetReassignEventHandler OnReassignTarget; + event Action OnReassignTarget; IEscapeDetector EscapeDetector { get; set; } diff --git a/Assets/Scripts/Interceptors/InterceptorBase.cs b/Assets/Scripts/Interceptors/InterceptorBase.cs index ceb6cfe52..148caaa33 100644 --- a/Assets/Scripts/Interceptors/InterceptorBase.cs +++ b/Assets/Scripts/Interceptors/InterceptorBase.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -5,11 +6,11 @@ // Base implementation of an interceptor. public abstract class InterceptorBase : AgentBase, IInterceptor { - public event InterceptorEventHandler OnHit; - public event InterceptorEventHandler OnMiss; - public event InterceptorEventHandler OnDestroyed; - public event InterceptorEventHandler OnAssignSubInterceptor; - public event TargetReassignEventHandler OnReassignTarget; + public event Action OnHit; + public event Action OnMiss; + public event Action OnDestroyed; + public event Action OnAssignSubInterceptor; + public event Action OnReassignTarget; // Default proportional navigation controller gain. private const float _proportionalNavigationGain = 5f; @@ -272,7 +273,7 @@ private void OnTriggerEnter(Collider other) { if (otherAgent is IThreat threat) { // Check the kill probability. float killProbability = threat.StaticConfig.HitConfig?.KillProbability ?? 1; - bool isHit = Random.value <= killProbability; + bool isHit = UnityEngine.Random.value <= killProbability; if (isHit) { threat.HandleIntercept(); OnHit?.Invoke(this); diff --git a/Assets/Scripts/Managers/CommsManager.cs b/Assets/Scripts/Managers/CommsManager.cs new file mode 100644 index 000000000..e7185a6f7 --- /dev/null +++ b/Assets/Scripts/Managers/CommsManager.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using UnityEngine; + +// The comunication manager manages the communication nodes and handles communication between +// agents. +public class CommsManager : MonoBehaviour { + public static CommsManager Instance { get; private set; } + + // Map from agent to the communication node. + private readonly HashSet _nodes = new HashSet(); + + // Add a communication node. This function should only be used by the IADS. + public void AddNode(CommsNode node) => _nodes.Add(node); + + private void Awake() { + if (Instance != null && Instance != this) { + Destroy(gameObject); + return; + } + Instance = this; + } + + private void Start() { + SimManager.Instance.OnSimulationStarted += () => _nodes.Clear(); + SimManager.Instance.OnSimulationEnded += () => _nodes.Clear(); + SimManager.Instance.OnNewInterceptor += RegisterNewAgent; + SimManager.Instance.OnNewLauncher += RegisterNewAgent; + } + + private void RegisterNewAgent(IAgent agent) { + var commsNode = new CommsNode(agent.StaticConfig.AgentType); + agent.CommsNode = commsNode; + agent.OnTerminated += + _ => _nodes.Remove(commsNode); + _nodes.Add(commsNode); + } +} diff --git a/Assets/Scripts/Managers/CommsManager.cs.meta b/Assets/Scripts/Managers/CommsManager.cs.meta new file mode 100644 index 000000000..aae063d63 --- /dev/null +++ b/Assets/Scripts/Managers/CommsManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98fda1ef67f74fdb8900b1f26efe0efc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -2 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Managers/EarlyFixedUpdateManager.cs b/Assets/Scripts/Managers/EarlyFixedUpdateManager.cs index 8291a7a7b..82e765378 100644 --- a/Assets/Scripts/Managers/EarlyFixedUpdateManager.cs +++ b/Assets/Scripts/Managers/EarlyFixedUpdateManager.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; // The early fixed update manager allows actions to be executed before the main fixed update call @@ -5,8 +6,7 @@ [DefaultExecutionOrder(-50)] public class EarlyFixedUpdateManager : MonoBehaviour { // Simulation events. - public delegate void UpdateHandler(); - public event UpdateHandler OnEarlyFixedUpdate; + public event Action OnEarlyFixedUpdate; public static EarlyFixedUpdateManager Instance { get; private set; } diff --git a/Assets/Scripts/Managers/RunWorker.cs b/Assets/Scripts/Managers/RunWorker.cs index cbd10feb1..7c5bfa8aa 100644 --- a/Assets/Scripts/Managers/RunWorker.cs +++ b/Assets/Scripts/Managers/RunWorker.cs @@ -91,19 +91,6 @@ private void Start() { StartCoroutine(RunWhenReady()); } - private void OnDestroy() { - if (SimManager.Instance != null) { - SimManager.Instance.OnSimulationEnded -= RegisterSimulationEnded; - } - if (Instance == this) { - Instance = null; - IsWorkerMode = false; - SimulationConfigFile = null; - Seed = 0; - OutputDirectory = null; - } - } - private void Initialize(string simulationConfigFile, int seed, string outputDirectory) { IsWorkerMode = true; SimulationConfigFile = simulationConfigFile; diff --git a/Assets/Scripts/Managers/SimManager.cs b/Assets/Scripts/Managers/SimManager.cs index d08725b19..a454eecc8 100644 --- a/Assets/Scripts/Managers/SimManager.cs +++ b/Assets/Scripts/Managers/SimManager.cs @@ -7,21 +7,16 @@ // It implements the singleton pattern to ensure that only one instance exists. public class SimManager : MonoBehaviour { // Simulation events. - public delegate void SimulationEventHandler(); - public event SimulationEventHandler OnSimulationStarted; - public event SimulationEventHandler OnSimulationEnded; + public event Action OnSimulationStarted; + public event Action OnSimulationEnded; // Interceptor events. - public delegate void NewInterceptorEventHandler(IInterceptor interceptor); - public event NewInterceptorEventHandler OnNewInterceptor; - public delegate void NewAssetEventHandler(IInterceptor asset); - public event NewAssetEventHandler OnNewAsset; - public delegate void NewLauncherEventHandler(IInterceptor launcher); - public event NewLauncherEventHandler OnNewLauncher; + public event Action OnNewInterceptor; + public event Action OnNewAsset; + public event Action OnNewLauncher; // Threat events. - public delegate void NewThreatEventHandler(IThreat threat); - public event NewThreatEventHandler OnNewThreat; + public event Action OnNewThreat; // Default simulation configuration file. private const string _defaultSimulationConfigFile = "7_quadcopters.pbtxt"; diff --git a/Assets/Scripts/Threats/IThreat.cs b/Assets/Scripts/Threats/IThreat.cs index 1935e3b75..692ae9e8f 100644 --- a/Assets/Scripts/Threats/IThreat.cs +++ b/Assets/Scripts/Threats/IThreat.cs @@ -1,18 +1,17 @@ +using System; using System.Collections.Generic; // Interface for a threat. // // Threats attempt to reach the asset while avoiding the defending interceptors. -public delegate void ThreatEventHandler(IThreat threat); - public interface IThreat : IAgent { // The OnHit event handler is called when the threat reaches its intended target, usually the // asset. - event ThreatEventHandler OnHit; + event Action OnHit; // The OnDestroyed event handler is called when the threat is destroyed prior to reaching its // intended target, e.g., through a successful intercept or a ground collision. - event ThreatEventHandler OnDestroyed; + event Action OnDestroyed; IAttackBehavior AttackBehavior { get; set; } IEvasion Evasion { get; set; } diff --git a/Assets/Scripts/Threats/ThreatBase.cs b/Assets/Scripts/Threats/ThreatBase.cs index 8cd5d8827..492430281 100644 --- a/Assets/Scripts/Threats/ThreatBase.cs +++ b/Assets/Scripts/Threats/ThreatBase.cs @@ -1,11 +1,12 @@ +using System; using System.Collections.Generic; using System.Linq; using UnityEngine; // Base implementation of a threat. public abstract class ThreatBase : AgentBase, IThreat { - public event ThreatEventHandler OnHit; - public event ThreatEventHandler OnDestroyed; + public event Action OnHit; + public event Action OnDestroyed; // Speed difference threshold for applying forward acceleration. private const float _speedErrorThreshold = 1f; diff --git a/Assets/Scripts/UI/UIManager.cs b/Assets/Scripts/UI/UIManager.cs index 5f45e0d96..66ac349b8 100644 --- a/Assets/Scripts/UI/UIManager.cs +++ b/Assets/Scripts/UI/UIManager.cs @@ -98,9 +98,9 @@ public void LogActionError(string message) { private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); - } else { - Instance = this; + return; } + Instance = this; } private void Start() {