diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs index 8e4cfba8bc..1c0745077f 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs @@ -80,7 +80,7 @@ public TestSensor(string n) sensorName = n; } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return new[] { 0 }; } diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs new file mode 100644 index 0000000000..4d42e8d418 --- /dev/null +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs @@ -0,0 +1,105 @@ +using NUnit.Framework; +using UnityEngine; +using MLAgents.Sensor; + +namespace MLAgents.Tests +{ + public class Float2DSensor : ISensor + { + public int Width { get; } + public int Height { get; } + string m_Name; + int[] m_Shape; + public float[,] floatData; + + public Float2DSensor(int width, int height, string name) + { + Width = width; + Height = height; + m_Name = name; + m_Shape = new[] { height, width, 1 }; + floatData = new float[Height, Width]; + } + + public Float2DSensor(float[,] floatData, string name) + { + this.floatData = floatData; + Height = floatData.GetLength(0); + Width = floatData.GetLength(1); + m_Name = name; + m_Shape = new[] { Height, Width, 1 }; + } + + public string GetName() + { + return m_Name; + } + + public int[] GetObservationShape() + { + return m_Shape; + } + + public byte[] GetCompressedObservation() + { + return null; + } + + public int Write(WriteAdapter adapter) + { + using (TimerStack.Instance.Scoped("Float2DSensor.Write")) + { + for (var h = 0; h < Height; h++) + { + for (var w = 0; w < Width; w++) + { + adapter[h, w, 0] = floatData[h, w]; + } + } + var numWritten = Height * Width; + return numWritten; + } + } + + public void Update() { } + + public SensorCompressionType GetCompressionType() + { + return SensorCompressionType.None; + } + } + + public class FloatVisualSensorTests + { + [Test] + public void TestFloat2DSensorWrite() + { + var sensor = new Float2DSensor(3, 4, "floatsensor"); + for (var h = 0; h < 4; h++) + { + for (var w = 0; w < 3; w++) + { + sensor.floatData[h, w] = 3 * h + w; + } + } + + var output = new float[12]; + var writer = new WriteAdapter(); + writer.SetTarget(output, sensor.GetObservationShape(), 0); + sensor.Write(writer); + for (var i = 0; i < 9; i++) + { + Assert.AreEqual(i, output[i]); + } + } + + [Test] + public void TestFloat2DSensorExternalData() + { + var data = new float[4, 3]; + var sensor = new Float2DSensor(data, "floatsensor"); + Assert.AreEqual(sensor.Height, 4); + Assert.AreEqual(sensor.Width, 3); + } + } +} diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs.meta b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs.meta new file mode 100644 index 0000000000..ea128787e0 --- /dev/null +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/FloatVisualSensorTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 49b7da14949a486b803e28ed32d91a09 +timeCreated: 1578093005 \ No newline at end of file diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/StackingSensorTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/StackingSensorTests.cs index 894b6bfece..9bce592910 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/StackingSensorTests.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/StackingSensorTests.cs @@ -12,7 +12,7 @@ public void TestCtor() ISensor wrapped = new VectorSensor(4); ISensor sensor = new StackingSensor(wrapped, 4); Assert.AreEqual("StackingSensor_size4_VectorSensor_size4", sensor.GetName()); - Assert.AreEqual(sensor.GetFloatObservationShape(), new [] {16}); + Assert.AreEqual(sensor.GetObservationShape(), new [] {16}); } [Test] diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/VectorSensorTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/VectorSensorTests.cs index da9eaec0ec..ce014dac2d 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/VectorSensorTests.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/VectorSensorTests.cs @@ -18,7 +18,7 @@ public static void CompareObservation(ISensor sensor, float[] expected) Assert.AreEqual(fill, output[0]); WriteAdapter writer = new WriteAdapter(); - writer.SetTarget(output, 0); + writer.SetTarget(output, sensor.GetObservationShape(), 0); // Make sure WriteAdapter didn't touch anything Assert.AreEqual(fill, output[0]); diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs index 424198dcd7..dcaf69993a 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs @@ -15,25 +15,26 @@ public void TestWritesToIList() { WriteAdapter writer = new WriteAdapter(); var buffer = new[] { 0f, 0f, 0f }; + var shape = new[] { 3 }; - writer.SetTarget(buffer, 0); + writer.SetTarget(buffer, shape, 0); // Elementwise writes writer[0] = 1f; writer[2] = 2f; Assert.AreEqual(new[] { 1f, 0f, 2f }, buffer); // Elementwise writes with offset - writer.SetTarget(buffer, 1); + writer.SetTarget(buffer, shape, 1); writer[0] = 3f; Assert.AreEqual(new[] { 1f, 3f, 2f }, buffer); // AddRange - writer.SetTarget(buffer, 0); + writer.SetTarget(buffer, shape, 0); writer.AddRange(new [] {4f, 5f}); Assert.AreEqual(new[] { 4f, 5f, 2f }, buffer); // AddRange with offset - writer.SetTarget(buffer, 1); + writer.SetTarget(buffer, shape, 1); writer.AddRange(new [] {6f, 7f}); Assert.AreEqual(new[] { 4f, 6f, 7f }, buffer); } @@ -47,12 +48,13 @@ public void TestWritesToTensor() valueType = TensorProxy.TensorType.FloatingPoint, data = new Tensor(2, 3) }; - writer.SetTarget(t, 0, 0); + var shape = new[] { 3 }; + writer.SetTarget(t, shape, 0, 0); Assert.AreEqual(0f, t.data[0, 0]); writer[0] = 1f; Assert.AreEqual(1f, t.data[0, 0]); - writer.SetTarget(t, 1, 1); + writer.SetTarget(t, shape, 1, 1); writer[0] = 2f; writer[1] = 3f; // [0, 0] shouldn't change @@ -67,7 +69,7 @@ public void TestWritesToTensor() data = new Tensor(2, 3) }; - writer.SetTarget(t, 1, 1); + writer.SetTarget(t, shape, 1, 1); writer.AddRange(new [] {-1f, -2f}); Assert.AreEqual(0f, t.data[0, 0]); Assert.AreEqual(0f, t.data[0, 1]); @@ -87,11 +89,13 @@ public void TestWritesToTensor3D() data = new Tensor(2, 2, 2, 3) }; - writer.SetTarget(t, 0, 0); + var shape = new[] { 2, 2, 3 }; + + writer.SetTarget(t, shape, 0, 0); writer[1, 0, 1] = 1f; Assert.AreEqual(1f, t.data[0, 1, 0, 1]); - writer.SetTarget(t, 0, 1); + writer.SetTarget(t, shape, 0, 1); writer[1, 0, 0] = 2f; Assert.AreEqual(2f, t.data[0, 1, 0, 1]); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity index cf1412870a..694d9e6600 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 8 + serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -39,6 +39,7 @@ RenderSettings: m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} m_IndirectSpecularColor: {r: 0.4497121, g: 0.49977785, b: 0.57563704, a: 1} + m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 @@ -49,16 +50,14 @@ LightmapSettings: m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 9 + serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 - m_TextureWidth: 1024 - m_TextureHeight: 1024 + m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -117,9 +116,10 @@ NavMeshSettings: --- !u!1 &2047662 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 2047664} - component: {fileID: 2047663} @@ -133,40 +133,22 @@ GameObject: --- !u!114 &2047663 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2047662} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 506d4052eefa14ec9bbb356e3669043d, type: 3} m_Name: m_EditorClassIdentifier: - m_TrainingConfiguration: - width: 84 - height: 84 - qualityLevel: 0 - timeScale: 20 - targetFrameRate: -1 - m_InferenceConfiguration: - width: 1280 - height: 720 - qualityLevel: 5 - timeScale: 1 - targetFrameRate: 60 - resetParameters: - m_ResetParameters: - - key: gridSize - value: 5 - - key: numObstacles - value: 1 - - key: numGoals - value: 1 MainCamera: {fileID: 99095115} --- !u!4 &2047664 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2047662} m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 9.52, z: 0} @@ -178,9 +160,10 @@ Transform: --- !u!1 &99095112 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 99095116} - component: {fileID: 99095115} @@ -196,27 +179,35 @@ GameObject: --- !u!124 &99095113 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 99095112} m_Enabled: 1 --- !u!92 &99095114 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 99095112} m_Enabled: 1 --- !u!20 &99095115 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 99095112} m_Enabled: 1 serializedVersion: 2 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_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -246,8 +237,9 @@ Camera: --- !u!4 &99095116 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 99095112} m_LocalRotation: {x: 0.35355338, y: 0.35355338, z: -0.1464466, w: 0.8535535} m_LocalPosition: {x: -5, y: 8.2, z: -5} @@ -259,10 +251,11 @@ Transform: --- !u!1 &125487785 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1488387672112076, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1488387672112076, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 125487786} - component: {fileID: 125487789} @@ -271,7 +264,7 @@ GameObject: - component: {fileID: 125487787} - component: {fileID: 125487791} m_Layer: 8 - m_Name: Agent + m_Name: RenderTextureAgent m_TagString: agent m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -280,9 +273,10 @@ GameObject: --- !u!4 &125487786 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4034807106460652, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4034807106460652, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -298,9 +292,10 @@ Transform: --- !u!114 &125487787 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 114650561397225712, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 114650561397225712, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_Enabled: 1 m_EditorHideFlags: 0 @@ -319,9 +314,10 @@ MonoBehaviour: --- !u!65 &125487788 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65073501172061214, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65073501172061214, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -332,16 +328,18 @@ BoxCollider: --- !u!33 &125487789 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33823710649932060, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33823710649932060, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!114 &125487790 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_Enabled: 1 m_EditorHideFlags: 0 @@ -356,13 +354,16 @@ MonoBehaviour: vectorActionSpaceType: 0 m_Model: {fileID: 11400000, guid: a812f1ce7763a4a0c912717f3594fe20, type: 3} m_InferenceDevice: 0 - m_UseHeuristic: 0 + m_BehaviorType: 0 m_BehaviorName: GridWorld + m_TeamID: 0 + m_useChildSensors: 1 --- !u!114 &125487791 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125487785} m_Enabled: 1 m_EditorHideFlags: 0 @@ -371,16 +372,15 @@ MonoBehaviour: m_EditorClassIdentifier: renderTexture: {fileID: 8400000, guid: 114608d5384404f89bff4b6f88432958, type: 2} sensorName: RenderTextureSensor - width: 84 - height: 64 grayscale: 0 --- !u!1 &260425459 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1659433968697430, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1659433968697430, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 260425460} - component: {fileID: 260425463} @@ -396,9 +396,10 @@ GameObject: --- !u!4 &260425460 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4269224463113992, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4269224463113992, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 260425459} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.4, y: 0, z: 0} @@ -410,9 +411,10 @@ Transform: --- !u!23 &260425461 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23740566138369150, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23740566138369150, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 260425459} m_Enabled: 1 m_CastShadows: 0 @@ -421,6 +423,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2} m_StaticBatchInfo: @@ -445,9 +449,10 @@ MeshRenderer: --- !u!65 &260425462 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65922560747716658, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65922560747716658, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 260425459} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -458,17 +463,19 @@ BoxCollider: --- !u!33 &260425463 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33813191588135886, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33813191588135886, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 260425459} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &363761396 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 363761400} - component: {fileID: 363761399} @@ -484,8 +491,9 @@ GameObject: --- !u!114 &363761397 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 363761396} m_Enabled: 1 m_EditorHideFlags: 0 @@ -500,8 +508,9 @@ MonoBehaviour: --- !u!114 &363761398 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 363761396} m_Enabled: 1 m_EditorHideFlags: 0 @@ -521,8 +530,9 @@ MonoBehaviour: --- !u!223 &363761399 Canvas: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 363761396} m_Enabled: 1 serializedVersion: 3 @@ -541,8 +551,9 @@ Canvas: --- !u!224 &363761400 RectTransform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 363761396} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -562,10 +573,11 @@ RectTransform: --- !u!1 &486401523 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1324124466577712, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1324124466577712, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 486401524} m_Layer: 0 @@ -578,9 +590,10 @@ GameObject: --- !u!4 &486401524 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4036590373541758, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4036590373541758, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 486401523} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -595,62 +608,62 @@ Transform: m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &561544094 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (6) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 13 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (6) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &665184832 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1696233368146792, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1696233368146792, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 665184833} - component: {fileID: 665184836} @@ -666,9 +679,10 @@ GameObject: --- !u!4 &665184833 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4616835664324708, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4616835664324708, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665184832} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.4} @@ -680,9 +694,10 @@ Transform: --- !u!23 &665184834 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23205928308810388, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23205928308810388, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665184832} m_Enabled: 1 m_CastShadows: 1 @@ -691,6 +706,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2} m_StaticBatchInfo: @@ -715,9 +732,10 @@ MeshRenderer: --- !u!65 &665184835 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65020466233620882, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65020466233620882, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665184832} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -728,110 +746,119 @@ BoxCollider: --- !u!33 &665184836 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33825707296015202, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33825707296015202, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665184832} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &673061833 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1488387672112076, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: FloatAgent + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 7 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - target: {fileID: 114650561397225712, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} + type: 3} propertyPath: m_UseHeuristic value: 0 objectReference: {fileID: 0} + - target: {fileID: 114889700908650620, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + propertyPath: compression + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1001 &715789529 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.x value: 0.31598538 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.y value: -0.3596048 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.z value: 0.13088542 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.w value: 0.8681629 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} --- !u!1 &742849316 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 742849319} - component: {fileID: 742849318} @@ -846,8 +873,9 @@ GameObject: --- !u!114 &742849317 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 742849316} m_Enabled: 1 m_EditorHideFlags: 0 @@ -864,8 +892,9 @@ MonoBehaviour: --- !u!114 &742849318 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 742849316} m_Enabled: 1 m_EditorHideFlags: 0 @@ -878,8 +907,9 @@ MonoBehaviour: --- !u!4 &742849319 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 742849316} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -889,62 +919,62 @@ Transform: m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &790097508 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (2) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 9 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (2) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &797520691 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1394424645070404, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1394424645070404, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 797520693} - component: {fileID: 797520692} @@ -958,14 +988,20 @@ GameObject: --- !u!20 &797520692 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 20743940359151984, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 20743940359151984, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 797520691} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -995,9 +1031,10 @@ Camera: --- !u!4 &797520693 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4890346887087870, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4890346887087870, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 797520691} m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 5, z: 0} @@ -1007,61 +1044,61 @@ Transform: m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} --- !u!1001 &885582225 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (5) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 12 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (5) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &918893358 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 918893359} - component: {fileID: 918893361} @@ -1076,8 +1113,9 @@ GameObject: --- !u!224 &918893359 RectTransform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 918893358} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -1094,8 +1132,9 @@ RectTransform: --- !u!114 &918893360 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 918893358} m_Enabled: 1 m_EditorHideFlags: 0 @@ -1108,8 +1147,6 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 20 @@ -1129,166 +1166,167 @@ MonoBehaviour: --- !u!222 &918893361 CanvasRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 918893358} + m_CullTransparentMesh: 0 --- !u!1001 &949576938 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} --- !u!1001 &949789229 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (4) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 11 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (4) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &959566328 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1656910849934022, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1656910849934022, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 959566332} - component: {fileID: 959566331} @@ -1304,9 +1342,10 @@ GameObject: --- !u!23 &959566329 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23289473826438240, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23289473826438240, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959566328} m_Enabled: 1 m_CastShadows: 0 @@ -1315,6 +1354,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} m_StaticBatchInfo: @@ -1339,9 +1380,10 @@ MeshRenderer: --- !u!65 &959566330 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65461269218509740, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65461269218509740, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959566328} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -1352,17 +1394,19 @@ BoxCollider: --- !u!33 &959566331 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33099526047820694, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33099526047820694, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959566328} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &959566332 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4399229758781002, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4399229758781002, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959566328} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1, y: 0, z: 0} @@ -1374,10 +1418,11 @@ Transform: --- !u!1 &1045409640 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1817050562469182, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1817050562469182, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1045409644} - component: {fileID: 1045409643} @@ -1393,9 +1438,10 @@ GameObject: --- !u!23 &1045409641 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23048682015641784, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23048682015641784, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045409640} m_Enabled: 1 m_CastShadows: 0 @@ -1404,6 +1450,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} m_StaticBatchInfo: @@ -1428,9 +1476,10 @@ MeshRenderer: --- !u!65 &1045409642 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65782631683949718, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65782631683949718, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045409640} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -1441,17 +1490,19 @@ BoxCollider: --- !u!33 &1045409643 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33550006272110778, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33550006272110778, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045409640} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1045409644 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4088684435237278, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4088684435237278, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045409640} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: 0} @@ -1463,10 +1514,11 @@ Transform: --- !u!1 &1208586857 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1881546218232006, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1881546218232006, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1208586861} - component: {fileID: 1208586860} @@ -1482,9 +1534,10 @@ GameObject: --- !u!23 &1208586858 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23096611355272904, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23096611355272904, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1208586857} m_Enabled: 1 m_CastShadows: 0 @@ -1493,6 +1546,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: acba6bf2a290a496bb8989b42bf8698d, type: 2} m_StaticBatchInfo: @@ -1517,9 +1572,10 @@ MeshRenderer: --- !u!64 &1208586859 MeshCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 64291102267821286, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 64291102267821286, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1208586857} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -1527,22 +1583,23 @@ MeshCollider: serializedVersion: 3 m_Convex: 0 m_CookingOptions: 14 - m_SkinWidth: 0.01 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &1208586860 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33934167732208046, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33934167732208046, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1208586857} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1208586861 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4558725385767926, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4558725385767926, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1208586857} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: 0} @@ -1554,9 +1611,10 @@ Transform: --- !u!1 &1305247359 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1305247360} - component: {fileID: 1305247362} @@ -1571,8 +1629,9 @@ GameObject: --- !u!224 &1305247360 RectTransform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1305247359} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -1589,8 +1648,9 @@ RectTransform: --- !u!114 &1305247361 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1305247359} m_Enabled: 1 m_EditorHideFlags: 0 @@ -1603,8 +1663,6 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Texture: {fileID: 8400000, guid: 114608d5384404f89bff4b6f88432958, type: 2} m_UVRect: serializedVersion: 2 @@ -1615,65 +1673,67 @@ MonoBehaviour: --- !u!222 &1305247362 CanvasRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1305247359} + m_CullTransparentMesh: 0 --- !u!1001 &1305594059 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (3) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 10 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (3) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &1553342942 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1553342943} - component: {fileID: 1553342945} @@ -1688,8 +1748,9 @@ GameObject: --- !u!224 &1553342943 RectTransform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1553342942} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -1706,8 +1767,9 @@ RectTransform: --- !u!114 &1553342944 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1553342942} m_Enabled: 1 m_EditorHideFlags: 0 @@ -1720,8 +1782,6 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 30 @@ -1739,66 +1799,68 @@ MonoBehaviour: --- !u!222 &1553342945 CanvasRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1553342942} + m_CullTransparentMesh: 0 --- !u!1001 &1558187638 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (1) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 8 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (1) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} --- !u!1 &1726089810 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1220141488340396, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1220141488340396, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1726089814} - component: {fileID: 1726089813} @@ -1814,9 +1876,10 @@ GameObject: --- !u!23 &1726089811 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23631786362770220, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23631786362770220, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1726089810} m_Enabled: 1 m_CastShadows: 0 @@ -1825,6 +1888,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} m_StaticBatchInfo: @@ -1849,9 +1914,10 @@ MeshRenderer: --- !u!65 &1726089812 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65623874337418966, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65623874337418966, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1726089810} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -1862,17 +1928,19 @@ BoxCollider: --- !u!33 &1726089813 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33222498917940530, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33222498917940530, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1726089810} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1726089814 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4007504045862718, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4007504045862718, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1726089810} m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: -1} @@ -1884,10 +1952,11 @@ Transform: --- !u!1 &1777557589 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1376404096451388, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1376404096451388, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1777557590} - component: {fileID: 1777557593} @@ -1903,9 +1972,10 @@ GameObject: --- !u!4 &1777557590 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4206155882393090, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4206155882393090, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777557589} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.4, y: 0, z: 0} @@ -1917,9 +1987,10 @@ Transform: --- !u!23 &1777557591 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23027717151182946, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23027717151182946, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777557589} m_Enabled: 1 m_CastShadows: 1 @@ -1928,6 +1999,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2} m_StaticBatchInfo: @@ -1952,9 +2025,10 @@ MeshRenderer: --- !u!65 &1777557592 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65829039252076494, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65829039252076494, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777557589} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -1965,18 +2039,20 @@ BoxCollider: --- !u!33 &1777557593 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33152597024021804, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33152597024021804, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777557589} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1795599556 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1795599558} - component: {fileID: 1795599557} @@ -1990,9 +2066,10 @@ GameObject: --- !u!114 &1795599557 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 114704252266302846, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 114704252266302846, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1795599556} m_Enabled: 1 m_EditorHideFlags: 0 @@ -2002,14 +2079,15 @@ MonoBehaviour: actorObjs: [] players: trueAgent: {fileID: 125487785} - goalPref: {fileID: 1508142483324970, guid: 1ec4e4e96e7514d45b7ebc3ba5a9a481, type: 2} - pitPref: {fileID: 1811317785436014, guid: d13ee2db77b3a4dcc8664d2fe2a0f219, type: 2} + goalPref: {fileID: 1508142483324970, guid: 1ec4e4e96e7514d45b7ebc3ba5a9a481, type: 3} + pitPref: {fileID: 1811317785436014, guid: d13ee2db77b3a4dcc8664d2fe2a0f219, type: 3} --- !u!4 &1795599558 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1795599556} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -2024,10 +2102,11 @@ Transform: --- !u!1 &1892751309 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1805019891541352, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1805019891541352, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1892751310} - component: {fileID: 1892751313} @@ -2043,9 +2122,10 @@ GameObject: --- !u!4 &1892751310 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4041386967126538, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4041386967126538, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892751309} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.4} @@ -2057,9 +2137,10 @@ Transform: --- !u!23 &1892751311 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23200653194041678, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23200653194041678, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892751309} m_Enabled: 1 m_CastShadows: 1 @@ -2068,6 +2149,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2} m_StaticBatchInfo: @@ -2092,9 +2175,10 @@ MeshRenderer: --- !u!65 &1892751312 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65321351298141546, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65321351298141546, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892751309} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -2105,18 +2189,20 @@ BoxCollider: --- !u!33 &1892751313 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33172111281575160, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33172111281575160, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892751309} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1938864789 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1898983423426052, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 1898983423426052, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1938864793} - component: {fileID: 1938864792} @@ -2132,9 +2218,10 @@ GameObject: --- !u!23 &1938864790 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23171092457376468, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 23171092457376468, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1938864789} m_Enabled: 1 m_CastShadows: 0 @@ -2143,6 +2230,8 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} m_StaticBatchInfo: @@ -2167,9 +2256,10 @@ MeshRenderer: --- !u!65 &1938864791 BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 65944324207520424, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 65944324207520424, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1938864789} m_Material: {fileID: 0} m_IsTrigger: 0 @@ -2180,17 +2270,19 @@ BoxCollider: --- !u!33 &1938864792 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33572314435256338, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 33572314435256338, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1938864789} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1938864793 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4479182187388718, guid: 5c2bd19e4bbda4991b74387ca5d28156, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4479182187388718, guid: 5c2bd19e4bbda4991b74387ca5d28156, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1938864789} m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 1} @@ -2200,52 +2292,51 @@ Transform: m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!1001 &2140226864 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_Name + value: Area (7) + objectReference: {fileID: 0} + - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalPosition.z value: -1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} + - target: {fileID: 4124767863011510, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} propertyPath: m_RootOrder value: 14 objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_Name - value: Area (7) - objectReference: {fileID: 0} - - target: {fileID: 1625008366184734, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5c2bd19e4bbda4991b74387ca5d28156, type: 3} diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs b/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs index 4a05a27ef7..53c7e774b2 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs @@ -538,7 +538,7 @@ public void InitializeSensors() Debug.Assert(!sensors[i].GetName().Equals(sensors[i + 1].GetName()), "Sensor names must be unique."); } #endif - // Create a buffer for writing vector sensor data too + // Create a buffer for writing uncompressed (i.e. float) sensor data to int numFloatObservations = 0; for (var i = 0; i < sensors.Count; i++) { @@ -617,14 +617,13 @@ public void GenerateSensorData() var sensor = sensors[i]; if (sensor.GetCompressionType() == SensorCompressionType.None) { - // only handles 1D // TODO handle in communicator code instead - m_WriteAdapter.SetTarget(m_VectorSensorBuffer, floatsWritten); + m_WriteAdapter.SetTarget(m_VectorSensorBuffer, sensor.GetObservationShape(), floatsWritten); var numFloats = sensor.Write(m_WriteAdapter); var floatObs = new Observation { FloatData = new ArraySegment(m_VectorSensorBuffer, floatsWritten, numFloats), - Shape = sensor.GetFloatObservationShape(), + Shape = sensor.GetObservationShape(), CompressionType = sensor.GetCompressionType() }; m_Info.observations.Add(floatObs); @@ -635,7 +634,7 @@ public void GenerateSensorData() var compressedObs = new Observation { CompressedData = sensor.GetCompressedObservation(), - Shape = sensor.GetFloatObservationShape(), + Shape = sensor.GetObservationShape(), CompressionType = sensor.GetCompressionType() }; m_Info.observations.Add(compressedObs); diff --git a/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/GeneratorImpl.cs b/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/GeneratorImpl.cs index 250e37f4bb..8430ebdbb9 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/GeneratorImpl.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/GeneratorImpl.cs @@ -105,8 +105,9 @@ public void Generate(TensorProxy tensorProxy, int batchSize, IEnumerable // Write each sensor consecutively to the tensor foreach (var sensorIndex in m_SensorIndices) { - m_WriteAdapter.SetTarget(tensorProxy, agentIndex, tensorOffset); var sensor = agent.sensors[sensorIndex]; + var shape = sensor.GetObservationShape(); + m_WriteAdapter.SetTarget(tensorProxy, shape, agentIndex, tensorOffset); var numWritten = sensor.Write(m_WriteAdapter); tensorOffset += numWritten; } @@ -353,8 +354,9 @@ public void Generate(TensorProxy tensorProxy, int batchSize, IEnumerable var agentIndex = 0; foreach (var agent in agents) { - m_WriteAdapter.SetTarget(tensorProxy, agentIndex, 0); - agent.sensors[m_SensorIndex].Write(m_WriteAdapter); + var sensor = agent.sensors[m_SensorIndex]; + m_WriteAdapter.SetTarget(tensorProxy, sensor.GetObservationShape(), agentIndex, 0); + sensor.Write(m_WriteAdapter); agentIndex++; } } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/TensorGenerator.cs b/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/TensorGenerator.cs index db9f0d9e92..ea1b835b27 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/TensorGenerator.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/TensorGenerator.cs @@ -88,7 +88,7 @@ public void InitializeObservations(Agent agent, ITensorAllocator allocator) for (var sensorIndex = 0; sensorIndex < agent.sensors.Count; sensorIndex++) { var sensor = agent.sensors[sensorIndex]; - var shape = sensor.GetFloatObservationShape(); + var shape = sensor.GetObservationShape(); // TODO generalize - we currently only have vector or visual, but can't handle "2D" observations var isVectorSensor = (shape.Length == 1); if (isVectorSensor) diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs index 30f5a54140..bff0b03091 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs @@ -66,7 +66,7 @@ void ValidateAgentSensorShapes(Agent agent) // First agent, save the sensor sizes foreach (var sensor in agent.sensors) { - m_SensorShapes.Add(sensor.GetFloatObservationShape()); + m_SensorShapes.Add(sensor.GetObservationShape()); } } else @@ -77,7 +77,7 @@ void ValidateAgentSensorShapes(Agent agent) for (var i = 0; i < m_SensorShapes.Count; i++) { var cachedShape = m_SensorShapes[i]; - var sensorShape = agent.sensors[i].GetFloatObservationShape(); + var sensorShape = agent.sensors[i].GetObservationShape(); Debug.Assert(cachedShape.Length == sensorShape.Length, "Sensor dimensions must match."); for (var j = 0; j < cachedShape.Length; j++) { diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs index d446cde218..fda6cf1cb8 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs @@ -57,7 +57,7 @@ void ValidateAgentSensorShapes(Agent agent) // First agent, save the sensor sizes foreach (var sensor in agent.sensors) { - m_SensorShapes.Add(sensor.GetFloatObservationShape()); + m_SensorShapes.Add(sensor.GetObservationShape()); } } else @@ -68,7 +68,7 @@ void ValidateAgentSensorShapes(Agent agent) for (var i = 0; i < m_SensorShapes.Count; i++) { var cachedShape = m_SensorShapes[i]; - var sensorShape = agent.sensors[i].GetFloatObservationShape(); + var sensorShape = agent.sensors[i].GetObservationShape(); Debug.Assert(cachedShape.Length == sensorShape.Length, "Sensor dimensions must match."); for (var j = 0; j < cachedShape.Length; j++) { diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensor.cs index 4d3f337440..c5fe96f72e 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensor.cs @@ -11,8 +11,10 @@ public class CameraSensor : ISensor bool m_Grayscale; string m_Name; int[] m_Shape; + SensorCompressionType m_CompressionType; - public CameraSensor(Camera camera, int width, int height, bool grayscale, string name) + public CameraSensor(Camera camera, int width, int height, bool grayscale, string name, + SensorCompressionType compression) { m_Camera = camera; m_Width = width; @@ -20,6 +22,7 @@ public CameraSensor(Camera camera, int width, int height, bool grayscale, string m_Grayscale = grayscale; m_Name = name; m_Shape = new[] { height, width, grayscale ? 1 : 3 }; + m_CompressionType = compression; } public string GetName() @@ -27,7 +30,7 @@ public string GetName() return m_Name; } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return m_Shape; } @@ -59,7 +62,7 @@ public void Update() { } public SensorCompressionType GetCompressionType() { - return SensorCompressionType.PNG; + return m_CompressionType; } /// diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensorComponent.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensorComponent.cs index 09d8f2c230..607706c194 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensorComponent.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/CameraSensorComponent.cs @@ -10,10 +10,11 @@ public class CameraSensorComponent : SensorComponent public int width = 84; public int height = 84; public bool grayscale; + public SensorCompressionType compression = SensorCompressionType.PNG; public override ISensor CreateSensor() { - return new CameraSensor(camera, width, height, grayscale, sensorName); + return new CameraSensor(camera, width, height, grayscale, sensorName, compression); } public override int[] GetObservationShape() diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/ISensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/ISensor.cs index 2f31772cd9..9fee45a0d6 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/ISensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/ISensor.cs @@ -17,7 +17,7 @@ public interface ISensor { /// A sensor that returns an RGB image would return new [] {Width, Height, 3} /// /// - int[] GetFloatObservationShape(); + int[] GetObservationShape(); /// /// Write the observation data directly to the WriteAdapter. @@ -65,7 +65,7 @@ public static class SensorExtensions /// public static int ObservationSize(this ISensor sensor) { - var shape = sensor.GetFloatObservationShape(); + var shape = sensor.GetObservationShape(); int count = 1; for (var i = 0; i < shape.Length; i++) { diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RayPerceptionSensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RayPerceptionSensor.cs index b0a8cae92f..d1c75f8e34 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RayPerceptionSensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RayPerceptionSensor.cs @@ -112,7 +112,7 @@ public void Update() { } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return m_Shape; } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensor.cs index f60fab4658..7e0cfca1ab 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensor.cs @@ -9,8 +9,10 @@ public class RenderTextureSensor : ISensor bool m_Grayscale; string m_Name; int[] m_Shape; + SensorCompressionType m_CompressionType; - public RenderTextureSensor(RenderTexture renderTexture, bool grayscale, string name) + public RenderTextureSensor(RenderTexture renderTexture, bool grayscale, string name, + SensorCompressionType compressionType) { m_RenderTexture = renderTexture; var width = renderTexture != null ? renderTexture.width : 0; @@ -18,6 +20,7 @@ public RenderTextureSensor(RenderTexture renderTexture, bool grayscale, string n m_Grayscale = grayscale; m_Name = name; m_Shape = new[] { height, width, grayscale ? 1 : 3 }; + m_CompressionType = compressionType; } public string GetName() @@ -25,7 +28,7 @@ public string GetName() return m_Name; } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return m_Shape; } @@ -57,11 +60,11 @@ public void Update() { } public SensorCompressionType GetCompressionType() { - return SensorCompressionType.PNG; + return m_CompressionType; } /// - /// Converts a RenderTexture and correspinding resolution to a 2D texture. + /// Converts a RenderTexture to a 2D texture. /// /// The 2D texture. /// RenderTexture. diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensorComponent.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensorComponent.cs index b192e33d92..8c22bcd80f 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensorComponent.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/RenderTextureSensorComponent.cs @@ -8,10 +8,11 @@ public class RenderTextureSensorComponent : SensorComponent public RenderTexture renderTexture; public string sensorName = "RenderTextureSensor"; public bool grayscale; + public SensorCompressionType compression = SensorCompressionType.PNG; public override ISensor CreateSensor() { - return new RenderTextureSensor(renderTexture, grayscale, sensorName); + return new RenderTextureSensor(renderTexture, grayscale, sensorName, compression); } public override int[] GetObservationShape() diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/SensorBase.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/SensorBase.cs index c61b9e8a21..f5d46258cb 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/SensorBase.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/SensorBase.cs @@ -6,12 +6,12 @@ public abstract class SensorBase : ISensor { /// /// Write the observations to the output buffer. This size of the buffer will be product of the sizes returned - /// by GetFloatObservationShape(). + /// by GetObservationShape(). /// /// public abstract void WriteObservation(float[] output); - public abstract int[] GetFloatObservationShape(); + public abstract int[] GetObservationShape(); public abstract string GetName(); @@ -22,7 +22,7 @@ public abstract class SensorBase : ISensor /// public virtual int Write(WriteAdapter adapter) { - // TODO reuse buffer for similar agents, don't call GetFloatObservationShape() + // TODO reuse buffer for similar agents, don't call GetObservationShape() var numFloats = this.ObservationSize(); float[] buffer = new float[numFloats]; WriteObservation(buffer); diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/StackingSensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/StackingSensor.cs index 9e5e001971..0211d88264 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/StackingSensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/StackingSensor.cs @@ -44,7 +44,7 @@ public StackingSensor(ISensor wrapped, int numStackedObservations) m_Name = $"StackingSensor_size{numStackedObservations}_{wrapped.GetName()}"; - var shape = wrapped.GetFloatObservationShape(); + var shape = wrapped.GetObservationShape(); m_Shape = new int[shape.Length]; m_UnstackedObservationSize = wrapped.ObservationSize(); @@ -65,7 +65,8 @@ public StackingSensor(ISensor wrapped, int numStackedObservations) public int Write(WriteAdapter adapter) { // First, call the wrapped sensor's write method. Make sure to use our own adapater, not the passed one. - m_LocalAdapter.SetTarget(m_StackedObservations[m_CurrentIndex], 0); + var wrappedShape = m_WrappedSensor.GetObservationShape(); + m_LocalAdapter.SetTarget(m_StackedObservations[m_CurrentIndex], wrappedShape, 0); m_WrappedSensor.Write(m_LocalAdapter); // Now write the saved observations (oldest first) @@ -89,7 +90,7 @@ public void Update() m_CurrentIndex = (m_CurrentIndex + 1) % m_NumStackedObservations; } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return m_Shape; } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/VectorSensor.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/VectorSensor.cs index 067c556029..45fe31e1da 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/VectorSensor.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/VectorSensor.cs @@ -56,7 +56,7 @@ public void Update() Clear(); } - public int[] GetFloatObservationShape() + public int[] GetObservationShape() { return m_Shape; } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/WriteAdapter.cs b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/WriteAdapter.cs index 918274758a..1b741fd795 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Sensor/WriteAdapter.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Sensor/WriteAdapter.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using MLAgents.InferenceBrain; @@ -14,31 +15,37 @@ public class WriteAdapter TensorProxy m_Proxy; int m_Batch; + int[] m_Shape; + /// /// Set the adapter to write to an IList at the given channelOffset. /// - /// - /// - public void SetTarget(IList data, int offset) + /// Float array or list that will be written to. + /// Shape of the observations to be written. + /// Offset from the start of the float data to write to. + public void SetTarget(IList data, int[] shape, int offset) { m_Data = data; m_Offset = offset; m_Proxy = null; - m_Batch = -1; + m_Batch = 0; + m_Shape = shape; } /// /// Set the adapter to write to a TensorProxy at the given batch and channel offset. /// - /// - /// - /// - public void SetTarget(TensorProxy tensorProxy, int batchIndex, int channelOffset) + /// Tensor proxy that will be writtent to. + /// Shape of the observations to be written. + /// Batch index in the tensor proxy (i.e. the index of the Agent) + /// Offset from the start of the channel to write to. + public void SetTarget(TensorProxy tensorProxy, int[] shape, int batchIndex, int channelOffset) { m_Proxy = tensorProxy; m_Batch = batchIndex; m_Offset = channelOffset; m_Data = null; + m_Shape = shape; } /// @@ -49,6 +56,7 @@ public float this[int index] { set { + // TODO check shape is 1D? if (m_Data != null) { m_Data[index + m_Offset] = value; @@ -70,8 +78,33 @@ public float this[int index] { set { - // Only TensorProxy supports 3D access - m_Proxy.data[m_Batch, h, w, ch + m_Offset] = value; + if (m_Data != null) + { + var height = m_Shape[0]; + var width = m_Shape[1]; + var channels = m_Shape[2]; + + if (h < 0 || h >= height) + { + throw new IndexOutOfRangeException($"height value {h} must be in range [0, {height-1}]"); + } + if (w < 0 || w >= width) + { + throw new IndexOutOfRangeException($"width value {w} must be in range [0, {width-1}]"); + } + if (ch < 0 || ch >= channels) + { + throw new IndexOutOfRangeException($"channel value {ch} must be in range [0, {channels-1}]"); + } + + // Math copied from TensorShape.Index(). Note that m_Batch should always be 0 + var index = m_Batch * height * width * channels + h * width * channels + w * channels + ch; + m_Data[index + m_Offset] = value; + } + else + { + m_Proxy.data[m_Batch, h, w, ch + m_Offset] = value; + } } } diff --git a/ml-agents-envs/mlagents_envs/exception.py b/ml-agents-envs/mlagents_envs/exception.py index 1f852b5b5c..db772fe3a3 100644 --- a/ml-agents-envs/mlagents_envs/exception.py +++ b/ml-agents-envs/mlagents_envs/exception.py @@ -27,6 +27,14 @@ class UnityCommunicationException(UnityException): pass +class UnityObservationException(UnityException): + """ + Related to errors with receiving observations. + """ + + pass + + class UnityActionException(UnityException): """ Related to errors with sending actions. diff --git a/ml-agents-envs/mlagents_envs/rpc_utils.py b/ml-agents-envs/mlagents_envs/rpc_utils.py index 84df3805bf..e75ad94a0f 100644 --- a/ml-agents-envs/mlagents_envs/rpc_utils.py +++ b/ml-agents-envs/mlagents_envs/rpc_utils.py @@ -1,11 +1,16 @@ from mlagents_envs.base_env import AgentGroupSpec, ActionType, BatchedStepResult +from mlagents_envs.exception import UnityObservationException from mlagents_envs.timers import hierarchical_timer, timed from mlagents_envs.communicator_objects.agent_info_pb2 import AgentInfoProto +from mlagents_envs.communicator_objects.observation_pb2 import ( + ObservationProto, + NONE as COMPRESSION_NONE, +) from mlagents_envs.communicator_objects.brain_parameters_pb2 import BrainParametersProto import logging import numpy as np import io -from typing import cast, List, Tuple, Union, Collection +from typing import cast, List, Tuple, Union, Collection, Optional, Iterable from PIL import Image logger = logging.getLogger("mlagents_envs") @@ -49,13 +54,44 @@ def process_pixels(image_bytes: bytes, gray_scale: bool) -> np.ndarray: image = Image.open(io.BytesIO(image_bytearray)) # Normally Image loads lazily, this forces it to do loading in the timer scope. image.load() - s = np.array(image) / 255.0 + s = np.array(image, dtype=np.float32) / 255.0 if gray_scale: s = np.mean(s, axis=2) s = np.reshape(s, [s.shape[0], s.shape[1], 1]) return s +@timed +def observation_to_np_array( + obs: ObservationProto, expected_shape: Optional[Iterable[int]] = None +) -> np.ndarray: + """ + Converts observation proto into numpy array of the appropriate size. + :param obs: observation proto to be converted + :param expected_shape: optional shape information, used for sanity checks. + :return: processed numpy array of observation from environment + """ + if expected_shape is not None: + if list(obs.shape) != list(expected_shape): + raise UnityObservationException( + f"Observation did not have the expected shape - got {obs.shape} but expected {expected_shape}" + ) + gray_scale = obs.shape[2] == 1 + if obs.compression_type == COMPRESSION_NONE: + img = np.array(obs.float_data.data, dtype=np.float32) + img = np.reshape(img, obs.shape) + return img + else: + img = process_pixels(obs.compressed_data, gray_scale) + # Compare decompressed image size to observation shape and make sure they match + if list(obs.shape) != list(img.shape): + raise UnityObservationException( + f"Decompressed observation did not have the expected shape - " + f"decompressed had {img.shape} but expected {obs.shape}" + ) + return img + + @timed def _process_visual_observation( obs_index: int, @@ -67,9 +103,8 @@ def _process_visual_observation( if len(agent_info_list) == 0: return np.zeros((0, shape[0], shape[1], shape[2]), dtype=np.float32) - gray_scale = shape[2] == 1 batched_visual = [ - process_pixels(agent_obs.observations[obs_index].compressed_data, gray_scale) + observation_to_np_array(agent_obs.observations[obs_index], shape) for agent_obs in agent_info_list ] return np.array(batched_visual, dtype=np.float32) diff --git a/ml-agents-envs/mlagents_envs/tests/test_rpc_utils.py b/ml-agents-envs/mlagents_envs/tests/test_rpc_utils.py index 58e862e07f..877e33a0f0 100644 --- a/ml-agents-envs/mlagents_envs/tests/test_rpc_utils.py +++ b/ml-agents-envs/mlagents_envs/tests/test_rpc_utils.py @@ -1,4 +1,8 @@ +import io +import numpy as np +import pytest from typing import List, Tuple + from mlagents_envs.communicator_objects.agent_info_pb2 import AgentInfoProto from mlagents_envs.communicator_objects.observation_pb2 import ( ObservationProto, @@ -6,9 +10,8 @@ PNG, ) from mlagents_envs.communicator_objects.brain_parameters_pb2 import BrainParametersProto -import numpy as np from mlagents_envs.base_env import AgentGroupSpec, ActionType -import io +from mlagents_envs.exception import UnityObservationException from mlagents_envs.rpc_utils import ( agent_group_spec_from_proto, process_pixels, @@ -58,20 +61,28 @@ def generate_compressed_proto_obs(in_array: np.ndarray) -> ObservationProto: return obs_proto +def generate_uncompressed_proto_obs(in_array: np.ndarray) -> ObservationProto: + obs_proto = ObservationProto() + obs_proto.float_data.data.extend(in_array.flatten().tolist()) + obs_proto.compression_type = NONE + obs_proto.shape.extend(in_array.shape) + return obs_proto + + def test_process_pixels(): - in_array = np.random.rand(128, 128, 3) + in_array = np.random.rand(128, 64, 3) byte_arr = generate_compressed_data(in_array) out_array = process_pixels(byte_arr, False) - assert out_array.shape == (128, 128, 3) + assert out_array.shape == (128, 64, 3) assert np.sum(in_array - out_array) / np.prod(in_array.shape) < 0.01 assert (in_array - out_array < 0.01).all() def test_process_pixels_gray(): - in_array = np.random.rand(128, 128, 3) + in_array = np.random.rand(128, 64, 3) byte_arr = generate_compressed_data(in_array) out_array = process_pixels(byte_arr, True) - assert out_array.shape == (128, 128, 1) + assert out_array.shape == (128, 64, 1) assert np.mean(in_array.mean(axis=2, keepdims=True) - out_array) < 0.01 assert (in_array.mean(axis=2, keepdims=True) - out_array < 0.01).all() @@ -87,21 +98,31 @@ def test_vector_observation(): def test_process_visual_observation(): - in_array_1 = np.random.rand(128, 128, 3) + in_array_1 = np.random.rand(128, 64, 3) proto_obs_1 = generate_compressed_proto_obs(in_array_1) - in_array_2 = np.random.rand(128, 128, 3) - proto_obs_2 = generate_compressed_proto_obs(in_array_2) + in_array_2 = np.random.rand(128, 64, 3) + proto_obs_2 = generate_uncompressed_proto_obs(in_array_2) ap1 = AgentInfoProto() ap1.observations.extend([proto_obs_1]) ap2 = AgentInfoProto() ap2.observations.extend([proto_obs_2]) ap_list = [ap1, ap2] - arr = _process_visual_observation(0, (128, 128, 3), ap_list) - assert list(arr.shape) == [2, 128, 128, 3] + arr = _process_visual_observation(0, (128, 64, 3), ap_list) + assert list(arr.shape) == [2, 128, 64, 3] assert (arr[0, :, :, :] - in_array_1 < 0.01).all() assert (arr[1, :, :, :] - in_array_2 < 0.01).all() +def test_process_visual_observation_bad_shape(): + in_array_1 = np.random.rand(128, 64, 3) + proto_obs_1 = generate_compressed_proto_obs(in_array_1) + ap1 = AgentInfoProto() + ap1.observations.extend([proto_obs_1]) + ap_list = [ap1] + with pytest.raises(UnityObservationException): + _process_visual_observation(0, (128, 42, 3), ap_list) + + def test_batched_step_result_from_proto(): n_agents = 10 shapes = [(3,), (4,)] diff --git a/ml-agents/mlagents/trainers/brain.py b/ml-agents/mlagents/trainers/brain.py index 13bb65f268..672ff93715 100644 --- a/ml-agents/mlagents/trainers/brain.py +++ b/ml-agents/mlagents/trainers/brain.py @@ -1,13 +1,12 @@ import logging import numpy as np -import io from mlagents_envs.communicator_objects.agent_info_pb2 import AgentInfoProto from mlagents_envs.communicator_objects.brain_parameters_pb2 import BrainParametersProto from mlagents_envs.communicator_objects.observation_pb2 import ObservationProto -from mlagents_envs.timers import hierarchical_timer, timed +from mlagents_envs.timers import timed +from mlagents_envs import rpc_utils from typing import Dict, List, NamedTuple, Collection -from PIL import Image logger = logging.getLogger("mlagents.trainers") @@ -119,27 +118,6 @@ def __init__( self.agents = agents self.action_masks = action_mask - @staticmethod - @timed - def process_pixels(image_bytes: bytes, gray_scale: bool) -> np.ndarray: - """ - Converts byte array observation image into numpy array, re-sizes it, - and optionally converts it to grey scale - :param gray_scale: Whether to convert the image to grayscale. - :param image_bytes: input byte array corresponding to image - :return: processed numpy array of observation from environment - """ - with hierarchical_timer("image_decompress"): - image_bytearray = bytearray(image_bytes) - image = Image.open(io.BytesIO(image_bytearray)) - # Normally Image loads lazily, this forces it to do loading in the timer scope. - image.load() - s = np.array(image) / 255.0 - if gray_scale: - s = np.mean(s, axis=2) - s = np.reshape(s, [s.shape[0], s.shape[1], 1]) - return s - @staticmethod @timed def from_agent_proto( @@ -207,11 +185,9 @@ def _process_visual_observations( vis_obs: List[np.ndarray] = [] for i in range(brain_params.number_visual_observations): - # TODO check compression type, handle uncompressed visuals obs = [ - BrainInfo.process_pixels( - agent_obs[i].compressed_data, - brain_params.camera_resolutions[i].gray_scale, + rpc_utils.observation_to_np_array( + agent_obs[i], brain_params.camera_resolutions[i] ) for agent_obs in visual_observation_protos ]