diff --git a/Assets/Resources/SceneRoot.prefab b/Assets/Resources/SceneRoot.prefab new file mode 100644 index 00000000..e33ad6a1 --- /dev/null +++ b/Assets/Resources/SceneRoot.prefab @@ -0,0 +1,318 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5195663043837274135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5195663043837274130} + - component: {fileID: 5195663043837274129} + - component: {fileID: 5195663043837274128} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5195663043837274130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663043837274135} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10240} + m_LocalScale: {x: 113.77778, y: 113.77778, z: 113.77778} + m_Children: [] + m_Father: {fileID: 5195663044295154642} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5195663043837274129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663043837274135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &5195663043837274128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663043837274135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!1 &5195663044226207331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5195663044226207340} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5195663044226207340 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044226207331} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5195663044295154642} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5195663044295154646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5195663044295154642} + - component: {fileID: 5195663044295154641} + - component: {fileID: 5195663044295154640} + - component: {fileID: 5195663044295154647} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5195663044295154642 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044295154646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 5195663043837274130} + - {fileID: 5195663044226207340} + m_Father: {fileID: 5195663044779228676} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &5195663044295154641 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044295154646} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 5195663044821397915} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &5195663044295154640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044295154646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 1120} + m_ScreenMatchMode: 1 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &5195663044295154647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044295154646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &5195663044779228731 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5195663044779228676} + m_Layer: 0 + m_Name: SceneRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5195663044779228676 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044779228731} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5195663044821397860} + - {fileID: 5195663044295154642} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5195663044821397912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5195663044821397860} + - component: {fileID: 5195663044821397915} + - component: {fileID: 5195663044821397913} + m_Layer: 0 + m_Name: UICam + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5195663044821397860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044821397912} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5195663044779228676} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &5195663044821397915 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044821397912} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &5195663044821397913 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5195663044821397912} + m_Enabled: 1 diff --git a/Assets/Resources/SceneRoot.prefab.meta b/Assets/Resources/SceneRoot.prefab.meta new file mode 100644 index 00000000..f490210e --- /dev/null +++ b/Assets/Resources/SceneRoot.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0d493612b52c641639174d49a4b1d0b1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 79019444..2691290f 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -121,6 +121,38 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &493959135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 493959136} + m_Layer: 0 + m_Name: SceneRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &493959136 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493959135} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 519420032} + - {fileID: 1041748534} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -133,7 +165,7 @@ GameObject: - component: {fileID: 519420031} - component: {fileID: 519420029} m_Layer: 0 - m_Name: Main Camera + m_Name: UICam m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -157,7 +189,7 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 2 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 @@ -197,13 +229,48 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 519420028} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 493959136} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &981190535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 981190536} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &981190536 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 981190535} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1041748534} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1041748530 GameObject: m_ObjectHideFlags: 0 @@ -294,8 +361,9 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - - {fileID: 1829594260} - m_Father: {fileID: 0} + - {fileID: 1162486262} + - {fileID: 981190536} + m_Father: {fileID: 493959136} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -362,154 +430,10 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1162486259} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10240} + m_LocalScale: {x: 113.77778, y: 113.77778, z: 113.77778} m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 + m_Father: {fileID: 1041748534} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1409168459 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1041748534} - m_Modifications: - - target: {fileID: 1031543550377437056, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_Name - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchorMax.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchorMax.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchorMin.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchorMin.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: c69c62a08854f8b4792878b1f3ce7463, type: 3} ---- !u!1 &1829594259 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1031543550377437056, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - m_PrefabInstance: {fileID: 1409168459} - m_PrefabAsset: {fileID: 0} ---- !u!224 &1829594260 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 1031543550377437057, guid: c69c62a08854f8b4792878b1f3ce7463, - type: 3} - m_PrefabInstance: {fileID: 1409168459} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1829594261 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1829594259} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 39668ad64220a4c15ade9d53c9fe33db, type: 3} - m_Name: - m_EditorClassIdentifier: - StateName: diff --git a/Assets/Scenes/Init.unity b/Assets/Scenes/Init.unity new file mode 100644 index 00000000..30f07d03 --- /dev/null +++ b/Assets/Scenes/Init.unity @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!81 &9193662541828971636 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9193662541828971637} + m_Enabled: 1 +--- !u!1 &9193662541828971637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9193662541828971657} + - component: {fileID: 9193662541828971638} + - component: {fileID: 9193662541828971636} + m_Layer: 0 + m_Name: MainCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!20 &9193662541828971638 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9193662541828971637} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &9193662541828971657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9193662541828971637} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Init.unity.meta b/Assets/Scenes/Init.unity.meta new file mode 100644 index 00000000..4154905e --- /dev/null +++ b/Assets/Scenes/Init.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3843edec69a01407ba47adf3b0facef3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity new file mode 100644 index 00000000..578759a0 --- /dev/null +++ b/Assets/Scenes/Main.unity @@ -0,0 +1,886 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &95334916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 95334917} + - component: {fileID: 95334919} + - component: {fileID: 95334918} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &95334917 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95334916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1721972075} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 551, y: 452} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &95334918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95334916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f22b88cc81e0d43d39b89f6acd039e50, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &95334919 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 95334916} + m_CullTransparentMesh: 0 +--- !u!1 &454570507 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454570508} + - component: {fileID: 454570510} + - component: {fileID: 454570509} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &454570508 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454570507} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1721972075} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 880, y: 1420} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &454570509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454570507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 4df75588a5cc94744b3fb37ca235eba6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &454570510 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454570507} + m_CullTransparentMesh: 0 +--- !u!1 &889647017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 889647018} + - component: {fileID: 889647020} + - component: {fileID: 889647019} + m_Layer: 5 + m_Name: 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &889647018 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 889647017} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1859672522} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -25, y: 0} + m_SizeDelta: {x: 123, y: 43} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &889647019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 889647017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 4332d22ed17ff4b3ba2af51470bd50e3, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &889647020 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 889647017} + m_CullTransparentMesh: 0 +--- !u!1 &1516804356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1516804357} + - component: {fileID: 1516804359} + - component: {fileID: 1516804358} + m_Layer: 5 + m_Name: 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1516804357 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516804356} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1859672522} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: 39, y: 43} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1516804358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516804356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e16cd3c57d4c549f3adaca77741cd492, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1516804359 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516804356} + m_CullTransparentMesh: 0 +--- !u!1 &1721972074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1721972075} + m_Layer: 5 + m_Name: FirstOpen + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1721972075 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721972074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 454570508} + - {fileID: 95334917} + - {fileID: 1859672522} + m_Father: {fileID: 3333527423099584207} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1859672521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1859672522} + m_Layer: 5 + m_Name: Word + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1859672522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1859672521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 889647018} + - {fileID: 1984246097} + - {fileID: 1516804357} + m_Father: {fileID: 1721972075} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -238.84} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1984246096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984246097} + - component: {fileID: 1984246099} + - component: {fileID: 1984246098} + m_Layer: 5 + m_Name: 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1984246097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984246096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1859672522} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 13, y: -1} + m_SizeDelta: {x: 39, y: 43} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1984246098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984246096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b20e71bd016bf44c4bd47aa67d6d1ebd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1984246099 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984246096} + m_CullTransparentMesh: 0 +--- !u!224 &3333527423029586801 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423029586805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 3333527424761485489} + - {fileID: 3333527423099584207} + m_Father: {fileID: 3333527423551884967} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &3333527423029586802 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423029586805} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 3333527423560040760} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &3333527423029586803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423029586805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 1120} + m_ScreenMatchMode: 1 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &3333527423029586804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423029586805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &3333527423029586805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3333527423029586801} + - component: {fileID: 3333527423029586802} + - component: {fileID: 3333527423029586803} + - component: {fileID: 3333527423029586804} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &3333527423099584192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3333527423099584207} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3333527423099584207 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423099584192} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1721972075} + m_Father: {fileID: 3333527423029586801} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3333527423551884952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3333527423551884967} + m_Layer: 0 + m_Name: SceneRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3333527423551884967 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423551884952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3333527423560040903} + - {fileID: 3333527423029586801} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &3333527423560040760 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423560040763} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &3333527423560040762 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423560040763} + m_Enabled: 1 +--- !u!1 &3333527423560040763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3333527423560040903} + - component: {fileID: 3333527423560040760} + - component: {fileID: 3333527423560040762} + m_Layer: 0 + m_Name: UICam + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3333527423560040903 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527423560040763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3333527423551884967} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &3333527424761485489 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527424761485492} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10240} + m_LocalScale: {x: 113.77778, y: 113.77778, z: 113.77778} + m_Children: [] + m_Father: {fileID: 3333527423029586801} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3333527424761485490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527424761485492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &3333527424761485491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333527424761485492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!1 &3333527424761485492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3333527424761485489} + - component: {fileID: 3333527424761485490} + - component: {fileID: 3333527424761485491} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 diff --git a/Assets/Scenes/Main.unity.meta b/Assets/Scenes/Main.unity.meta new file mode 100644 index 00000000..f03ad4eb --- /dev/null +++ b/Assets/Scenes/Main.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9aed4bd121efa4a9b941cacbf79df6dd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core.meta b/Assets/Scripts/Core.meta new file mode 100644 index 00000000..e7e780cb --- /dev/null +++ b/Assets/Scripts/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3c8a5e9ddd4f42daa3590c789f0ac30 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/AudioManager.cs b/Assets/Scripts/Core/AudioManager.cs new file mode 100644 index 00000000..308a3825 --- /dev/null +++ b/Assets/Scripts/Core/AudioManager.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +public class AudioManager : S_MonoSingleton +{ + [SerializeField] AudioListener mAudioListener; + [SerializeField] AudioSource mMusicPlayer; + [SerializeField] AudioSource mSoundPlayer; + + public SoundPack[] soundPacks; + + private Dictionary> mSoundDic = new Dictionary>(); + private bool mIsSoundOn = true; + + protected override void Initialize() + { + for (int i = 0; i < soundPacks.Length; i++) + { + SoundPack tPack = soundPacks[i]; + if (!mSoundDic.ContainsKey(tPack.myType)) + { + mSoundDic[tPack.myType] = new List(); + } + + mSoundDic[tPack.myType] = tPack.myClips; + } + + CheckAudioListner(); + CheckMusicPlayer(); + CheckSoundPlayer(); + } + + //private void Update() + //{ + // if (AudioListener.pause && mIsSoundOn) + // { + // AudioListener.pause = false; + // } + // else if (!AudioListener.pause && !mIsSoundOn) + // { + // AudioListener.pause = true; + // } + //} + + public void SetSoundOn(bool pIsOn) + { + mIsSoundOn = pIsOn; + AudioListener.pause = !pIsOn; + } + + public void PlayBGMusic(SoundType pType, float pVolumeScale = 1) + { + if (!mIsSoundOn) + return; + + CheckMusicPlayer(); + + AudioClip tClip = GetClip(pType); + if (tClip == null) + return; + + mMusicPlayer.clip = tClip; + mMusicPlayer.loop = true; + mMusicPlayer.volume *= pVolumeScale; + mMusicPlayer.Play(); + } + + public void StopBGMusic() + { + CheckMusicPlayer(); + + mMusicPlayer.Stop(); + mMusicPlayer.clip = null; + } + + public void PlaySound(SoundType pType, float pVolumeScale = 1) + { + if (!mIsSoundOn) + return; + + CheckSoundPlayer(); + + AudioClip tClip = GetClip(pType); + if (tClip == null) + return; + + mSoundPlayer.PlayOneShot(tClip, pVolumeScale); + } + + public AudioSource PlaySoundLoop(SoundType pType, float pVolumeScale = 1) + { + if (!mIsSoundOn) + return null; + + AudioClip tClip = GetClip(pType); + if (tClip == null) + return null; + + AudioSource tLoopAudio = gameObject.AddComponent(); + tLoopAudio.clip = tClip; + tLoopAudio.loop = true; + tLoopAudio.volume *= pVolumeScale; + tLoopAudio.Play(); + + return tLoopAudio; + } + + public void StopSoundLoop(AudioSource pAudioSrc) + { + if (pAudioSrc == null) + return; + + pAudioSrc.Stop(); + Destroy(pAudioSrc); + } + + public void PlaySound3D(AudioSource pAudioSrc, SoundType pType) + { + if (!mIsSoundOn) + return; + + AudioClip tClip = GetClip(pType); + if (tClip == null) + return; + + pAudioSrc.PlayOneShot(tClip); + } + + private AudioClip GetClip(SoundType pType) + { + if (!mSoundDic.ContainsKey(pType) || mSoundDic[pType].Count == 0) + return null; + + List tClips = mSoundDic[pType]; + int tRandomPlayIndex = UnityEngine.Random.Range(0, tClips.Count); + + return tClips[tRandomPlayIndex]; + } + + private void CheckAudioListner() + { + if (mAudioListener == null) + mAudioListener = gameObject.AddComponent(); + } + + private void CheckMusicPlayer() + { + if (mMusicPlayer == null) + mMusicPlayer = gameObject.AddComponent(); + } + + private void CheckSoundPlayer() + { + if (mSoundPlayer == null) + mSoundPlayer = gameObject.AddComponent(); + } +} + +[Serializable] +public class SoundPack +{ + public SoundType myType; + public List myClips; +} + +public enum SoundType +{ + None = -1, + + Kick_Normal, + Kick_Door, + Enemy_Die, + + Crumble_Wood, + Crumble_Pot, + Crumble_Wall, + + Fall_Water, + Bomb_Explode +} \ No newline at end of file diff --git a/Assets/Scripts/Core/AudioManager.cs.meta b/Assets/Scripts/Core/AudioManager.cs.meta new file mode 100644 index 00000000..eaccf053 --- /dev/null +++ b/Assets/Scripts/Core/AudioManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bdd22e611e6942489e40ead15305a34 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ConfigBase.cs b/Assets/Scripts/Core/ConfigBase.cs new file mode 100644 index 00000000..ce1f0059 --- /dev/null +++ b/Assets/Scripts/Core/ConfigBase.cs @@ -0,0 +1,18 @@ +using UnityEngine; + +public class ConfigBase : ScriptableObject where T :ScriptableObject +{ + private static T mInstance; + public static T Instance + { + get + { + if (mInstance == null) + { + mInstance = Resources.Load(typeof(T).ToString()); + } + + return mInstance; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/ConfigBase.cs.meta b/Assets/Scripts/Core/ConfigBase.cs.meta new file mode 100644 index 00000000..ca62f6dd --- /dev/null +++ b/Assets/Scripts/Core/ConfigBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 370d3746318754708915f9f5701c3f55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/FSM.cs b/Assets/Scripts/Core/FSM.cs new file mode 100644 index 00000000..4b6b925b --- /dev/null +++ b/Assets/Scripts/Core/FSM.cs @@ -0,0 +1,120 @@ +using System; +using System.Reflection; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class FSM +{ + public string CurrentState => mCurrentState != null ? mCurrentState.GetType().ToString() : ""; + + private Dictionary> mStateDic; + private T mMaster; + private BaseState mCurrentState; + private bool mActive; + + public FSM(T pMaster) + { + mMaster = pMaster; + mStateDic = new Dictionary>(); + mActive = true; + } + + public void ChangeState(Type pStateType = null) + { + if (pStateType == null)//change to empty + { + if (mCurrentState != null) + mCurrentState.ExitState(null); + mCurrentState = null; + + return; + } + + BaseState tNextState = null; + if (pStateType != null) + { + if (!mStateDic.ContainsKey(pStateType)) + { + object tInstance = pStateType.Assembly.CreateInstance(pStateType.Name); + if (tInstance is BaseState) + { + tNextState = tInstance as BaseState; + tNextState.SetFSM(this); + tNextState.SetMaster(mMaster); + mStateDic.Add(pStateType, tNextState); + } + else + { + Debug.LogError("State Class : " + pStateType.Name + " is not a " + typeof(BaseState).Name + "!"); + } + } + else + { + tNextState = mStateDic[pStateType]; + } + } + else + { + Debug.LogError("State Class : " + pStateType.Name + " is not found!"); + } + + if (tNextState != null && tNextState != mCurrentState) + { + if (mCurrentState != null) + mCurrentState.ExitState(tNextState.GetType()); + tNextState.EnterState(mCurrentState?.GetType()); + mCurrentState = tNextState; + } + } + + public void Execute(float pDeltaTime) + { + if (!mActive) + return; + + if (mCurrentState != null) + mCurrentState.ExecuteState(pDeltaTime); + } + + public void SetActive(bool pActive) + { + mActive = pActive; + } +} + +public class BaseState +{ + protected T mMaster; + protected FSM mFSM; + + public void SetFSM(FSM pFSM) + { + mFSM = pFSM; + } + + public void SetMaster(T pMaster) + { + mMaster = pMaster; + } + + public virtual void EnterState(Type pLastState) + { + + } + + public virtual void ExitState(Type pNextState) + { + + } + + public virtual void ExecuteState(float pDeltaTime) + { + + } + + protected void ChangeState(Type pType) + { + mFSM.ChangeState(pType); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/FSM.cs.meta b/Assets/Scripts/Core/FSM.cs.meta new file mode 100644 index 00000000..98adb7e0 --- /dev/null +++ b/Assets/Scripts/Core/FSM.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d858d9a53d0f346a7a673bb5ac4ba34f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Language.meta b/Assets/Scripts/Core/Language.meta new file mode 100644 index 00000000..f7a9aea7 --- /dev/null +++ b/Assets/Scripts/Core/Language.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b568d348fbfb46de8b3383cc727ffab +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Language/LangImage.cs b/Assets/Scripts/Core/Language/LangImage.cs new file mode 100644 index 00000000..fe2fc4fc --- /dev/null +++ b/Assets/Scripts/Core/Language/LangImage.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using LangSprite = LanguageConfig.LangSprite; + +public class LangImage : MonoBehaviour +{ + public bool FitSize = false; + [SerializeField] LangSprite[] mLangSprites; + + private void Start() + { + Image tMyImage = GetComponent(); + for (int i = 0; i < mLangSprites.Length; i++) + { + if (mLangSprites[i].LangType == LanguageConfig.Instance.LangType) + { + tMyImage.sprite = mLangSprites[i].LSprite; + } + } + + if (FitSize) + { + tMyImage.SetNativeSize(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Language/LangImage.cs.meta b/Assets/Scripts/Core/Language/LangImage.cs.meta new file mode 100644 index 00000000..9f80d711 --- /dev/null +++ b/Assets/Scripts/Core/Language/LangImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28761ee1a4f9445fba25f3fc4617b6c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Language/LangText.cs b/Assets/Scripts/Core/Language/LangText.cs new file mode 100644 index 00000000..3189c8c6 --- /dev/null +++ b/Assets/Scripts/Core/Language/LangText.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +[RequireComponent(typeof(Text))] + +public class LangText : MonoBehaviour +{ + public string Key; + + private void Start() + { + Text tMyTxt = GetComponent(); + tMyTxt.text = LanguageConfig.Instance.GetText(Key); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Language/LangText.cs.meta b/Assets/Scripts/Core/Language/LangText.cs.meta new file mode 100644 index 00000000..97c05fb1 --- /dev/null +++ b/Assets/Scripts/Core/Language/LangText.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b0dfd162879d480b9a75ca842285e78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Language/LanguageConfig.cs b/Assets/Scripts/Core/Language/LanguageConfig.cs new file mode 100644 index 00000000..0c9ea075 --- /dev/null +++ b/Assets/Scripts/Core/Language/LanguageConfig.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(menuName = "LanguageConfig")] +public class LanguageConfig : ConfigBase +{ + public bool IsDebug = false; + [SerializeField] LanguageType DebugLang = LanguageType.Chinese; + [SerializeField] LanguageType DefaultLang = LanguageType.English; + + [SerializeField] List Items; + + public LanguageType LangType + { + get + { + if (IsDebug) + { + return DebugLang; + } + + LanguageType tLangType = DefaultLang; + if (Application.systemLanguage == SystemLanguage.Chinese || Application.systemLanguage == SystemLanguage.ChineseSimplified || Application.systemLanguage == SystemLanguage.ChineseTraditional) + { + tLangType = LanguageType.Chinese; + } + else if (Application.systemLanguage == SystemLanguage.Japanese) + { + tLangType = LanguageType.Japanese; + } + + return tLangType; + } + } + + public string GetText(string pKey) + { + LanguageItem tItem = Items.Find((pItem) => pItem.Key.Equals(pKey)); + + if (tItem != null) + { + return tItem.GetString(LangType); + } + + return pKey; + } + + [Serializable] + class LanguageItem + { + public string Key; + public LangString[] LangStrs; + + public string GetString(LanguageType pLangType) + { + for (int i = 0; i < LangStrs.Length; i++) + { + if (LangStrs[i].LangType == pLangType) + return LangStrs[i].LString; + } + + return Key; + } + } + + [Serializable] + public class LangString + { + public LanguageType LangType; + public string LString; + } + + [Serializable] + public class LangSprite + { + public LanguageType LangType; + public Sprite LSprite; + } + + public enum LanguageType + { + Chinese = 0, + English, + Japanese + } +} + diff --git a/Assets/Scripts/Core/Language/LanguageConfig.cs.meta b/Assets/Scripts/Core/Language/LanguageConfig.cs.meta new file mode 100644 index 00000000..e58d4be0 --- /dev/null +++ b/Assets/Scripts/Core/Language/LanguageConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa83530e0295a44b6adac1a7d3528d0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/MonoSingleton.cs b/Assets/Scripts/Core/MonoSingleton.cs new file mode 100644 index 00000000..5419ce53 --- /dev/null +++ b/Assets/Scripts/Core/MonoSingleton.cs @@ -0,0 +1,76 @@ +using UnityEngine; + +/// +/// 动态(Dynamic) +/// +public abstract class D_MonoSingleton : MonoBehaviour where T : D_MonoSingleton +{ + private static T _instance = null; + + public static T Instance + { + get { + if (_instance == null) + { + GameObject go = new GameObject(); + DontDestroyOnLoad(go); + go.name = "MonoSingleton:" + typeof(T).ToString(); + go.transform.localPosition = Vector3.zero; + go.transform.localEulerAngles = Vector3.zero; + go.transform.localScale = Vector3.one; + _instance = go.AddComponent(); + } + return _instance; + } + } + private void Awake() + { + Initialize(); + } + + protected virtual void Initialize() + { + + } + + private void OnDestroy() + { + _instance = null; + } +} + +/// +/// 静态(static) +/// +public abstract class S_MonoSingleton : MonoBehaviour where T : S_MonoSingleton +{ + private static T _instance = null; + public static T Instance + { + get + { + return _instance; + } + } + + private void Awake() + { + if (_instance != null && _instance != (T)this) + { + Destroy (gameObject); + return; + } + _instance = (T)this; + Initialize (); + } + + protected virtual void Initialize() + { + + } + + private void OnDestroy() + { + _instance = null; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/MonoSingleton.cs.meta b/Assets/Scripts/Core/MonoSingleton.cs.meta new file mode 100644 index 00000000..0cbf9191 --- /dev/null +++ b/Assets/Scripts/Core/MonoSingleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b55be31c955f0418e8bfd76f3cd05048 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/NativeTool.cs b/Assets/Scripts/Core/NativeTool.cs new file mode 100644 index 00000000..ad5785ff --- /dev/null +++ b/Assets/Scripts/Core/NativeTool.cs @@ -0,0 +1,75 @@ +using System.Runtime.CompilerServices; +using UnityEngine; +using System; +using System.Runtime.InteropServices; +using AOT; + +public static class NativeTool +{ + + private static Action mShareResultDel; + + public static void Shake(int pType, float pIntensity)//0 light,1 medium,2 heavy + { +#if UNITY_EDITOR + //Debug.Log($"Shake {pType} with intensity {pIntensity}"); +#elif UNITY_IOS + mShake(pType, pIntensity); +#elif UNITY_ANDROID + mShake(pType * pType * 20 + (int)(pIntensity * (pType + 1) * 10)); +#endif + } + + public static void Share(string pTitle, string pUrl, Action pResultDel) + { + mShareResultDel = pResultDel; + +#if UNITY_EDITOR + mShareResultDel?.Invoke(true); +#elif UNITY_IOS + mShare(pTitle, pUrl, onShareCallback); +#elif UNITY_ANDROID + mShare(pTitle, pUrl); +#endif + } + +#if UNITY_IOS + + [DllImport("__Internal")] + private static extern void mShake(int pType, float pIntensity); + [DllImport("__Internal")] + private static extern void mShare(string pTitle, string pUrl, BoolResultDelegate pResultCallback); + + internal delegate void BoolResultDelegate(bool pResult); + + [MonoPInvokeCallback(typeof(BoolResultDelegate))] + private static void onShareCallback(bool pResult) + { + mShareResultDel?.Invoke(pResult); + } + +#endif + +#if UNITY_ANDROID + + private static AndroidJavaClass javaObj = new AndroidJavaClass("com.toukagames.NativeTool"); + private static AndroidJavaObject mInstance = null; + + private static void mShake(long mMilliSeconds) + { + if (mInstance == null) + mInstance = javaObj.CallStatic("GetInstance"); + + mInstance.Call("Shake", mMilliSeconds); + } + + private static void mShare(string pTitle, string pUrl) + { + if (mInstance == null) + mInstance = javaObj.CallStatic("GetInstance"); + + mInstance.Call("Share", pUrl); + mShareResultDel?.Invoke(true); + } +#endif +} \ No newline at end of file diff --git a/Assets/Scripts/Core/NativeTool.cs.meta b/Assets/Scripts/Core/NativeTool.cs.meta new file mode 100644 index 00000000..94e7c736 --- /dev/null +++ b/Assets/Scripts/Core/NativeTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d99a7aebbcc31432bb339002134c4d40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ResourceManager.cs b/Assets/Scripts/Core/ResourceManager.cs new file mode 100644 index 00000000..16653bd2 --- /dev/null +++ b/Assets/Scripts/Core/ResourceManager.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UObject = UnityEngine.Object; + +public class ResourceManager : D_MonoSingleton +{ + private Dictionary mResDic = new Dictionary(); + + public T LoadRes(string pPath) where T : UObject + { + if (!mResDic.ContainsKey(pPath)) + { + mResDic[pPath] = Resources.Load(pPath); + } + + return mResDic[pPath] as T; + } + + internal GameObject LoadResource(string v) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/ResourceManager.cs.meta b/Assets/Scripts/Core/ResourceManager.cs.meta new file mode 100644 index 00000000..f53d9ebe --- /dev/null +++ b/Assets/Scripts/Core/ResourceManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98385bb2db6d5439fbecd7fabd2c51fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/StorageBase.cs b/Assets/Scripts/Core/StorageBase.cs new file mode 100644 index 00000000..cd0f2811 --- /dev/null +++ b/Assets/Scripts/Core/StorageBase.cs @@ -0,0 +1,65 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class StorageBase where T : StorageBase,new () +{ + private static T mInstance; + public static T Instance + { + get + { + if (mInstance == null) + { + Load(); + } + + return mInstance; + } + } + + protected virtual void InitFirstDefault() + { + + } + + protected virtual void InitBuildDefault() + { + + } + + public static void Load() + { + if (ES3.FileExists() && ES3.KeyExists(typeof(T).Name)) + { + mInstance = ES3.Load(typeof(T).Name); + } + else + { + mInstance = new T(); + + string tFirstDefaultKey = "FirstDefault_" + typeof(T).Name; + + if (PlayerPrefs.GetInt(tFirstDefaultKey, 0) != 1) + { + PlayerPrefs.SetInt(tFirstDefaultKey, 1); + mInstance.InitFirstDefault(); + } + } + + string tBuildDefaultKey = "BuildDefault_" + typeof(T).Name + Application.buildGUID; + + if (PlayerPrefs.GetInt(tBuildDefaultKey, 0) != 1) + { + PlayerPrefs.SetInt(tBuildDefaultKey, 1); + mInstance.InitBuildDefault(); + } + + Save(); + } + + public static void Save() + { + ES3.Save(typeof(T).Name, mInstance); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/StorageBase.cs.meta b/Assets/Scripts/Core/StorageBase.cs.meta new file mode 100644 index 00000000..ad1c33a2 --- /dev/null +++ b/Assets/Scripts/Core/StorageBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c90fab9da08a8424fb2de4f64c1bbdd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/TimerManager.meta b/Assets/Scripts/Core/TimerManager.meta new file mode 100644 index 00000000..2b3a7990 --- /dev/null +++ b/Assets/Scripts/Core/TimerManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61de45916d3b748258a9ea610c9d584c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/TimerManager/TimerManager.cs b/Assets/Scripts/Core/TimerManager/TimerManager.cs new file mode 100644 index 00000000..11d82871 --- /dev/null +++ b/Assets/Scripts/Core/TimerManager/TimerManager.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TimerManager : D_MonoSingleton +{ + [SerializeField] int _TimerCount; + + private List mTimerList; + private List mDestroyList; + + protected override void Initialize() + { + base.Initialize(); + + mTimerList = new List(); + mDestroyList = new List(); + } + + private void Update() + { + _TimerCount = mTimerList.Count; + if (mTimerList.Count > 0) + { + for (int i = 0; i < mTimerList.Count; i++) + { + if (mTimerList[i].IsAvailable) + { + mTimerList[i].Update(Time.deltaTime, Time.unscaledDeltaTime); + } + else + { + mDestroyList.Add(mTimerList[i]); + } + } + + if (mDestroyList.Count > 0) + { + for (int i = 0; i < mDestroyList.Count; i++) + { + mTimerList.Remove(mDestroyList[i]); + } + + mDestroyList.Clear(); + } + } + } + + public TimerUnit CreateTimerUnit() + { + TimerUnit tUnit = new TimerUnit(); + mTimerList.Add(tUnit); + + return tUnit; + } + + public void Schedule(Action pDelDone, float pSeconds, int pCount = 1, bool pIgnoreTimeScale = false) + { + TimerUnit tUnit = CreateTimerUnit(); + tUnit.StartTimer(pDelDone, pSeconds, pCount, pIgnoreTimeScale, true); + } + + public void DestroyTimerUnit(TimerUnit pUnit) + { + pUnit.Destroy(); + } + + public void ClearAll() + { + foreach (TimerUnit tUnit in mTimerList) + { + tUnit.Destroy(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/TimerManager/TimerManager.cs.meta b/Assets/Scripts/Core/TimerManager/TimerManager.cs.meta new file mode 100644 index 00000000..08d14e4b --- /dev/null +++ b/Assets/Scripts/Core/TimerManager/TimerManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78a04fd9ba3054c08b112b9aeaec2414 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/TimerManager/TimerUnit.cs b/Assets/Scripts/Core/TimerManager/TimerUnit.cs new file mode 100644 index 00000000..9430b024 --- /dev/null +++ b/Assets/Scripts/Core/TimerManager/TimerUnit.cs @@ -0,0 +1,103 @@ +using System; + +public class TimerUnit +{ + public bool IsRunning => mStarted; + public bool IsAvailable => !mDestroyed; + + private Action mDelDone; + + private bool mStarted = false; + private bool mDestroyed = false; + + private float mTotalTime; + private float mTimeCounter = -1; + private int mCount = 0; + + private bool mIgnoreTimeScale = false; + private bool mAutoDestroy = false; + + public void Update(float pDeltaTime, float pUnscaledDeltaTime) + { + if (mStarted) + { + if (mTimeCounter > 0) + { + mTimeCounter -= mIgnoreTimeScale ? pUnscaledDeltaTime : pDeltaTime; + if (mTimeCounter <= 0) + { + Done(); + } + } + } + } + + public void StartTimer(Action pDelDone, float pSeconds, int pCount = 1, bool pIgnoreTimeScale = false, bool pAutoDestroy = false) + { + mDelDone = pDelDone; + + mTotalTime = pSeconds; + mCount = pCount; + mIgnoreTimeScale = pIgnoreTimeScale; + mAutoDestroy = pAutoDestroy; + + if (pSeconds <= 0) + { + Done(); + } + else + { + ExecuteOnce(); + } + } + + public void CancelTimer() + { + mStarted = false; + mTotalTime = 0; + mTimeCounter = -1; + + mDelDone = null; + } + + public void ResetTimeDelta(float pSeconds) + { + mTotalTime = pSeconds; + } + + public void ReUse() + { + mDestroyed = false; + } + + public void Destroy() + { + mStarted = false; + mDestroyed = true; + } + + private void ExecuteOnce() + { + mStarted = true; + mTimeCounter = mTotalTime; + } + + private void Done() + { + mStarted = false; + mDelDone?.Invoke(); + + mCount--; + if (mCount > 0) + { + ExecuteOnce(); + } + else + { + if (mAutoDestroy) + { + Destroy(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/TimerManager/TimerUnit.cs.meta b/Assets/Scripts/Core/TimerManager/TimerUnit.cs.meta new file mode 100644 index 00000000..2b4a0b36 --- /dev/null +++ b/Assets/Scripts/Core/TimerManager/TimerUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f71fb0bbf4a494f45bb8db12772c9f11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UIManager.meta b/Assets/Scripts/Core/UIManager.meta new file mode 100644 index 00000000..fed1fe37 --- /dev/null +++ b/Assets/Scripts/Core/UIManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3226d76f0fe9475bb55baffa06ae6b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UIManager/BasePanel.cs b/Assets/Scripts/Core/UIManager/BasePanel.cs new file mode 100644 index 00000000..d35ed428 --- /dev/null +++ b/Assets/Scripts/Core/UIManager/BasePanel.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BasePanel : MonoBehaviour +{ + public bool IsOpened => gameObject.activeSelf; + + public void Open() + { + gameObject.SetActive(true); + OnOpen(); + } + + protected virtual void OnOpen() + { + + } + + public void Close() + { + gameObject.SetActive(false); + OnClose(); + } + + protected virtual void OnClose() + { + + } + + public void Focus(bool pFocus) + { + OnFocus(pFocus); + } + + protected virtual void OnFocus(bool pFocus) + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/UIManager/BasePanel.cs.meta b/Assets/Scripts/Core/UIManager/BasePanel.cs.meta new file mode 100644 index 00000000..cf6a60e5 --- /dev/null +++ b/Assets/Scripts/Core/UIManager/BasePanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95da4430b60104f58bd8c0801f23b547 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UIManager/UIManager.cs b/Assets/Scripts/Core/UIManager/UIManager.cs new file mode 100644 index 00000000..253880e3 --- /dev/null +++ b/Assets/Scripts/Core/UIManager/UIManager.cs @@ -0,0 +1,146 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +public class UIManager : S_MonoSingleton +{ + public bool IsUICovered + { + get + { + return mUIList.Count > 0; + } + } + + public Canvas UICanvas + { + get + { + if (mUICanvas == null) + { + mUICanvas = GetComponent(); + } + + return mUICanvas; + } + } + + public Camera UICamera + { + get + { + if (mUICamera == null) + { + mUICamera = UICanvas.worldCamera; + } + + return mUICamera; + } + } + + private Canvas mUICanvas; + private Camera mUICamera; + private Dictionary mUIDic = new Dictionary(); + private List mUIList = new List(); + + public T OpenUI() where T : BasePanel + { + T tUI = GetUI(); + tUI.Open(); + + if (mUIList.Contains(tUI)) + { + mUIList.Remove(tUI); + } + if (mUIList.Count > 0) + { + mUIList[mUIList.Count - 1].Focus(false); + } + mUIList.Add(tUI); + + return tUI; + } + + public T CloseUI() where T : BasePanel + { + T tUI = GetUI(); + tUI.Close(); + + int tIndex = mUIList.IndexOf(tUI); + if (tIndex == mUIList.Count - 1) + { + mUIList.Remove(tUI); + if (mUIList.Count > 0) + { + mUIList[mUIList.Count - 1].Focus(true); + } + } + else + { + mUIList.Remove(tUI); + } + + return tUI; + } + + public T GetUI() where T : BasePanel + { + T tUI = null; + if (!mUIDic.ContainsKey(typeof(T))) + { + mUIDic[typeof(T)] = GetComponentInChildren(true); + } + + tUI = mUIDic[typeof(T)] as T; + + return tUI; + } + + public void ShowTip(string pTip) + { + + } + + public static bool IsTouchUI() + { + if (EventSystem.current != null) + { + PointerEventData eventData = new PointerEventData(EventSystem.current); + eventData.position = Input.mousePosition; + List results = new List(); + EventSystem.current.RaycastAll(eventData, results); + if (results == null || results.Count == 0) + { + return false; + } + return results.Count > 0 && results[0].gameObject.layer == 5; + } + return false; + } + + public static List GetChildGobList(Transform pParent) + { + List tList = new List(); + + for (int i = 0; i < pParent.childCount; i++) + { + tList.Add(pParent.GetChild(i).gameObject); + } + + return tList; + } + + public static List GetChildList(Transform pParent) + { + List tList = new List(); + + for (int i = 0; i < pParent.childCount; i++) + { + tList.Add(pParent.GetChild(i).GetComponent()); + } + + return tList; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/UIManager/UIManager.cs.meta b/Assets/Scripts/Core/UIManager/UIManager.cs.meta new file mode 100644 index 00000000..8320a2c7 --- /dev/null +++ b/Assets/Scripts/Core/UIManager/UIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5a7353a4fbe34fde8272bf21e0b8bc2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/VibrateManager.cs b/Assets/Scripts/Core/VibrateManager.cs new file mode 100644 index 00000000..f43a2fd1 --- /dev/null +++ b/Assets/Scripts/Core/VibrateManager.cs @@ -0,0 +1,57 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class VibrateManager +{ + private static VibrateManager mInstance; + public static VibrateManager Instance + { + get + { + if (mInstance == null) + { + mInstance = new VibrateManager(); + } + + return mInstance; + } + } + + private VibrateManager() + { + + } + + private bool mIsVibrateOn = true; + + public void SetVibrateOn(bool pIsOn) + { + mIsVibrateOn = pIsOn; + } + + public void Vibrate(VibrateType pType, float pIntensity = 1) + { + if (mIsVibrateOn) + { + //Debug.Log("Vibrate : " + pType); + NativeTool.Shake((int)pType, pIntensity); + } + } + + public void Shake() + { + if (mIsVibrateOn) + { + //Debug.Log("Shake!!!"); + Handheld.Vibrate(); + } + } +} + +public enum VibrateType +{ + Light = 0, + Medium, + Heavy +} \ No newline at end of file diff --git a/Assets/Scripts/Core/VibrateManager.cs.meta b/Assets/Scripts/Core/VibrateManager.cs.meta new file mode 100644 index 00000000..6149fed9 --- /dev/null +++ b/Assets/Scripts/Core/VibrateManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 967f13cedb4cd44d8aa94ceb66a43815 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Debug.meta b/Assets/Scripts/Debug.meta new file mode 100644 index 00000000..2f55d1de --- /dev/null +++ b/Assets/Scripts/Debug.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 296953bd0fc5c4a1ab308f54575a553c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Debug/SROptions.Chicken.cs b/Assets/Scripts/Debug/SROptions.Chicken.cs new file mode 100644 index 00000000..fce4b427 --- /dev/null +++ b/Assets/Scripts/Debug/SROptions.Chicken.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using SRDebugger; +using SRDebugger.Services; +using SRF; +using SRF.Service; +using Debug = UnityEngine.Debug; +using Random = UnityEngine.Random; + +public partial class SROptions +{ + +} \ No newline at end of file diff --git a/Assets/Scripts/Debug/SROptions.Chicken.cs.meta b/Assets/Scripts/Debug/SROptions.Chicken.cs.meta new file mode 100644 index 00000000..3f6252e6 --- /dev/null +++ b/Assets/Scripts/Debug/SROptions.Chicken.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f33afc791d8884a638deab3a99e290f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game.meta b/Assets/Scripts/Game.meta new file mode 100644 index 00000000..bf0570ac --- /dev/null +++ b/Assets/Scripts/Game.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d66e751a0a4cc4c6290084f5c8aa6b8c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Director.cs b/Assets/Scripts/Game/Director.cs similarity index 100% rename from Assets/Scripts/Director.cs rename to Assets/Scripts/Game/Director.cs diff --git a/Assets/Scripts/Director.cs.meta b/Assets/Scripts/Game/Director.cs.meta similarity index 100% rename from Assets/Scripts/Director.cs.meta rename to Assets/Scripts/Game/Director.cs.meta diff --git a/Assets/Scripts/Game/GameLogic.cs b/Assets/Scripts/Game/GameLogic.cs new file mode 100644 index 00000000..6874cbd9 --- /dev/null +++ b/Assets/Scripts/Game/GameLogic.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class GameLogic : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/Game/GameLogic.cs.meta b/Assets/Scripts/Game/GameLogic.cs.meta new file mode 100644 index 00000000..2bbaeb2c --- /dev/null +++ b/Assets/Scripts/Game/GameLogic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 329774faa237846ba88dab9cf6991f42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Init.meta b/Assets/Scripts/Init.meta new file mode 100644 index 00000000..b3a6c3b6 --- /dev/null +++ b/Assets/Scripts/Init.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d00655b06d0c74750b89649f0bc7d692 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Init/InitLogic.cs b/Assets/Scripts/Init/InitLogic.cs new file mode 100644 index 00000000..864099c0 --- /dev/null +++ b/Assets/Scripts/Init/InitLogic.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class InitLogic : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/Init/InitLogic.cs.meta b/Assets/Scripts/Init/InitLogic.cs.meta new file mode 100644 index 00000000..4353f3bd --- /dev/null +++ b/Assets/Scripts/Init/InitLogic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ab09b3987d4e43f48ea32e9f76b8f3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Main.meta b/Assets/Scripts/Main.meta new file mode 100644 index 00000000..fc60f37d --- /dev/null +++ b/Assets/Scripts/Main.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed3d9e25cbdfc49bb86179dab471c899 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Main/MainLogic.cs b/Assets/Scripts/Main/MainLogic.cs new file mode 100644 index 00000000..d0818c31 --- /dev/null +++ b/Assets/Scripts/Main/MainLogic.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MainLogic : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/Main/MainLogic.cs.meta b/Assets/Scripts/Main/MainLogic.cs.meta new file mode 100644 index 00000000..a019df32 --- /dev/null +++ b/Assets/Scripts/Main/MainLogic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eea13a3abf319425394d0eebefd89201 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins.meta b/Assets/ThirdPlugins.meta new file mode 100644 index 00000000..c0913086 --- /dev/null +++ b/Assets/ThirdPlugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8d03158493d4a54af02b2b682a4176 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3.meta b/Assets/ThirdPlugins/Easy Save 3.meta new file mode 100644 index 00000000..42f40ae5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c62843c57c147904b9ebffefca974d04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Change Log.meta b/Assets/ThirdPlugins/Easy Save 3/Change Log.meta new file mode 100644 index 00000000..d3a1e9a7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Change Log.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3115cc2dd2d49d742b3cfe0b237788ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt b/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt new file mode 100644 index 00000000..3e9ab01b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt @@ -0,0 +1,98 @@ +3.3.2f5 +- Resolved issue where scripts were not overwritten by Asset Store importer, causing Easy Save to be unstable. + +3.3.2f4 +- Resolved issue where Save action for PlayMaker could return NullReferenceException due to using the wrong ES3.Save override. +- Worked around IL2CPP bug where reflection would not find particular ES3Types on iOS +- Resolved issue where trying to store an empty/unassigned PlayMaker object would throw a NulReferenceException. +- Keys of a type which no longer exists in the project are now automatically removed +- Abstract types used in an ES3Type will now work as intended + +3.3.2f3 +- Added GameObject variables to Auto Save +- Resolved issue where Sprites would be loaded with the incorrect pivot. +- Resolved issue where Stacks were loaded in reverse. +- Added a 'quality' field to the ES3.SaveImage method to allow the quality to be specified when saving JPEGs. + +3.3.2f2 +- Added method which allows raw bytes to be uploaded via ES3Cloud. +- Worked around issue where File IO was called on platforms which don't support it +- Accounted for situations where Component should evaluate to null but doesn't +- Updated PlayMaker actions to work around issue where global variables sometimes go missing +- Objects with the NotEditable hideFlags can now be stored by reference +- Worked around Unity bug where it fails to deserialize data when Prefab mode is open +- Resolved issue where global 'Save GameObject Children' settings can take precedence over Auto Save settings +- 'Enable Easy Save for Prefab' context menu item now works when multiple objects are selected. + +3.3.2f1 +- Resolved issue where Components on prefabs would sometimes not be added to the reference manager. +- Resolved issue where reference ID was read unnecesserily, causing format exception. +- Resolved issue where child prefabs would not be recognised by manager. + +3.3.1p12 +- Resolved case where certain references would not be added to manager. + +3.3.1f11 +- Fixed issue where using ES3.CacheFile with an encrypted file could fail. +- Fixed issue where Directory.GetFiles cannot process a full path on certain configurations. +- Accounted for case where HideFlags are changed during build process. +- Added a timeout parameter to the ES3Cloud constructor. +- ES3.Serialize and ES3.Deserialize now work with encryption and compression + +3.3.1f10 +- Full support for projects which use multiple scenes at once. +- Added ES3.Encrypt and ES3.Decrypt methods. +- Supported saving the active state and FsmVariables of PlayMaker FSMs. +- Added edge case for SkinnedMeshRenderers which use LODs to ensure that all meshes and Materials are added to the reference manager. +- Ensured that Auto Update References setting is ackowledged when first adding manager to scene. +- Moved menu items into Tools/Easy Save 3 menu. +- Using LoadInto will now assign the loaded reference ID to the object you're loading into. + +3.3.1f9 +- It's not possible to add an ES3ReferenceMgr to your scene directly, ensuring that initialisation code is performed. +- Compressed files can now be cached. +- Ability to only add prefabs directly referenced by your scene to the manager. + +3.3.1f8 +- Caching is now enabled by default for Auto Save, significantly improving performance. +- Added ES3.LoadString method so you do not need to provide all parameters to use the defaultValue overload. +- Resolved case where SaveAll would not correctly save some types of array. +- Resolved case where global references would not be acknowledged. + +3.3.1f7 +- Serialization depth limit has been raised to account for projects with deep hierearchies +- Fixed issue where Easy Save 3 Manager could not be found for scenes which had not been saved. +- Resolved issue where Add Reference(s) to Manager would not dirty scene when Auto Update References was disabled. +- Improved Editor performance by accounting for situations where post-processing events would be called multiple times. + +3.3.1f6 +- Internal fields of the UnityEngine.Object class are hidden in the Types pane as they are not serialisable. +- Accounted for edge case where unassigned script is returned by GameObject.GetComponents(). +- ES3Settings constructor now accepts any settings enum (e.g. ES3.Location). +- No longer throws warning when multiple scenes are open. + +3.3.1f5 +- Updated PlayMaker actions. +- Provided workaround for issue where IL2CPP stripper removes methods which are marked to not be stripped. +- Performance updates. + +3.3.1f4 +- Improved performance when gathering references for reference manager. + +3.3.1f3 +- Added Cache as a storage location, providing a much simpler way of caching data. +- References can now be added by right-clicking the object and going to Easy Save 3 > Add Reference to Manager. +- Floats and doubles are now stored with full precision. +- Assorted bug fixes. + +3.3.1f2 +- Added compression, reducing file size by 85% on average when enabled +- JSON is now pretty printed (formatted) by default +- Added attributes to control serialisation +- Private fields in inherited classes are now stored +- Added search capabilities to the Auto Save window +- The way in which GameObjects is saved is now more flexible +- The reference manager is now updated whenever playmode is entered +- Null values in the global manager are now automatically removed +- Fixed issue where default settings were not applied properly +- Fixed issue where ES3Types would be stored in Easy Save root rather than in Assets/Easy Save 3/ \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt.meta new file mode 100644 index 00000000..1dfb6695 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Change Log/Change Log.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 48fdb523e0bb47f479a18f9b236df644 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor.meta b/Assets/ThirdPlugins/Easy Save 3/Editor.meta new file mode 100644 index 00000000..4ee985ca --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 600dbc665993148f7b59ae7356fe862e +folderAsset: yes +timeCreated: 1474041532 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs new file mode 100644 index 00000000..de9fe97b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using ES3Internal; +using System.Linq; + +namespace ES3Editor +{ + public class AddES3Prefab : Editor + { + [MenuItem("GameObject/Easy Save 3/Enable Easy Save for Prefab(s)", false, 1001)] + [MenuItem("Assets/Easy Save 3/Enable Easy Save for Prefab(s)", false, 1001)] + public static void Enable() + { + if (Selection.gameObjects == null || Selection.gameObjects.Length == 0) + return; + + foreach (var obj in Selection.gameObjects) + { + // Don't add the Component to a GameObject which already has it. + if (obj == null || (obj.GetComponent() != null)) + continue; + + var go = obj; + + #if UNITY_2018_3_OR_NEWER + if (PrefabUtility.GetPrefabInstanceStatus(go) != PrefabInstanceStatus.NotAPrefab) + { + go = (GameObject)PrefabUtility.GetCorrespondingObjectFromSource(go); + if (go == null) + continue; + } + #else + if(PrefabUtility.GetPrefabType(go) != PrefabType.Prefab) + { + go = (GameObject)PrefabUtility.GetPrefabParent(go); + if(go == null) + continue; + } + #endif + + var es3Prefab = Undo.AddComponent(go); + es3Prefab.GeneratePrefabReferences(); + + if (ES3ReferenceMgr.Current != null) + { + ES3ReferenceMgr.Current.AddPrefab(es3Prefab); + EditorUtility.SetDirty(ES3ReferenceMgr.Current); + } + } + } + + [MenuItem("GameObject/Easy Save 3/Enable Easy Save for Prefab", true, 1001)] + [MenuItem("Assets/Easy Save 3/Enable Easy Save for Prefab", true, 1001)] + public static bool Validate() + { + return Selection.gameObjects != null && Selection.gameObjects.Length > 0; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs.meta new file mode 100644 index 00000000..745029bd --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/AddES3Prefab.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 337c3be705d1942b3bf318b5b29aa7cb +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs new file mode 100644 index 00000000..8fff7e52 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs @@ -0,0 +1,308 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using ES3Internal; + +namespace ES3Editor +{ + [System.Serializable] + public class AutoSaveWindow : SubWindow + { + public bool showAdvancedSettings = false; + + public ES3AutoSaveMgr mgr = null; + + private HierarchyItem[] hierarchy = null; + public HierarchyItem selected = null; + + private Vector2 hierarchyScrollPosition = Vector2.zero; + + private bool sceneOpen = true; + + private string searchTerm = ""; + + public AutoSaveWindow(EditorWindow window) : base("Auto Save", window){} + + public override void OnGUI() + { + Init(); + + if(mgr == null) + { + EditorGUILayout.Space(); + if (GUILayout.Button("Enable Auto Save for this scene")) + mgr = ES3Postprocessor.AddManagerToScene().GetComponent(); + else + return; + } + + var style = EditorStyle.Get; + + using (var changeCheck = new EditorGUI.ChangeCheckScope()) + { + using (var vertical = new EditorGUILayout.VerticalScope(style.areaPadded)) + { + //GUILayout.Label("Settings for current scene", style.heading); + mgr.saveEvent = (ES3AutoSaveMgr.SaveEvent)EditorGUILayout.EnumPopup("Save Event", mgr.saveEvent); + mgr.loadEvent = (ES3AutoSaveMgr.LoadEvent)EditorGUILayout.EnumPopup("Load Event", mgr.loadEvent); + + EditorGUILayout.Space(); + + showAdvancedSettings = EditorGUILayout.Foldout(showAdvancedSettings, "Show Advanced Settings"); + if (showAdvancedSettings) + { + EditorGUI.indentLevel++; + mgr.key = EditorGUILayout.TextField("Key", mgr.key); + ES3SettingsEditor.Draw(mgr.settings); + EditorGUI.indentLevel--; + } + } + + // Display the menu. + using (var horizontal = new EditorGUILayout.HorizontalScope()) + { + if (GUILayout.Button("Scene", sceneOpen ? style.menuButtonSelected : style.menuButton)) + { + sceneOpen = true; + OnFocus(); + } + if (GUILayout.Button("Prefabs", sceneOpen ? style.menuButton : style.menuButtonSelected)) + { + sceneOpen = false; + OnFocus(); + } + } + + //EditorGUILayout.HelpBox("Select the Components you want to be saved.\nTo maximise performance, only select the Components with variables which need persisting.", MessageType.None, true); + + if (hierarchy == null || hierarchy.Length == 0) + { + EditorGUILayout.LabelField("Right-click a prefab and select 'Easy Save 3 > Enable Easy Save for Scene' to enable Auto Save for it.\n\nYour scene will also need to reference this prefab for it to be recognised.", style.area); + return; + } + + using (var scrollView = new EditorGUILayout.ScrollViewScope(hierarchyScrollPosition, style.areaPadded)) + { + hierarchyScrollPosition = scrollView.scrollPosition; + + using (new EditorGUILayout.HorizontalScope(GUILayout.Width(200))) + { + searchTerm = GUILayout.TextField(searchTerm, GUI.skin.FindStyle("ToolbarSeachTextField")); + if (GUILayout.Button("", GUI.skin.FindStyle("ToolbarSeachCancelButton"))) + { + // Remove focus if cleared + searchTerm = ""; + GUI.FocusControl(null); + } + } + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + foreach (var go in hierarchy) + if (go != null) + go.DrawHierarchy(searchTerm.ToLowerInvariant()); + } + if (changeCheck.changed) + EditorUtility.SetDirty(mgr); + } + } + + public void Init() + { + if (mgr == null) + { + var mgrs = Resources.FindObjectsOfTypeAll(); + if (mgrs.Length > 0) + mgr = mgrs[0]; + } + + if (hierarchy == null) + OnFocus(); + } + + public override void OnFocus() + { + + GameObject[] parentObjects; + if (sceneOpen) + parentObjects = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects(); + else // Prefabs + { + var prefabs = ES3ReferenceMgr.Current.prefabs; + parentObjects = new GameObject[prefabs.Count]; + for (int i = 0; i < prefabs.Count; i++) + if(prefabs[i] != null) + parentObjects[i] = prefabs[i].gameObject; + } + hierarchy = new HierarchyItem[parentObjects.Length]; + for (int i = 0; i < parentObjects.Length; i++) + if(parentObjects[i] != null) + hierarchy[i] = new HierarchyItem(parentObjects[i].transform, null, this); + } + + public class HierarchyItem + { + private ES3AutoSave autoSave; + private Transform t; + private Component[] components = null; + // Immediate children of this GameObject + private HierarchyItem[] children = new HierarchyItem[0]; + private bool showComponents = false; + //private AutoSaveWindow window; + + public HierarchyItem(Transform t, HierarchyItem parent, AutoSaveWindow window) + { + this.autoSave = t.GetComponent(); + this.t = t; + this.components = t.GetComponents(); + + children = new HierarchyItem[t.childCount]; + for (int i = 0; i < t.childCount; i++) + children[i] = new HierarchyItem(t.GetChild(i), this, window); + + //this.window = window; + } + + public void MergeDown(ES3AutoSave autoSave) + { + if (this.autoSave != autoSave) + { + if (this.autoSave != null) + { + autoSave.componentsToSave.AddRange(autoSave.componentsToSave); + Object.DestroyImmediate(this.autoSave); + } + this.autoSave = autoSave; + } + + foreach (var child in children) + MergeDown(autoSave); + } + + public void DrawHierarchy(string searchTerm) + { + bool containsSearchTerm = false; + if (t != null) + { + if (containsSearchTerm = t.name.ToLowerInvariant().Contains(searchTerm)) + { + GUIContent saveIcon; + EditorGUIUtility.SetIconSize(new Vector2(16, 16)); + + if (HasSelectedComponents()) + saveIcon = new GUIContent(t.name, EditorStyle.Get.saveIconSelected, "There are Components on this GameObject which will be saved."); + else + saveIcon = new GUIContent(t.name, EditorStyle.Get.saveIconUnselected, "No Components on this GameObject will be saved"); + + GUIStyle style = GUI.skin.GetStyle("Foldout"); + if (Selection.activeTransform == t) + { + style = new GUIStyle(style); + style.fontStyle = FontStyle.Bold; + } + + var open = EditorGUILayout.Foldout(showComponents, saveIcon, style); + if (open) + { + // Ping the GameObject if this was previously closed + if (showComponents != open) + EditorGUIUtility.PingObject(t.gameObject); + DrawComponents(); + } + showComponents = open; + + EditorGUI.indentLevel += 1; + } + } + + // Draw children + if(children != null) + foreach (var child in children) + if(child != null) + child.DrawHierarchy(searchTerm); + + if(containsSearchTerm) + EditorGUI.indentLevel-=1; + } + + public void DrawComponents() + { + EditorGUI.indentLevel+=3; + using (var scope = new EditorGUILayout.VerticalScope()) + { + bool toggle; + toggle = EditorGUILayout.ToggleLeft("active", autoSave != null ? autoSave.saveActive : false); + if((autoSave = (toggle && autoSave == null) ? t.gameObject.AddComponent() : autoSave) != null) + autoSave.saveActive = toggle; + + toggle = EditorGUILayout.ToggleLeft("hideFlags", autoSave != null ? autoSave.saveHideFlags : false); + if ((autoSave = (toggle && autoSave == null) ? t.gameObject.AddComponent() : autoSave) != null) + autoSave.saveHideFlags = toggle; + + toggle = EditorGUILayout.ToggleLeft("layer", autoSave != null ? autoSave.saveLayer : false); + if ((autoSave = (toggle && autoSave == null) ? t.gameObject.AddComponent() : autoSave) != null) + autoSave.saveLayer = toggle; + + toggle = EditorGUILayout.ToggleLeft("name", autoSave != null ? autoSave.saveName : false); + if ((autoSave = (toggle && autoSave == null) ? t.gameObject.AddComponent() : autoSave) != null) + autoSave.saveName = toggle; + + toggle = EditorGUILayout.ToggleLeft("tag", autoSave != null ? autoSave.saveTag : false); + if ((autoSave = (toggle && autoSave == null) ? t.gameObject.AddComponent() : autoSave) != null) + autoSave.saveTag = toggle; + + foreach (var component in components) + { + if (component == null) + continue; + + using (var horizontalScope = new EditorGUILayout.HorizontalScope()) + { + bool saveComponent = false; + if (autoSave != null) + saveComponent = autoSave.componentsToSave.Contains(component); + + var newValue = EditorGUILayout.ToggleLeft(EditorGUIUtility.ObjectContent(component, component.GetType()), saveComponent); + // If the checkbox has changed, we want to save or not save a Component + if (newValue != saveComponent) + { + if (autoSave == null) + { + autoSave = t.gameObject.AddComponent(); + autoSave.saveChildren = false; + } + // If we've unchecked the box, remove the Component from the array. + if (newValue == false) + autoSave.componentsToSave.Remove(component); + // Else, add it to the array. + else + autoSave.componentsToSave.Add(component); + } + if(GUILayout.Button(EditorGUIUtility.IconContent("_Popup"), new GUIStyle("Label"))) + ES3Window.InitAndShowTypes(component.GetType()); + } + } + } + + if(autoSave != null && (autoSave.componentsToSave == null || autoSave.componentsToSave.Count == 0) && !autoSave.saveActive && !autoSave.saveChildren && !autoSave.saveHideFlags && !autoSave.saveLayer && !autoSave.saveName && !autoSave.saveTag) + { + Undo.DestroyObjectImmediate(autoSave); + autoSave = null; + } + EditorGUI.indentLevel-=3; + } + + public bool HasSelectedComponents() + { + if (autoSave != null) + foreach (var component in components) + if (component != null && autoSave.componentsToSave.Contains(component)) + return true; + return false; + } + } + } + +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs.meta new file mode 100644 index 00000000..9958209d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/AutoSaveWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6065cc5492e9f49728674de9a0c1fe84 +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs new file mode 100644 index 00000000..fd791109 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs @@ -0,0 +1,23 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace ES3Internal +{ + [CustomEditor(typeof(ES3AutoSave))] + public class ES3AutoSaveEditor : Editor + { + public override void OnInspectorGUI() + { + if (target == null) + return; + + DrawDefaultInspector(); + + if (GUILayout.Button("Manage Auto Save Settings")) + ES3Editor.ES3Window.InitAndShowAutoSave(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs.meta new file mode 100644 index 00000000..6b4bf60b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 54ded3aeb20a94008a877da330bfc45f +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs new file mode 100644 index 00000000..e367b89b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs @@ -0,0 +1,20 @@ +using UnityEditor; +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace ES3Internal +{ + [CustomEditor(typeof(ES3AutoSaveMgr))] + public class ES3AutoSaveMgrEditor : Editor + { + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox("This manages the saving and loading of GameObjects which have the Auto Save component attached to them.\n\nIf there are no Auto Save components in your scene, this component will do nothing.", MessageType.Info); + if(GUILayout.Button("Settings...")) + ES3Editor.ES3Window.InitAndShowAutoSave(); + } + } + +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs.meta new file mode 100644 index 00000000..8983ad68 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3AutoSaveMgrEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f440317f3fd444daf83c27a3381af17c +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt new file mode 100644 index 00000000..1df06b7e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt @@ -0,0 +1,54 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute([propertyNames])] + public class ES3UserType_[es3TypeSuffix] : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3UserType_[es3TypeSuffix]() : base(typeof([fullType])){ Instance = this; priority = 1; } + + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = ([fullType])obj; + [writes] + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = ([fullType])obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + [reads] + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new [fullType](); + ReadObject(reader, instance); + return instance; + } + } + + + public class ES3UserType_[es3TypeSuffix]Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_[es3TypeSuffix]Array() : base(typeof([fullType][]), ES3UserType_[es3TypeSuffix].Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt.meta new file mode 100644 index 00000000..0861d160 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ClassTypeTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc3cada215f0d417a8fa879651f22f84 +timeCreated: 1483698819 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt new file mode 100644 index 00000000..f9271fcd --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt @@ -0,0 +1,47 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute([propertyNames])] + public class ES3UserType_[es3TypeSuffix] : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3UserType_[es3TypeSuffix]() : base(typeof([fullType])){ Instance = this; priority = 1;} + + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = ([fullType])obj; + [writes] + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = ([fullType])obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + [reads] + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3UserType_[es3TypeSuffix]Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_[es3TypeSuffix]Array() : base(typeof([fullType][]), ES3UserType_[es3TypeSuffix].Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt.meta new file mode 100644 index 00000000..3b08a42b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ComponentTypeTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b74f7ff5e731846249f9e22ab7afedfb +timeCreated: 1483698819 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs new file mode 100644 index 00000000..41328091 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs @@ -0,0 +1,84 @@ +using System.Collections; +using UnityEngine; +using UnityEditor; + +namespace ES3Editor +{ + public class EditorStyle + { + private static EditorStyle style = null; + + public GUIStyle area; + public GUIStyle areaPadded; + + public GUIStyle menuButton; + public GUIStyle menuButtonSelected; + public GUIStyle smallSquareButton; + + public GUIStyle heading; + public GUIStyle subheading; + public GUIStyle subheading2; + + public GUIStyle boldLabelNoStretch; + + public GUIStyle link; + + public GUIStyle toggle; + + public Texture2D saveIconSelected; + public Texture2D saveIconUnselected; + + public static EditorStyle Get { get{ if(style == null) style = new EditorStyle(); return style; } } + + public EditorStyle() + { + // An area with padding. + area = new GUIStyle(); + area.padding = new RectOffset(10, 10, 10, 10); + area.wordWrap = true; + + // An area with more padding. + areaPadded = new GUIStyle(); + areaPadded.padding = new RectOffset(20, 20, 20, 20); + areaPadded.wordWrap = true; + + // Unselected menu button. + menuButton = new GUIStyle(EditorStyles.toolbarButton); + menuButton.fontStyle = FontStyle.Normal; + menuButton.fontSize = 14; + menuButton.fixedHeight = 24; + + // Selected menu button. + menuButtonSelected = new GUIStyle(menuButton); + menuButtonSelected.fontStyle = FontStyle.Bold; + + // Main Headings + heading = new GUIStyle(EditorStyles.label); + heading.fontStyle = FontStyle.Bold; + heading.fontSize = 24; + + subheading = new GUIStyle(heading); + subheading.fontSize = 18; + + subheading2 = new GUIStyle(heading); + subheading2.fontSize = 14; + + boldLabelNoStretch = new GUIStyle(EditorStyles.label); + boldLabelNoStretch.stretchWidth = false; + boldLabelNoStretch.fontStyle = FontStyle.Bold; + + link = new GUIStyle(); + link.fontSize = 16; + if(EditorGUIUtility.isProSkin) + link.normal.textColor = new Color (0.262f, 0.670f, 0.788f); + else + link.normal.textColor = new Color (0.129f, 0.129f, 0.8f); + + toggle = new GUIStyle(EditorStyles.toggle); + toggle.stretchWidth = false; + + saveIconSelected = AssetDatabase.LoadAssetAtPath(ES3Settings.PathToEasySaveFolder() + "Editor/es3Logo16x16.png"); + saveIconUnselected = AssetDatabase.LoadAssetAtPath(ES3Settings.PathToEasySaveFolder() + "Editor/es3Logo16x16-bw.png"); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs.meta new file mode 100644 index 00000000..62aeda36 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorStyle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f556addc6753344019137cbc45d2c4ff +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs new file mode 100644 index 00000000..57f95403 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Linq; +using ES3Internal; + +public class ES3EditorUtility : Editor +{ + public static void DisplayLink(string label, string url) + { + var style = ES3Editor.EditorStyle.Get; + if(GUILayout.Button(label, style.link)) + Application.OpenURL(url); + + var buttonRect = GUILayoutUtility.GetLastRect(); + buttonRect.width = style.link.CalcSize(new GUIContent(label)).x; + + EditorGUIUtility.AddCursorRect(buttonRect, MouseCursor.Link); + } + + public static bool IsPrefabInAssets(UnityEngine.Object obj) + { + #if UNITY_2018_3_OR_NEWER + return PrefabUtility.IsPartOfPrefabAsset(obj); + #else + return (PrefabUtility.GetPrefabType(obj) == PrefabType.Prefab); + #endif + } + + /* + * Gets all children and components from a GameObject or GameObjects. + * We create our own method for this because EditorUtility.CollectDeepHierarchy isn't thread safe in the Editor. + */ + public static IEnumerable CollectDeepHierarchy(IEnumerable gos) + { + var deepHierarchy = new HashSet(); + foreach (var go in gos) + { + deepHierarchy.Add(go); + deepHierarchy.UnionWith(go.GetComponents()); + foreach (Transform t in go.transform) + deepHierarchy.UnionWith( CollectDeepHierarchy( new GameObject[] { t.gameObject } ) ); + } + return deepHierarchy; + } + + [MenuItem("Tools/Easy Save 3/Getting Started...", false, 0)] + public static void DisplayGettingStarted() + { + Application.OpenURL("https://docs.moodkie.com/easy-save-3/getting-started/"); + } + + [MenuItem("Tools/Easy Save 3/Manual...", false, 0)] + public static void DisplayManual() + { + Application.OpenURL("https://docs.moodkie.com/product/easy-save-3/"); + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs.meta new file mode 100644 index 00000000..f0d8af76 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3EditorUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 501719249e8124990973182985feaeb8 +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs new file mode 100644 index 00000000..e3702cc0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs @@ -0,0 +1,91 @@ +#if !ES3GLOBAL_DISABLED +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace ES3Internal +{ + [CustomEditor(typeof(ES3Internal.ES3GlobalReferences))] + [System.Serializable] + public class ES3GlobalReferencesEditor : Editor + { + private bool isDraggingOver = false; + private bool openReferences = false; + + private ES3Internal.ES3GlobalReferences _globalRefs = null; + private ES3Internal.ES3GlobalReferences globalRefs + { + get + { + if (_globalRefs == null) + _globalRefs = (ES3Internal.ES3GlobalReferences)serializedObject.targetObject; + return _globalRefs; + } + } + + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox("This stores references to objects in Assets, allowing them to be referenced with the same ID between scenes.", MessageType.Info); + + if (EditorGUILayout.Foldout(openReferences, "References") != openReferences) + { + openReferences = !openReferences; + if (openReferences == true) + openReferences = EditorUtility.DisplayDialog("Are you sure?", "Opening this list will display every reference in the manager, which for larger projects can cause the Editor to freeze\n\nIt is strongly recommended that you save your project before continuing.", "Open References", "Cancel"); + } + + // Make foldout drag-and-drop enabled for objects. + if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition)) + { + Event evt = Event.current; + + switch (evt.type) + { + case EventType.DragUpdated: + case EventType.DragPerform: + isDraggingOver = true; + break; + case EventType.DragExited: + isDraggingOver = false; + break; + } + + if (isDraggingOver) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + + if (evt.type == EventType.DragPerform) + { + DragAndDrop.AcceptDrag(); + Undo.RecordObject(globalRefs, "Add References to Easy Save 3 Reference List"); + foreach (UnityEngine.Object obj in DragAndDrop.objectReferences) + globalRefs.GetOrAdd(obj); + // Return now because otherwise we'll change the GUI during an event which doesn't allow it. + return; + } + } + } + + if (openReferences) + { + EditorGUI.indentLevel++; + + foreach (var kvp in globalRefs.refId) + { + EditorGUILayout.BeginHorizontal(); + + EditorGUILayout.ObjectField(kvp.Key, typeof(UnityEngine.Object), true); + EditorGUILayout.LongField(kvp.Value); + + EditorGUILayout.EndHorizontal(); + } + + EditorGUI.indentLevel--; + } + } + } +} +#endif diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs.meta new file mode 100644 index 00000000..02039799 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3GlobalReferencesEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 286fb0c3863779e4d96bc682edb324ce +timeCreated: 1519132283 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs new file mode 100644 index 00000000..a9d5a99f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs @@ -0,0 +1,14 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using System; +using System.Collections; + +[CustomEditor(typeof(ES3InspectorInfo))] +public class ES3InspectorInfoEditor : Editor +{ + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox(((ES3InspectorInfo)target).message, MessageType.Info); + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs.meta new file mode 100644 index 00000000..2bb545fe --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3InspectorInfoEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b344d685b614044aebf5285c5f59f52d +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs new file mode 100644 index 00000000..1f75de6c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs @@ -0,0 +1,781 @@ +#if PLAYMAKER_1_8_OR_NEWER + +using UnityEngine; +using UnityEditor; +using HutongGames.PlayMaker; +using HutongGames.PlayMaker.Actions; +using HutongGames.PlayMakerEditor; +using System.Text.RegularExpressions; + +namespace ES3PlayMaker +{ + #region Base Actions + + public abstract class BaseEditor : CustomActionEditor + { + bool showErrorHandling = false; + + public abstract void DrawGUI(); + + public override bool OnGUI() + { + DrawGUI(); + + EditorGUILayout.Separator(); + + showErrorHandling = EditorGUILayout.Foldout(showErrorHandling, "Error Handling"); + if (showErrorHandling) + { + EditorGUI.indentLevel++; + EditField("errorEvent"); + EditField("errorMessage"); + EditorGUI.indentLevel--; + } + + return GUI.changed; + } + + // Displays the FsmVar field without the unnecessary Type field. + protected void FsmVarField(string fieldName) + { + if (target == null || target.State == null) + return; + + var fsmVar = (FsmVar)ES3Internal.ES3Reflection.GetField(target.GetType(), fieldName).GetValue(target); + + if (fsmVar == null) + { + fsmVar = new FsmVar(); + ES3Internal.ES3Reflection.GetField(target.GetType(), fieldName).SetValue(target, fsmVar); + } + + EditorGUILayout.BeginHorizontal(); + var label = Regex.Replace(fieldName, @"\p{Lu}", m => " " + m.Value.ToLowerInvariant()); + EditorGUILayout.PrefixLabel(char.ToUpperInvariant(label[0]) + label.Substring(1)); + + var localVariables = target.Fsm.Variables.GetAllNamedVariablesSorted(); + var globalVariables = FsmVariables.GlobalVariables.GetAllNamedVariablesSorted(); + + var variableNames = new string[localVariables.Length + globalVariables.Length]; + int selected = -1; + + for(int i=0; i= localVariables.Length ? globalVariables[i - localVariables.Length] : localVariables[i]; + variableNames[i] = i >= localVariables.Length ? "Globals/"+variable.Name : variable.Name; + if (fsmVar.NamedVar == variable) + selected = i; + } + + var newSelected = EditorGUILayout.Popup(selected, variableNames); + + + EditorGUILayout.EndHorizontal(); + + if (newSelected == -1) + return; + + if (selected != newSelected) + { + if (newSelected >= localVariables.Length) + fsmVar.NamedVar = globalVariables[newSelected - localVariables.Length]; + else + fsmVar.NamedVar = localVariables[newSelected]; + } + } + } + + public abstract class SettingsEditor : BaseEditor + { + public override bool OnGUI() + { + base.OnGUI(); + + var action = target as ES3PlayMaker.SettingsAction; + if(action == null) + return false; + action.overrideDefaultSettings.Value = EditorGUILayout.ToggleLeft("Override Default Settings", action.overrideDefaultSettings.Value); + + if(action.overrideDefaultSettings.Value) + { + EditorGUI.indentLevel++; + + EditField("path"); + EditField("location"); + EditField("encryptionType"); + EditField("encryptionPassword"); + EditField("compressionType"); + EditField("directory"); + EditField("format"); + EditField("bufferSize"); + + EditorGUI.indentLevel--; + EditorGUILayout.Space(); + } + return GUI.changed; + } + } + + public abstract class KeyValueSettingsEditor : SettingsEditor + { + public override bool OnGUI() + { + EditField("key"); + EditField("value"); + + base.OnGUI(); + + return GUI.changed; + } + + public override void DrawGUI(){} + } + + public abstract class ES3FileActionEditor : BaseEditor + { + public override bool OnGUI() + { + EditField("fsmES3File"); + + base.OnGUI(); + + var action = target as ES3PlayMaker.ES3FileAction; + if (action == null) + return false; + + return GUI.changed; + } + } +#endregion + +#region Save Actions + + [CustomActionEditor(typeof(ES3PlayMaker.Save))] + public class SaveEditor : KeyValueSettingsEditor{} + + [CustomActionEditor(typeof(ES3PlayMaker.SaveAll))] + public class SaveAllEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("key"); + EditField("saveFsmVariables"); + EditField("saveGlobalVariables"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.SaveRaw))] + public class SaveRawEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("str"); + EditField("useBase64Encoding"); + EditField("appendNewline"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.AppendRaw))] + public class AppendRawEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("str"); + EditField("useBase64Encoding"); + EditField("appendNewline"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.SaveImage))] + public class SaveImageEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("imagePath"); + EditField("texture2D"); + } + } + +#endregion + +#region Load Actions + + [CustomActionEditor(typeof(ES3PlayMaker.Load))] + public class LoadEditor : KeyValueSettingsEditor + { + public override void DrawGUI() + { + EditorGUILayout.Space(); + EditField("defaultValue"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.LoadInto))] + public class LoadIntoEditor : KeyValueSettingsEditor{} + + [CustomActionEditor(typeof(ES3PlayMaker.LoadAll))] + public class LoadAllEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("key"); + EditField("loadFsmVariables"); + EditField("loadGlobalVariables"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.LoadAudio))] + public class LoadAudioEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("audioFilePath"); + EditField("audioClip"); +#if UNITY_2018_3_OR_NEWER + EditField("audioType"); +#endif + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.LoadImage))] + public class LoadImageEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("imagePath"); + EditField("texture2D"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.LoadRawString))] + public class LoadRawStringEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("str"); + EditField("useBase64Encoding"); + } + } + +#endregion + +#region Exists Actions + + [CustomActionEditor(typeof(ES3PlayMaker.KeyExists))] + public class KeyExistsEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("key"); + EditField("exists"); + EditorGUILayout.Separator(); + EditField("existsEvent"); + EditField("doesNotExistEvent"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.FileExists))] + public class FileExistsEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + EditField("exists"); + EditorGUILayout.Separator(); + EditField("existsEvent"); + EditField("doesNotExistEvent"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.DirectoryExists))] + public class DirectoryExistsEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("directoryPath"); + EditField("exists"); + EditorGUILayout.Separator(); + EditField("existsEvent"); + EditField("doesNotExistEvent"); + } + } + +#endregion + +#region Delete Actions + + [CustomActionEditor(typeof(ES3PlayMaker.DeleteKey))] + public class DeleteKeyEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("key"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.DeleteFile))] + public class DeleteFileEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.DeleteDirectory))] + public class DeleteDirectoryEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("directoryPath"); + } + } + +#endregion + +#region Backup Actions + + [CustomActionEditor(typeof(ES3PlayMaker.CreateBackup))] + public class CreateBackupEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.RestoreBackup))] + public class RestoreBackupEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + EditField("backupWasRestored"); + } + } + +#endregion + +#region Key, File and Directory methods + + [CustomActionEditor(typeof(ES3PlayMaker.RenameFile))] + public class RenameFileEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("oldFilePath"); + EditField("newFilePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.CopyFile))] + public class CopyFileEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("oldFilePath"); + EditField("newFilePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.CopyDirectory))] + public class CopyDirectoryEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("oldDirectoryPath"); + EditField("newDirectoryPath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.GetKeys))] + public class GetKeysEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + EditField("keys"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.GetKeyCount))] + public class GetKeyCountEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + EditField("keyCount"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.GetFiles))] + public class GetFilesEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("directoryPath"); + EditField("files"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.GetDirectories))] + public class GetDirectoriesEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("directoryPath"); + EditField("directories"); + } + } + +#endregion + +#region ES3File Actions + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileCreate))] + public class ES3FileCreateEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + EditField("filePath"); + EditField("syncWithFile"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileSync))] + public class ES3FileSyncEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileSave))] + public class ES3FileSaveEditor : SaveEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + base.DrawGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileLoad))] + public class ES3FileLoadEditor : LoadEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + base.DrawGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileLoadInto))] + public class ES3FileLoadIntoEditor : LoadIntoEditor + { + public override void DrawGUI() + { + base.DrawGUI(); + EditField("fsmES3File"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileDeleteKey))] + public class ES3FileDeleteKeyEditor : DeleteKeyEditor + { + public override void DrawGUI() + { + base.DrawGUI(); + EditField("fsmES3File"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileKeyExists))] + public class ES3FileKeyExistsEditor : KeyExistsEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + base.DrawGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileGetKeys))] + public class ES3FileGetKeysEditor : ES3FileActionEditor + { + public override void DrawGUI() + { + EditField("keys"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileClear))] + public class ES3FileClearEditor : BaseEditor + { + public override void DrawGUI() + { + EditField("fsmES3File"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3FileSize))] + public class ES3FileSizeEditor : BaseEditor + { + public override void DrawGUI() + { + EditField("size"); + EditField("fsmES3File"); + } + } + + +#endregion + +#region ES3Cloud Actions +#if !DISABLE_WEB + + public abstract class ES3CloudEditor : SettingsEditor + { + protected abstract void DrawChildGUI(); + + public override void DrawGUI() + { + EditField("url"); + EditField("apiKey"); + EditorGUILayout.Space(); + DrawChildGUI(); + EditorGUILayout.Space(); + EditField("errorCode"); + } + } + + public abstract class ES3CloudUserEditor : ES3CloudEditor + { + public bool showUser = false; + + protected override void DrawChildGUI() + { + if((showUser = EditorGUILayout.Foldout(showUser, "User (optional)"))) + { + EditorGUI.indentLevel++; + EditField("user"); + EditField("password"); + EditorGUI.indentLevel--; + } + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudSync))] + public class ES3CloudSyncEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("path"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudDownloadFile))] + public class ES3CloudDownloadFileEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("path"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudDownloadES3File))] + public class ES3CloudDownloadES3FileEditor : BaseEditor + { + public bool showUser = false; + public override void DrawGUI() + { + EditField("fsmES3File"); + EditField("url"); + EditField("apiKey"); + EditField("errorCode"); + if ((showUser = EditorGUILayout.Foldout(showUser, "User (optional)"))) + { + EditorGUI.indentLevel++; + EditField("user"); + EditField("password"); + EditorGUI.indentLevel--; + } + } + } + + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudUploadFile))] + public class ES3CloudUploadFileEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("path"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudUploadES3File))] + public class ES3CloudUploadES3FileEditor : BaseEditor + { + public bool showUser = false; + public override void DrawGUI() + { + EditField("fsmES3File"); + EditField("url"); + EditField("apiKey"); + EditField("errorCode"); + if((showUser = EditorGUILayout.Foldout(showUser, "User (optional)"))) + { + EditorGUI.indentLevel++; + EditField("user"); + EditField("password"); + EditorGUI.indentLevel--; + } + } + } + + + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudDeleteFile))] + public class ES3CloudDeleteFileEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("path"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudRenameFile))] + public class ES3CloudRenameFileEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("path"); + EditField("newFilename"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudDownloadFilenames))] + public class ES3CloudDownloadFilenamesEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("filenames"); + EditField("searchPattern"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudSearchFilenames))] + public class ES3CloudSearchFilenamesEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("filenames"); + EditField("searchPattern"); + base.DrawChildGUI(); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3CloudDownloadTimestamp))] + public class ES3CloudDownloadTimestampEditor : ES3CloudUserEditor + { + protected override void DrawChildGUI() + { + EditField("timestamp"); + base.DrawChildGUI(); + } + } + +#endif + +#endregion + +#region ES3SpreadsheetActions + + + [CustomActionEditor(typeof(ES3PlayMaker.ES3SpreadsheetCreate))] + public class ES3SpreadsheetCreateEditor : BaseEditor + { + public override void DrawGUI() + { + EditField("fsmES3Spreadsheet"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3SpreadsheetSetCell))] + public class ES3SpreadsheetSetCellEditor : BaseEditor + { + public override void DrawGUI() + { + EditField("fsmES3Spreadsheet"); + EditField("col"); + EditField("row"); + EditField("value"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3SpreadsheetGetCell))] + public class ES3SpreadsheetGetCellEditor : BaseEditor + { + public override void DrawGUI() + { + EditField("fsmES3Spreadsheet"); + EditField("col"); + EditField("row"); + EditField("value"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3SpreadsheetLoad))] + public class ES3SpreadsheetLoadEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("fsmES3Spreadsheet"); + EditField("filePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.ES3SpreadsheetSave))] + public class ES3SpreadsheetSaveEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("fsmES3Spreadsheet"); + EditField("filePath"); + EditField("append"); + } + } + + #endregion + + #region Caching + + [CustomActionEditor(typeof(ES3PlayMaker.CacheFile))] + public class CacheFileEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + } + } + + [CustomActionEditor(typeof(ES3PlayMaker.StoreCachedFile))] + public class StoreCachedFileEditor : SettingsEditor + { + public override void DrawGUI() + { + EditField("filePath"); + } + } + + #endregion +} +#endif diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs.meta new file mode 100644 index 00000000..4b912007 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PlayMakerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 61838eb75b8164d699b0f54416e0f0bc +timeCreated: 1497347459 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs new file mode 100644 index 00000000..b92b9d6a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs @@ -0,0 +1,149 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.SceneManagement; +using UnityEngine.SceneManagement; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using ES3Internal; + + +/* + * ---- How Postprocessing works for the reference manager ---- + * - When the manager is first added to the scene, all top-level dependencies are added to the manager (AddManagerToScene). + * - When the manager is first added to the scene, all prefabs with ES3Prefab components are added to the manager (AddManagerToScene). + * - All GameObjects and Components in the scene are added to the reference manager when we enter Playmode or the scene is saved (PlayModeStateChanged, OnWillSaveAssets -> AddGameObjectsAndComponentstoManager). + * - When a UnityEngine.Object field of a Component is modified, the new UnityEngine.Object reference is added to the reference manager (PostProcessModifications) + * - All prefabs with ES3Prefab Components are added to the reference manager when we enter Playmode or the scene is saved (PlayModeStateChanged, OnWillSaveAssets -> AddGameObjectsAndComponentstoManager). + * - Local references for prefabs are processed whenever a prefab with an ES3Prefab Component is deselected (SelectionChanged -> ProcessGameObject) + */ +[InitializeOnLoad] +public class ES3Postprocessor : UnityEditor.AssetModificationProcessor +{ + private static bool refreshed = false; + + public static ES3ReferenceMgr RefMgr + { + get { return (ES3ReferenceMgr)ES3ReferenceMgr.Current; } + } + + public static GameObject lastSelected = null; + + + // This constructor is also called once when playmode is activated and whenever recompilation happens + // because we have the [InitializeOnLoad] attribute assigned to the class. + static ES3Postprocessor() + { + // Open the Easy Save 3 window the first time ES3 is installed. + //ES3Editor.ES3Window.OpenEditorWindowOnStart(); + +#if UNITY_2017_2_OR_NEWER + EditorApplication.playModeStateChanged += PlayModeStateChanged; +#else + EditorApplication.playmodeStateChanged += PlaymodeStateChanged; +#endif + } + + #region Reference Updating + + private static void RefreshReferences(bool isEnteringPlayMode = false) + { + if (refreshed) // If we've already refreshed, do nothing. + return; + + if (RefMgr != null && ES3Settings.defaultSettingsScriptableObject.autoUpdateReferences) + { + RefMgr.RefreshDependencies(isEnteringPlayMode); + } + UpdateAssembliesContainingES3Types(); + refreshed = true; + } + +#if UNITY_2017_2_OR_NEWER + public static void PlayModeStateChanged(PlayModeStateChange state) + { + // Add all GameObjects and Components to the reference manager before we enter play mode. + if (state == PlayModeStateChange.ExitingEditMode && ES3Settings.defaultSettingsScriptableObject.autoUpdateReferences) + RefreshReferences(true); + } +#else + public static void PlaymodeStateChanged() + { + // Add all GameObjects and Components to the reference manager before we enter play mode. + if (!EditorApplication.isPlaying && ES3Settings.defaultSettingsScriptableObject.autoUpdateReferences) + RefreshReferences(true); + } +#endif + + + public static string[] OnWillSaveAssets(string[] paths) + { + // Don't refresh references when the application is playing. + if (!EditorApplication.isUpdating && !Application.isPlaying && ES3Settings.defaultSettingsScriptableObject.autoUpdateReferences) + RefreshReferences(); + return paths; + } + + #endregion + + + private static void UpdateAssembliesContainingES3Types() + { +#if UNITY_2017_3_OR_NEWER + + var assemblies = UnityEditor.Compilation.CompilationPipeline.GetAssemblies(); + var defaults = ES3Settings.defaultSettingsScriptableObject; + var currentAssemblyNames = defaults.settings.assemblyNames; + + var assemblyNames = new List(); + + foreach (var assembly in assemblies) + { + try + { + var name = assembly.name; + var substr = name.Length >= 5 ? name.Substring(0, 5) : ""; + + if (substr != "Unity" && substr != "com.u" && !name.Contains("-Editor")) + assemblyNames.Add(name); + } + catch { } + } + + // Only update if the list has changed. + for (int i = 0; i < currentAssemblyNames.Length; i++) + { + if (currentAssemblyNames[i] != assemblyNames[i]) + { + defaults.settings.assemblyNames = assemblyNames.ToArray(); + EditorUtility.SetDirty(defaults); + } + } +#endif + } + + public static GameObject AddManagerToScene() + { + GameObject mgr = null; + if (RefMgr != null) + mgr = RefMgr.gameObject; + + if (mgr == null) + mgr = new GameObject("Easy Save 3 Manager"); + + if (mgr.GetComponent() == null) + { + mgr.AddComponent(); + + if (!Application.isPlaying && ES3Settings.defaultSettingsScriptableObject.autoUpdateReferences) + RefMgr.RefreshDependencies(); + } + + if (mgr.GetComponent() == null) + mgr.AddComponent(); + + Undo.RegisterCreatedObjectUndo(mgr, "Enabled Easy Save for Scene"); + return mgr; + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs.meta new file mode 100644 index 00000000..f6726e46 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Postprocessor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4256380692bcb4e57bdc0a5e13956389 +timeCreated: 1474041535 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs new file mode 100644 index 00000000..2dfa6a69 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs @@ -0,0 +1,50 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using System; +using System.Collections; +using ES3Internal; + +[CustomEditor(typeof(ES3Prefab))] +[System.Serializable] +public class ES3PrefabEditor : Editor +{ + bool showAdvanced = false; + bool openLocalRefs = false; + + public override void OnInspectorGUI() + { + var es3Prefab = (ES3Prefab)serializedObject.targetObject; + EditorGUILayout.HelpBox("Easy Save is enabled for this prefab, and can be saved and loaded with the ES3 methods.", MessageType.None); + + + showAdvanced = EditorGUILayout.Foldout(showAdvanced, "Advanced Settings"); + if(showAdvanced) + { + EditorGUI.indentLevel++; + es3Prefab.prefabId = EditorGUILayout.LongField("Prefab ID", es3Prefab.prefabId); + EditorGUILayout.LabelField("Reference count", es3Prefab.localRefs.Count.ToString()); + EditorGUI.indentLevel--; + + openLocalRefs = EditorGUILayout.Foldout(openLocalRefs, "localRefs"); + if (openLocalRefs) + { + EditorGUI.indentLevel++; + + EditorGUILayout.LabelField("It is not recommended to manually modify these."); + + foreach (var kvp in es3Prefab.localRefs) + { + EditorGUILayout.BeginHorizontal(); + + EditorGUILayout.ObjectField(kvp.Key, typeof(UnityEngine.Object), false); + EditorGUILayout.LongField(kvp.Value); + + EditorGUILayout.EndHorizontal(); + } + + EditorGUI.indentLevel--; + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs.meta new file mode 100644 index 00000000..f0d7c5e8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3PrefabEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d25610c9233c4cdfa5a0744c9956f5c +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs new file mode 100644 index 00000000..d2bd69b2 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs @@ -0,0 +1,186 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using System; +using System.Collections; +using System.Collections.Generic; + +[CustomEditor(typeof(ES3ReferenceMgr))] +[System.Serializable] +public class ES3ReferenceMgrEditor : Editor +{ + private bool isDraggingOver = false; + private bool openReferences = false; + + private ES3ReferenceMgr _mgr = null; + private ES3ReferenceMgr mgr + { + get + { + if (_mgr == null) + _mgr = (ES3ReferenceMgr)serializedObject.targetObject; + return _mgr; + } + } + + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox("This allows Easy Save to maintain references to objects in your scene.\n\nIt is automatically updated when you enter Playmode or build your project.", MessageType.Info); + + if (EditorGUILayout.Foldout(openReferences, "References") != openReferences) + { + openReferences = !openReferences; + if (openReferences == true) + openReferences = EditorUtility.DisplayDialog("Are you sure?", "Opening this list will display every reference in the manager, which for larger projects can cause the Editor to freeze\n\nIt is strongly recommended that you save your project before continuing.", "Open References", "Cancel"); + } + + // Make foldout drag-and-drop enabled for objects. + if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition)) + { + Event evt = Event.current; + + switch (evt.type) + { + case EventType.DragUpdated: + case EventType.DragPerform: + isDraggingOver = true; + break; + case EventType.DragExited: + isDraggingOver = false; + break; + } + + if (isDraggingOver) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + + if (evt.type == EventType.DragPerform) + { + DragAndDrop.AcceptDrag(); + Undo.RecordObject(mgr, "Add References to Easy Save 3 Reference List"); + foreach (UnityEngine.Object obj in DragAndDrop.objectReferences) + mgr.Add(obj); + // Return now because otherwise we'll change the GUI during an event which doesn't allow it. + return; + } + } + } + + if (openReferences) + { + EditorGUI.indentLevel++; + + foreach (var kvp in mgr.idRef) + { + EditorGUILayout.BeginHorizontal(); + + var value = EditorGUILayout.ObjectField(kvp.Value, typeof(UnityEngine.Object), true); + var key = EditorGUILayout.LongField(kvp.Key); + + EditorGUILayout.EndHorizontal(); + + if (value != kvp.Value || key != kvp.Key) + { + Undo.RecordObject(mgr, "Change Easy Save 3 References"); + // If we're deleting a value, delete it. + if (value == null) + mgr.Remove(key); + // Else, update the ID. + else + mgr.ChangeId(kvp.Key, key); + // Break, as removing or changing Dictionary items will make the foreach out of sync. + break; + } + } + + EditorGUI.indentLevel--; + } + + mgr.openPrefabs = EditorGUILayout.Foldout(mgr.openPrefabs, "ES3Prefabs"); + if (mgr.openPrefabs) + { + EditorGUI.indentLevel++; + + foreach (var prefab in mgr.prefabs) + { + EditorGUILayout.BeginHorizontal(); + + EditorGUILayout.ObjectField(prefab, typeof(UnityEngine.Object), true); + + EditorGUILayout.EndHorizontal(); + } + + EditorGUI.indentLevel--; + } + + EditorGUILayout.LabelField("Reference count", mgr.refId.Count.ToString()); + EditorGUILayout.LabelField("Prefab count", mgr.prefabs.Count.ToString()); + + if (GUILayout.Button("Refresh")) + { + mgr.RefreshDependencies(); + } + + if (GUILayout.Button("Optimize")) + { + mgr.Optimize(); + } + } + + [MenuItem("GameObject/Easy Save 3/Add Reference(s) to Manager", false, 33)] + [MenuItem("Assets/Easy Save 3/Add Reference(s) to Manager", false, 33)] + public static void AddReferenceToManager() + { + var mgr = ES3ReferenceMgr.Current; + if (mgr == null) + { + EditorUtility.DisplayDialog("Could not add reference to manager", "This object could not be added to the reference manager because no reference manager exists in this scene. To create one, go to Assets > Easy Save 3 > Add Manager to Scene", "Ok"); + return; + } + + if (Selection.objects == null || Selection.objects.Length == 0) + return; + + Undo.RecordObject(mgr, "Update Easy Save 3 Reference Manager"); + + foreach (var obj in Selection.objects) + { + if (obj == null) + continue; + + if (obj.GetType() == typeof(GameObject)) + { + var go = (GameObject)obj; + if (ES3EditorUtility.IsPrefabInAssets(go) && go.GetComponent() != null) + mgr.AddPrefab(go.GetComponent()); + } + + ((ES3ReferenceMgr)mgr).AddDependencies(obj); + } + } + + [MenuItem("GameObject/Easy Save 3/Add Reference(s) to Manager", true, 33)] + [MenuItem("Assets/Easy Save 3/Add Reference(s) to Manager", true, 33)] + private static bool CanAddReferenceToManager() + { + return Selection.objects != null && Selection.objects.Length > 0 && ES3ReferenceMgr.Current != null; + } + + [MenuItem("GameObject/Easy Save 3/Add Manager to Scene", false, 33)] + [MenuItem("Assets/Easy Save 3/Add Manager to Scene", false, 33)] + [MenuItem("Tools/Easy Save 3/Add Manager to Scene", false, 150)] + public static void EnableForScene() + { + if(!SceneManager.GetActiveScene().isLoaded) + EditorUtility.DisplayDialog("Could not add manager to scene", "Could not add Easy Save 3 Manager to scene because there is not currently a scene open.", "Ok"); + Selection.activeObject = ES3Postprocessor.AddManagerToScene(); + } + + [MenuItem("GameObject/Easy Save 3/Add Manager to Scene", true, 33)] + [MenuItem("Assets/Easy Save 3/Add Manager to Scene", true, 33)] + [MenuItem("Tools/Easy Save 3/Add Manager to Scene", true, 150)] + private static bool CanEnableForScene() + { + return ES3ReferenceMgr.Current == null; + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs.meta new file mode 100644 index 00000000..b60a7a38 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ReferenceMgrEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b43d266ed3464dedaa77757645ad61c +timeCreated: 1519132283 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt new file mode 100644 index 00000000..537abc19 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt @@ -0,0 +1,47 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute([propertyNames])] + public class ES3UserType_[es3TypeSuffix] : ES3ScriptableObjectType + { + public static ES3Type Instance = null; + + public ES3UserType_[es3TypeSuffix]() : base(typeof([fullType])){ Instance = this; priority = 1; } + + + protected override void WriteScriptableObject(object obj, ES3Writer writer) + { + var instance = ([fullType])obj; + [writes] + } + + protected override void ReadScriptableObject(ES3Reader reader, object obj) + { + var instance = ([fullType])obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + [reads] + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3UserType_[es3TypeSuffix]Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_[es3TypeSuffix]Array() : base(typeof([fullType][]), ES3UserType_[es3TypeSuffix].Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt.meta new file mode 100644 index 00000000..11ad974a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ScriptableObjectTypeTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b4ae594e55834c35b197df04c2e81cb +timeCreated: 1483698819 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs new file mode 100644 index 00000000..571aa47f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs @@ -0,0 +1,55 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using System; +using System.Collections; +using ES3Internal; + +namespace ES3Editor +{ + public static class ES3SettingsEditor + { + public static void Draw(ES3SerializableSettings settings) + { + var style = EditorStyle.Get; + + settings.location = (ES3.Location)EditorGUILayout.EnumPopup("Location", settings.location); + // If the location is File, show the Directory. + if(settings.location == ES3.Location.File) + settings.directory = (ES3.Directory)EditorGUILayout.EnumPopup("Directory", settings.directory); + + settings.path = EditorGUILayout.TextField("Default File Path", settings.path); + + EditorGUILayout.Space(); + + settings.encryptionType = (ES3.EncryptionType)EditorGUILayout.EnumPopup("Encryption", settings.encryptionType); + settings.encryptionPassword = EditorGUILayout.TextField("Encryption Password", settings.encryptionPassword); + + EditorGUILayout.Space(); + + settings.compressionType = (ES3.CompressionType)EditorGUILayout.EnumPopup("Compression", settings.compressionType); + + EditorGUILayout.Space(); + + settings.saveChildren = EditorGUILayout.Toggle("Save GameObject Children", settings.saveChildren); + + EditorGUILayout.Space(); + + if(settings.showAdvancedSettings = EditorGUILayout.Foldout(settings.showAdvancedSettings, "Advanced Settings")) + { + EditorGUILayout.BeginVertical(style.area); + + settings.format = (ES3.Format)EditorGUILayout.EnumPopup("Format", settings.format); + if (settings.format == ES3.Format.JSON) + settings.prettyPrint = EditorGUILayout.Toggle(new GUIContent("Pretty print JSON"), settings.prettyPrint); + settings.bufferSize = EditorGUILayout.IntField("Buffer Size", settings.bufferSize); + settings.memberReferenceMode = (ES3.ReferenceMode)EditorGUILayout.EnumPopup("Serialise Unity Object fields", settings.memberReferenceMode); + settings.serializationDepthLimit = EditorGUILayout.IntField("Serialisation Depth", settings.serializationDepthLimit); + + EditorGUILayout.Space(); + + EditorGUILayout.EndVertical(); + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs.meta new file mode 100644 index 00000000..be6af3ce --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3SettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35659b9a083a341d7bee216c4b71f4bc +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt new file mode 100644 index 00000000..62cec5a4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt @@ -0,0 +1,55 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute([propertyNames])] + public class ES3UserType_[es3TypeSuffix] : ES3Type + { + public static ES3Type Instance = null; + + public ES3UserType_[es3TypeSuffix]() : base(typeof([fullType])){ Instance = this; priority = 1;} + + + public override void Write(object obj, ES3Writer writer) + { + var instance = ([fullType])obj; + [writes] + } + + public override object Read(ES3Reader reader) + { + var instance = new [fullType](); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = ([fullType])obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + [reads] + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3UserType_[es3TypeSuffix]Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_[es3TypeSuffix]Array() : base(typeof([fullType][]), ES3UserType_[es3TypeSuffix].Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt.meta new file mode 100644 index 00000000..7c86dfea --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3TypeTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e84ec2bd739f543b0a5cd3c13741f744 +timeCreated: 1483718243 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt new file mode 100644 index 00000000..5a20283f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt @@ -0,0 +1,62 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3UserType_Material : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3UserType_Material() : base(typeof(UnityEngine.Material)){ Instance = this; priority = 1; } + + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Material)obj; + + writer.WriteProperty("shader", instance.shader); + writer.WriteProperty("renderQueue", instance.renderQueue, ES3Type_int.Instance); + writer.WriteProperty("shaderKeywords", instance.shaderKeywords); + writer.WriteProperty("globalIlluminationFlags", instance.globalIlluminationFlags); + [writes] + } + + protected override object ReadUnityObject(ES3Reader reader) + { + var obj = new Material(Shader.Find("Diffuse")); + ReadUnityObject(reader, obj); + return obj; + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Material)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "name": + instance.name = reader.Read(ES3Type_string.Instance); + break; + case "shader": + instance.shader = reader.Read(ES3Type_Shader.Instance); + break; + case "renderQueue": + instance.renderQueue = reader.Read(ES3Type_int.Instance); + break; + case "shaderKeywords": + instance.shaderKeywords = reader.Read(); + break; + case "globalIlluminationFlags": + instance.globalIlluminationFlags = reader.Read(); + break; + [reads] + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt.meta new file mode 100644 index 00000000..5ee9deb3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Type_MaterialTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f90b0399488ef42e5bc804122fd99c58 +timeCreated: 1483698819 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt new file mode 100644 index 00000000..4a55eddf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt @@ -0,0 +1,49 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute([propertyNames])] + public class ES3UserType_[es3TypeSuffix] : ES3Type + { + public static ES3Type Instance = null; + + public ES3UserType_[es3TypeSuffix]() : base(typeof([fullType])){ Instance = this; priority = 1;} + + + public override void Write(object obj, ES3Writer writer) + { + var instance = ([fullType])obj; + [writes] + } + + public override object Read(ES3Reader reader) + { + var instance = new [fullType](); + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + [reads] + default: + reader.Skip(); + break; + } + } + return instance; + } + } + + + public class ES3UserType_[es3TypeSuffix]Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_[es3TypeSuffix]Array() : base(typeof([fullType][]), ES3UserType_[es3TypeSuffix].Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt.meta new file mode 100644 index 00000000..067cb043 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3ValueTypeTemplate.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f67742ea0c50242f8af16c3f807b723b +timeCreated: 1483718243 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs new file mode 100644 index 00000000..b21ba242 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs @@ -0,0 +1,238 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; + +namespace ES3Editor +{ + public class ES3Window : EditorWindow + { + private SubWindow[] windows = null; + + public SubWindow currentWindow; + + [MenuItem("Window/Easy Save 3", false, 1000)] + [MenuItem("Assets/Easy Save 3/Open Easy Save 3 Window", false, 1000)] + public static void Init() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if(window != null) + window.Show(); + } + + public static void InitAndShowHome() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(HomeWindow)); + } + } + + [MenuItem("Tools/Easy Save 3/Auto Save", false, 100)] + public static void InitAndShowAutoSave() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(AutoSaveWindow)); + } + } + + public static void InitAndShowReferences() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(ReferencesWindow)); + } + } + + [MenuItem("Tools/Easy Save 3/Types", false, 100)] + public static void InitAndShowTypes() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(TypesWindow)); + } + } + + public static void InitAndShowTypes(System.Type type) + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + var typesWindow = (TypesWindow)window.SetCurrentWindow(typeof(TypesWindow)); + typesWindow.SelectType(type); + } + } + + [MenuItem("Tools/Easy Save 3/Settings", false, 100)] + public static void InitAndShowSettings() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(SettingsWindow)); + } + } + + [MenuItem("Tools/Easy Save 3/Tools", false, 100)] + public static void InitAndShowTools() + { + // Get existing open window or if none, make a new one: + ES3Window window = (ES3Window)EditorWindow.GetWindow(typeof(ES3Window)); + if (window != null) + { + window.Show(); + window.SetCurrentWindow(typeof(ToolsWindow)); + } + } + + public void InitSubWindows() + { + windows = new SubWindow[]{ + new HomeWindow(this), + new SettingsWindow(this), + new ToolsWindow(this), + new TypesWindow(this), + new AutoSaveWindow(this) + //, new ReferencesWindow(this) + }; + } + + void OnLostFocus() + { + if(currentWindow != null) + currentWindow.OnLostFocus(); + } + + private void OnFocus() + { + if (currentWindow != null) + currentWindow.OnFocus(); + } + + void OnDestroy() + { + if(currentWindow != null) + currentWindow.OnDestroy(); + } + + void OnEnable() + { + if(windows == null) + InitSubWindows(); + // Set the window name and icon. + var icon = AssetDatabase.LoadAssetAtPath(ES3Settings.PathToEasySaveFolder()+"Editor/es3Logo16x16.png"); + titleContent = new GUIContent("Easy Save", icon); + + // Get the last opened window and open it. + if(currentWindow == null) + { + var currentWindowName = EditorPrefs.GetString("ES3Editor.Window.currentWindow", windows[0].name); + for(int i=0; i w.GetType() == type); + EditorPrefs.SetString("ES3Editor.Window.currentWindow", currentWindow.name); + return currentWindow; + } + + // Shows the Easy Save Home window if it's not been disabled. + // This method is called from the Postprocessor. + public static void OpenEditorWindowOnStart() + { + if(EditorPrefs.GetBool("Show ES3 Window on Start", true)) + ES3Window.InitAndShowHome(); + EditorPrefs.SetBool("Show ES3 Window on Start", false); + } + } + + public abstract class SubWindow + { + public string name; + public EditorWindow parent; + public abstract void OnGUI(); + + public SubWindow(string name, EditorWindow parent) + { + this.name = name; + this.parent = parent; + } + + public virtual void OnLostFocus() + { + } + + public virtual void OnFocus() + { + } + + public virtual void OnDestroy() + { + } + + public virtual void OnHierarchyChange() + { + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs.meta new file mode 100644 index 00000000..0f5ce708 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ES3Window.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a95d98897f1cf4e7288b53b0fd8036c1 +timeCreated: 1519132293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs new file mode 100644 index 00000000..174aad69 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs @@ -0,0 +1,70 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace ES3Editor +{ + public class HomeWindow : SubWindow + { + Vector2 scrollPos = Vector2.zero; + + public HomeWindow(EditorWindow window) : base("Home", window){} + + public override void OnGUI() + { + + var style = EditorStyle.Get; + + scrollPos = EditorGUILayout.BeginScrollView(scrollPos); + + EditorGUILayout.BeginVertical(style.area); + + GUILayout.Label("Welcome to Easy Save", style.heading); + + EditorGUILayout.BeginVertical(style.area); + GUILayout.Label("New To Easy Save?", style.subheading); + EditorGUILayout.BeginVertical(style.area); + ES3EditorUtility.DisplayLink("• See our Getting Started guide", "http://docs.moodkie.com/easy-save-3/getting-started/"); + EditorGUILayout.EndVertical(); + + GUILayout.Label("Support", style.subheading); + + EditorGUILayout.BeginVertical(style.area); + + ES3EditorUtility.DisplayLink("• Contact us directly", "http://www.moodkie.com/contact/"); + ES3EditorUtility.DisplayLink("• Ask a question in our Easy Save 3 forums", "http://moodkie.com/forum/viewforum.php?f=12"); + ES3EditorUtility.DisplayLink("• Ask a question in the Unity Forum thread","https://forum.unity3d.com/threads/easy-save-the-complete-save-load-asset-for-unity.91040/"); + EditorGUILayout.EndVertical(); + + GUILayout.Label("Documentation and Guides", style.subheading); + + EditorGUILayout.BeginVertical(style.area); + + ES3EditorUtility.DisplayLink("• Documentation", "http://docs.moodkie.com/product/easy-save-3/"); + ES3EditorUtility.DisplayLink("• Guides", "http://docs.moodkie.com/product/easy-save-3/es3-guides/"); + ES3EditorUtility.DisplayLink("• API Scripting Reference", "http://docs.moodkie.com/product/easy-save-3/es3-api/"); + ES3EditorUtility.DisplayLink("• Supported Types", "http://docs.moodkie.com/easy-save-3/es3-supported-types/"); + + + EditorGUILayout.EndVertical(); + + GUILayout.Label("PlayMaker Documentation", style.subheading); + + EditorGUILayout.BeginVertical(style.area); + + ES3EditorUtility.DisplayLink("• Actions", "http://docs.moodkie.com/product/easy-save-3/es3-playmaker/es3-playmaker-actions/"); + ES3EditorUtility.DisplayLink("• Actions Overview", "http://docs.moodkie.com/easy-save-3/es3-playmaker/playmaker-actions-overview/"); + + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndScrollView(); + + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs.meta new file mode 100644 index 00000000..cf019eb0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/HomeWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 394cc2e77038849709526f44f7efdd22 +timeCreated: 1519132283 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs new file mode 100644 index 00000000..60a8be97 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using ES3Internal; + +namespace ES3Editor +{ + public class ReferencesWindow : SubWindow + { + + + public ReferencesWindow(EditorWindow window) : base("References", window){} + + public override void OnGUI() + { + + } + } + +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs.meta new file mode 100644 index 00000000..5e132e92 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ReferencesWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af2d805793e784eef87fbcdebb11fa35 +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs new file mode 100644 index 00000000..ccc0e9db --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs @@ -0,0 +1,135 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using ES3Internal; + +namespace ES3Editor +{ + public class SettingsWindow : SubWindow + { + public ES3Defaults editorSettings = null; + public ES3SerializableSettings settings = null; + public SerializedObject so = null; + public SerializedProperty assemblyNamesProperty = null; + + private Vector2 scrollPos = Vector2.zero; + + public SettingsWindow(EditorWindow window) : base("Settings", window){} + + public override void OnGUI() + { + if(settings == null || editorSettings == null || assemblyNamesProperty == null) + Init(); + + var style = EditorStyle.Get; + + var labelWidth = EditorGUIUtility.labelWidth; + + + EditorGUI.BeginChangeCheck(); + + using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPos, style.area)) + { + scrollPos = scrollView.scrollPosition; + + EditorGUIUtility.labelWidth = 160; + + GUILayout.Label("Runtime Settings", style.heading); + + using (new EditorGUILayout.VerticalScope(style.area)) + { + ES3SettingsEditor.Draw(settings); + } + + GUILayout.Label("Debug Settings", style.heading); + + using (new EditorGUILayout.VerticalScope(style.area)) + { + EditorGUIUtility.labelWidth = 100; + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Log Info"); + editorSettings.logDebugInfo = EditorGUILayout.Toggle(editorSettings.logDebugInfo); + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Log Warnings"); + editorSettings.logWarnings = EditorGUILayout.Toggle(editorSettings.logWarnings); + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Log Errors"); + editorSettings.logErrors = EditorGUILayout.Toggle(editorSettings.logErrors); + } + + EditorGUILayout.Space(); + } + + GUILayout.Label("Editor Settings", style.heading); + + using (new EditorGUILayout.VerticalScope(style.area)) + { + EditorGUIUtility.labelWidth = 170; + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Auto Update References"); + editorSettings.autoUpdateReferences = EditorGUILayout.Toggle(editorSettings.autoUpdateReferences); + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Use Global References"); + + var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + bool useGlobalReferences = !symbols.Contains("ES3GLOBAL_DISABLED"); + if(EditorGUILayout.Toggle(useGlobalReferences) != useGlobalReferences) + { + // Remove the existing symbol even if we're disabling global references, just incase it's already in there. + symbols = symbols.Replace("ES3GLOBAL_DISABLED;", ""); // With semicolon + symbols = symbols.Replace("ES3GLOBAL_DISABLED", ""); // Without semicolon + + // Add the symbol if useGlobalReferences is currently true, meaning that we want to disable it. + if (useGlobalReferences) + symbols = "ES3GLOBAL_DISABLED;" + symbols; + + PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, symbols); + + if(useGlobalReferences) + EditorUtility.DisplayDialog("Global references disabled for build platform", "This will only disable Global References for this build platform. To disable it for other build platforms, open that platform in the Build Settings and uncheck this box again.", "Ok"); + } + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel("Add All Prefabs to Manager"); + editorSettings.addAllPrefabsToManager = EditorGUILayout.Toggle(editorSettings.addAllPrefabsToManager); + } + + EditorGUILayout.Space(); + } + } + + if (EditorGUI.EndChangeCheck()) + EditorUtility.SetDirty(editorSettings); + + EditorGUIUtility.labelWidth = labelWidth; // Set the label width back to default + } + + public void Init() + { + editorSettings = ES3Settings.defaultSettingsScriptableObject; + + settings = editorSettings.settings; + /*so = new SerializedObject(editorSettings); + var settingsProperty = so.FindProperty("settings"); + assemblyNamesProperty = settingsProperty.FindPropertyRelative("assemblyNames");*/ + + } + } + +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs.meta new file mode 100644 index 00000000..d58da5f5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/SettingsWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95e7bbc9a5aee44feb088811fb5e7b80 +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs new file mode 100644 index 00000000..7affd55a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs @@ -0,0 +1,155 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace ES3Editor +{ + public class ToolsWindow : SubWindow + { + public ToolsWindow(EditorWindow window) : base("Tools", window){} + + public override void OnGUI() + { + var style = EditorStyle.Get; + + EditorGUILayout.BeginHorizontal(style.area); + + if (GUILayout.Button("Open Persistent Data Path")) + OpenPersistentDataPath(); + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(style.area); + + if (GUILayout.Button("Clear Persistent Data Path")) + ClearPersistentDataPath(); + + if (GUILayout.Button("Clear PlayerPrefs")) + ClearPlayerPrefs(); + + EditorGUILayout.EndHorizontal(); + } + + [MenuItem("Tools/Easy Save 3/Open Persistent Data Path", false, 200)] + private static void OpenPersistentDataPath() + { + OSFileBrowser.Open(Application.persistentDataPath); + } + + [MenuItem("Tools/Easy Save 3/Clear Persistent Data Path", false, 200)] + private static void ClearPersistentDataPath() + { + if (EditorUtility.DisplayDialog("Clear Persistent Data Path", "Are you sure you wish to clear the persistent data path?\n This action cannot be reversed.", "Clear", "Cancel")) + { + System.IO.DirectoryInfo di = new DirectoryInfo(Application.persistentDataPath); + + foreach (FileInfo file in di.GetFiles()) + file.Delete(); + foreach (DirectoryInfo dir in di.GetDirectories()) + dir.Delete(true); + } + } + + [MenuItem("Tools/Easy Save 3/Clear PlayerPrefs", false, 200)] + private static void ClearPlayerPrefs() + { + if (EditorUtility.DisplayDialog("Clear PlayerPrefs", "Are you sure you wish to clear PlayerPrefs?\nThis action cannot be reversed.", "Clear", "Cancel")) + PlayerPrefs.DeleteAll(); + } + } + + public static class OSFileBrowser + { + public static bool IsInMacOS + { + get + { + return UnityEngine.SystemInfo.operatingSystem.IndexOf("Mac OS") != -1; + } + } + + public static bool IsInWinOS + { + get + { + return UnityEngine.SystemInfo.operatingSystem.IndexOf("Windows") != -1; + } + } + + public static void OpenInMac(string path) + { + bool openInsidesOfFolder = false; + + // try mac + string macPath = path.Replace("\\", "/"); // mac finder doesn't like backward slashes + + if ( System.IO.Directory.Exists(macPath) ) // if path requested is a folder, automatically open insides of that folder + { + openInsidesOfFolder = true; + } + + if ( !macPath.StartsWith("\"") ) + { + macPath = "\"" + macPath; + } + + if ( !macPath.EndsWith("\"") ) + { + macPath = macPath + "\""; + } + + string arguments = (openInsidesOfFolder ? "" : "-R ") + macPath; + + try + { + System.Diagnostics.Process.Start("open", arguments); + } + catch ( System.ComponentModel.Win32Exception e ) + { + // tried to open mac finder in windows + // just silently skip error + // we currently have no platform define for the current OS we are in, so we resort to this + e.HelpLink = ""; // do anything with this variable to silence warning about not using it + } + } + + public static void OpenInWin(string path) + { + bool openInsidesOfFolder = false; + + // try windows + string winPath = path.Replace("/", "\\"); // windows explorer doesn't like forward slashes + + if ( System.IO.Directory.Exists(winPath) ) // if path requested is a folder, automatically open insides of that folder + openInsidesOfFolder = true; + + try + { + System.Diagnostics.Process.Start("explorer.exe", (openInsidesOfFolder ? "/root," : "/select,") + "\"" + winPath + "\""); + } + catch ( System.ComponentModel.Win32Exception e ) + { + e.HelpLink = ""; + } + } + + public static void Open(string path) + { + if ( IsInWinOS ) + { + OpenInWin(path); + } + else if ( IsInMacOS ) + { + OpenInMac(path); + } + else // couldn't determine OS + { + OpenInWin(path); + OpenInMac(path); + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs.meta new file mode 100644 index 00000000..c6fbe3ff --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/ToolsWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0d6114c1d40624e9e8575e814c45ac1a +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs b/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs new file mode 100644 index 00000000..aa08acbb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs @@ -0,0 +1,724 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System; +using System.Reflection; +using System.Linq; +using ES3Types; +using System.IO; +using ES3Internal; +using System.Text.RegularExpressions; + +namespace ES3Editor +{ + public class TypesWindow : SubWindow + { + TypeListItem[] types = null; + const int recentTypeCount = 5; + List recentTypes = new List(recentTypeCount); + + Vector2 typeListScrollPos = Vector2.zero; + Vector2 typePaneScrollPos = Vector2.zero; + int leftPaneWidth = 300; + + string searchFieldValue = ""; + + int selectedType = -1; + private ES3Reflection.ES3ReflectedMember[] fields = new ES3Reflection.ES3ReflectedMember[0]; + private bool[] fieldSelected = new bool[0]; + + private Texture2D checkmark; + //private Texture2D checkmarkSmall; + + private GUIStyle searchBarStyle; + private GUIStyle searchBarCancelButtonStyle; + private GUIStyle leftPaneStyle; + private GUIStyle typeButtonStyle; + private GUIStyle selectedTypeButtonStyle; + private GUIStyle selectAllNoneButtonStyle; + + private string valueTemplateFile; + private string classTemplateFile; + private string componentTemplateFile; + private string scriptableObjectTemplateFile; + + private bool unsavedChanges = false; + + public TypesWindow(EditorWindow window) : base("Types", window){} + + public override void OnGUI() + { + if(types == null) + Init(); + + EditorGUILayout.BeginHorizontal(); + + EditorGUILayout.BeginVertical(leftPaneStyle); + SearchBar(); + TypeList(); + EditorGUILayout.EndVertical(); + EditorGUILayout.BeginVertical(); + TypePane(); + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndHorizontal(); + } + + private void SearchBar() + { + var style = EditorStyle.Get; + + GUILayout.Label("Enter a type name in the field below\n* Type names are case-sensitive *", style.subheading2); + + EditorGUILayout.BeginHorizontal(); + + // Set control name so we can force a Focus reset for it. + string currentSearchFieldValue = EditorGUILayout.TextField(searchFieldValue, searchBarStyle); + + if(searchFieldValue != currentSearchFieldValue) + { + searchFieldValue = currentSearchFieldValue; + PerformSearch(currentSearchFieldValue); + } + + GUI.SetNextControlName("Clear"); + + if(GUILayout.Button("x", searchBarCancelButtonStyle)) + { + searchFieldValue = ""; + GUI.FocusControl("Clear"); + PerformSearch(""); + } + + EditorGUILayout.EndHorizontal(); + } + + private void RecentTypeList() + { + if(!string.IsNullOrEmpty(searchFieldValue) || recentTypes.Count == 0) + return; + + for(int i=recentTypes.Count-1; i>-1; i--) + TypeButton(recentTypes[i]); + + EditorGUILayout.TextArea("",GUI.skin.horizontalSlider); + + } + + private void TypeList() + { + if(!string.IsNullOrEmpty(searchFieldValue)) + GUILayout.Label("Search Results", EditorStyles.boldLabel); + + typeListScrollPos = EditorGUILayout.BeginScrollView(typeListScrollPos); + + RecentTypeList(); + + if(!string.IsNullOrEmpty(searchFieldValue)) + for(int i = 0; i < types.Length; i++) + TypeButton(i); + + EditorGUILayout.EndScrollView(); + } + + private void TypePane() + { + if(selectedType < 0) + return; + + var style = EditorStyle.Get; + + var typeListItem = types[selectedType]; + var type = typeListItem.type; + + typePaneScrollPos = EditorGUILayout.BeginScrollView(typePaneScrollPos, style.area); + + GUILayout.Label(typeListItem.name, style.subheading); + GUILayout.Label(typeListItem.namespaceName); + + EditorGUILayout.BeginVertical(style.area); + + bool hasParameterlessConstructor = ES3Reflection.HasParameterlessConstructor(type); + bool isComponent = ES3Reflection.IsAssignableFrom(typeof(Component), type); + + string path = GetOutputPath(types[selectedType].type); + // An ES3Type file already exists. + if(File.Exists(path)) + { + if(hasParameterlessConstructor || isComponent) + { + EditorGUILayout.BeginHorizontal(); + if(GUILayout.Button("Reset to Default")) + { + SelectNone(true, true); + AssetDatabase.MoveAssetToTrash("Assets" + path.Remove(0, Application.dataPath.Length)); + SelectType(selectedType); + } + if(GUILayout.Button("Edit ES3Type Script")) + AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath("Assets" + path.Remove(0, Application.dataPath.Length))); + EditorGUILayout.EndHorizontal(); + } + else + { + EditorGUILayout.HelpBox("This type has no public parameterless constructors.\n\nTo support this type you will need to modify the ES3Type script to use a specific constructor instead of the parameterless constructor.", MessageType.Info); + if(GUILayout.Button("Click here to edit the ES3Type script")) + AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath("Assets" + path.Remove(0, Application.dataPath.Length))); + if (GUILayout.Button("Reset to Default")) + { + SelectAll(true, true); + File.Delete(path); + AssetDatabase.Refresh(); + } + } + } + // No ES3Type file and no fields. + else if(fields.Length == 0) + { + if(!hasParameterlessConstructor && !isComponent) + EditorGUILayout.HelpBox("This type has no public parameterless constructors.\n\nTo support this type you will need to create an ES3Type script and modify it to use a specific constructor instead of the parameterless constructor.", MessageType.Info); + + if(GUILayout.Button("Create ES3Type Script")) + Generate(); + } + // No ES3Type file, but fields are selectable. + else + { + if(!hasParameterlessConstructor && !isComponent) + { + EditorGUILayout.HelpBox("This type has no public parameterless constructors.\n\nTo support this type you will need to select the fields you wish to serialize below, and then modify the generated ES3Type script to use a specific constructor instead of the parameterless constructor.", MessageType.Info); + if(GUILayout.Button("Select all fields and generate ES3Type script")) + { + SelectAll(true, false); + Generate(); + } + } + else + { + if(GUILayout.Button("Create ES3Type Script")) + Generate(); + } + } + + EditorGUILayout.EndVertical(); + + PropertyPane(); + + EditorGUILayout.EndScrollView(); + } + + private void PropertyPane() + { + var style = EditorStyle.Get; + + EditorGUILayout.BeginVertical(style.area); + + GUILayout.Label("Fields", EditorStyles.boldLabel); + + DisplayFieldsOrProperties(true, false); + EditorGUILayout.Space(); + + GUILayout.Label("Properties", EditorStyles.boldLabel); + + DisplayFieldsOrProperties(false, true); + EditorGUILayout.EndVertical(); + } + + private void DisplayFieldsOrProperties(bool showFields, bool showProperties) + { + // Get field and property counts. + int fieldCount = 0; + int propertyCount = 0; + for(int i=0; i 0 || propertyCount > 0) + { + EditorGUILayout.BeginHorizontal(); + + if(GUILayout.Button("Select All", selectAllNoneButtonStyle)) + { + SelectAll(showFields, showProperties); + Generate(); + } + + if(GUILayout.Button("Select None", selectAllNoneButtonStyle)) + { + SelectNone(showFields, showProperties); + Generate(); + } + EditorGUILayout.EndHorizontal(); + } + + for(int i=0; i item.Name == fields[i].Name); + return; + } + + // Get fields and whether they're selected. + var selectedFields = new List(); + var propertyAttributes = es3Type.GetType().GetCustomAttributes(typeof(ES3PropertiesAttribute), false); + if(propertyAttributes.Length > 0) + selectedFields.AddRange(((ES3PropertiesAttribute)propertyAttributes[0]).members); + + fieldSelected = new bool[fields.Length]; + + for(int i=0; i (); + + var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(assembly => !assembly.FullName.Contains("Editor") && assembly.FullName != "ES3" && !assembly.FullName.Contains("ES3")).OrderBy(assembly => assembly.GetName().Name).ToArray(); + + foreach (var assembly in assemblies) + { + var assemblyTypes = assembly.GetTypes(); + + for(int i = 0; i < assemblyTypes.Length; i++) + { + var type = assemblyTypes [i]; + if(type.IsGenericType || type.IsEnum || type.IsNotPublic || type.IsAbstract || type.IsInterface) + continue; + + var typeName = type.Name; + if(typeName [0] == '$' || typeName [0] == '_' || typeName [0] == '<') + continue; + + var typeNamespace = type.Namespace; + var namespaceName = typeNamespace == null ? "" : typeNamespace.ToString(); + + tempTypes.Add(new TypeListItem (type.Name, namespaceName, type, true, HasExplicitES3Type(type))); + } + + } + types = tempTypes.OrderBy(type => type.name).ToArray(); + + // Load types and recent types. + if(Event.current.type == EventType.Layout) + { + recentTypes = new List(); + for(int i=0; i(es3FolderPath + "Editor/checkmark.png"); + //checkmarkSmall = AssetDatabase.LoadAssetAtPath(es3FolderPath + "Editor/checkmarkSmall.png"); + + // Init Styles. + searchBarCancelButtonStyle = new GUIStyle(EditorStyles.miniButton); + var cancelButtonSize = EditorStyles.miniTextField.CalcHeight(new GUIContent(""), 20); + searchBarCancelButtonStyle.fixedWidth = cancelButtonSize; + searchBarCancelButtonStyle.fixedHeight = cancelButtonSize; + searchBarCancelButtonStyle.fontSize = 8; + searchBarCancelButtonStyle.padding = new RectOffset(); + searchBarStyle = new GUIStyle(EditorStyles.toolbarTextField); + searchBarStyle.stretchWidth = true; + + typeButtonStyle = new GUIStyle(EditorStyles.largeLabel); + typeButtonStyle.alignment = TextAnchor.MiddleLeft; + typeButtonStyle.stretchWidth = false; + selectedTypeButtonStyle = new GUIStyle(typeButtonStyle); + selectedTypeButtonStyle.fontStyle = FontStyle.Bold; + + leftPaneStyle = new GUIStyle(); + leftPaneStyle.fixedWidth = leftPaneWidth; + leftPaneStyle.clipping = TextClipping.Clip; + leftPaneStyle.padding = new RectOffset(10, 10, 10, 10); + + selectAllNoneButtonStyle = new GUIStyle(EditorStyles.miniButton); + selectAllNoneButtonStyle.stretchWidth = false; + selectAllNoneButtonStyle.margin = new RectOffset(0,0,0,10); + } + + private void Generate() + { + var type = types[selectedType].type; + if(type == null) + { + EditorUtility.DisplayDialog("Type not selected", "Type not selected. Please ensure you select a type", "Ok"); + return; + } + + unsavedChanges = false; + + // Get the serializable fields of this class. + //var fields = ES3Reflection.GetSerializableES3Fields(type); + + // The string that we suffix to the class name. i.e. UnityEngine_UnityEngine_Transform. + string es3TypeSuffix = type.Name; + // The string for the full C#-safe type name. This name must be suitable for going inside typeof(). + string fullType = GetFullTypeName(type); + // The list of WriteProperty calls to write the properties of this type. + string writes = GenerateWrites(); + // The list of case statements and Read calls to read the properties of this type. + string reads = GenerateReads(); + // A comma-seperated string of fields we've supported in this type. + string propertyNames = ""; + + bool first = true; + for(int i=0; i(), instance);\r\n\t\t\t\t\tbreak;", field.Name, fieldTypeName); + else + reads += String.Format("\r\n\t\t\t\t\tcase \"{0}\":\r\n\t\t\t\t\treader.SetPrivateField(\"{0}\", reader.Read<{1}>(), instance);\r\n\t\t\t\t\tbreak;", field.Name, fieldTypeName); + } + else + reads += String.Format("\r\n\t\t\t\t\tcase \"{0}\":\r\n\t\t\t\t\t\t{3}.{0} = reader.Read<{1}>({2});\r\n\t\t\t\t\t\tbreak;", field.Name, fieldTypeName, es3TypeParam, instance); + } + return reads; + } + + private string GetOutputPath(Type type) + { + return Application.dataPath + "/Easy Save 3/Types/ES3UserType_"+type.Name+".cs"; + } + + /* Gets the full Type name, replacing any syntax (such as '+') with a dot to make it a valid type name */ + private static string GetFullTypeName(Type type) + { + string typeName = type.ToString(); + + if(type.IsNested) + typeName = typeName.Replace('+','.'); + + // If it's a generic type, replace syntax with angled brackets. + int genericArgumentCount = type.GetGenericArguments().Length; + if(genericArgumentCount > 0) + { + return string.Format("{0}<{1}>", type.ToString().Split('`')[0], string.Join(", ", type.GetGenericArguments().Select(x => GetFullTypeName(x)).ToArray())); + } + + return typeName; + } + + /* Whether this type has an explicit ES3Type. For example, ES3ArrayType would return false, but ES3Vector3ArrayType would return true */ + private static bool HasExplicitES3Type(Type type) + { + var es3Type = ES3TypeMgr.GetES3Type(type); + if(es3Type == null) + return false; + // If this ES3Type has a static Instance property, return true. + if(es3Type.GetType().GetField("Instance", BindingFlags.Public | BindingFlags.Static) != null) + return true; + return false; + } + + private static bool HasExplicitES3Type(ES3Type es3Type) + { + if(es3Type == null) + return false; + // If this ES3Type has a static Instance property, return true. + if(es3Type.GetType().GetField("Instance", BindingFlags.Public | BindingFlags.Static) != null) + return true; + return false; + } + + public class TypeListItem + { + public string name; + public string lowercaseName; + public string namespaceName; + public Type type; + public bool showInList; + public bool hasExplicitES3Type; + + public TypeListItem(string name, string namespaceName, Type type, bool showInList, bool hasExplicitES3Type) + { + this.name = name; + this.lowercaseName = name.ToLowerInvariant(); + this.namespaceName = namespaceName; + this.type = type; + this.showInList = showInList; + this.hasExplicitES3Type = hasExplicitES3Type; + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs.meta new file mode 100644 index 00000000..75050342 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/TypesWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 600b987de172f4a82b182077ceb7fffa +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png new file mode 100644 index 00000000..cda4c8dd Binary files /dev/null and b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png differ diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png.meta new file mode 100644 index 00000000..e4cf3562 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmark.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 9d92f481545af4a45b06e8fe44778d93 +timeCreated: 1484046036 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Tizen + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Samsung TV + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png new file mode 100644 index 00000000..46c3c1ff Binary files /dev/null and b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png differ diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png.meta new file mode 100644 index 00000000..32ece544 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/checkmarkSmall.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: ca44f6eb870d244cfb1c83054a69ffc3 +timeCreated: 1484046036 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Tizen + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Samsung TV + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png new file mode 100644 index 00000000..2edf317b Binary files /dev/null and b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png differ diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png.meta new file mode 100644 index 00000000..94cb9443 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16-bw.png.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: 3ae63f85ae558634d83caaf5a332d1ba +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png new file mode 100644 index 00000000..ccde0472 Binary files /dev/null and b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png differ diff --git a/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png.meta b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png.meta new file mode 100644 index 00000000..fc647224 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Editor/es3Logo16x16.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 4697547d67ec24040b678d7b35835286 +timeCreated: 1495455081 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Tizen + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Samsung TV + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/PlayMaker.meta b/Assets/ThirdPlugins/Easy Save 3/PlayMaker.meta new file mode 100644 index 00000000..3ac7941f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/PlayMaker.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a6bee318130749539d0eec8a7b37ccd +folderAsset: yes +timeCreated: 1497259711 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs b/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs new file mode 100644 index 00000000..93683c0a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs @@ -0,0 +1,1792 @@ +#if PLAYMAKER_1_8_OR_NEWER + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using ES3Internal; +using HutongGames.PlayMaker.Actions; +using HutongGames.PlayMaker; +using System.Linq; +using System; +using Tooltip = HutongGames.PlayMaker.TooltipAttribute; + +public class FsmES3File : ScriptableObject +{ + public ES3File file; +} + +public class FsmES3Spreadsheet : ScriptableObject +{ + public ES3Spreadsheet spreadsheet; +} + +namespace ES3PlayMaker +{ + + #region Base Classes + + public abstract class ActionBase : FsmStateAction + { + [Tooltip("This event is triggered if an error occurs.")] + public FsmEvent errorEvent; + [Tooltip("If an error occurs, the error message will be stored in this variable.")] + public FsmString errorMessage; + + public abstract void Enter(); + public abstract void OnReset(); + + public override void OnEnter() + { + try + { + Enter(); + } + catch (System.Exception e) + { + HandleError(e.ToString()); + } + Finish(); + } + + public override void Reset() + { + errorEvent = null; + errorMessage = ""; + OnReset(); + } + + public void HandleError(string msg) + { + errorMessage.Value = msg; + if (errorEvent != null) + Fsm.Event(errorEvent); + else + LogError(msg); + } + } + + public abstract class SettingsAction : ActionBase + { + public FsmBool overrideDefaultSettings = false; + + [Tooltip("The path this ES3Settings object points to, if any.")] + public FsmString path; + [ObjectType(typeof(ES3.Location))] + [Tooltip("The storage location where we wish to store data by default.")] + public FsmEnum location; + [ObjectType(typeof(ES3.EncryptionType))] + [Tooltip("The type of encryption to use when encrypting data, if any.")] + public FsmEnum encryptionType; + [Tooltip("The password to use to encrypt the data if encryption is enabled.")] + public FsmString encryptionPassword; + [ObjectType(typeof(ES3.CompressionType))] + [Tooltip("The type of compression to use when compressing data, if any.")] + public FsmEnum compressionType; + [ObjectType(typeof(ES3.Directory))] + [Tooltip("The default directory in which to store files when using the File save location, and the location which relative paths should be relative to.")] + public FsmEnum directory; + [ObjectType(typeof(ES3.Format))] + [Tooltip("The format we should use when serializing and deserializing data.")] + public FsmEnum format; + [Tooltip("Any stream buffers will be set to this length in bytes.")] + public FsmInt bufferSize; + + public override void Reset() + { + var settings = new ES3Settings(); + path = settings.path; + location = settings.location; + encryptionType = settings.encryptionType; + compressionType = settings.compressionType; + encryptionPassword = settings.encryptionPassword; + directory = settings.directory; + format = settings.format; + bufferSize = settings.bufferSize; + overrideDefaultSettings = false; + base.Reset(); + } + + public ES3Settings GetSettings() + { + var settings = new ES3Settings(); + if (overrideDefaultSettings.Value) + { + settings.path = path.Value; + settings.location = (ES3.Location)location.Value; + settings.encryptionType = (ES3.EncryptionType)encryptionType.Value; + settings.encryptionPassword = encryptionPassword.Value; + settings.compressionType = (ES3.CompressionType)compressionType.Value; + settings.directory = (ES3.Directory)directory.Value; + settings.format = (ES3.Format)format.Value; + settings.bufferSize = bufferSize.Value; + } + return settings; + } + } + + public abstract class ES3FileAction : ActionBase + { + [Tooltip("The ES3 File we are using, created using the Create ES3 File action.")] + [ObjectType(typeof(FsmES3File))] + [Title("ES3 File")] + [RequiredField] + public FsmObject fsmES3File; + + public ES3File es3File { get { return ((FsmES3File)fsmES3File.Value).file; } } + + public override void Reset() + { + fsmES3File = null; + base.Reset(); + } + } + + public abstract class ES3FileSettingsAction : SettingsAction + { + [Tooltip("The ES3File variable we're using.")] + [ObjectType(typeof(FsmES3File))] + [Title("ES3 File")] + [RequiredField] + public FsmObject fsmES3File; + + public ES3File es3File { get { return ((FsmES3File)fsmES3File.Value).file; } } + + public override void Reset() + { + fsmES3File = null; + base.Reset(); + } + } + + public abstract class ES3SpreadsheetAction : ActionBase + { + [Tooltip("The ES3 Spreadsheet we are using, created using the Create ES3 Spreadsheet action.")] + [ObjectType(typeof(FsmES3Spreadsheet))] + [Title("ES3 Spreadsheet")] + [RequiredField] + public FsmObject fsmES3Spreadsheet; + + public ES3Spreadsheet es3Spreadsheet { get { return ((FsmES3Spreadsheet)fsmES3Spreadsheet.Value).spreadsheet; } } + + public override void Reset() + { + fsmES3Spreadsheet = null; + base.Reset(); + } + } + + public abstract class ES3SpreadsheetSettingsAction : SettingsAction + { + [Tooltip("The ES3Spreadsheet variable we're using.")] + [ObjectType(typeof(FsmES3Spreadsheet))] + [Title("ES3 Spreadsheet")] + [RequiredField] + public FsmObject fsmES3Spreadsheet; + + public ES3Spreadsheet es3Spreadsheet { get { return ((FsmES3Spreadsheet)fsmES3Spreadsheet.Value).spreadsheet; } } + + public override void Reset() + { + fsmES3Spreadsheet = null; + base.Reset(); + } + } + + #endregion + + #region Save Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Saves the value to a file with the given key.")] + public class Save : SettingsAction + { + [Tooltip("The unique key we want to use to identity the data we are saving.")] + public FsmString key; + [Tooltip("The value we want to save.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + key = "key"; + value = null; + } + + public override void Enter() + { + value.UpdateValue(); + + if (value.Type == VariableType.Array) + ES3.Save(key.Value, new PMDataWrapper(value.arrayValue.Values), GetSettings()); + else + ES3.Save(key.Value, value.GetValue(), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Saves all FsmVariables in this FSM to a file with the given key.")] + public class SaveAll : SettingsAction + { + [Tooltip("The unique key we want to use to identity the data we are saving.")] + public FsmString key; + + [Tooltip("Save the local variables accessible in this FSM?")] + public FsmBool saveFsmVariables = true; + [Tooltip("Save the global variables accessible in all FSMs?")] + public FsmBool saveGlobalVariables = true; + + public override void OnReset() + { + key = "key"; + } + + public override void Enter() + { + ES3.Save(key.Value, new PMDataWrapper(Fsm, saveFsmVariables.Value, saveGlobalVariables.Value), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Saves a byte array as a file, overwriting any existing files.")] + public class SaveRaw : SettingsAction + { + [Tooltip("The string we want to save as a file.")] + public FsmString str; + [Tooltip("Whether to encode this string using Base-64 encoding. This will override any default encoding settings.")] + public FsmBool useBase64Encoding; + [Tooltip("Adds a newline to the end of the file.")] + public FsmBool appendNewline; + + public override void OnReset() + { + str = ""; + useBase64Encoding = false; + appendNewline = false; + } + + public override void Enter() + { + if (useBase64Encoding.Value) + ES3.SaveRaw(System.Convert.FromBase64String(str.Value) + (appendNewline.Value ? "\n" : ""), GetSettings()); + else + ES3.SaveRaw(str.Value + (appendNewline.Value ? "\n" : ""), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Appends a string to the end of a file.")] + public class AppendRaw : SettingsAction + { + [Tooltip("The string we want to append to a file.")] + public FsmString str; + [Tooltip("Whether to encode this string using Base-64 encoding. This will override any default encoding settings.")] + public FsmBool useBase64Encoding; + [Tooltip("If checked, a newline will be added after the data.")] + public FsmBool appendNewline; + + public override void OnReset() + { + str = ""; + useBase64Encoding = false; + appendNewline = false; + } + + public override void Enter() + { + if (useBase64Encoding.Value) + ES3.AppendRaw(System.Convert.FromBase64String(str.Value) + (appendNewline.Value ? "\n" : ""), GetSettings()); + else + ES3.AppendRaw(str.Value + (appendNewline.Value ? "\n" : ""), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Saves a Texture2D as a PNG or a JPG, depending on the file extension of the supplied image path.")] + public class SaveImage : SettingsAction + { + [Tooltip("The relative or absolute path of the PNG or JPG file we want to store our image to.")] + public FsmString imagePath; + [Tooltip("The Texture2D we want to save as an image.")] + [ObjectType(typeof(Texture2D))] + public FsmTexture texture2D; + [Tooltip("The quality of the image when saving JPGs, from 1 to 100. Default is 75.")] + public FsmInt quality; + + public override void OnReset() + { + imagePath = "image.png"; + texture2D = null; + quality.Value = 75; + } + + public override void Enter() + { + ES3.SaveImage((Texture2D)texture2D.Value, quality.Value, imagePath.Value, GetSettings()); + } + } + + #endregion + + #region Load Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads a value from a file with the given key.")] + public class Load : SettingsAction + { + [Tooltip("The unique key which identifies the data we're loading.")] + public FsmString key; + [Tooltip("The variable we want to use to store our loaded data.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + [Tooltip("Optional: A value to return if the key does not exist.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar defaultValue; + + public override void OnReset() + { + key = "key"; + value = null; + defaultValue = null; + } + + public override void Enter() + { + defaultValue.UpdateValue(); + bool useDefaultVal = defaultValue.GetValue() != null && !defaultValue.IsNone; + + + if (value.Type == VariableType.Array) + { + if (useDefaultVal) + value.SetValue(ES3.Load(key.Value, new PMDataWrapper(defaultValue.arrayValue.Values), GetSettings()).array); + else + value.SetValue(ES3.Load(key.Value, GetSettings()).array); + } + else + { + if (useDefaultVal) + value.SetValue(ES3.Load(key.Value, defaultValue.GetValue(), GetSettings())); + else + value.SetValue(ES3.Load(key.Value, GetSettings())); + } + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads a value from a file with the given key into an existing object, rather than creating a new instance.")] + public class LoadInto : SettingsAction + { + [Tooltip("The unique key which identifies the data we're loading.")] + public FsmString key; + [Tooltip("The object we want to load our data into.")] + [RequiredField] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + key = "key"; + value = null; + } + + public override void Enter() + { + value.UpdateValue(); + if (value.IsNone || value.GetValue() == null) + HandleError("The 'Load Into' action requires an object to load the data into, but none was specified in the 'Value' field."); + else + { + ES3.LoadInto(key.Value, value.GetValue(), GetSettings()); + + if (value.Type == VariableType.Array) + HandleError("It's not possible to use LoadInto with arrays in PlayMaker as they are not strictly typed. Consider using Load instead."); + else + value.SetValue(ES3.Load(key.Value, GetSettings())); + } + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads all FsmVariables in this FSM to a file with the given key.")] + public class LoadAll : SettingsAction + { + [Tooltip("The key we used to save the data we're loading.")] + public FsmString key; + + [Tooltip("Load the local variables accessible in this FSM?")] + public FsmBool loadFsmVariables = true; + [Tooltip("Load the global variables accessible in all FSMs?")] + public FsmBool loadGlobalVariables = true; + + public override void OnReset() + { + key = "key"; + } + + public override void Enter() + { + ES3.Load(key.Value, GetSettings()).ApplyVariables(Fsm, loadFsmVariables.Value, loadGlobalVariables.Value); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads an entire file as a string.")] + public class LoadRawString : SettingsAction + { + [Tooltip("The variable we want to store our loaded string in.")] + public FsmString str; + [Tooltip("Whether or not the data we're loading is Base-64 encoded. Usually this should be left unchecked.")] + public FsmBool useBase64Encoding; + + public override void OnReset() + { + str = null; + useBase64Encoding = false; + } + + public override void Enter() + { + if (useBase64Encoding.Value) + str.Value = System.Convert.ToBase64String(ES3.LoadRawBytes(GetSettings())); + else + str.Value = ES3.LoadRawString(GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads a JPG or PNG image file as a Texture2D.")] + public class LoadImage : SettingsAction + { + [Tooltip("The relative or absolute path of the JPG or PNG image file we want to load.")] + public FsmString imagePath; + [Tooltip("The variable we want to use to store our loaded texture.")] + public FsmTexture texture2D; + + public override void OnReset() + { + imagePath = "image.png"; + texture2D = null; + } + + public override void Enter() + { + texture2D.Value = ES3.LoadImage(imagePath.Value, GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads an audio file as an AudioClip.")] + public class LoadAudio : SettingsAction + { + [Tooltip("The relative or absolute path of the audio file we want to load.")] + public FsmString audioFilePath; + [ObjectType(typeof(AudioClip))] + [Tooltip("The variable we want to use to store our loaded AudioClip.")] + public FsmObject audioClip; + +#if UNITY_2018_3_OR_NEWER + [Tooltip("The type of AudioClip we're loading.")] + [ObjectType(typeof(AudioType))] + public FsmEnum audioType; +#endif + + public override void OnReset() + { + audioFilePath = "audio.wav"; + audioClip = null; +#if UNITY_2018_3_OR_NEWER + audioType = AudioType.MPEG; +#endif + } + + public override void Enter() + { + audioClip.Value = ES3.LoadAudio(audioFilePath.Value, +#if UNITY_2018_3_OR_NEWER + (AudioType)audioType.Value, +#endif + GetSettings()); + } + } + + + #endregion + + #region Exists Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Checks whether a key exists in a file.")] + public class KeyExists : SettingsAction + { + [Tooltip("The key we want to check the existence of.")] + public FsmString key; + [Tooltip("Whether the key exists. This is set after the action runs.")] + public FsmBool exists; + + [Tooltip("This event is triggered if the key exists.")] + public FsmEvent existsEvent; + [Tooltip("This event is triggered if the key does not exist.")] + public FsmEvent doesNotExistEvent; + + public override void OnReset() + { + key = "key"; + exists = false; + existsEvent = null; + doesNotExistEvent = null; + } + + public override void Enter() + { + exists.Value = ES3.KeyExists(key.Value, GetSettings()); + + Fsm.Event(exists.Value ? existsEvent : doesNotExistEvent); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Checks whether a file exists in a directory.")] + public class FileExists : SettingsAction + { + [Tooltip("The file we want to check the existence of")] + public FsmString filePath; + [Tooltip("Whether the file exists. This is set after the action runs.")] + public FsmBool exists; + + [Tooltip("This event is triggered if the file exists.")] + public FsmEvent existsEvent; + [Tooltip("This event is triggered if the file does not exist.")] + public FsmEvent doesNotExistEvent; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + exists = false; + existsEvent = null; + doesNotExistEvent = null; + } + + public override void Enter() + { + exists.Value = ES3.FileExists(filePath.Value, GetSettings()); + + Fsm.Event(exists.Value ? existsEvent : doesNotExistEvent); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Checks whether a directory exists in another directory")] + public class DirectoryExists : SettingsAction + { + [Tooltip("The directory we want to check the existence of.")] + public FsmString directoryPath; + [Tooltip("Whether the directory exists. This is set after the action runs.")] + public FsmBool exists; + + [Tooltip("This event is triggered if the directory exists.")] + public FsmEvent existsEvent; + [Tooltip("This event is triggered if the directory does not exist.")] + public FsmEvent doesNotExistEvent; + + public override void OnReset() + { + directoryPath = ""; + exists = false; + existsEvent = null; + doesNotExistEvent = null; + } + + public override void Enter() + { + exists.Value = ES3.DirectoryExists(directoryPath.Value, GetSettings()); + + Fsm.Event(exists.Value ? existsEvent : doesNotExistEvent); + } + } + + #endregion + + #region Delete Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Deletes a key from a file.")] + public class DeleteKey : SettingsAction + { + [Tooltip("The key we want to delete.")] + public FsmString key; + + public override void OnReset() + { + key = "key"; + } + + public override void Enter() + { + ES3.DeleteKey(key.Value, GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Deletes a file.")] + public class DeleteFile : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to delete.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + } + + public override void Enter() + { + ES3.DeleteFile(filePath.Value, GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Deletes a directory and it's contents.")] + public class DeleteDirectory : SettingsAction + { + [Tooltip("The relative or absolute path of the directory we want to delete.")] + public FsmString directoryPath; + + public override void OnReset() + { + directoryPath = ""; + } + + public override void Enter() + { + ES3.DeleteDirectory(directoryPath.Value, GetSettings()); + } + } + + #endregion + + #region Backup Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Creates a backup of a file which can be restored using the Restore Backup action.")] + public class CreateBackup : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to backup.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + } + + public override void Enter() + { + ES3.CreateBackup(filePath.Value, GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Restores a backup of a file created using the Create Backup action.")] + public class RestoreBackup : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to restore the backup of.")] + public FsmString filePath; + [Tooltip("True if a backup was restored, or False if no backup could be found.")] + public FsmBool backupWasRestored; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + backupWasRestored = false; + } + + public override void Enter() + { + backupWasRestored.Value = ES3.RestoreBackup(filePath.Value, GetSettings()); + } + } + + #endregion + + #region Key, File and Directory Methods + + [ActionCategory("Easy Save 3")] + [Tooltip("Renames a file.")] + public class RenameFile : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to rename from.")] + public FsmString oldFilePath; + [Tooltip("The relative or absolute path of the file we want to rename to.")] + public FsmString newFilePath; + + public override void OnReset() + { + oldFilePath = "SaveFile.es3"; + newFilePath = ""; + } + + public override void Enter() + { + ES3.RenameFile(oldFilePath.Value, newFilePath.Value, GetSettings(), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Copies a file.")] + public class CopyFile : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to copy.")] + public FsmString oldFilePath; + [Tooltip("The relative or absolute path of the file we want to create.")] + public FsmString newFilePath; + + public override void OnReset() + { + oldFilePath = "SaveFile.es3"; + newFilePath = ""; + } + + public override void Enter() + { + ES3.CopyFile(oldFilePath.Value, newFilePath.Value, GetSettings(), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Copies a directory.")] + public class CopyDirectory : SettingsAction + { + [Tooltip("The relative or absolute path of the directory we want to copy.")] + public FsmString oldDirectoryPath; + [Tooltip("The relative or absolute path of the directory we want to create.")] + public FsmString newDirectoryPath; + + public override void OnReset() + { + oldDirectoryPath = ""; + newDirectoryPath = ""; + } + + public override void Enter() + { + ES3.CopyDirectory(oldDirectoryPath.Value, newDirectoryPath.Value, GetSettings(), GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Gets an array of key names from a file.")] + public class GetKeys : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to get the keys from.")] + public FsmString filePath; + [Tooltip("The string array variable we want to load our key names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray keys; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + keys = null; + } + + public override void Enter() + { + keys.Values = ES3.GetKeys(filePath.Value, GetSettings()); + keys.SaveChanges(); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Gets how many keys are in a file.")] + public class GetKeyCount : SettingsAction + { + [Tooltip("The relative or absolute path of the file we want to count the keys of.")] + public FsmString filePath; + [Tooltip("The int variable we want to load our count into.")] + public FsmInt keyCount; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + keyCount = null; + } + + public override void Enter() + { + keyCount.Value = ES3.GetKeys(filePath.Value, GetSettings()).Length; + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Gets the names of the files in a given directory.")] + public class GetFiles : SettingsAction + { + [Tooltip("The relative or absolute path of the directory we want to get the file names from.")] + public FsmString directoryPath; + [Tooltip("The string array variable we want to load our file names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray files; + + public override void OnReset() + { + directoryPath = ""; + files = null; + } + + public override void Enter() + { + files.Values = ES3.GetFiles(directoryPath.Value, GetSettings()); + files.SaveChanges(); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Gets the names of any directories in a given directory.")] + public class GetDirectories : SettingsAction + { + [Tooltip("The relative or absolute path of the directory we want to get the directory names from.")] + public FsmString directoryPath; + [Tooltip("The string array variable we want to load our directory names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray directories; + + public override void OnReset() + { + directoryPath = ""; + directories = null; + } + + public override void Enter() + { + directories.Values = ES3.GetDirectories(directoryPath.Value, GetSettings()); + directories.SaveChanges(); + } + } + + #endregion + + #region ES3Spreadsheet Actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Creates a new empty ES3Spreadsheet.")] + public class ES3SpreadsheetCreate : ES3SpreadsheetAction + { + public override void OnReset() + { + } + + public override void Enter() + { + var spreadsheet = ScriptableObject.CreateInstance(); + spreadsheet.spreadsheet = new ES3Spreadsheet(); + fsmES3Spreadsheet.Value = spreadsheet; + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Sets a given cell of the ES3Spreadsheet to the value provided.")] + public class ES3SpreadsheetSetCell : ES3SpreadsheetAction + { + [Tooltip("The column of the cell we want to set the value of.")] + public FsmInt col; + [Tooltip("The row of the cell we want to set the value of.")] + public FsmInt row; + + [Tooltip("The value we want to save.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + value = null; + } + + public override void Enter() + { + value.UpdateValue(); + es3Spreadsheet.SetCell(col.Value, row.Value, value.GetValue()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Gets a given cell of the ES3Spreadsheet and loads it into the value field.")] + public class ES3SpreadsheetGetCell : ES3SpreadsheetAction + { + [Tooltip("The column of the cell we want to set the value of.")] + public FsmInt col; + [Tooltip("The row of the cell we want to set the value of.")] + public FsmInt row; + + [Tooltip("The value we want to save.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + value = null; + } + + public override void Enter() + { + value.SetValue(es3Spreadsheet.GetCell(value.RealType, col.Value, row.Value)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Saves the ES3Spreadsheet to file.")] + public class ES3SpreadsheetSave : ES3SpreadsheetSettingsAction + { + [Tooltip("The filename or path we want to use to save the spreadsheet.")] + public FsmString filePath; + [Tooltip("Whether we want to append this spreadsheet to an existing spreadsheet if one already exists.")] + public FsmBool append; + + public override void OnReset() + { + filePath = "ES3.csv"; + append = false; + } + + public override void Enter() + { + es3Spreadsheet.Save(filePath.Value, GetSettings(), append.Value); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Loads a a spreadsheet from a file into this ES3Spreadsheet.")] + public class ES3SpreadsheetLoad : ES3SpreadsheetSettingsAction + { + [Tooltip("The filename or path we want to use to save the spreadsheet.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "ES3.csv"; + + } + + public override void Enter() + { + es3Spreadsheet.Load(filePath.Value, GetSettings()); + } + } + #endregion + + #region ES3File Actions + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Creates a new ES3File, and optionally loads a file from storage into it.")] + public class ES3FileCreate : ES3FileSettingsAction + { + [Tooltip("The relative or absolute path of the file this ES3File represents in storage.")] + public FsmString filePath; + [Tooltip("Whether we should sync this ES3File with the one in storage immediately after creating it.")] + public FsmBool syncWithFile; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + syncWithFile = true; + } + + public override void Enter() + { + var file = ScriptableObject.CreateInstance(); + file.file = new ES3File(filePath.Value, GetSettings(), syncWithFile.Value); + fsmES3File.Value = file; + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Synchronises this ES3File with a file in storage.")] + public class ES3FileSync : ES3FileSettingsAction + { + [Tooltip("The relative or absolute path of the file we want to synchronise with in storage.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + } + + public override void Enter() + { + if (overrideDefaultSettings.Value) + es3File.Sync(GetSettings()); + else + es3File.Sync(); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Saves the value to the ES3File with the given key.")] + public class ES3FileSave : ES3FileAction + { + [Tooltip("The unique key we want to use to identity the data we are saving.")] + public FsmString key; + [Tooltip("The value we want to save.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + key = "key"; + value = null; + } + + public override void Enter() + { + value.UpdateValue(); + es3File.Save(key.Value, value.GetValue()); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Loads a value with the given key from the ES3File")] + public class ES3FileLoad : ES3FileAction + { + [Tooltip("The unique key which identifies the data we're loading.")] + public FsmString key; + [Tooltip("The variable we want to use to store our loaded data.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + [Tooltip("Optional: A value to return if the key does not exist.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar defaultValue; + + public override void OnReset() + { + key = "key"; + value = null; + defaultValue = null; + } + + public override void Enter() + { + defaultValue.UpdateValue(); + if (defaultValue.GetValue() != null && !defaultValue.IsNone) + value.SetValue(es3File.Load(key.Value, defaultValue.GetValue())); + else + value.SetValue(es3File.Load(key.Value)); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Loads a value with the given key from the ES3File into an existing object")] + public class ES3FileLoadInto : ES3FileAction + { + [Tooltip("The unique key which identifies the data we're loading.")] + public FsmString key; + [Tooltip("The variable we want to load our data into.")] + [UIHint(UIHint.Variable)] + [HideTypeFilter] + public FsmVar value; + + public override void OnReset() + { + key = "key"; + value = null; + } + + public override void Enter() + { + value.UpdateValue(); + es3File.LoadInto(key.Value, value.GetValue()); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Loads the entire ES3 File as a string")] + public class ES3FileLoadRawString : ES3FileAction + { + [Tooltip("The FsmArray variable we want to use to store our string representing the file.")] + public FsmString str; + [Tooltip("Whether or not the data we're loading is Base-64 encoded. Usually this should be left unchecked.")] + public FsmBool useBase64Encoding; + + public override void OnReset() + { + str = null; + useBase64Encoding = false; + } + + public override void Enter() + { + if (useBase64Encoding.Value) + str.Value = System.Convert.ToBase64String(es3File.LoadRawBytes()); + else + str.Value = es3File.LoadRawString(); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Deletes a key from an ES3 File.")] + public class ES3FileDeleteKey : ES3FileAction + { + [Tooltip("The key we want to delete.")] + public FsmString key; + + public override void OnReset() + { + key = "key"; + } + + public override void Enter() + { + es3File.DeleteKey(key.Value); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Checks whether a key exists in an ES3File.")] + public class ES3FileKeyExists : ES3FileAction + { + [Tooltip("The key we want to check the existence of.")] + public FsmString key; + [Tooltip("Whether the key exists. This is set after the action runs.")] + public FsmBool exists; + + [Tooltip("This event is triggered if the key exists.")] + public FsmEvent existsEvent; + [Tooltip("This event is triggered if the key does not exist.")] + public FsmEvent doesNotExistEvent; + + public override void OnReset() + { + key = "key"; + exists = false; + existsEvent = null; + doesNotExistEvent = null; + } + + public override void Enter() + { + exists.Value = es3File.KeyExists(key.Value); + + if (exists.Value && existsEvent != null) + Fsm.Event(existsEvent); + else if (doesNotExistEvent != null) + Fsm.Event(doesNotExistEvent); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Gets an array of key names from an ES3File.")] + public class ES3FileGetKeys : ES3FileAction + { + [Tooltip("The string array variable we want to load our key names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray keys; + + public override void OnReset() + { + keys = null; + } + + public override void Enter() + { + keys.Values = es3File.GetKeys(); + keys.SaveChanges(); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Clears all keys from an ES3File.")] + public class ES3FileClear : ES3FileAction + { + public override void OnReset() { } + + public override void Enter() + { + es3File.Clear(); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Gets an array of key names from a file.")] + public class ES3FileSize : ES3FileAction + { + [Tooltip("The variable we want to put the file size into.")] + public FsmInt size; + + public override void OnReset() + { + size = 0; + } + + public override void Enter() + { + size.Value = es3File.Size(); + } + } + + #endregion + + #region ES3Cloud Actions + +#if !DISABLE_WEB + public abstract class ES3CloudAction : SettingsAction + { + [Tooltip("The URL to the ES3Cloud.php file on your server.")] + [RequiredField] + public FsmString url; + [Tooltip("The API key generated when installing ES3 Cloud on your server.")] + [RequiredField] + public FsmString apiKey; + + [Tooltip("The ES3File variable we're using.")] + [ObjectType(typeof(FsmES3File))] + [Title("ES3 File")] + [RequiredField] + public FsmObject fsmES3File; + + public ES3File es3File { get { return ((FsmES3File)fsmES3File.Value).file; } } + + [Tooltip("An error code if an error occurred.")] + public FsmInt errorCode; + + protected ES3Cloud cloud = null; + + public override void OnReset() + { + url = "http://www.myserver.com/ES3Cloud.php"; + errorCode = 0; + cloud = null; + fsmES3File = null; + } + + public override void OnEnter() + { + try + { + CreateES3Cloud(); + Enter(); + } + catch (System.Exception e) + { + HandleError(e.ToString()); + } + } + + public override void OnUpdate() + { + base.OnUpdate(); + if (cloud.isDone) + { + if (cloud.isError) + { + errorCode.Value = (int)cloud.errorCode; + errorMessage.Value = cloud.error; + Log("Error occurred when trying to perform operation with ES3Cloud: [Error " + cloud.errorCode + "] " + cloud.error); + Fsm.Event(errorEvent); + } + else + Finish(); + } + } + + protected void CreateES3Cloud() + { + cloud = new ES3Cloud(url.Value, apiKey.Value); + } + } + + public abstract class ES3CloudUserAction : ES3CloudAction + { + public FsmString user; + public FsmString password; + + public override void OnReset() + { + base.OnReset(); + user = ""; + password = ""; + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Synchronises a file in storage with the server.")] + public class ES3CloudSync : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.Sync(path.Value, settings)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Uploads a file in storage to the server, overwriting any existing files.")] + public class ES3CloudUploadFile : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.UploadFile(path.Value, user.Value, password.Value, settings)); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Uploads a file in storage to the server, overwriting any existing files.")] + public class ES3CloudUploadES3File : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.UploadFile(es3File, user.Value, password.Value)); + } + } + + [ActionCategory("Deprecated Easy Save 3 actions")] + [Tooltip("Downloads a file from the server, overwriting any existing files, or returning error code 3 if no file exists on the server.")] + public class ES3CloudDownloadES3File : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.DownloadFile(es3File, user.Value, password.Value)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Downloads a file from the server into an file, or returning error code 3 if no file exists on the server.")] + public class ES3CloudDownloadFile : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.DownloadFile(path.Value, user.Value, password.Value, settings)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Downloads a file from the server, overwriting any existing files, or returning error code 3 if no file exists on the server.")] + public class ES3CloudDeleteFile : ES3CloudUserAction + { + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.DeleteFile(path.Value, user.Value, password.Value, settings)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Renames a file on the server, overwriting any existing files, or returning error code 3 if no file exists on the server.")] + public class ES3CloudRenameFile : ES3CloudUserAction + { + [Tooltip("The name we want to rename the file to.")] + public FsmString newFilename; + + public override void Enter() + { + var settings = GetSettings(); + StartCoroutine(cloud.RenameFile(path.Value, newFilename.Value, user.Value, password.Value, settings)); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Downloads the names of all of the files on the server for the given user.")] + public class ES3CloudDownloadFilenames : ES3CloudUserAction + { + [Tooltip("The string array variable we want to load our file names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray filenames; + + [Tooltip("An optional search pattern containing '%' or '_' wildcards where '%' represents zero, one, or multiple characters, and '_' represents a single character. See https://www.w3schools.com/sql/sql_like.asp for more info.")] + public FsmString searchPattern; + + public override void OnReset() + { + filenames = null; + searchPattern = ""; + } + + public override void Enter() + { + StartCoroutine(cloud.SearchFilenames(searchPattern.Value, user.Value, password.Value)); + } + + public override void OnUpdate() + { + if (cloud != null && cloud.isDone) + { + var downloadedFilenames = cloud.filenames; + filenames.Resize(cloud.filenames.Length); + for (int i = 0; i < downloadedFilenames.Length; i++) + filenames.Set(i, downloadedFilenames[i]); + filenames.SaveChanges(); + } + base.OnUpdate(); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Downloads the names of all of the files on the server for the given user.")] + public class ES3CloudSearchFilenames : ES3CloudUserAction + { + [Tooltip("The string array variable we want to load our file names into.")] + [ArrayEditor(VariableType.String)] + public FsmArray filenames; + + [Tooltip("An optional search pattern containing '%' or '_' wildcards where '%' represents zero, one, or multiple characters, and '_' represents a single character. See https://www.w3schools.com/sql/sql_like.asp for more info.")] + public FsmString searchPattern; + + public override void OnReset() + { + filenames = null; + searchPattern = ""; + } + + public override void Enter() + { + StartCoroutine(cloud.SearchFilenames(searchPattern.Value, user.Value, password.Value)); + } + + public override void OnUpdate() + { + if (cloud != null && cloud.isDone) + { + var downloadedFilenames = cloud.filenames; + filenames.Resize(cloud.filenames.Length); + for (int i = 0; i < downloadedFilenames.Length; i++) + filenames.Set(i, downloadedFilenames[i]); + filenames.SaveChanges(); + } + base.OnUpdate(); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Determines when a file was last updated.")] + public class ES3CloudDownloadTimestamp : ES3CloudUserAction + { + [Tooltip("The Date and time the file was last updated, as a string formatted as yyyy-MM-ddTHH:mm:ss.")] + public FsmString timestamp; + + public override void OnReset() + { + timestamp = ""; + } + + public override void Enter() + { + StartCoroutine(cloud.DownloadFilenames(user.Value, password.Value)); + } + + public override void OnUpdate() + { + if (cloud != null && cloud.isDone) + timestamp = cloud.timestamp.ToString("s"); + base.OnUpdate(); + } + } + +#endif + #endregion + + #region ES3AutoSave actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Triggers Auto Save's Save method.")] + public class ES3AutoSaveSave : FsmStateAction + { + public override void OnEnter() + { + GameObject.Find("Easy Save 3 Manager").GetComponent().Save(); + Finish(); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Triggers Auto Save's Load method.")] + public class ES3AutoSaveLoad : FsmStateAction + { + public override void OnEnter() + { + GameObject.Find("Easy Save 3 Manager").GetComponent().Load(); + Finish(); + } + } + + #endregion + + #region ES3Cache actions + + [ActionCategory("Easy Save 3")] + [Tooltip("Caches a locally-stored file into memory.")] + public class CacheFile : SettingsAction + { + [Tooltip("The filename or file path of the file we want to cache.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + } + + public override void Enter() + { + ES3.CacheFile(filePath.Value, GetSettings()); + } + } + + [ActionCategory("Easy Save 3")] + [Tooltip("Stores a file in the cache to a local file.")] + public class StoreCachedFile : SettingsAction + { + [Tooltip("The filename or file path of the file we want to store.")] + public FsmString filePath; + + public override void OnReset() + { + filePath = "SaveFile.es3"; + } + + public override void Enter() + { + ES3.StoreCachedFile(filePath.Value, GetSettings()); + } + } + + #endregion + + public class PMDataWrapper + { + public Dictionary objs = null; + public Dictionary arrays = null; + + public object obj = null; + public object[] array = null; + + public PMDataWrapper(Fsm fsm, bool fsmVariables, bool globalVariables) + { + objs = new Dictionary(); + arrays = new Dictionary(); + + if (fsm == null) + return; + + // Get FSMVariables objects required based on whether the user wants to save local variables, global variables or both. + var variableLists = new List(); + if (fsmVariables) + variableLists.Add(fsm.Variables); + if (globalVariables) + variableLists.Add(FsmVariables.GlobalVariables); + + foreach (var variableList in variableLists) + { + foreach (var fsmVariable in variableList.GetAllNamedVariables()) + { + if (string.IsNullOrEmpty(fsmVariable.Name)) + continue; + + if (fsmVariable.GetType() == typeof(FsmArray)) + arrays.Add(fsmVariable.Name, ((FsmArray)fsmVariable).Values); + else + objs.Add(fsmVariable.Name, fsmVariable.RawValue); + } + } + } + + public PMDataWrapper(Dictionary objs, Dictionary arrays) + { + this.objs = objs; + this.arrays = arrays; + } + + public PMDataWrapper(object obj) + { + this.obj = obj; + } + + public PMDataWrapper(object[] array) + { + this.array = array; + } + + public PMDataWrapper() { } + + public void ApplyVariables(Fsm fsm, bool fsmVariables, bool globalVariables) + { + // Get FSMVariables objects required based on whether the user wants to save local variables, global variables or both. + var variableLists = new List(); + + if (fsmVariables) + variableLists.Add(fsm.Variables); + if (globalVariables) + variableLists.Add(FsmVariables.GlobalVariables); + + foreach (var variableList in variableLists) + { + foreach (var fsmVariable in variableList.GetAllNamedVariables()) + { + if (fsmVariable.GetType() == typeof(FsmArray)) + { + if (arrays.ContainsKey(fsmVariable.Name)) + ((FsmArray)fsmVariable).Values = arrays[fsmVariable.Name]; + } + else + { + if (objs.ContainsKey(fsmVariable.Name)) + fsmVariable.RawValue = objs[fsmVariable.Name]; + } + } + } + } + } +} + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3Properties("objs", "arrays", "obj", "array")] + public class ES3Type_PMDataWrapper : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_PMDataWrapper() : base(typeof(ES3PlayMaker.PMDataWrapper)) { Instance = this; priority = 1; } + + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (ES3PlayMaker.PMDataWrapper)obj; + + writer.WriteProperty("objs", instance.objs); + writer.WriteProperty("arrays", instance.arrays); + writer.WriteProperty("obj", instance.obj); + writer.WriteProperty("array", instance.array); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (ES3PlayMaker.PMDataWrapper)obj; + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + + case "objs": + instance.objs = reader.Read>(); + break; + case "arrays": + instance.arrays = reader.Read>(); + break; + case "obj": + instance.obj = reader.Read(); + break; + case "array": + instance.array = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new ES3PlayMaker.PMDataWrapper(); + ReadObject(reader, instance); + return instance; + } + } + + [UnityEngine.Scripting.Preserve] + [ES3Properties("ActiveStateName")] + public class ES3Type_Fsm : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Fsm() : base(typeof(Fsm)) { Instance = this; priority = 1; } + + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (Fsm)obj; + writer.WriteProperty("ActiveStateName", instance.ActiveStateName, ES3Type_string.Instance); + writer.WriteProperty("Variables", new ES3PlayMaker.PMDataWrapper(instance, true, false), ES3Type_PMDataWrapper.Instance); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (Fsm)obj; + if(!instance.Initialized) + { + // Toggle FSM Component twice to trigger initialisation. + instance.FsmComponent.enabled = !instance.FsmComponent.enabled; + instance.FsmComponent.enabled = !instance.FsmComponent.enabled; + } + + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + case "ActiveStateName": + instance.SetState(reader.Read(ES3Type_string.Instance)); + break; + case "Variables": + reader.Read(ES3Type_PMDataWrapper.Instance).ApplyVariables(instance, true, false); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new HutongGames.PlayMaker.Fsm(); + ReadObject(reader, instance); + return instance; + } + } + + [UnityEngine.Scripting.Preserve] + [ES3Properties("Fsm")] + public class ES3Type_PlayMakerFSM : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_PlayMakerFSM() : base(typeof(PlayMakerFSM)) { Instance = this; priority = 1; } + + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (PlayMakerFSM)obj; + + writer.WriteProperty("enabled", instance.enabled); + writer.WriteProperty("Fsm", instance.Fsm, ES3Type_Fsm.Instance); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (PlayMakerFSM)obj; + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "Fsm": + reader.ReadInto(instance.Fsm); + break; + default: + reader.Skip(); + break; + } + } + } + } +} + + +#endif diff --git a/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs.meta b/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs.meta new file mode 100644 index 00000000..4f8898ae --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5989e48214df74e2b9cced724ec2e5c8 +timeCreated: 1497259720 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Resources.meta b/Assets/ThirdPlugins/Easy Save 3/Resources.meta new file mode 100644 index 00000000..1faa4e02 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 351422e2355d248209d9fb550e0e424c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Resources/ES3.meta b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3.meta new file mode 100644 index 00000000..8e4925f7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70522bf48424749dda59e218b5a1e44b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset new file mode 100644 index 00000000..ee25d25d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -0,0 +1,44 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b340139c9e4d054f904d8b452798652, type: 3} + m_Name: ES3Defaults + m_EditorClassIdentifier: + settings: + _location: 0 + path: SaveFile.es3 + encryptionType: 0 + compressionType: 0 + encryptionPassword: password + directory: 0 + format: 0 + prettyPrint: 1 + bufferSize: 2048 + saveChildren: 1 + typeChecking: 1 + safeReflection: 1 + memberReferenceMode: 0 + referenceMode: 2 + serializationDepthLimit: 64 + assemblyNames: + - Assembly-CSharp + - StompyRobot.SRDebugger + - StompyRobot.SRF + - PsdPlugin + - StompyRobot.SRDebugger.Editor + - StompyRobot.SRF.Editor + showAdvancedSettings: 0 + addMgrToSceneAutomatically: 0 + autoUpdateReferences: 1 + addAllPrefabsToManager: 1 + logDebugInfo: 0 + logWarnings: 1 + logErrors: 1 diff --git a/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset.meta b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset.meta new file mode 100644 index 00000000..ce2044bb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Resources/ES3/ES3Defaults.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ebb37ab5363e4da2aaa79b8bcbe6517 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts.meta new file mode 100644 index 00000000..9a10374c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 86ef77fdddf9947f290776206b1f23ab +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes.meta new file mode 100644 index 00000000..af485a91 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3195251321eef445b65f7c8d345e743 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs new file mode 100644 index 00000000..73dfbc0f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs @@ -0,0 +1,7 @@ +using System; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property)] +public class ES3Serializable : Attribute{} + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property)] +public class ES3NonSerializable : Attribute { } diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs.meta new file mode 100644 index 00000000..e18e2d3b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Attributes/ES3Attributes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e29c69181d1dff642b20c218819fe2e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save.meta new file mode 100644 index 00000000..cf53efc7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a01ff460e5e0b4f58bd28b3520b7ff2c +folderAsset: yes +timeCreated: 1502446431 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs new file mode 100644 index 00000000..6420273b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs @@ -0,0 +1,55 @@ +using UnityEngine; +using System.Collections.Generic; + +public class ES3AutoSave : MonoBehaviour, ISerializationCallbackReceiver +{ + public bool saveLayer = true; + public bool saveTag = true; + public bool saveName = true; + public bool saveHideFlags = true; + public bool saveActive = true; + public bool saveChildren = false; + + private bool isQuitting = false; + + //[HideInInspector] + public List componentsToSave = new List(); + + public void Reset() + { + // Initialise saveLayer (etc) to false for all new Components. + saveLayer = false; + saveTag = false; + saveName = false; + saveHideFlags = false; + saveActive = false; + saveChildren = false; + } + + public void Awake() + { + if (ES3AutoSaveMgr.Current == null) + ES3Internal.ES3Debug.LogWarning("No GameObjects in this scene will be autosaved because there is no Easy Save 3 Manager. To add a manager to this scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene.", this); + else + ES3AutoSaveMgr.AddAutoSave(this); + } + + public void OnApplicationQuit() + { + isQuitting = true; + } + + public void OnDestroy() + { + // If this is being destroyed, but not because the application is quitting, + // remove the AutoSave from the manager. + if (!isQuitting) + ES3AutoSaveMgr.RemoveAutoSave(this); + } + public void OnBeforeSerialize() { } + public void OnAfterDeserialize() + { + // Remove any null Components + componentsToSave.RemoveAll(c => c == null || c.GetType() == typeof(Component)); + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs.meta new file mode 100644 index 00000000..1bc73333 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSave.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9cfcc9ceea0bf419cb3bcaf548c2600d +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs new file mode 100644 index 00000000..11837a63 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs @@ -0,0 +1,133 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +public class ES3AutoSaveMgr : MonoBehaviour +{ + public static ES3AutoSaveMgr _current = null; + public static ES3AutoSaveMgr Current + { + get + { + if (_current == null /*|| _current.gameObject.scene != SceneManager.GetActiveScene()*/) + { + var scene = SceneManager.GetActiveScene(); + var roots = scene.GetRootGameObjects(); + + // First, look for Easy Save 3 Manager in the top-level. + foreach (var root in roots) + if (root.name == "Easy Save 3 Manager") + return _current = root.GetComponent(); + + // If the user has moved or renamed the Easy Save 3 Manager, we need to perform a deep search. + foreach (var root in roots) + if ((_current = root.GetComponentInChildren()) != null) + return _current; + } + return _current; + } + } + + // Included for backwards compatibility. + public static ES3AutoSaveMgr Instance + { + get { return Current; } + } + + public enum LoadEvent { None, Awake, Start } + public enum SaveEvent { None, OnApplicationQuit, OnApplicationPause } + + public string key = System.Guid.NewGuid().ToString(); + public SaveEvent saveEvent = SaveEvent.OnApplicationQuit; + public LoadEvent loadEvent = LoadEvent.Awake; + public ES3SerializableSettings settings = new ES3SerializableSettings("AutoSave.es3", ES3.Location.Cache); + + public HashSet autoSaves = new HashSet(); + + public void Save() + { + if (autoSaves == null || autoSaves.Count == 0) + return; + + // If we're using caching and we've not already cached this file, cache it. + if (settings.location == ES3.Location.Cache && !ES3.FileExists(settings)) + ES3.CacheFile(settings); + + if (autoSaves == null || autoSaves.Count == 0) + { + ES3.DeleteKey(key, settings); + } + else + { + var gameObjects = new List(); + foreach (var autoSave in autoSaves) + // If the ES3AutoSave component is disabled, don't save it. + if (autoSave.enabled) + gameObjects.Add(autoSave.gameObject); + ES3.Save(key, gameObjects.ToArray(), settings); + } + + if(settings.location == ES3.Location.Cache && ES3.FileExists(settings)) + ES3.StoreCachedFile(settings); + } + + public void Load() + { + try + { + // If we're using caching and we've not already cached this file, cache it. + if (settings.location == ES3.Location.Cache && !ES3.FileExists(settings)) + ES3.CacheFile(settings); + } + catch { } + + ES3.Load(key, new GameObject[0], settings); + } + + void Start() + { + if(loadEvent == LoadEvent.Start) + Load(); + } + + public void Awake() + { + autoSaves = new HashSet(); + + foreach (var go in this.gameObject.scene.GetRootGameObjects()) + autoSaves.UnionWith(go.GetComponentsInChildren(true)); + + _current = this; + + if (loadEvent == LoadEvent.Awake) + Load(); + } + + void OnApplicationQuit() + { + if(saveEvent == SaveEvent.OnApplicationQuit) + Save(); + } + + void OnApplicationPause(bool paused) + { + if( (saveEvent == SaveEvent.OnApplicationPause || + (Application.isMobilePlatform && saveEvent == SaveEvent.OnApplicationQuit)) && paused) + Save(); + } + + /* Register an ES3AutoSave with the ES3AutoSaveMgr, if there is one */ + public static void AddAutoSave(ES3AutoSave autoSave) + { + if(ES3AutoSaveMgr.Current != null) + ES3AutoSaveMgr.Current.autoSaves.Add(autoSave); + } + + /* Remove an ES3AutoSave from the ES3AutoSaveMgr, for example if it's GameObject has been destroyed */ + public static void RemoveAutoSave(ES3AutoSave autoSave) + { + if(ES3AutoSaveMgr.Current != null) + ES3AutoSaveMgr.Current.autoSaves.Remove(autoSave); + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs.meta new file mode 100644 index 00000000..39da0af6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9107aee0ced90422da95f0b31680501f +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging.meta new file mode 100644 index 00000000..7d3f40a7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c00267afddf624bb19ac24ce8076f9e4 +folderAsset: yes +timeCreated: 1518175259 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs new file mode 100644 index 00000000..8d410623 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace ES3Internal +{ + internal static class ES3Debug + { + private const string disableInfoMsg = "\nTo disable these messages from Easy Save, go to Window > Easy Save 3 > Settings, and uncheck 'Log Info'"; + private const string disableWarningMsg = "\nTo disable warnings from Easy Save, go to Window > Easy Save 3 > Settings, and uncheck 'Log Warnings'"; + private const string disableErrorMsg = "\nTo disable these error messages from Easy Save, go to Window > Easy Save 3 > Settings, and uncheck 'Log Errors'"; + + private const char indentChar = '-'; + + public static void Log(string msg, Object context = null, int indent=0) + { + if (!ES3Settings.defaultSettingsScriptableObject.logDebugInfo) + return; + else if (context != null) + Debug.LogFormat(context, Indent(indent) + msg + disableInfoMsg); + else + Debug.LogFormat(context, Indent(indent) + msg); + } + + public static void LogWarning(string msg, Object context=null, int indent = 0) + { + if (!ES3Settings.defaultSettingsScriptableObject.logWarnings) + return; + else if (context != null) + Debug.LogWarningFormat(context, Indent(indent) + msg + disableWarningMsg); + else + Debug.LogWarningFormat(context, Indent(indent) + msg + disableWarningMsg); + } + + public static void LogError(string msg, Object context = null, int indent = 0) + { + if (!ES3Settings.defaultSettingsScriptableObject.logErrors) + return; + else if (context != null) + Debug.LogErrorFormat(context, Indent(indent) + msg + disableErrorMsg); + else + Debug.LogErrorFormat(context, Indent(indent) + msg + disableErrorMsg); + } + + private static string Indent(int size) + { + if (size < 0) + return ""; + return new string(indentChar, size); + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs.meta new file mode 100644 index 00000000..d26c5ba8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Debugging/ES3Debug.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9f97d288c55524622a117171a19d3225 +timeCreated: 1518175265 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs new file mode 100644 index 00000000..17d7f05b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs @@ -0,0 +1,1514 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; +#if UNITY_2018_3_OR_NEWER +using UnityEngine.Networking; +#endif + +public static class ES3 +{ + public enum Location { File, PlayerPrefs, InternalMS, Resources, Cache }; + public enum Directory { PersistentDataPath, DataPath } + public enum EncryptionType { None, AES }; + public enum CompressionType { None, Gzip}; + public enum Format { JSON }; + public enum ReferenceMode { ByRef, ByValue, ByRefAndValue}; + + #region ES3.Save + + // Saves the value to the default file with the given key. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + public static void Save(string key, object value) + { + Save(key, value, new ES3Settings()); + } + + /// Saves the value to a file with the given key. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The relative or absolute path of the file we want to store our value to. + public static void Save(string key, object value, string filePath) + { + Save(key, value, new ES3Settings(filePath)); + } + + /// Saves the value to a file with the given key. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The relative or absolute path of the file we want to store our value to. + /// The settings we want to use to override the default settings. + public static void Save(string key, object value, string filePath, ES3Settings settings) + { + Save(key, value, new ES3Settings(filePath, settings)); + } + + /// Saves the value to a file with the given key. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The settings we want to use to override the default settings. + public static void Save(string key, object value, ES3Settings settings) + { + Save(key, value, settings); + } + + /// Saves the value to the default file with the given key. + /// The type of the data that we want to save. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + public static void Save(string key, T value) + { + Save(key, value, new ES3Settings()); + } + + /// Saves the value to a file with the given key. + /// The type of the data that we want to save. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The relative or absolute path of the file we want to store our value to. + public static void Save(string key, T value, string filePath) + { + Save(key, value, new ES3Settings(filePath)); + } + + /// Saves the value to a file with the given key. + /// The type of the data that we want to save. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The relative or absolute path of the file we want to store our value to. + /// The settings we want to use to override the default settings. + public static void Save(string key, T value, string filePath, ES3Settings settings) + { + Save(key, value, new ES3Settings(filePath, settings)); + } + + /// Saves the value to a file with the given key. + /// The type of the data that we want to save. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + /// The settings we want to use to override the default settings. + public static void Save(string key, T value, ES3Settings settings) + { + if (settings.location == Location.Cache) + { + ES3File.GetOrCreateCachedFile(settings).Save(key, value); + return; + } + + using (var writer = ES3Writer.Create(settings)) + { + writer.Write(key, value); + writer.Save(); + } + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The bytes we want to store. + public static void SaveRaw(byte[] bytes) + { + SaveRaw(bytes, new ES3Settings()); + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The bytes we want to store. + /// The relative or absolute path of the file we want to store our bytes to. + public static void SaveRaw(byte[] bytes, string filePath) + { + SaveRaw(bytes, new ES3Settings(filePath)); + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The bytes we want to store. + /// The relative or absolute path of the file we want to store our bytes to. + /// The settings we want to use to override the default settings. + public static void SaveRaw(byte[] bytes, string filePath, ES3Settings settings) + { + SaveRaw(bytes, new ES3Settings(filePath, settings)); + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The bytes we want to store. + /// The settings we want to use to override the default settings. + public static void SaveRaw(byte[] bytes, ES3Settings settings) + { + if (settings.location == Location.Cache) + { + ES3File.GetOrCreateCachedFile(settings).SaveRaw(bytes, settings); + return; + } + + using (var stream = ES3Stream.CreateStream(settings, ES3FileMode.Write)) + { + stream.Write(bytes, 0, bytes.Length); + } + ES3IO.CommitBackup(settings); + } + + /// Creates or overwrites the default file with the specified raw bytes. + /// The string we want to store. + public static void SaveRaw(string str) + { + SaveRaw(str, new ES3Settings()); + } + + /// Creates or overwrites the default file with the specified raw bytes. + /// The string we want to store. + /// The relative or absolute path of the file we want to store our bytes to. + public static void SaveRaw(string str, string filePath) + { + SaveRaw(str, new ES3Settings(filePath)); + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The string we want to store. + /// The relative or absolute path of the file we want to store our bytes to. + /// The settings we want to use to override the default settings. + public static void SaveRaw(string str, string filePath, ES3Settings settings) + { + SaveRaw(str, new ES3Settings(filePath, settings)); + } + + /// Creates or overwrites a file with the specified raw bytes. + /// The string we want to store. + /// The settings we want to use to override the default settings. + public static void SaveRaw(string str, ES3Settings settings) + { + var bytes = settings.encoding.GetBytes(str); + SaveRaw(bytes, settings); + } + + /// Creates or appends the specified bytes to a file. + /// The bytes we want to append. + public static void AppendRaw(byte[] bytes) + { + AppendRaw(bytes, new ES3Settings()); + } + + /// Creates or appends the specified bytes to a file. + /// The bytes we want to append. + /// The relative or absolute path of the file we want to append our bytes to. + /// The settings we want to use to override the default settings. + public static void AppendRaw(byte[] bytes, string filePath, ES3Settings settings) + { + AppendRaw(bytes, new ES3Settings(filePath, settings)); + } + + /// Creates or appends the specified bytes to a file. + /// The bytes we want to append. + /// The settings we want to use to override the default settings. + public static void AppendRaw(byte[] bytes, ES3Settings settings) + { + if (settings.location == Location.Cache) + { + ES3File.GetOrCreateCachedFile(settings).AppendRaw(bytes); + return; + } + + ES3Settings newSettings = new ES3Settings(settings.path, settings); + newSettings.encryptionType = EncryptionType.None; + newSettings.compressionType = CompressionType.None; + + using (var stream = ES3Stream.CreateStream(newSettings, ES3FileMode.Append)) + stream.Write(bytes, 0, bytes.Length); + } + + /// Creates or appends the specified bytes to the default file. + /// The bytes we want to append. + public static void AppendRaw(string str) + { + AppendRaw(str, new ES3Settings()); + } + + /// Creates or appends the specified bytes to a file. + /// The bytes we want to append. + /// The relative or absolute path of the file we want to append our bytes to. + /// The settings we want to use to override the default settings. + public static void AppendRaw(string str, string filePath, ES3Settings settings) + { + AppendRaw(str, new ES3Settings(filePath, settings)); + } + + /// Creates or appends the specified bytes to a file. + /// The bytes we want to append. + /// The settings we want to use to override the default settings. + public static void AppendRaw(string str, ES3Settings settings) + { + var bytes = settings.encoding.GetBytes(str); + ES3Settings newSettings = new ES3Settings(settings.path, settings); + newSettings.encryptionType = EncryptionType.None; + newSettings.compressionType = CompressionType.None; + + if (settings.location == Location.Cache) + { + ES3File.GetOrCreateCachedFile(settings).SaveRaw(bytes); + return; + } + + using (var stream = ES3Stream.CreateStream(newSettings, ES3FileMode.Append)) + stream.Write(bytes, 0, bytes.Length); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The relative or absolute path of the PNG or JPG file we want to create. + public static void SaveImage(Texture2D texture, string imagePath) + { + SaveImage(texture, new ES3Settings(imagePath)); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The relative or absolute path of the PNG or JPG file we want to create. + public static void SaveImage(Texture2D texture, string imagePath, ES3Settings settings) + { + SaveImage(texture, new ES3Settings(imagePath, settings)); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The settings we want to use to override the default settings. + public static void SaveImage(Texture2D texture, ES3Settings settings) + { + SaveImage(texture, 75, settings); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The relative or absolute path of the PNG or JPG file we want to create. + public static void SaveImage(Texture2D texture, int quality, string imagePath) + { + SaveImage(texture, new ES3Settings(imagePath)); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The relative or absolute path of the PNG or JPG file we want to create. + public static void SaveImage(Texture2D texture, int quality, string imagePath, ES3Settings settings) + { + SaveImage(texture, quality, new ES3Settings(imagePath, settings)); + } + + /// Saves a Texture2D as a PNG or JPG, depending on the file extension used for the filePath. + /// The Texture2D we want to save as a JPG or PNG. + /// The settings we want to use to override the default settings. + public static void SaveImage(Texture2D texture, int quality, ES3Settings settings) + { + // Get the file extension to determine what format we want to save the image as. + string extension = ES3IO.GetExtension(settings.path).ToLower(); + if (string.IsNullOrEmpty(extension)) + throw new System.ArgumentException("File path must have a file extension when using ES3.SaveImage."); + byte[] bytes; + if (extension == ".jpg" || extension == ".jpeg") + bytes = texture.EncodeToJPG(quality); + else if (extension == ".png") + bytes = texture.EncodeToPNG(); + else + throw new System.ArgumentException("File path must have extension of .png, .jpg or .jpeg when using ES3.SaveImage."); + + ES3.SaveRaw(bytes, settings); + } + + #endregion + + #region ES3.Load + + /* Standard load methods */ + + /// Loads the value from a file with the given key. + /// The key which identifies the value we want to load. + public static object Load(string key) + { + return Load(key, new ES3Settings()); + } + + /// Loads the value from a file with the given key. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + public static object Load(string key, string filePath) + { + return Load(key, new ES3Settings(filePath)); + } + + /// Loads the value from a file with the given key. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The settings we want to use to override the default settings. + public static object Load(string key, string filePath, ES3Settings settings) + { + return Load(key, new ES3Settings(filePath, settings)); + } + + /// Loads the value from a file with the given key. + /// The key which identifies the value we want to load. + /// The settings we want to use to override the default settings. + public static object Load(string key, ES3Settings settings) + { + return Load(key, settings); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + public static T Load(string key) + { + return Load(key, new ES3Settings()); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + public static T Load(string key, string filePath) + { + return Load(key, new ES3Settings(filePath)); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The settings we want to use to override the default settings. + public static T Load(string key, string filePath, ES3Settings settings) + { + return Load(key, new ES3Settings(filePath, settings)); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The settings we want to use to override the default settings. + public static T Load(string key, ES3Settings settings) + { + if (settings.location == Location.Cache) + return ES3File.GetOrCreateCachedFile(settings).Load(key); + + using (var reader = ES3Reader.Create(settings)) + { + if (reader == null) + throw new System.IO.FileNotFoundException("File \"" + settings.FullPath + "\" could not be found."); + return reader.Read(key); + } + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The value we want to return if the file or key does not exist. + public static T Load(string key, T defaultValue) + { + return Load(key, defaultValue, new ES3Settings()); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The value we want to return if the file or key does not exist. + public static T Load(string key, string filePath, T defaultValue) + { + return Load(key, defaultValue, new ES3Settings(filePath)); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The value we want to return if the file or key does not exist. + /// The settings we want to use to override the default settings. + public static T Load(string key, string filePath, T defaultValue, ES3Settings settings) + { + return Load(key, defaultValue, new ES3Settings(filePath, settings)); + } + + /// Loads the value from a file with the given key. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The value we want to return if the file or key does not exist. + /// The settings we want to use to override the default settings. + public static T Load(string key, T defaultValue, ES3Settings settings) + { + if (settings.location == Location.Cache) + return ES3File.GetOrCreateCachedFile(settings).Load(key, defaultValue); + + using (var reader = ES3Reader.Create(settings)) + { + if (reader == null) + return defaultValue; + return reader.Read(key, defaultValue); + } + } + + /* Self-assigning load methods */ + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The key which identifies the value we want to load. + /// The object we want to load the value into. + public static void LoadInto(string key, object obj) where T : class + { + LoadInto(key, obj, new ES3Settings()); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The object we want to load the value into. + public static void LoadInto(string key, string filePath, object obj) + { + LoadInto(key, obj, new ES3Settings(filePath)); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The object we want to load the value into. + /// The settings we want to use to override the default settings. + public static void LoadInto(string key, string filePath, object obj, ES3Settings settings) + { + LoadInto(key, obj, new ES3Settings(filePath, settings)); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The key which identifies the value we want to load. + /// The object we want to load the value into. + /// The settings we want to use to override the default settings. + public static void LoadInto(string key, object obj, ES3Settings settings) + { + LoadInto(key, obj, settings); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The object we want to load the value into. + public static void LoadInto(string key, T obj) where T : class + { + LoadInto(key, obj, new ES3Settings()); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The object we want to load the value into. + public static void LoadInto(string key, string filePath, T obj) where T : class + { + LoadInto(key, obj, new ES3Settings(filePath)); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The relative or absolute path of the file we want to load from. + /// The object we want to load the value into. + /// The settings we want to use to override the default settings. + public static void LoadInto(string key, string filePath, T obj, ES3Settings settings) where T : class + { + LoadInto(key, obj, new ES3Settings(filePath, settings)); + } + + /// Loads the value from a file with the given key into an existing object, rather than creating a new instance. + /// The type of the data that we want to load. + /// The key which identifies the value we want to load. + /// The object we want to load the value into. + /// The settings we want to use to override the default settings. + public static void LoadInto(string key, T obj, ES3Settings settings) where T : class + { + if (ES3Reflection.IsValueType(obj.GetType())) + throw new InvalidOperationException("ES3.LoadInto can only be used with reference types, but the data you're loading is a value type. Use ES3.Load instead."); + + if (settings.location == Location.Cache) + { + ES3File.GetOrCreateCachedFile(settings).LoadInto(key, obj); + return; + } + + if (settings == null) settings = new ES3Settings(); + using (var reader = ES3Reader.Create(settings)) + { + if (reader == null) + throw new System.IO.FileNotFoundException("File \"" + settings.FullPath + "\" could not be found."); + reader.ReadInto(key, obj); + } + } + + /* LoadString method, as this can be difficult with overloads. */ + + /// Loads the value from a file with the given key. + /// The key which identifies the value we want to load. + /// The value we want to return if the file or key does not exist. + /// The relative or absolute path of the file we want to load from. + public static string LoadString(string key, string defaultValue, string filePath=null) + { + return Load(key, filePath, defaultValue, new ES3Settings(filePath)); + } + + #endregion + + #region Other ES3.Load Methods + + /// Loads the default file as a byte array. + public static byte[] LoadRawBytes() + { + return LoadRawBytes(new ES3Settings()); + } + + /// Loads a file as a byte array. + /// The relative or absolute path of the file we want to load as a byte array. + public static byte[] LoadRawBytes(string filePath) + { + return LoadRawBytes(new ES3Settings(filePath)); + } + + /// Loads a file as a byte array. + /// The relative or absolute path of the file we want to load as a byte array. + /// The settings we want to use to override the default settings. + public static byte[] LoadRawBytes(string filePath, ES3Settings settings) + { + return LoadRawBytes(new ES3Settings(filePath, settings)); + } + + /// Loads the default file as a byte array. + /// The settings we want to use to override the default settings. + public static byte[] LoadRawBytes(ES3Settings settings) + { + if (settings.location == Location.Cache) + return ES3File.GetOrCreateCachedFile(settings).LoadRawBytes(); + + using (var stream = ES3Stream.CreateStream(settings, ES3FileMode.Read)) + { + if (stream == null) + throw new System.IO.FileNotFoundException("File "+settings.path+" could not be found"); + + if (stream.GetType() == typeof(System.IO.Compression.GZipStream)) + { + var gZipStream = (System.IO.Compression.GZipStream)stream; + using (var ms = new System.IO.MemoryStream()) + { + ES3Stream.CopyTo(gZipStream, ms); + return ms.ToArray(); + } + } + else + { + var bytes = new byte[stream.Length]; + stream.Read(bytes, 0, bytes.Length); + return bytes; + } + } + + /*if(settings.location == Location.File) + return ES3IO.ReadAllBytes(settings.FullPath); + else if(settings.location == Location.PlayerPrefs) + return System.Convert.FromBase64String(PlayerPrefs.GetString(settings.FullPath)); + else if(settings.location == Location.Resources) + { + var textAsset = Resources.Load(settings.FullPath); + return textAsset.bytes; + } + return null;*/ + } + + /// Loads the default file as a byte array. + public static string LoadRawString() + { + return LoadRawString(new ES3Settings()); + } + + /// Loads a file as a byte array. + /// The relative or absolute path of the file we want to load as a byte array. + /// The settings we want to use to override the default settings. + public static string LoadRawString(string filePath) + { + return LoadRawString(new ES3Settings(filePath)); + } + + /// Loads a file as a byte array. + /// The relative or absolute path of the file we want to load as a byte array. + /// The settings we want to use to override the default settings. + public static string LoadRawString(string filePath, ES3Settings settings) + { + return LoadRawString(new ES3Settings(filePath, settings)); + } + + /// Loads the default file as a byte array. + /// The settings we want to use to override the default settings. + public static string LoadRawString(ES3Settings settings) + { + var bytes = ES3.LoadRawBytes(settings); + return settings.encoding.GetString(bytes, 0, bytes.Length); + } + + /// Loads a PNG or JPG as a Texture2D. + /// The relative or absolute path of the PNG or JPG file we want to load as a Texture2D. + /// The settings we want to use to override the default settings. + public static Texture2D LoadImage(string imagePath) + { + return LoadImage(new ES3Settings(imagePath)); + } + + /// Loads a PNG or JPG as a Texture2D. + /// The relative or absolute path of the PNG or JPG file we want to load as a Texture2D. + /// The settings we want to use to override the default settings. + public static Texture2D LoadImage(string imagePath, ES3Settings settings) + { + return LoadImage(new ES3Settings(imagePath, settings)); + } + + /// Loads a PNG or JPG as a Texture2D. + /// The settings we want to use to override the default settings. + public static Texture2D LoadImage(ES3Settings settings) + { + byte[] bytes = ES3.LoadRawBytes(settings); + return LoadImage(bytes); + } + + /// Loads a PNG or JPG as a Texture2D. + /// The raw bytes of the PNG or JPG. + public static Texture2D LoadImage(byte[] bytes) + { + var texture = new Texture2D(1, 1); + texture.LoadImage(bytes); + return texture; + } + + /// Loads an audio file as an AudioClip. Note that MP3 files are not supported on standalone platforms and Ogg Vorbis files are not supported on mobile platforms. + /// The relative or absolute path of the audio file we want to load as an AudioClip. + public static AudioClip LoadAudio(string audioFilePath +#if UNITY_2018_3_OR_NEWER + , AudioType audioType +#endif + ) + { + return LoadAudio(audioFilePath, +#if UNITY_2018_3_OR_NEWER + audioType, +#endif + new ES3Settings()); + } + + /// Loads an audio file as an AudioClip. Note that MP3 files are not supported on standalone platforms and Ogg Vorbis files are not supported on mobile platforms. + /// The relative or absolute path of the audio file we want to load as an AudioClip. + /// The settings we want to use to override the default settings. + public static AudioClip LoadAudio(string audioFilePath, +#if UNITY_2018_3_OR_NEWER + AudioType audioType, +#endif + ES3Settings settings) + { + if (settings.location != Location.File) + throw new InvalidOperationException("ES3.LoadAudio can only be used with the File save location"); + + if (Application.platform == RuntimePlatform.WebGLPlayer) + throw new InvalidOperationException("You cannot use ES3.LoadAudio with WebGL"); + + string extension = ES3IO.GetExtension(audioFilePath).ToLower(); + + if (extension == ".mp3" && (Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.OSXPlayer)) + throw new System.InvalidOperationException("You can only load Ogg, WAV, XM, IT, MOD or S3M on Unity Standalone"); + + if (extension == ".ogg" && (Application.platform == RuntimePlatform.IPhonePlayer + || Application.platform == RuntimePlatform.Android + || Application.platform == RuntimePlatform.WSAPlayerARM)) + throw new System.InvalidOperationException("You can only load MP3, WAV, XM, IT, MOD or S3M on Unity Standalone"); + + var newSettings = new ES3Settings(audioFilePath, settings); + +#if UNITY_2018_3_OR_NEWER + using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file://" + newSettings.FullPath, audioType)) + { + www.SendWebRequest(); + + while (!www.isDone) + { + // Wait for it to load. + } + + if (ES3WebClass.IsNetworkError(www)) + throw new System.Exception(www.error); + else + return DownloadHandlerAudioClip.GetContent(www); + } +#elif UNITY_2017_1_OR_NEWER + WWW www = new WWW(newSettings.FullPath); + + while(!www.isDone) + { + // Wait for it to load. + } + + if(!string.IsNullOrEmpty(www.error)) + throw new System.Exception(www.error); +#else + WWW www = new WWW("file://"+newSettings.FullPath); + + while(!www.isDone) + { + // Wait for it to load. + } + + if(!string.IsNullOrEmpty(www.error)) + throw new System.Exception(www.error); +#endif + +#if UNITY_2017_3_OR_NEWER && !UNITY_2018_3_OR_NEWER + return www.GetAudioClip(true); +#elif UNITY_5_6_OR_NEWER && !UNITY_2018_3_OR_NEWER + return WWWAudioExtensions.GetAudioClip(www); +#endif + } + + #endregion + + #region Serialize/Deserialize + + public static byte[] Serialize(T value, ES3Settings settings=null) + { + if (settings == null) settings = new ES3Settings(); + + using (var ms = new System.IO.MemoryStream()) + { + using (var stream = ES3Stream.CreateStream(ms, settings, ES3FileMode.Write)) + { + using (var baseWriter = ES3Writer.Create(stream, settings, false, false)) + { + // If T is object, use the value to get it's type. Otherwise, use T so that it works with inheritence. + var type = typeof(T) != typeof(object) ? typeof(T) : (value == null ? typeof(T) : value.GetType()); + baseWriter.Write(value, ES3TypeMgr.GetOrCreateES3Type(type), settings.referenceMode); + } + + return ms.ToArray(); + } + } + } + + public static T Deserialize(byte[] bytes, ES3Settings settings=null) + { + return (T)Deserialize(ES3TypeMgr.GetOrCreateES3Type(typeof(T)), bytes, settings); + } + + internal static object Deserialize(ES3Types.ES3Type type, byte[] bytes, ES3Settings settings = null) + { + if (settings == null) + settings = new ES3Settings(); + + using (var ms = new System.IO.MemoryStream(bytes, false)) + using (var stream = ES3Stream.CreateStream(ms, settings, ES3FileMode.Read)) + using (var reader = ES3Reader.Create(stream, settings, false)) + return reader.Read(type); + } + + public static void DeserializeInto(byte[] bytes, T obj, ES3Settings settings = null) where T : class + { + DeserializeInto(ES3TypeMgr.GetOrCreateES3Type(typeof(T)), bytes, obj, settings); + } + + public static void DeserializeInto(ES3Types.ES3Type type, byte[] bytes, T obj, ES3Settings settings = null) where T : class + { + if (settings == null) + settings = new ES3Settings(); + + using (var ms = new System.IO.MemoryStream(bytes, false)) + using (var reader = ES3Reader.Create(ms, settings, false)) + reader.ReadInto(obj, type); + } + + #endregion + + #region Other ES3 Methods + + public static byte[] EncryptBytes(byte[] bytes, string password=null) + { + if (string.IsNullOrEmpty(password)) + password = ES3Settings.defaultSettings.encryptionPassword; + return new AESEncryptionAlgorithm().Encrypt(bytes, password, ES3Settings.defaultSettings.bufferSize); + } + + public static byte[] DecryptBytes(byte[] bytes, string password=null) + { + if (string.IsNullOrEmpty(password)) + password = ES3Settings.defaultSettings.encryptionPassword; + return new AESEncryptionAlgorithm().Decrypt(bytes, password, ES3Settings.defaultSettings.bufferSize); + } + + public static string EncryptString(string str, string password=null) + { + return ES3Settings.defaultSettings.encoding.GetString(EncryptBytes(ES3Settings.defaultSettings.encoding.GetBytes(str), password)); + } + + public static string DecryptString(string str, string password=null) + { + return ES3Settings.defaultSettings.encoding.GetString(DecryptBytes(ES3Settings.defaultSettings.encoding.GetBytes(str), password)); + } + + /// Deletes the default file. + public static void DeleteFile() + { + DeleteFile(new ES3Settings()); + } + + /// Deletes the file at the given path using the default settings. + /// The relative or absolute path of the file we wish to delete. + public static void DeleteFile(string filePath) + { + DeleteFile(new ES3Settings(filePath)); + } + + /// Deletes the file at the given path using the settings provided. + /// The relative or absolute path of the file we wish to delete. + /// The settings we want to use to override the default settings. + public static void DeleteFile(string filePath, ES3Settings settings) + { + DeleteFile(new ES3Settings(filePath, settings)); + } + + /// Deletes the file specified by the ES3Settings object provided as a parameter. + /// The settings we want to use to override the default settings. + public static void DeleteFile(ES3Settings settings) + { + if (settings.location == Location.File) + ES3IO.DeleteFile(settings.FullPath); + else if (settings.location == Location.PlayerPrefs) + PlayerPrefs.DeleteKey(settings.FullPath); + else if (settings.location == Location.Cache) + ES3File.RemoveCachedFile(settings); + else if (settings.location == Location.Resources) + throw new System.NotSupportedException("Deleting files from Resources is not supported."); + } + + /// Copies a file from one path to another. + /// The relative or absolute path of the file we want to copy. + /// The relative or absolute path of the copy we want to create. + public static void CopyFile(string oldFilePath, string newFilePath) + { + CopyFile(new ES3Settings(oldFilePath), new ES3Settings(newFilePath)); + } + + /// Copies a file from one location to another, using the ES3Settings provided to override any default settings. + /// The relative or absolute path of the file we want to copy. + /// The relative or absolute path of the copy we want to create. + /// The settings we want to use when copying the old file. + /// The settings we want to use when creating the new file. + public static void CopyFile(string oldFilePath, string newFilePath, ES3Settings oldSettings, ES3Settings newSettings) + { + CopyFile(new ES3Settings(oldFilePath, oldSettings), new ES3Settings(newFilePath, newSettings)); + } + + /// Copies a file from one location to another, using the ES3Settings provided to determine the locations. + /// The settings we want to use when copying the old file. + /// The settings we want to use when creating the new file. + public static void CopyFile(ES3Settings oldSettings, ES3Settings newSettings) + { + if (oldSettings.location != newSettings.location) + throw new InvalidOperationException("Cannot copy file from " + oldSettings.location + " to " + newSettings.location + ". Location must be the same for both source and destination."); + + if (oldSettings.location == Location.File) + { + if (ES3IO.FileExists(oldSettings.FullPath)) + { + ES3IO.DeleteFile(newSettings.FullPath); + ES3IO.CopyFile(oldSettings.FullPath, newSettings.FullPath); + } + } + else if (oldSettings.location == Location.PlayerPrefs) + { + PlayerPrefs.SetString(newSettings.FullPath, PlayerPrefs.GetString(oldSettings.FullPath)); + } + else if (oldSettings.location == Location.Cache) + { + ES3File.CopyCachedFile(oldSettings, newSettings); + } + else if (oldSettings.location == Location.Resources) + throw new System.NotSupportedException("Modifying files from Resources is not allowed."); + } + + /// Renames a file. + /// The relative or absolute path of the file we want to rename. + /// The relative or absolute path we want to rename the file to. + public static void RenameFile(string oldFilePath, string newFilePath) + { + RenameFile(new ES3Settings(oldFilePath), new ES3Settings(newFilePath)); + } + + /// Renames a file. + /// The relative or absolute path of the file we want to rename. + /// The relative or absolute path we want to rename the file to. + /// The settings for the file we want to rename. + /// The settings for the file we want our source file to be renamed to. + public static void RenameFile(string oldFilePath, string newFilePath, ES3Settings oldSettings, ES3Settings newSettings) + { + RenameFile(new ES3Settings(oldFilePath, oldSettings), new ES3Settings(newFilePath, newSettings)); + } + + /// Renames a file. + /// The settings for the file we want to rename. + /// The settings for the file we want our source file to be renamed to. + public static void RenameFile(ES3Settings oldSettings, ES3Settings newSettings) + { + if (oldSettings.location != newSettings.location) + throw new InvalidOperationException("Cannot rename file in " + oldSettings.location + " to " + newSettings.location + ". Location must be the same for both source and destination."); + + if (oldSettings.location == Location.File) + { + if (ES3IO.FileExists(oldSettings.FullPath)) + { + ES3IO.DeleteFile(newSettings.FullPath); + ES3IO.MoveFile(oldSettings.FullPath, newSettings.FullPath); + } + } + else if (oldSettings.location == Location.PlayerPrefs) + { + PlayerPrefs.SetString(newSettings.FullPath, PlayerPrefs.GetString(oldSettings.FullPath)); + PlayerPrefs.DeleteKey(oldSettings.FullPath); + } + else if (oldSettings.location == Location.Cache) + { + ES3File.CopyCachedFile(oldSettings, newSettings); + ES3File.RemoveCachedFile(oldSettings); + } + else if (oldSettings.location == Location.Resources) + throw new System.NotSupportedException("Modifying files from Resources is not allowed."); + } + + /// Copies a file from one path to another. + /// The relative or absolute path of the directory we want to copy. + /// The relative or absolute path of the copy we want to create. + public static void CopyDirectory(string oldDirectoryPath, string newDirectoryPath) + { + CopyDirectory(new ES3Settings(oldDirectoryPath), new ES3Settings(newDirectoryPath)); + } + + /// Copies a file from one location to another, using the ES3Settings provided to override any default settings. + /// The relative or absolute path of the directory we want to copy. + /// The relative or absolute path of the copy we want to create. + /// The settings we want to use when copying the old directory. + /// The settings we want to use when creating the new directory. + public static void CopyDirectory(string oldDirectoryPath, string newDirectoryPath, ES3Settings oldSettings, ES3Settings newSettings) + { + CopyDirectory(new ES3Settings(oldDirectoryPath, oldSettings), new ES3Settings(newDirectoryPath, newSettings)); + } + + /// Copies a file from one location to another, using the ES3Settings provided to determine the locations. + /// The settings we want to use when copying the old file. + /// The settings we want to use when creating the new file. + public static void CopyDirectory(ES3Settings oldSettings, ES3Settings newSettings) + { + if (oldSettings.location != Location.File) + throw new InvalidOperationException("ES3.CopyDirectory can only be used when the save location is 'File'"); + + if (!DirectoryExists(oldSettings)) + throw new System.IO.DirectoryNotFoundException("Directory " + oldSettings.FullPath + " not found"); + + if (!DirectoryExists(newSettings)) + ES3IO.CreateDirectory(newSettings.FullPath); + + foreach (var fileName in ES3.GetFiles(oldSettings)) + CopyFile(ES3IO.CombinePathAndFilename(oldSettings.path, fileName), + ES3IO.CombinePathAndFilename(newSettings.path, fileName)); + + foreach (var directoryName in GetDirectories(oldSettings)) + CopyDirectory(ES3IO.CombinePathAndFilename(oldSettings.path, directoryName), + ES3IO.CombinePathAndFilename(newSettings.path, directoryName)); + } + + /// Renames a file. + /// The relative or absolute path of the file we want to rename. + /// The relative or absolute path we want to rename the file to. + public static void RenameDirectory(string oldDirectoryPath, string newDirectoryPath) + { + RenameDirectory(new ES3Settings(oldDirectoryPath), new ES3Settings(newDirectoryPath)); + } + + /// Renames a file. + /// The relative or absolute path of the file we want to rename. + /// The relative or absolute path we want to rename the file to. + /// The settings for the file we want to rename. + /// The settings for the file we want our source file to be renamed to. + public static void RenameDirectory(string oldDirectoryPath, string newDirectoryPath, ES3Settings oldSettings, ES3Settings newSettings) + { + RenameDirectory(new ES3Settings(oldDirectoryPath, oldSettings), new ES3Settings(newDirectoryPath, newSettings)); + } + + /// Renames a file. + /// The settings for the file we want to rename. + /// The settings for the file we want our source file to be renamed to. + public static void RenameDirectory(ES3Settings oldSettings, ES3Settings newSettings) + { + if (oldSettings.location == Location.File) + { + if (ES3IO.DirectoryExists(oldSettings.FullPath)) + { + ES3IO.DeleteDirectory(newSettings.FullPath); + ES3IO.MoveDirectory(oldSettings.FullPath, newSettings.FullPath); + } + } + else if (oldSettings.location == Location.PlayerPrefs || oldSettings.location == Location.Cache) + throw new System.NotSupportedException("Directories cannot be renamed when saving to Cache, PlayerPrefs, tvOS or using WebGL."); + else if (oldSettings.location == Location.Resources) + throw new System.NotSupportedException("Modifying files from Resources is not allowed."); + } + + /// Deletes the directory at the given path using the settings provided. + /// The relative or absolute path of the folder we wish to delete. + public static void DeleteDirectory(string directoryPath) + { + DeleteDirectory(new ES3Settings(directoryPath)); + } + + /// Deletes the directory at the given path using the settings provided. + /// The relative or absolute path of the folder we wish to delete. + /// The settings we want to use to override the default settings. + public static void DeleteDirectory(string directoryPath, ES3Settings settings) + { + DeleteDirectory(new ES3Settings(directoryPath, settings)); + } + + /// Deletes the directory at the given path using the settings provided. + /// The settings we want to use to override the default settings. + public static void DeleteDirectory(ES3Settings settings) + { + if (settings.location == Location.File) + ES3IO.DeleteDirectory(settings.FullPath); + else if (settings.location == Location.PlayerPrefs || settings.location == Location.Cache) + throw new System.NotSupportedException("Deleting Directories using Cache or PlayerPrefs is not supported."); + else if (settings.location == Location.Resources) + throw new System.NotSupportedException("Deleting directories from Resources is not allowed."); + } + + /// Deletes a key in the default file. + /// The key we want to delete. + public static void DeleteKey(string key) + { + DeleteKey(key, new ES3Settings()); + } + + public static void DeleteKey(string key, string filePath) + { + DeleteKey(key, new ES3Settings(filePath)); + } + + /// Deletes a key in the file specified. + /// The key we want to delete. + /// The relative or absolute path of the file we want to delete the key from. + /// The settings we want to use to override the default settings. + public static void DeleteKey(string key, string filePath, ES3Settings settings) + { + DeleteKey(key, new ES3Settings(filePath, settings)); + } + + /// Deletes a key in the file specified by the ES3Settings object. + /// The key we want to delete. + /// The settings we want to use to override the default settings. + public static void DeleteKey(string key, ES3Settings settings) + { + if (settings.location == Location.Resources) + throw new System.NotSupportedException("Modifying files in Resources is not allowed."); + else if (settings.location == Location.Cache) + ES3File.DeleteKey(key, settings); + else if (ES3.FileExists(settings)) + { + using (var writer = ES3Writer.Create(settings)) + { + writer.MarkKeyForDeletion(key); + writer.Save(); + } + } + } + + /// Checks whether a key exists in the default file. + /// The key we want to check the existence of. + /// True if the key exists, otherwise False. + public static bool KeyExists(string key) + { + return KeyExists(key, new ES3Settings()); + } + + /// Checks whether a key exists in the specified file. + /// The key we want to check the existence of. + /// The relative or absolute path of the file we want to search. + /// True if the key exists, otherwise False. + public static bool KeyExists(string key, string filePath) + { + return KeyExists(key, new ES3Settings(filePath)); + } + + /// Checks whether a key exists in the default file. + /// The key we want to check the existence of. + /// The relative or absolute path of the file we want to search. + /// The settings we want to use to override the default settings. + /// True if the key exists, otherwise False. + public static bool KeyExists(string key, string filePath, ES3Settings settings) + { + return KeyExists(key, new ES3Settings(filePath, settings)); + } + + /// Checks whether a key exists in a file. + /// The key we want to check the existence of. + /// The settings we want to use to override the default settings. + /// True if the file exists, otherwise False. + public static bool KeyExists(string key, ES3Settings settings) + { + if (settings.location == Location.Cache) + return ES3File.KeyExists(key, settings); + + using (var reader = ES3Reader.Create(settings)) + { + if (reader == null) + return false; + return reader.Goto(key); + } + } + + /// Checks whether the default file exists. + /// The relative or absolute path of the file we want to check the existence of. + /// True if the file exists, otherwise False. + public static bool FileExists() + { + return FileExists(new ES3Settings()); + } + + /// Checks whether a file exists. + /// The relative or absolute path of the file we want to check the existence of. + /// True if the file exists, otherwise False. + public static bool FileExists(string filePath) + { + return FileExists(new ES3Settings(filePath)); + } + + /// Checks whether a file exists. + /// The relative or absolute path of the file we want to check the existence of. + /// The settings we want to use to override the default settings. + /// True if the file exists, otherwise False. + public static bool FileExists(string filePath, ES3Settings settings) + { + return FileExists(new ES3Settings(filePath, settings)); + } + + /// Checks whether a file exists. + /// The settings we want to use to override the default settings. + /// True if the file exists, otherwise False. + public static bool FileExists(ES3Settings settings) + { + if (settings.location == Location.File) + return ES3IO.FileExists(settings.FullPath); + else if (settings.location == Location.PlayerPrefs) + return PlayerPrefs.HasKey(settings.FullPath); + else if (settings.location == Location.Cache) + return ES3File.FileExists(settings); + else if (settings.location == Location.Resources) + return Resources.Load(settings.FullPath) != null; + return false; + } + + /// Checks whether a folder exists. + /// The relative or absolute path of the folder we want to check the existence of. + /// True if the folder exists, otherwise False. + public static bool DirectoryExists(string folderPath) + { + return DirectoryExists(new ES3Settings(folderPath)); + } + + /// Checks whether a file exists. + /// The relative or absolute path of the folder we want to check the existence of. + /// The settings we want to use to override the default settings. + /// True if the folder exists, otherwise False. + + public static bool DirectoryExists(string folderPath, ES3Settings settings) + { + return DirectoryExists(new ES3Settings(folderPath, settings)); + } + + /// Checks whether a folder exists. + /// The settings we want to use to override the default settings. + /// True if the folder exists, otherwise False. + public static bool DirectoryExists(ES3Settings settings) + { + if (settings.location == Location.File) + return ES3IO.DirectoryExists(settings.FullPath); + else if (settings.location == Location.PlayerPrefs || settings.location == Location.Cache) + throw new System.NotSupportedException("Directories are not supported for the Cache and PlayerPrefs location."); + else if (settings.location == Location.Resources) + throw new System.NotSupportedException("Checking existence of folder in Resources not supported."); + return false; + } + + /// Gets an array of all of the key names in the default file. + public static string[] GetKeys() + { + return GetKeys(new ES3Settings()); + } + + /// Gets an array of all of the key names in a file. + /// The relative or absolute path of the file we want to get the key names from. + public static string[] GetKeys(string filePath) + { + return GetKeys(new ES3Settings(filePath)); + } + + /// Gets an array of all of the key names in a file. + /// The relative or absolute path of the file we want to get the key names from. + /// The settings we want to use to override the default settings. + public static string[] GetKeys(string filePath, ES3Settings settings) + { + return GetKeys(new ES3Settings(filePath, settings)); + } + + /// Gets an array of all of the key names in a file. + /// The settings we want to use to override the default settings. + public static string[] GetKeys(ES3Settings settings) + { + + if (settings.location == Location.Cache) + return ES3File.GetKeys(settings); + + var keys = new List(); + using (var reader = ES3Reader.Create(settings)) + { + foreach (string key in reader.Properties) + { + keys.Add(key); + reader.Skip(); + } + } + return keys.ToArray(); + } + + /// Gets an array of all of the file names in a directory. + public static string[] GetFiles() + { + var settings = new ES3Settings(); + if (settings.location == ES3.Location.File) + { + if (settings.directory == ES3.Directory.PersistentDataPath) + settings.path = Application.persistentDataPath; + else + settings.path = Application.dataPath; + } + return GetFiles(settings); + } + + /// Gets an array of all of the file names in a directory. + /// The relative or absolute path of the directory we want to get the file names from. + public static string[] GetFiles(string directoryPath) + { + return GetFiles(new ES3Settings(directoryPath)); + } + + /// Gets an array of all of the file names in a directory. + /// The relative or absolute path of the directory we want to get the file names from. + /// The settings we want to use to override the default settings. + public static string[] GetFiles(string directoryPath, ES3Settings settings) + { + return GetFiles(new ES3Settings(directoryPath, settings)); + } + + /// Gets an array of all of the file names in a directory. + /// The settings we want to use to override the default settings. + public static string[] GetFiles(ES3Settings settings) + { + if (settings.location == Location.Cache) + return ES3File.GetFiles(); + else if (settings.location != ES3.Location.File) + throw new System.NotSupportedException("ES3.GetFiles can only be used when the location is set to File or Cache."); + return ES3IO.GetFiles(settings.FullPath, false); + } + + /// Gets an array of all of the sub-directory names in a directory. + public static string[] GetDirectories() + { + return GetDirectories(new ES3Settings()); + } + + /// Gets an array of all of the sub-directory names in a directory. + /// The relative or absolute path of the directory we want to get the sub-directory names from. + public static string[] GetDirectories(string directoryPath) + { + return GetDirectories(new ES3Settings(directoryPath)); + } + + /// Gets an array of all of the sub-directory names in a directory. + /// The relative or absolute path of the directory we want to get the sub-directory names from. + /// The settings we want to use to override the default settings. + public static string[] GetDirectories(string directoryPath, ES3Settings settings) + { + return GetDirectories(new ES3Settings(directoryPath, settings)); + } + + /// Gets an array of all of the sub-directory names in a directory. + /// The settings we want to use to override the default settings. + public static string[] GetDirectories(ES3Settings settings) + { + if (settings.location != ES3.Location.File) + throw new System.NotSupportedException("ES3.GetDirectories can only be used when the location is set to File."); + return ES3IO.GetDirectories(settings.FullPath, false); + } + + /// Creates a backup of the default file . + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + public static void CreateBackup() + { + CreateBackup(new ES3Settings()); + } + + /// Creates a backup of a file. + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + /// The relative or absolute path of the file we wish to create a backup of. + public static void CreateBackup(string filePath) + { + CreateBackup(new ES3Settings(filePath)); + } + + /// Creates a backup of a file. + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + /// The relative or absolute path of the file we wish to create a backup of. + /// The settings we want to use to override the default settings. + public static void CreateBackup(string filePath, ES3Settings settings) + { + CreateBackup(new ES3Settings(filePath, settings)); + } + + /// Creates a backup of a file. + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + /// The settings we want to use to override the default settings. + public static void CreateBackup(ES3Settings settings) + { + var backupSettings = new ES3Settings(settings.path + ES3IO.backupFileSuffix, settings); + ES3.CopyFile(settings, backupSettings); + } + + /// Restores a backup of a file. + /// The relative or absolute path of the file we wish to restore the backup of. + /// True if a backup was restored, or False if no backup could be found. + public static bool RestoreBackup(string filePath) + { + return RestoreBackup(new ES3Settings(filePath)); + } + + /// Restores a backup of a file. + /// The relative or absolute path of the file we wish to restore the backup of. + /// The settings we want to use to override the default settings. + /// True if a backup was restored, or False if no backup could be found. + public static bool RestoreBackup(string filePath, ES3Settings settings) + { + return RestoreBackup(new ES3Settings(filePath, settings)); + } + + /// Restores a backup of a file. + /// The settings we want to use to override the default settings. + /// True if a backup was restored, or False if no backup could be found. + public static bool RestoreBackup(ES3Settings settings) + { + var backupSettings = new ES3Settings(settings.path + ES3IO.backupFileSuffix, settings); + + if (!FileExists(backupSettings)) + return false; + + ES3.RenameFile(backupSettings, settings); + + return true; + } + + public static DateTime GetTimestamp() + { + return GetTimestamp(new ES3Settings()); + } + + public static DateTime GetTimestamp(string filePath) + { + return GetTimestamp(new ES3Settings(filePath)); + } + + public static DateTime GetTimestamp(string filePath, ES3Settings settings) + { + return GetTimestamp(new ES3Settings(filePath, settings)); + } + + /// Gets the date and time the file was last updated, in the UTC timezone. + /// The settings we want to use to override the default settings. + /// A DateTime object represeting the UTC date and time the file was last updated. + public static DateTime GetTimestamp(ES3Settings settings) + { + if (settings.location == Location.File) + return ES3IO.GetTimestamp(settings.FullPath); + else if (settings.location == Location.PlayerPrefs) + return new DateTime(long.Parse(PlayerPrefs.GetString("timestamp_" + settings.FullPath, "0")), DateTimeKind.Utc); + else if (settings.location == Location.Cache) + return ES3File.GetTimestamp(settings); + else + return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + } + + /// Stores the default cached file to persistent storage. + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + public static void StoreCachedFile() + { + ES3File.Store(); + } + + /// Stores a cached file to persistent storage. + /// The filename or path of the file we want to store the cached file to. + public static void StoreCachedFile(string filePath) + { + StoreCachedFile(new ES3Settings(filePath)); + } + + /// Creates a backup of a file. + /// The filename or path of the file we want to store the cached file to. + /// The settings of the file we want to store to. + public static void StoreCachedFile(string filePath, ES3Settings settings) + { + StoreCachedFile(new ES3Settings(filePath, settings)); + } + + /// Stores a cached file to persistent storage. + /// The settings of the file we want to store to. + public static void StoreCachedFile(ES3Settings settings) + { + ES3File.Store(settings); + } + + /// Loads the default file in persistent storage into the cache. + /// A backup is created by copying the file and giving it a .bak extension. + /// If a backup already exists it will be overwritten, so you will need to ensure that the old backup will not be required before calling this method. + public static void CacheFile() + { + CacheFile(new ES3Settings()); + } + + /// Loads a file from persistent storage into the cache. + /// The filename or path of the file we want to store the cached file to. + public static void CacheFile(string filePath) + { + CacheFile(new ES3Settings(filePath)); + } + + /// Creates a backup of a file. + /// The filename or path of the file we want to store the cached file to. + /// The settings of the file we want to store to. + public static void CacheFile(string filePath, ES3Settings settings) + { + CacheFile(new ES3Settings(filePath, settings)); + } + + /// Stores a cached file to persistent storage. + /// The settings of the file we want to store to. + public static void CacheFile(ES3Settings settings) + { + ES3File.CacheFile(settings); + } + + /// Initialises Easy Save. This happens automatically when any ES3 methods are called, but is useful if you want to perform initialisation before calling an ES3 method. + public static void Init() + { + var settings = ES3Settings.defaultSettings; + ES3TypeMgr.Init(); + } + + #endregion +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs.meta new file mode 100644 index 00000000..e5d69004 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ca1cdcde6d39a44b39ee5f5b86ddfd73 +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs new file mode 100644 index 00000000..50f57547 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs @@ -0,0 +1,208 @@ +#if !DISABLE_ENCRYPTION +using System.IO; +using System.Security.Cryptography; +#if NETFX_CORE +using Windows.Security.Cryptography; +using Windows.Security.Cryptography.Core; +using Windows.Storage.Streams; +using System.Runtime.InteropServices.WindowsRuntime; +#endif + +namespace ES3Internal +{ + public static class ES3Hash + { +#if NETFX_CORE + public static string SHA1Hash(string input) + { + return System.Text.Encoding.UTF8.GetString(UnityEngine.Windows.Crypto.ComputeSHA1Hash(System.Text.Encoding.UTF8.GetBytes(input))); + } +#else + public static string SHA1Hash(string input) + { + using (SHA1Managed sha1 = new SHA1Managed()) + return System.Text.Encoding.UTF8.GetString(sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(input))); + } +#endif + } + + public abstract class EncryptionAlgorithm + { + public abstract byte[] Encrypt(byte[] bytes, string password, int bufferSize); + public abstract byte[] Decrypt(byte[] bytes, string password, int bufferSize); + public abstract void Encrypt(Stream input, Stream output, string password, int bufferSize); + public abstract void Decrypt(Stream input, Stream output, string password, int bufferSize); + + protected static void CopyStream(Stream input, Stream output, int bufferSize) + { + byte[] buffer = new byte[bufferSize]; + int read; + while ((read = input.Read(buffer, 0, bufferSize)) > 0) + output.Write(buffer, 0, read); + } + } + + public class AESEncryptionAlgorithm : EncryptionAlgorithm + { + private const int ivSize = 16; + private const int keySize = 16; + private const int pwIterations = 100; + + public override byte[] Encrypt(byte[] bytes, string password, int bufferSize) + { + using (var input = new MemoryStream(bytes)) + { + using (var output = new MemoryStream()) + { + Encrypt(input, output, password, bufferSize); + return output.ToArray(); + } + } + } + + public override byte[] Decrypt(byte[] bytes, string password, int bufferSize) + { + using (var input = new MemoryStream(bytes)) + { + using (var output = new MemoryStream()) + { + Decrypt(input, output, password, bufferSize); + return output.ToArray(); + } + } + } + + public override void Encrypt(Stream input, Stream output, string password, int bufferSize) + { + input.Position = 0; + +#if NETFX_CORE + // Generate an IV and write it to the output. + var iv = CryptographicBuffer.GenerateRandom(ivSize); + output.Write(iv.ToArray(), 0, ivSize); + + var pwBuffer = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf8); + var keyDerivationProvider = KeyDerivationAlgorithmProvider.OpenAlgorithm("PBKDF2_SHA1"); + KeyDerivationParameters pbkdf2Parms = KeyDerivationParameters.BuildForPbkdf2(iv, pwIterations); + // Create a key based on original key and derivation parmaters + CryptographicKey keyOriginal = keyDerivationProvider.CreateKey(pwBuffer); + IBuffer keyMaterial = CryptographicEngine.DeriveKeyMaterial(keyOriginal, pbkdf2Parms, keySize); + + var provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7); + var key = provider.CreateSymmetricKey(keyMaterial); + + // Get the input stream as an IBuffer. + IBuffer msg; + using(var ms = new MemoryStream()) + { + input.CopyTo(ms); + msg = ms.ToArray().AsBuffer(); + } + + var buffEncrypt = CryptographicEngine.Encrypt(key, msg, iv); + + + output.Write(buffEncrypt.ToArray(), 0, (int)buffEncrypt.Length); + output.Dispose(); +#else + using (var alg = Aes.Create()) + { + alg.Mode = CipherMode.CBC; + alg.Padding = PaddingMode.PKCS7; + alg.GenerateIV(); + var key = new Rfc2898DeriveBytes(password, alg.IV, pwIterations); + alg.Key = key.GetBytes(keySize); + // Write the IV to the output stream. + output.Write(alg.IV, 0, ivSize); + using(var encryptor = alg.CreateEncryptor()) + using(var cs = new CryptoStream(output, encryptor, CryptoStreamMode.Write)) + CopyStream(input, cs, bufferSize); + } +#endif + } + + public override void Decrypt(Stream input, Stream output, string password, int bufferSize) + { +#if NETFX_CORE + var thisIV = new byte[ivSize]; + input.Read(thisIV, 0, ivSize); + var iv = thisIV.AsBuffer(); + + var pwBuffer = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf8); + + var keyDerivationProvider = KeyDerivationAlgorithmProvider.OpenAlgorithm("PBKDF2_SHA1"); + KeyDerivationParameters pbkdf2Parms = KeyDerivationParameters.BuildForPbkdf2(iv, pwIterations); + // Create a key based on original key and derivation parameters. + CryptographicKey keyOriginal = keyDerivationProvider.CreateKey(pwBuffer); + IBuffer keyMaterial = CryptographicEngine.DeriveKeyMaterial(keyOriginal, pbkdf2Parms, keySize); + + var provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7); + var key = provider.CreateSymmetricKey(keyMaterial); + + // Get the input stream as an IBuffer. + IBuffer msg; + using(var ms = new MemoryStream()) + { + input.CopyTo(ms); + msg = ms.ToArray().AsBuffer(); + } + + var buffDecrypt = CryptographicEngine.Decrypt(key, msg, iv); + + output.Write(buffDecrypt.ToArray(), 0, (int)buffDecrypt.Length); +#else + using (var alg = Aes.Create()) + { + var thisIV = new byte[ivSize]; + input.Read(thisIV, 0, ivSize); + alg.IV = thisIV; + + var key = new Rfc2898DeriveBytes(password, alg.IV, pwIterations); + alg.Key = key.GetBytes(keySize); + + using(var decryptor = alg.CreateDecryptor()) + using(var cryptoStream = new CryptoStream(input, decryptor, CryptoStreamMode.Read)) + CopyStream(cryptoStream, output, bufferSize); + + } +#endif + output.Position = 0; + } + } + + public class UnbufferedCryptoStream : MemoryStream + { + private readonly Stream stream; + private readonly bool isReadStream; + private string password; + private int bufferSize; + private EncryptionAlgorithm alg; + private bool disposed = false; + + public UnbufferedCryptoStream(Stream stream, bool isReadStream, string password, int bufferSize, EncryptionAlgorithm alg) : base() + { + this.stream = stream; + this.isReadStream = isReadStream; + this.password = password; + this.bufferSize = bufferSize; + this.alg = alg; + + + if (isReadStream) + alg.Decrypt(stream, this, password, bufferSize); + } + + protected override void Dispose(bool disposing) + { + if (disposed) + return; + disposed = true; + + if (!isReadStream) + alg.Encrypt(this, stream, password, bufferSize); + stream.Dispose(); + base.Dispose(disposing); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs.meta new file mode 100644 index 00000000..5d39d6d5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Crypto.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2b3b6335276042569261b3e6bed694e +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs new file mode 100644 index 00000000..5b60d557 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs @@ -0,0 +1,497 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System; +using ES3Types; +using UnityEngine; +using ES3Internal; +using System.Linq; + +/// Represents a cached file which can be saved to and loaded from, and commited to storage when necessary. +public class ES3File +{ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static Dictionary cachedFiles = new Dictionary(); + + public ES3Settings settings; + private Dictionary cache = new Dictionary(); + private bool syncWithFile = false; + private DateTime timestamp = DateTime.UtcNow; + + /// Creates a new ES3File and loads the default file into the ES3File if there is data to load. + public ES3File() : this(new ES3Settings(), true) { } + + /// Creates a new ES3File and loads the specified file into the ES3File if there is data to load. + /// The relative or absolute path of the file in storage our ES3File is associated with. + public ES3File(string filePath) : this(new ES3Settings(filePath), true) { } + + /// Creates a new ES3File and loads the specified file into the ES3File if there is data to load. + /// The relative or absolute path of the file in storage our ES3File is associated with. + /// The settings we want to use to override the default settings. + public ES3File(string filePath, ES3Settings settings) : this(new ES3Settings(filePath, settings), true) { } + + /// Creates a new ES3File and loads the specified file into the ES3File if there is data to load. + /// The settings we want to use to override the default settings. + public ES3File(ES3Settings settings) : this(settings, true) { } + + /// Creates a new ES3File and only loads the default file into it if syncWithFile is set to true. + /// Whether we should sync this ES3File with the one in storage immediately after creating it. + public ES3File(bool syncWithFile) : this(new ES3Settings(), syncWithFile) { } + /// Creates a new ES3File and only loads the specified file into it if syncWithFile is set to true. + /// The relative or absolute path of the file in storage our ES3File is associated with. + /// Whether we should sync this ES3File with the one in storage immediately after creating it. + public ES3File(string filePath, bool syncWithFile) : this(new ES3Settings(filePath), syncWithFile) { } + /// Creates a new ES3File and only loads the specified file into it if syncWithFile is set to true. + /// The relative or absolute path of the file in storage our ES3File is associated with. + /// The settings we want to use to override the default settings. + /// Whether we should sync this ES3File with the one in storage immediately after creating it. + public ES3File(string filePath, ES3Settings settings, bool syncWithFile) : this(new ES3Settings(filePath, settings), syncWithFile) { } + + /// Creates a new ES3File and loads the specified file into the ES3File if there is data to load. + /// The settings we want to use to override the default settings. + /// Whether we should sync this ES3File with the one in storage immediately after creating it. + public ES3File(ES3Settings settings, bool syncWithFile) + { + this.settings = settings; + this.syncWithFile = syncWithFile; + if (syncWithFile) + { + // Type checking must be enabled when syncing. + var settingsWithTypeChecking = (ES3Settings)settings.Clone(); + settingsWithTypeChecking.typeChecking = true; + + using (var reader = ES3Reader.Create(settingsWithTypeChecking)) + { + if (reader == null) + return; + foreach (KeyValuePair kvp in reader.RawEnumerator) + cache[kvp.Key] = kvp.Value; + } + } + } + + /// Creates a new ES3File and loads the bytes into the ES3File. Note the bytes must represent that of a file. + /// The bytes representing our file. + /// The settings we want to use to override the default settings. + /// Whether we should sync this ES3File with the one in storage immediately after creating it. + public ES3File(byte[] bytes, ES3Settings settings = null) + { + if (settings == null) + this.settings = new ES3Settings(); + else + this.settings = settings; + SaveRaw(bytes, settings); + } + + /// Synchronises this ES3File with a file in storage. + public void Sync() + { + Sync(this.settings); + } + + /// Synchronises this ES3File with a file in storage. + /// The relative or absolute path of the file in storage we want to synchronise with. + /// The settings we want to use to override the default settings. + public void Sync(string filePath, ES3Settings settings = null) + { + Sync(new ES3Settings(filePath, settings)); + } + + /// Synchronises this ES3File with a file in storage. + /// The settings we want to use to override the default settings. + public void Sync(ES3Settings settings = null) + { + if (settings == null) + settings = new ES3Settings(); + + ES3.DeleteFile(settings); + + if (cache.Count == 0) + return; + + using (var baseWriter = ES3Writer.Create(settings, true, !syncWithFile, false)) + { + foreach (var kvp in cache) + { + // If we change the name of a type, the type may be null. + // In this case, use System.Object as the type. + Type type; + if (kvp.Value.type == null) + type = typeof(System.Object); + else + type = kvp.Value.type.type; + baseWriter.Write(kvp.Key, type, kvp.Value.bytes); + } + baseWriter.Save(!syncWithFile); + } + } + + /// Removes the data stored in this ES3File. The ES3File will be empty after calling this method. + public void Clear() + { + cache.Clear(); + } + + /// Returns an array of all of the key names in this ES3File. + public string[] GetKeys() + { + var keyCollection = cache.Keys; + var keys = new string[keyCollection.Count]; + keyCollection.CopyTo(keys, 0); + return keys; + } + + #region Save Methods + + /// Saves a value to a key in this ES3File. + /// The key we want to use to identify our value in the file. + /// The value we want to save. + public void Save(string key, T value) + { + var unencryptedSettings = (ES3Settings)settings.Clone(); + unencryptedSettings.encryptionType = ES3.EncryptionType.None; + unencryptedSettings.compressionType = ES3.CompressionType.None; + + // If T is object, use the value to get it's type. Otherwise, use T so that it works with inheritence. + var type = typeof(T) != typeof(object) ? typeof(T) : (value == null ? typeof(T) : value.GetType()); + cache[key] = new ES3Data(ES3TypeMgr.GetOrCreateES3Type(type), ES3.Serialize(value, unencryptedSettings)); + } + + /// Merges the data specified by the bytes parameter into this ES3File. + /// The bytes we want to merge with this ES3File. + /// The settings we want to use to override the default settings. + public void SaveRaw(byte[] bytes, ES3Settings settings = null) + { + if (settings == null) + settings = new ES3Settings(); + + // Type checking must be enabled when syncing. + var settingsWithTypeChecking = (ES3Settings)settings.Clone(); + settingsWithTypeChecking.typeChecking = true; + + using (var reader = ES3Reader.Create(bytes, settingsWithTypeChecking)) + { + if (reader == null) + return; + foreach (KeyValuePair kvp in reader.RawEnumerator) + cache[kvp.Key] = kvp.Value; + } + } + + /// Merges the data specified by the bytes parameter into this ES3File. + /// The bytes we want to merge with this ES3File. + /// The settings we want to use to override the default settings. + public void AppendRaw(byte[] bytes, ES3Settings settings = null) + { + if (settings == null) + settings = new ES3Settings(); + // AppendRaw just does the same thing as SaveRaw in ES3File. + SaveRaw(bytes, settings); + } + + #endregion + + #region Load Methods + + /* Standard load methods */ + + /// Loads the value from this ES3File with the given key. + /// The key which identifies the value we want to load. + public object Load(string key) + { + return Load(key); + } + + /// Loads the value from this ES3File with the given key. + /// The key which identifies the value we want to load. + /// The value we want to return if the key does not exist in this ES3File. + public object Load(string key, object defaultValue) + { + return Load(key, defaultValue); + } + + /// Loads the value from this ES3File with the given key. + /// The key which identifies the value we want to load. + public T Load(string key) + { + ES3Data es3Data; + + if (!cache.TryGetValue(key, out es3Data)) + throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load(key, defaultValue) if you want to return a default value if the key does not exist."); + + var unencryptedSettings = (ES3Settings)this.settings.Clone(); + unencryptedSettings.encryptionType = ES3.EncryptionType.None; + unencryptedSettings.compressionType = ES3.CompressionType.None; + + if (typeof(T) == typeof(object)) + return (T)ES3.Deserialize(es3Data.type, es3Data.bytes, unencryptedSettings); + return ES3.Deserialize(es3Data.bytes, unencryptedSettings); + } + + /// Loads the value from this ES3File with the given key. + /// The key which identifies the value we want to load. + /// The value we want to return if the key does not exist in this ES3File. + public T Load(string key, T defaultValue) + { + ES3Data es3Data; + + if (!cache.TryGetValue(key, out es3Data)) + return defaultValue; + var unencryptedSettings = (ES3Settings)this.settings.Clone(); + unencryptedSettings.encryptionType = ES3.EncryptionType.None; + unencryptedSettings.compressionType = ES3.CompressionType.None; + + if (typeof(T) == typeof(object)) + return (T)ES3.Deserialize(es3Data.type, es3Data.bytes, unencryptedSettings); + return ES3.Deserialize(es3Data.bytes, unencryptedSettings); + } + + /// Loads the value from this ES3File with the given key into an existing object. + /// The key which identifies the value we want to load. + /// The object we want to load the value into. + public void LoadInto(string key, T obj) where T : class + { + ES3Data es3Data; + + if (!cache.TryGetValue(key, out es3Data)) + throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load(key, defaultValue) if you want to return a default value if the key does not exist."); + + var unencryptedSettings = (ES3Settings)this.settings.Clone(); + unencryptedSettings.encryptionType = ES3.EncryptionType.None; + unencryptedSettings.compressionType = ES3.CompressionType.None; + + if (typeof(T) == typeof(object)) + ES3.DeserializeInto(es3Data.type, es3Data.bytes, obj, unencryptedSettings); + else + ES3.DeserializeInto(es3Data.bytes, obj, unencryptedSettings); + } + + #endregion + + #region Load Raw Methods + + /// Loads the ES3File as a raw, unencrypted, uncompressed byte array. + public byte[] LoadRawBytes() + { + var unencryptedSettings = (ES3Settings)settings.Clone(); + unencryptedSettings.encryptionType = ES3.EncryptionType.None; + unencryptedSettings.compressionType = ES3.CompressionType.None; + return GetBytes(unencryptedSettings); + } + + /// Loads the ES3File as a raw, unencrypted, uncompressed string, using the encoding defined in the ES3File's settings variable. + public string LoadRawString() + { + if (cache.Count == 0) + return ""; + return settings.encoding.GetString(LoadRawBytes()); + } + + /* + * Same as LoadRawString, except it will return an encrypted/compressed file if these are enabled. + */ + internal byte[] GetBytes(ES3Settings settings = null) + { + if (cache.Count == 0) + return new byte[0]; + + if (settings == null) + settings = this.settings; + + using (var ms = new System.IO.MemoryStream()) + { + var memorySettings = (ES3Settings)settings.Clone(); + memorySettings.location = ES3.Location.InternalMS; + // Ensure we return unencrypted bytes. + memorySettings.encryptionType = ES3.EncryptionType.None; + memorySettings.compressionType = ES3.CompressionType.None; + + using (var baseWriter = ES3Writer.Create(ES3Stream.CreateStream(ms, memorySettings, ES3FileMode.Write), memorySettings, true, false)) + { + foreach (var kvp in cache) + baseWriter.Write(kvp.Key, kvp.Value.type.type, kvp.Value.bytes); + baseWriter.Save(false); + } + + return ms.ToArray(); + } + } + + #endregion + + #region Other ES3 Methods + + /// Deletes a key from this ES3File. + /// The key we want to delete. + public void DeleteKey(string key) + { + cache.Remove(key); + } + + /// Checks whether a key exists in this ES3File. + /// The key we want to check the existence of. + /// True if the key exists, otherwise False. + public bool KeyExists(string key) + { + return cache.ContainsKey(key); + } + + /// Gets the size of the cached data in bytes. + public int Size() + { + int size = 0; + foreach (var kvp in cache) + size += kvp.Value.bytes.Length; + return size; + } + + public Type GetKeyType(string key) + { + ES3Data es3data; + if (!cache.TryGetValue(key, out es3data)) + throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load(key, defaultValue) if you want to return a default value if the key does not exist."); + + return es3data.type.type; + } + + #endregion + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static ES3File GetOrCreateCachedFile(ES3Settings settings) + { + ES3File cachedFile; + if (!cachedFiles.TryGetValue(settings.path, out cachedFile)) + { + cachedFile = new ES3File(settings, false); + cachedFiles.Add(settings.path, cachedFile); + } + // Settings might refer to the same file, but might have changed. + // To account for this, we update the settings of the ES3File each time we access it. + cachedFile.settings = settings; + return cachedFile; + } + + internal static void CacheFile(ES3Settings settings) + { + // If we're still using cached settings, default to file. + if (settings.location == ES3.Location.Cache) + { + settings = (ES3Settings)settings.Clone(); + settings.location = ES3.Location.File; + } + + if (!ES3.FileExists(settings)) + return; + + + // Disable compression and encryption when loading the raw bytes, and the ES3File constructor will expect encrypted/compressed bytes. + var loadSettings = (ES3Settings)settings.Clone(); + loadSettings.compressionType = ES3.CompressionType.None; + loadSettings.encryptionType = ES3.EncryptionType.None; + + cachedFiles[settings.path] = new ES3File(ES3.LoadRawBytes(loadSettings), settings); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static void Store(ES3Settings settings = null) + { + if (settings == null) + settings = new ES3Settings(ES3.Location.File); + // If we're still using cached settings, default to file. + else if (settings.location == ES3.Location.Cache) + { + settings = (ES3Settings)settings.Clone(); + settings.location = ES3.Location.File; + } + + ES3File cachedFile; + if (!cachedFiles.TryGetValue(settings.path, out cachedFile)) + throw new FileNotFoundException("The file '" + settings.path + "' could not be stored because it could not be found in the cache."); + cachedFile.Sync(settings); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static void RemoveCachedFile(ES3Settings settings) + { + cachedFiles.Remove(settings.path); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static void CopyCachedFile(ES3Settings oldSettings, ES3Settings newSettings) + { + ES3File cachedFile; + if (!cachedFiles.TryGetValue(oldSettings.path, out cachedFile)) + throw new FileNotFoundException("The file '" + oldSettings.path + "' could not be copied because it could not be found in the cache."); + if (cachedFiles.ContainsKey(newSettings.path)) + throw new InvalidOperationException("Cannot copy file '" + oldSettings.path + "' to '" + newSettings.path + "' because '" + newSettings.path + "' already exists"); + + cachedFiles.Add(newSettings.path, (ES3File)cachedFile.MemberwiseClone()); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static void DeleteKey(string key, ES3Settings settings) + { + ES3File cachedFile; + if (cachedFiles.TryGetValue(settings.path, out cachedFile)) + cachedFile.DeleteKey(key); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static bool KeyExists(string key, ES3Settings settings) + { + ES3File cachedFile; + if (cachedFiles.TryGetValue(settings.path, out cachedFile)) + return cachedFile.KeyExists(key); + return false; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static bool FileExists(ES3Settings settings) + { + return cachedFiles.ContainsKey(settings.path); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static string[] GetKeys(ES3Settings settings) + { + ES3File cachedFile; + if (!cachedFiles.TryGetValue(settings.path, out cachedFile)) + throw new FileNotFoundException("Could not get keys from the file '" + settings.path + "' because it could not be found in the cache."); + return cachedFile.cache.Keys.ToArray(); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal static string[] GetFiles() + { + return cachedFiles.Keys.ToArray(); + } + + internal static DateTime GetTimestamp(ES3Settings settings) + { + ES3File cachedFile; + if (!cachedFiles.TryGetValue(settings.path, out cachedFile)) + throw new FileNotFoundException("Could not get timestamp from the file '" + settings.path + "' because it could not be found in the cache."); + return cachedFile.timestamp; + } +} + +namespace ES3Internal +{ + public struct ES3Data + { + public ES3Type type; + public byte[] bytes; + + public ES3Data(Type type, byte[] bytes) + { + this.type = type == null ? null : ES3TypeMgr.GetOrCreateES3Type(type); + this.bytes = bytes; + } + + public ES3Data(ES3Type type, byte[] bytes) + { + this.type = type; + this.bytes = bytes; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs.meta new file mode 100644 index 00000000..43f99ffb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3File.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2cd9723dc51904030be3c30362442d47 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs new file mode 100644 index 00000000..ec3faf2a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs @@ -0,0 +1,167 @@ +using System.IO; +using System; +using UnityEngine; + +namespace ES3Internal +{ + public static class ES3IO + { +#if UNITY_SWITCH + internal static readonly string persistentDataPath = ""; +#else + internal static readonly string persistentDataPath = Application.persistentDataPath; +#endif + + internal const string backupFileSuffix = ".bac"; + internal const string temporaryFileSuffix = ".tmp"; + + public enum ES3FileMode { Read, Write, Append } + + public static DateTime GetTimestamp(string filePath) + { + if (!FileExists(filePath)) + return new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); + return File.GetLastWriteTime(filePath).ToUniversalTime(); + } + + public static string GetExtension(string path) + { + return Path.GetExtension(path); + } + + public static void DeleteFile(string filePath) + { + if (FileExists(filePath)) + File.Delete(filePath); + } + + public static bool FileExists(string filePath) { return File.Exists(filePath); } + public static void MoveFile(string sourcePath, string destPath) { File.Move(sourcePath, destPath); } + public static void CopyFile(string sourcePath, string destPath) { File.Copy(sourcePath, destPath); } + + public static void MoveDirectory(string sourcePath, string destPath) { Directory.Move(sourcePath, destPath); } + public static void CreateDirectory(string directoryPath) { Directory.CreateDirectory(directoryPath); } + public static bool DirectoryExists(string directoryPath) { return Directory.Exists(directoryPath); } + + /* + * Given a path, it returns the directory that path points to. + * eg. "C:/myFolder/thisFolder/myFile.txt" will return "C:/myFolder/thisFolder". + */ + public static string GetDirectoryPath(string path, char seperator = '/') + { + //return Path.GetDirectoryName(path); + // Path.GetDirectoryName turns forward slashes to backslashes in some cases on Windows, which is why + // Substring is used instead. + char slashChar = UsesForwardSlash(path) ? '/' : '\\'; + + int slash = path.LastIndexOf(slashChar); + // Ignore trailing slash if necessary. + if (slash == (path.Length - 1)) + slash = path.Substring(0, slash).LastIndexOf(slashChar); + if (slash == -1) + ES3Debug.LogError("Path provided is not a directory path as it contains no slashes."); + return path.Substring(0, slash); + } + + public static bool UsesForwardSlash(string path) + { + if (path.Contains("/")) + return true; + return false; + } + + // Takes a directory path and a file or directory name and combines them into a single path. + public static string CombinePathAndFilename(string directoryPath, string fileOrDirectoryName) + { + if (directoryPath[directoryPath.Length - 1] != '/' && directoryPath[directoryPath.Length - 1] != '\\') + directoryPath += '/'; + return directoryPath + fileOrDirectoryName; + } + + public static string[] GetDirectories(string path, bool getFullPaths = true) + { + var paths = Directory.GetDirectories(path); + for (int i = 0; i < paths.Length; i++) + { + if (!getFullPaths) + paths[i] = Path.GetFileName(paths[i]); + // GetDirectories sometimes returns backslashes, so we need to convert them to + // forward slashes. + paths[i].Replace("\\", "/"); + } + return paths; + } + + public static void DeleteDirectory(string directoryPath) + { + if (DirectoryExists(directoryPath)) + Directory.Delete(directoryPath, true); + } + + public static string[] GetFiles(string path, bool getFullPaths = true) + { + var paths = Directory.GetFiles(path); + if (!getFullPaths) + { + for (int i = 0; i < paths.Length; i++) + paths[i] = Path.GetFileName(paths[i]); + } + return paths; + } + + public static byte[] ReadAllBytes(string path) + { + return File.ReadAllBytes(path); + } + + public static void WriteAllBytes(string path, byte[] bytes) + { + File.WriteAllBytes(path, bytes); + } + + public static void CommitBackup(ES3Settings settings) + { + ES3Debug.Log("Committing backup for " + settings.path + " to storage location " + settings.location); + + var temporaryFilePath = settings.FullPath + temporaryFileSuffix; + + if (settings.location == ES3.Location.File) + { + var oldFileBackup = settings.FullPath + temporaryFileSuffix + ".bak"; + + // If there's existing save data to overwrite ... + if (FileExists(settings.FullPath)) + { + // Delete any old backups. + DeleteFile(oldFileBackup); + // Rename the old file so we can restore it if it fails. + MoveFile(settings.FullPath, oldFileBackup); + + try + { + // Now rename the temporary file to the name of the save file. + MoveFile(temporaryFilePath, settings.FullPath); + } + catch (Exception e) + { + // If any exceptions occur, restore the original save file. + try { DeleteFile(settings.FullPath); } catch { } + MoveFile(oldFileBackup, settings.FullPath); + throw e; + } + + DeleteFile(oldFileBackup); + } + // Else just rename the temporary file to the main file. + else + MoveFile(temporaryFilePath, settings.FullPath); + } + else if (settings.location == ES3.Location.PlayerPrefs) + { + PlayerPrefs.SetString(settings.FullPath, PlayerPrefs.GetString(temporaryFilePath)); + PlayerPrefs.DeleteKey(temporaryFilePath); + PlayerPrefs.Save(); + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs.meta new file mode 100644 index 00000000..2d3c49c9 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3IO.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0e3e89d69f37e4fa9b4d60467722ac73 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs new file mode 100644 index 00000000..a7047075 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/* + * Displays an info message in the inspector. + * Only available in the Editor. + */ +public class ES3InspectorInfo : MonoBehaviour +{ + #if UNITY_EDITOR + public string message = ""; + + public void SetMessage(string message) + { + this.message = message; + } + #endif +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs.meta new file mode 100644 index 00000000..c48e5393 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3InspectorInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8714d999c5ae749538494c1347e5a3ca +timeCreated: 1519132290 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs new file mode 100644 index 00000000..c62c91eb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs @@ -0,0 +1,212 @@ +using System.Collections.Generic; +using UnityEngine; +using ES3Internal; +#if UNITY_EDITOR +using UnityEditor; +#endif + + +namespace ES3Internal +{ + public class ES3Prefab : MonoBehaviour + { + public long prefabId = GetNewRefID(); + /* + * We need to store references to all dependencies of the prefab because only supported scripts will be serialised. + * This means that although supported scripts have their dependencies added to the reference manager when we load the prefab, + * there will not be any dependencies in the reference manager for scripts which are not supported. So it will not be possible to save any reference to these. + */ + public ES3RefIdDictionary localRefs = new ES3RefIdDictionary(); + + public void Awake() + { + // Add the references to the reference list when this prefab is instantiated. + var mgr = ES3ReferenceMgrBase.Current; + + if (mgr == null) + return; + + foreach (var kvp in localRefs) + if (kvp.Key != null) + mgr.Add(kvp.Key); + } + + public long Get(UnityEngine.Object obj) + { + long id; + if (localRefs.TryGetValue(obj, out id)) + return id; + return -1; + } + + public long Add(UnityEngine.Object obj) + { + long id; + if (localRefs.TryGetValue(obj, out id)) + return id; + + if (!ES3ReferenceMgr.CanBeSaved(obj)) + return -1; + id = GetNewRefID(); + localRefs.Add(obj, id); + return id; + } + + public Dictionary GetReferences() + { + var localToGlobal = new Dictionary(); + + var refMgr = ES3ReferenceMgr.Current; + + if (refMgr == null) + return localToGlobal; + + foreach (var kvp in localRefs) + { + long id = refMgr.Add(kvp.Key); + localToGlobal.Add(kvp.Value.ToString(), id.ToString()); + } + return localToGlobal; + } + + public void ApplyReferences(Dictionary localToGlobal) + { + if (ES3ReferenceMgrBase.Current == null) + return; + + foreach (var localRef in localRefs) + { + long globalId; + if (localToGlobal.TryGetValue(localRef.Value, out globalId)) + ES3ReferenceMgrBase.Current.Add(localRef.Key, globalId); + } + } + + public static long GetNewRefID() + { + return ES3ReferenceMgrBase.GetNewRefID(); + } +#if UNITY_EDITOR + public void GeneratePrefabReferences() + { +#if UNITY_2018_3_OR_NEWER + if (this.gameObject.scene.name != null || UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage() != null) +#else + if (this.gameObject.scene.name != null) +#endif + return; + + // Create a new reference list so that any objects which are no longer dependencies are removed. + var tempLocalRefs = new ES3RefIdDictionary(); + + // Get dependencies of children also. + var transforms = GetComponentsInChildren(); + var gos = new GameObject[transforms.Length]; + for (int i = 0; i < transforms.Length; i++) + gos[i] = transforms[i].gameObject; + + // Add the GameObject's dependencies to the reference list. + foreach (var obj in ES3ReferenceMgr.CollectDependencies(gos)) + { + var dependency = (UnityEngine.Object)obj; + if (obj == null || !ES3ReferenceMgr.CanBeSaved(dependency)) + continue; + + var id = Get(dependency); + // If we're adding a new reference, do an Undo.RecordObject to ensure it persists. + if (id == -1) + { + Undo.RecordObject(this, "Update Easy Save 3 Prefab"); + EditorUtility.SetDirty(this); + } + tempLocalRefs.Add(dependency, id == -1 ? GetNewRefID() : id); + } + + localRefs = tempLocalRefs; + } +#endif + } +} + +/* + * Create a blank ES3Type for ES3Prefab as it does not require serialising/deserialising when stored as a Component. + */ +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_ES3Prefab : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ES3Prefab() : base(typeof(ES3Prefab)) { Instance = this; } + + public override void Write(object obj, ES3Writer writer) + { + } + + public override object Read(ES3Reader reader) + { + return null; + } + } + + /* + * Use this ES3Type to serialise the . + */ + public class ES3Type_ES3PrefabInternal : ES3Type + { + public static ES3Type Instance = new ES3Type_ES3PrefabInternal(); + + public ES3Type_ES3PrefabInternal() : base(typeof(ES3Type_ES3PrefabInternal)) { Instance = this; } + + public override void Write(object obj, ES3Writer writer) + { + ES3Prefab es3Prefab = (ES3Prefab)obj; + + writer.WriteProperty("prefabId", es3Prefab.prefabId.ToString(), ES3Type_string.Instance); + writer.WriteProperty("refs", es3Prefab.GetReferences()); + } + + public override object Read(ES3Reader reader) + { + var prefabId = reader.ReadRefProperty(); + + if (ES3ReferenceMgrBase.Current == null) + return null; + + var es3Prefab = ES3ReferenceMgrBase.Current.GetPrefab(prefabId); + if (es3Prefab == null) + throw new MissingReferenceException("Prefab with ID " + prefabId + " could not be found.\nPress the 'Refresh References' button on the ES3ReferenceMgr Component of the Easy Save 3 Manager in the scene to refresh prefabs."); + + +#if UNITY_EDITOR + // Use PrefabUtility.InstantiatePrefab if we're saving in the Editor and the application isn't playing. + // This keeps the connection to the prefab, which is useful for Editor scripts saving data outside of runtime. + var instance = Application.isPlaying ? GameObject.Instantiate(es3Prefab.gameObject) : PrefabUtility.InstantiatePrefab(es3Prefab.gameObject); +#else + var instance = GameObject.Instantiate(es3Prefab.gameObject); +#endif + var instanceES3Prefab = ((GameObject)instance).GetComponent(); + if (instanceES3Prefab == null) + throw new MissingReferenceException("Prefab with ID " + prefabId + " was found, but it does not have an ES3Prefab component attached."); + + ReadInto(reader, instance); + + return instanceES3Prefab.gameObject; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + // Load as ES3Refs and convert to longs. + var localToGlobal_refs = reader.ReadProperty>(ES3Type_ES3RefDictionary.Instance); + var localToGlobal = new Dictionary(); + foreach (var kvp in localToGlobal_refs) + localToGlobal.Add(kvp.Key.id, kvp.Value.id); + + if (ES3ReferenceMgrBase.Current == null) + return; + + ((GameObject)obj).GetComponent().ApplyReferences(localToGlobal); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs.meta new file mode 100644 index 00000000..4c771c97 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Prefab.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: baff8732cd3074ef88b34f9cc487846d +timeCreated: 1519132295 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs new file mode 100644 index 00000000..91dceba9 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs @@ -0,0 +1,118 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using ES3Internal; +using UnityEngine.SceneManagement; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.SceneManagement; +using System.Reflection; +using System; +#endif + +public class ES3ReferenceMgr : ES3ReferenceMgrBase +{ +#if UNITY_EDITOR + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void RefreshDependencies(bool isEnteringPlayMode = false) + { + ES3ReferenceMgrBase.isEnteringPlayMode = isEnteringPlayMode; + + // If we're not adding all prefabs to the manager, clear the prefabs array each time we refresh the dependencies. + if (!ES3Settings.defaultSettingsScriptableObject.addAllPrefabsToManager) + prefabs.Clear(); + + // This will get the dependencies for all GameObjects and Components from the active scene. + AddDependencies(this.gameObject.scene.GetRootGameObjects()); + AddPrefabsToManager(); + RemoveNullOrInvalidValues(); + + ES3ReferenceMgrBase.isEnteringPlayMode = false; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void Optimize() + { + var dependencies = CollectDependencies(this.gameObject.scene.GetRootGameObjects()); + var notDependenciesOfScene = new HashSet(); + + foreach (var kvp in idRef) + if (!dependencies.Contains(kvp.Value)) + notDependenciesOfScene.Add(kvp.Value); + + foreach (var obj in notDependenciesOfScene) + { + Remove(obj); + } + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void AddDependencies(UnityEngine.Object[] objs) + { + for (int i = 0; i < objs.Length; i++) + { + var obj = objs[i]; + + if (obj.name == "Easy Save 3 Manager") + continue; + + var dependencies = CollectDependencies(obj); + + foreach (var dependency in dependencies) + { + if (dependency != null) + { + Add(dependency); + + // Add the prefab if it's referenced by this scene. + if (dependency.GetType() == typeof(ES3Prefab)) + AddPrefabToManager((ES3Prefab)dependency); + } + } + } + + Undo.RecordObject(this, "Update Easy Save 3 Reference List"); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void AddDependencies(UnityEngine.Object obj) + { + AddDependencies(new UnityEngine.Object[] { obj }); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void GeneratePrefabReferences() + { + AddPrefabsToManager(); + foreach (var es3Prefab in prefabs) + es3Prefab.GeneratePrefabReferences(); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void AddPrefabsToManager() + { + if (ES3Settings.defaultSettingsScriptableObject.addAllPrefabsToManager) + { + // Clear any null values. This isn't necessary if we're not adding all prefabs to manager as the list is cleared each time. + if (this.prefabs.RemoveAll(item => item == null) > 0) + Undo.RecordObject(this, "Update Easy Save 3 Reference List"); + + foreach (var es3Prefab in Resources.FindObjectsOfTypeAll()) + AddPrefabToManager(es3Prefab); + } + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + private void AddPrefabToManager(ES3Prefab es3Prefab) + { + try + { + if (es3Prefab != null && EditorUtility.IsPersistent(es3Prefab)) + if(AddPrefab(es3Prefab)) + Undo.RecordObject(this, "Update Easy Save 3 Reference List"); + es3Prefab.GeneratePrefabReferences(); + } + catch { } + } +#endif +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs.meta new file mode 100644 index 00000000..d1c37c61 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9a83408fcc9044c4fbc7e5d09a369ab6 +timeCreated: 1503395115 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs new file mode 100644 index 00000000..d809fd0e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs @@ -0,0 +1,622 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System; +using UnityEngine.UI; +using UnityEngine.SceneManagement; + +namespace ES3Internal +{ + [System.Serializable] + [DisallowMultipleComponent] + public abstract class ES3ReferenceMgrBase : MonoBehaviour + { + internal object _lock = new object(); + + public const string referencePropertyName = "_ES3Ref"; + private static ES3ReferenceMgrBase _current = null; + private static HashSet mgrs = new HashSet(); +#if UNITY_EDITOR + private const int CollectDependenciesDepth = 5; + protected static bool isEnteringPlayMode = false; + static readonly HideFlags[] invalidHideFlags = new HideFlags[] { HideFlags.DontSave, HideFlags.DontSaveInBuild, HideFlags.DontSaveInEditor, HideFlags.HideAndDontSave }; +#endif + + private static System.Random rng; + + [HideInInspector] + public bool openPrefabs = false; // Whether the prefab list should be open in the Editor. + + public List prefabs = new List(); + + public static ES3ReferenceMgrBase Current + { + get + { + // If the reference manager hasn't been assigned, or we've got a reference to a manager in a different scene which isn't marked as DontDestroyOnLoad, look for this scene's manager. + if (_current == null /*|| (_current.gameObject.scene.buildIndex != -1 && _current.gameObject.scene != SceneManager.GetActiveScene())*/) + { + var scene = SceneManager.GetActiveScene(); + var roots = scene.GetRootGameObjects(); + ES3ReferenceMgr mgr = null; + + // First, look for Easy Save 3 Manager in the top-level. + foreach (var root in roots) + if (root.name == "Easy Save 3 Manager") + mgr = root.GetComponent(); + + // If the user has moved or renamed the Easy Save 3 Manager, we need to perform a deep search. + if (mgr == null) + foreach (var root in roots) + if ((_current = root.GetComponentInChildren()) != null) + return _current; + + mgrs.Add(_current = mgr); + } + return _current; + } + } + + public bool IsInitialised { get { return idRef.Count > 0; } } + + [SerializeField] + public ES3IdRefDictionary idRef = new ES3IdRefDictionary(); + private ES3RefIdDictionary _refId = null; + + public ES3RefIdDictionary refId + { + get + { + if (_refId == null) + { + _refId = new ES3RefIdDictionary(); + // Populate the reverse dictionary with the items from the normal dictionary. + foreach (var kvp in idRef) + if (kvp.Value != null) + _refId[kvp.Value] = kvp.Key; + } + return _refId; + } + set + { + _refId = value; + } + } + + public ES3GlobalReferences GlobalReferences + { + get + { + return ES3GlobalReferences.Instance; + } + } + + private void Awake() + { + if (_current != null && _current != this) + { + var existing = _current; + + /* We intentionally use Current rather than _current here, as _current may contain a reference to a manager in another scene, + * but Current only returns the Manager for the active scene. */ + if (Current != null) + { + existing.Merge(this); + if (gameObject.name.Contains("Easy Save 3 Manager")) + Destroy(this.gameObject); + else + Destroy(this); + _current = existing; // Undo the call to Current, which may have set it to NULL. + } + } + else + _current = this; + mgrs.Add(this); + } + + private void OnDestroy() + { + mgrs.Remove(this); + } + + // Merges two managers, not allowing any clashes of IDs + public void Merge(ES3ReferenceMgrBase otherMgr) + { + foreach (var kvp in otherMgr.idRef) + Add(kvp.Value, kvp.Key); + } + + public long Get(UnityEngine.Object obj) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + if (obj == null) + return -1; + long id; + if (!mgr.refId.TryGetValue(obj, out id)) + return -1; + return id; + } + return -1; + } + + internal UnityEngine.Object Get(long id, Type type, bool suppressWarnings=false) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + if (id == -1) + return null; + UnityEngine.Object obj; + if (!mgr.idRef.TryGetValue(id, out obj)) + { + if (GlobalReferences != null) + { + var globalRef = GlobalReferences.Get(id); + if (globalRef != null) + return globalRef; + } + + if(type != null) + ES3Debug.LogWarning("Reference for " + type + " with ID " + id + " could not be found in Easy Save's reference manager. If you are loading objects dynamically (i.e. objects created at runtime), this warning is expected and can be ignored.", this); + else + ES3Debug.LogWarning("Reference with ID " + id + " could not be found in Easy Save's reference manager. If you are loading objects dynamically (i.e. objects created at runtime), this warning is expected and can be ignored.", this); + return null; + } + if (obj == null) // If obj has been marked as destroyed but not yet destroyed, don't return it. + return null; + return obj; + } + return null; + } + + public UnityEngine.Object Get(long id, bool suppressWarnings = false) + { + return Get(id, null, suppressWarnings); + } + + public ES3Prefab GetPrefab(long id, bool suppressWarnings = false) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + foreach (var prefab in mgr.prefabs) + if (prefabs != null && prefab.prefabId == id) + return prefab; + } + if (!suppressWarnings) + ES3Debug.LogWarning("Prefab with ID " + id + " could not be found in Easy Save's reference manager. Try pressing the Refresh References button on the ES3ReferenceMgr Component of the Easy Save 3 Manager in your scene.", this); + return null; + } + + public long GetPrefab(ES3Prefab prefabToFind, bool suppressWarnings = false) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + foreach (var prefab in prefabs) + if (prefab == prefabToFind) + return prefab.prefabId; + } + if (!suppressWarnings) + ES3Debug.LogWarning("Prefab with name " + prefabToFind.name + " could not be found in Easy Save's reference manager. Try pressing the Refresh References button on the ES3ReferenceMgr Component of the Easy Save 3 Manager in your scene.", prefabToFind); + return -1; + } + + public long Add(UnityEngine.Object obj) + { + long id; + // If it already exists in the list, do nothing. + if (refId.TryGetValue(obj, out id)) + return id; + + if (GlobalReferences != null) + { + id = GlobalReferences.GetOrAdd(obj); + if (id != -1) + { + Add(obj, id); + return id; + } + } + + lock (_lock) + { + // Add the reference to the Dictionary. + id = GetNewRefID(); + return Add(obj, id); + } + } + + public long Add(UnityEngine.Object obj, long id) + { + if (!CanBeSaved(obj)) + return -1; + + // If the ID is -1, auto-generate an ID. + if (id == -1) + id = GetNewRefID(); + // Add the reference to the Dictionary. + lock (_lock) + { + idRef[id] = obj; + if(obj != null) + refId[obj] = id; + } + return id; + } + + public bool AddPrefab(ES3Prefab prefab) + { + if (!prefabs.Contains(prefab)) + { + prefabs.Add(prefab); + return true; + } + return false; + } + + public void Remove(UnityEngine.Object obj) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + lock (mgr._lock) + { + mgr.refId.Remove(obj); + // There may be multiple references with the same ID, so remove them all. + foreach (var item in mgr.idRef.Where(kvp => kvp.Value == obj).ToList()) + mgr.idRef.Remove(item.Key); + } + } + } + + public void Remove(long referenceID) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + lock (mgr._lock) + { + mgr.idRef.Remove(referenceID); + // There may be multiple references with the same ID, so remove them all. + foreach (var item in mgr.refId.Where(kvp => kvp.Value == referenceID).ToList()) + mgr.refId.Remove(item.Key); + } + } + } + + public void RemoveNullOrInvalidValues() + { + var nullKeys = idRef.Where(pair => pair.Value == null || !CanBeSaved(pair.Value)) + .Select(pair => pair.Key).ToList(); + foreach (var key in nullKeys) + idRef.Remove(key); + + if (GlobalReferences != null) + GlobalReferences.RemoveInvalidKeys(); + } + + public void Clear() + { + lock (_lock) + { + refId.Clear(); + idRef.Clear(); + } + } + + public bool Contains(UnityEngine.Object obj) + { + return refId.ContainsKey(obj); + } + + public bool Contains(long referenceID) + { + return idRef.ContainsKey(referenceID); + } + + public void ChangeId(long oldId, long newId) + { + foreach (var mgr in mgrs) + { + if (mgr == null) + continue; + + mgr.idRef.ChangeKey(oldId, newId); + // Empty the refId so it has to be refreshed. + mgr.refId = null; + } + } + + internal static long GetNewRefID() + { + if (rng == null) + rng = new System.Random(); + + byte[] buf = new byte[8]; + rng.NextBytes(buf); + long longRand = BitConverter.ToInt64(buf, 0); + + return (System.Math.Abs(longRand % (long.MaxValue - 0)) + 0); + } + +#if UNITY_EDITOR + public static HashSet CollectDependencies(UnityEngine.Object obj, HashSet dependencies = null, int depth = CollectDependenciesDepth) + { + return CollectDependencies(new UnityEngine.Object[] { obj }, dependencies, depth); + } + + /* + * Collects all top-level dependencies of an object. + * For GameObjects, it will traverse all children. + * For Components or ScriptableObjects, it will get all serialisable UnityEngine.Object fields/properties as dependencies. + */ + public static HashSet CollectDependencies(UnityEngine.Object[] objs, HashSet dependencies = null, int depth = CollectDependenciesDepth) + { + if (depth < 0) + return dependencies; + + if (dependencies == null) + dependencies = new HashSet(); + + foreach (var obj in objs) + { + if (obj == null) + continue; + + var type = obj.GetType(); + + // Skip types which don't need processing + if (type == typeof(ES3ReferenceMgr) || type == typeof(ES3AutoSaveMgr) || type == typeof(ES3AutoSave) || type == typeof(ES3InspectorInfo)) + continue; + + // Add the prefab to the manager but don't process it. We'll use this to work out what prefabs to add to the prefabs list later. + if (type == typeof(ES3Prefab)) + { + dependencies.Add(obj); + continue; + } + + // If it's a GameObject, get the GameObject's Components and collect their dependencies. + if (type == typeof(GameObject)) + { + var go = (GameObject)obj; + // If we've not already processed this GameObject ... + if (dependencies.Add(go)) + { + // Get the dependencies of each Component in the GameObject. + CollectDependencies(go.GetComponents(), dependencies, depth - 1); + // Get the dependencies of each child in the GameObject. + foreach (Transform child in go.transform) + CollectDependencies(child.gameObject, dependencies, depth); // Don't decrement child, as we consider this a top-level object. + } + } + // Else if it's a Component or ScriptableObject, add the values of any UnityEngine.Object fields as dependencies. + else + CollectDependenciesFromFields(obj, dependencies, depth - 1); + } + + return dependencies; + } + + private static void CollectDependenciesFromFields(UnityEngine.Object obj, HashSet dependencies, int depth) + { + // If we've already collected dependencies for this, do nothing. + if (!dependencies.Add(obj)) + return; + + if (depth < 0) + return; + + var type = obj.GetType(); + + if (isEnteringPlayMode && type == typeof(UnityEngine.UI.Text)) + return; + + try + { + // SerializedObject is expensive, so for known classes we manually gather references. + + if (type == typeof(Animator) || obj is Transform || type == typeof(CanvasRenderer) || type == typeof(Mesh) || type == typeof(AudioClip) || type == typeof(Rigidbody) || obj is Texture || obj is HorizontalOrVerticalLayoutGroup) + return; + + if (obj is Graphic) + { + var m = (Graphic)obj; + dependencies.Add(m.material); + dependencies.Add(m.defaultMaterial); + dependencies.Add(m.mainTexture); + + if (type == typeof(Text)) + { + var text = (Text)obj; + dependencies.Add(text.font); + } + else if (type == typeof(Image)) + { + var img = (Image)obj; + dependencies.Add(img.sprite); + } + return; + } + + if (type == typeof(Mesh)) + { + if (UnityEditor.AssetDatabase.Contains(obj)) + dependencies.Add(obj); + return; + } + + if (type == typeof(Material)) + { + dependencies.Add(((Material)obj).shader); + return; + } + + if (type == typeof(MeshFilter)) + { + dependencies.Add(((MeshFilter)obj).sharedMesh); + return; + } + + if (type == typeof(MeshCollider)) + { + var mc = (MeshCollider)obj; + dependencies.Add(mc.sharedMesh); + dependencies.Add(mc.sharedMaterial); + dependencies.Add(mc.attachedRigidbody); + return; + } + + if (type == typeof(Camera)) + { + var c = (Camera)obj; + dependencies.Add(c.targetTexture); + return; + } + + if (type == typeof(SkinnedMeshRenderer)) + dependencies.Add(((SkinnedMeshRenderer)obj).sharedMesh); // Don't return. Let this fall through to the if(obj is renderer) call. + else if (type == typeof(SpriteRenderer)) + dependencies.Add(((SpriteRenderer)obj).sprite); // Don't return. Let this fall through to the if(obj is renderer) call. + else if (type == typeof(ParticleSystemRenderer)) + dependencies.Add(((ParticleSystemRenderer)obj).mesh); // Don't return. Let this fall through to the if(obj is renderer) call. + + if (obj is Renderer) + { + dependencies.UnionWith(((Renderer)obj).sharedMaterials); + return; + } + } + catch { } + + var so = new UnityEditor.SerializedObject(obj); + if (so == null) + return; + + var property = so.GetIterator(); + if (property == null) + return; + + // Iterate through each of this object's properties. + while (property.NextVisible(true)) + { + try + { + // If it's an array which contains UnityEngine.Objects, add them as dependencies. + if (property.isArray) + { + for (int i = 0; i < property.arraySize; i++) + { + var element = property.GetArrayElementAtIndex(i); + + // If the array contains UnityEngine.Object types, add them to the dependencies. + if (element.propertyType == UnityEditor.SerializedPropertyType.ObjectReference) + { + var elementValue = element.objectReferenceValue; + var elementType = elementValue.GetType(); + + // If it's a GameObject, use CollectDependencies so that Components are also added. + if (elementType == typeof(GameObject)) + CollectDependencies(elementValue, dependencies, depth - 1); + else + CollectDependenciesFromFields(elementValue, dependencies, depth - 1); + } + // Otherwise this array does not contain UnityEngine.Object types, so we should stop. + else + break; + } + } + // Else if it's a normal UnityEngine.Object field, add it. + else if (property.propertyType == UnityEditor.SerializedPropertyType.ObjectReference) + { + var propertyValue = property.objectReferenceValue; + if (propertyValue == null) + break; + + // If it's a GameObject, use CollectDependencies so that Components are also added. + if (propertyValue.GetType() == typeof(GameObject)) + CollectDependencies(propertyValue, dependencies, depth - 1); + else + CollectDependenciesFromFields(propertyValue, dependencies, depth - 1); + } + } + catch { } + } + } + + // Called in the Editor when this Component is added. + private void Reset() + { + // Ensure that Component can only be added by going to Assets > Easy Save 3 > Add Manager to Scene. + if (gameObject.name != "Easy Save 3 Manager") + { + UnityEditor.EditorUtility.DisplayDialog("Cannot add ES3ReferenceMgr directly", "Please go to 'Assets > Easy Save 3 > Add Manager to Scene' to add an Easy Save 3 Manager to your scene.", "Ok"); + DestroyImmediate(this); + } + } +#endif + + internal static bool CanBeSaved(UnityEngine.Object obj) + { +#if UNITY_EDITOR + if (obj == null) + return true; + + foreach (var flag in invalidHideFlags) + if ((obj.hideFlags & flag) != 0 && obj.hideFlags != HideFlags.HideInHierarchy && obj.hideFlags != HideFlags.HideInInspector && obj.hideFlags != HideFlags.NotEditable) + if (!(obj is Mesh || obj is Material)) + return false; + + // Exclude the Easy Save 3 Manager, and all components attached to it. + if (obj.name == "Easy Save 3 Manager") + return false; +#endif + return true; + } + } + + [System.Serializable] + public class ES3IdRefDictionary : ES3SerializableDictionary + { + protected override bool KeysAreEqual(long a, long b) + { + return a == b; + } + + protected override bool ValuesAreEqual(UnityEngine.Object a, UnityEngine.Object b) + { + return a == b; + } + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [System.Serializable] + public class ES3RefIdDictionary : ES3SerializableDictionary + { + protected override bool KeysAreEqual(UnityEngine.Object a, UnityEngine.Object b) + { + return a == b; + } + + protected override bool ValuesAreEqual(long a, long b) + { + return a == b; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs.meta new file mode 100644 index 00000000..be51e292 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3ReferenceMgrBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f659e3ad478b6470d9744732042e7515 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs new file mode 100644 index 00000000..b313fee8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs @@ -0,0 +1,766 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using System.Linq; +using System.Reflection; +using System.ComponentModel; +using UnityEngine; +using ES3Types; + +namespace ES3Internal +{ + public static class ES3Reflection + { + public const string memberFieldPrefix = "m_"; + public const string componentTagFieldName = "tag"; + public const string componentNameFieldName = "name"; + public static readonly string[] excludedPropertyNames = new string[] { "runInEditMode", "useGUILayout", "hideFlags" }; + + public static readonly Type serializableAttributeType = typeof(System.SerializableAttribute); + public static readonly Type serializeFieldAttributeType = typeof(SerializeField); + public static readonly Type obsoleteAttributeType = typeof(System.ObsoleteAttribute); + public static readonly Type nonSerializedAttributeType = typeof(System.NonSerializedAttribute); + public static readonly Type es3SerializableAttributeType = typeof(ES3Serializable); + public static readonly Type es3NonSerializableAttributeType = typeof(ES3NonSerializable); + + public static Type[] EmptyTypes = new Type[0]; + + private static Assembly[] _assemblies = null; + private static Assembly[] Assemblies + { + get + { + if (_assemblies == null) + { + var assemblyNames = new ES3Settings().assemblyNames; + var assemblyList = new List(); + + for (int i = 0; i < assemblyNames.Length; i++) + { + try + { + var assembly = Assembly.Load(new AssemblyName(assemblyNames[i])); + if (assembly != null) + assemblyList.Add(assembly); + } + catch { } + } + _assemblies = assemblyList.ToArray(); + } + return _assemblies; + } + } + + /* + * Gets the element type of a collection or array. + * Returns null if type is not a collection type. + */ + public static Type[] GetElementTypes(Type type) + { + if (IsGenericType(type)) + return ES3Reflection.GetGenericArguments(type); + else if (type.IsArray) + return new Type[] { ES3Reflection.GetElementType(type) }; + else + return null; + } + + public static List GetSerializableFields(Type type, List serializableFields = null, bool safe = true, string[] memberNames = null, BindingFlags bindings = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly) + { + if (type == null) + return new List(); + + var fields = type.GetFields(bindings); + + if (serializableFields == null) + serializableFields = new List(); + + foreach (var field in fields) + { + var fieldName = field.Name; + + // If a members array was provided as a parameter, only include the field if it's in the array. + if (memberNames != null) + if (!memberNames.Contains(fieldName)) + continue; + + var fieldType = field.FieldType; + + if (AttributeIsDefined(field, es3SerializableAttributeType)) + { + serializableFields.Add(field); + continue; + } + + if (AttributeIsDefined(field, es3NonSerializableAttributeType)) + continue; + + if (safe) + { + // If the field is private, only serialize it if it's explicitly marked as serializable. + if (!field.IsPublic && !AttributeIsDefined(field, serializeFieldAttributeType)) + continue; + } + + // Exclude const or readonly fields. + if (field.IsLiteral || field.IsInitOnly) + continue; + + // Don't store fields whose type is the same as the class the field is housed in unless it's stored by reference (to prevent cyclic references) + if (fieldType == type && !IsAssignableFrom(typeof(UnityEngine.Object), fieldType)) + continue; + + // If property is marked as obsolete or non-serialized, don't serialize it. + if (AttributeIsDefined(field, nonSerializedAttributeType) || AttributeIsDefined(field, obsoleteAttributeType)) + continue; + + if (!TypeIsSerializable(field.FieldType)) + continue; + + // Don't serialize member fields. + if (safe && fieldName.StartsWith(memberFieldPrefix) && field.DeclaringType.Namespace != null && field.DeclaringType.Namespace.Contains("UnityEngine")) + continue; + + serializableFields.Add(field); + } + + var baseType = BaseType(type); + if (baseType != null && baseType != typeof(System.Object) && baseType != typeof(UnityEngine.Object)) + GetSerializableFields(BaseType(type), serializableFields, safe, memberNames); + + return serializableFields; + } + + public static List GetSerializableProperties(Type type, List serializableProperties = null, bool safe = true, string[] memberNames = null, BindingFlags bindings = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly) + { + bool isComponent = IsAssignableFrom(typeof(UnityEngine.Component), type); + + // Only get private properties if we're not getting properties safely. + if (!safe) + bindings = bindings | BindingFlags.NonPublic; + + var properties = type.GetProperties(bindings); + + if (serializableProperties == null) + serializableProperties = new List(); + + foreach (var p in properties) + { + if (AttributeIsDefined(p, es3SerializableAttributeType)) + { + serializableProperties.Add(p); + continue; + } + + if (AttributeIsDefined(p, es3NonSerializableAttributeType)) + continue; + + var propertyName = p.Name; + + if (excludedPropertyNames.Contains(propertyName)) + continue; + + // If a members array was provided as a parameter, only include the property if it's in the array. + if (memberNames != null) + if (!memberNames.Contains(propertyName)) + continue; + + if (safe) + { + // If safe serialization is enabled, only get properties which are explicitly marked as serializable. + if (!AttributeIsDefined(p, serializeFieldAttributeType) && !AttributeIsDefined(p, es3SerializableAttributeType)) + continue; + } + + var propertyType = p.PropertyType; + + // Don't store properties whose type is the same as the class the property is housed in unless it's stored by reference (to prevent cyclic references) + if (propertyType == type && !IsAssignableFrom(typeof(UnityEngine.Object), propertyType)) + continue; + + if (!p.CanRead || !p.CanWrite) + continue; + + // Only support properties with indexing if they're an array. + if (p.GetIndexParameters().Length != 0 && !propertyType.IsArray) + continue; + + // Check that the type of the property is one which we can serialize. + // Also check whether an ES3Type exists for it. + if (!TypeIsSerializable(propertyType)) + continue; + + // Ignore certain properties on components. + if (isComponent) + { + // Ignore properties which are accessors for GameObject fields. + if (propertyName == componentTagFieldName || propertyName == componentNameFieldName) + continue; + } + + // If property is marked as obsolete or non-serialized, don't serialize it. + if (AttributeIsDefined(p, obsoleteAttributeType) || AttributeIsDefined(p, nonSerializedAttributeType)) + continue; + + serializableProperties.Add(p); + } + + var baseType = BaseType(type); + if (baseType != null && baseType != typeof(System.Object)) + GetSerializableProperties(baseType, serializableProperties, safe, memberNames); + + return serializableProperties; + } + + public static bool TypeIsSerializable(Type type) + { + if (type == null) + return false; + + if (AttributeIsDefined(type, es3NonSerializableAttributeType)) + return false; + + if (IsPrimitive(type) || IsValueType(type) || IsAssignableFrom(typeof(UnityEngine.Component), type) || IsAssignableFrom(typeof(UnityEngine.ScriptableObject), type)) + return true; + + var es3Type = ES3TypeMgr.GetOrCreateES3Type(type, false); + + if (es3Type != null && !es3Type.isUnsupported) + return true; + + if (TypeIsArray(type)) + { + if (TypeIsSerializable(type.GetElementType())) + return true; + return false; + } + + var genericArgs = type.GetGenericArguments(); + for (int i = 0; i < genericArgs.Length; i++) + if (!TypeIsSerializable(genericArgs[i])) + return false; + + if (HasParameterlessConstructor(type)) + return true; + return false; + } + + public static System.Object CreateInstance(Type type) + { + if (IsAssignableFrom(typeof(UnityEngine.Component), type)) + return ES3ComponentType.CreateComponent(type); + else if (IsAssignableFrom(typeof(ScriptableObject), type)) + return ScriptableObject.CreateInstance(type); + return Activator.CreateInstance(type); + } + + public static System.Object CreateInstance(Type type, params object[] args) + { + if (IsAssignableFrom(typeof(UnityEngine.Component), type)) + return ES3ComponentType.CreateComponent(type); + else if (IsAssignableFrom(typeof(ScriptableObject), type)) + return ScriptableObject.CreateInstance(type); + return Activator.CreateInstance(type, args); + } + + public static Array ArrayCreateInstance(Type type, int length) + { + return Array.CreateInstance(type, new int[] { length }); + } + + public static Array ArrayCreateInstance(Type type, int[] dimensions) + { + return Array.CreateInstance(type, dimensions); + } + + public static Type MakeGenericType(Type type, Type genericParam) + { + return type.MakeGenericType(genericParam); + } + + public static ES3ReflectedMember[] GetSerializableMembers(Type type, bool safe = true, string[] memberNames = null) + { + if (type == null) + return new ES3ReflectedMember[0]; + + var fieldInfos = GetSerializableFields(type, new List(), safe, memberNames); + var propertyInfos = GetSerializableProperties(type, new List(), safe, memberNames); + var reflectedFields = new ES3ReflectedMember[fieldInfos.Count + propertyInfos.Count]; + + for (int i = 0; i < fieldInfos.Count; i++) + reflectedFields[i] = new ES3ReflectedMember(fieldInfos[i]); + for (int i = 0; i < propertyInfos.Count; i++) + reflectedFields[i + fieldInfos.Count] = new ES3ReflectedMember(propertyInfos[i]); + + return reflectedFields; + } + + public static ES3ReflectedMember GetES3ReflectedProperty(Type type, string propertyName) + { + var propertyInfo = ES3Reflection.GetProperty(type, propertyName); + return new ES3ReflectedMember(propertyInfo); + } + + public static ES3ReflectedMember GetES3ReflectedMember(Type type, string fieldName) + { + var fieldInfo = ES3Reflection.GetField(type, fieldName); + return new ES3ReflectedMember(fieldInfo); + } + + /* + * Finds all classes of a specific type, and then returns an instance of each. + * Ignores classes which can't be instantiated (i.e. abstract classes). + */ + public static IList GetInstances() + { + var instances = new List(); + foreach (var assembly in Assemblies) + foreach (var type in assembly.GetTypes()) + if (IsAssignableFrom(typeof(T), type) && ES3Reflection.HasParameterlessConstructor(type) && !ES3Reflection.IsAbstract(type)) + instances.Add((T)Activator.CreateInstance(type)); + return instances; + } + + public static IList GetDerivedTypes(Type derivedType) + { + return + ( + from assembly in Assemblies + from type in assembly.GetTypes() + where IsAssignableFrom(derivedType, type) + select type + ).ToList(); + } + + public static bool IsAssignableFrom(Type a, Type b) + { + return a.IsAssignableFrom(b); + } + + public static Type GetGenericTypeDefinition(Type type) + { + return type.GetGenericTypeDefinition(); + } + + public static Type[] GetGenericArguments(Type type) + { + return type.GetGenericArguments(); + } + + public static int GetArrayRank(Type type) + { + return type.GetArrayRank(); + } + + public static string GetAssemblyQualifiedName(Type type) + { + return type.AssemblyQualifiedName; + } + + public static ES3ReflectedMethod GetMethod(Type type, string methodName, Type[] genericParameters, Type[] parameterTypes) + { + return new ES3ReflectedMethod(type, methodName, genericParameters, parameterTypes); + } + + public static bool TypeIsArray(Type type) + { + return type.IsArray; + } + + public static Type GetElementType(Type type) + { + return type.GetElementType(); + } + +#if NETFX_CORE + public static bool IsAbstract(Type type) + { + return type.GetTypeInfo().IsAbstract; + } + + public static bool IsInterface(Type type) + { + return type.GetTypeInfo().IsInterface; + } + + public static bool IsGenericType(Type type) + { + return type.GetTypeInfo().IsGenericType; + } + + public static bool IsValueType(Type type) + { + return type.GetTypeInfo().IsValueType; + } + + public static bool IsEnum(Type type) + { + return type.GetTypeInfo().IsEnum; + } + + public static bool HasParameterlessConstructor(Type type) + { + foreach (var cInfo in type.GetTypeInfo().DeclaredConstructors) + { + if (!cInfo.IsFamily && !cInfo.IsStatic && cInfo.GetParameters().Length == 0) + return true; + } + return false; + + } + + public static ConstructorInfo GetParameterlessConstructor(Type type) + { + foreach (var cInfo in type.GetTypeInfo().DeclaredConstructors) + { + if (!cInfo.IsFamily && cInfo.GetParameters().Length == 0) + return cInfo; + } + return null; + } + + public static string GetShortAssemblyQualifiedName(Type type) + { + if (IsPrimitive (type)) + return type.ToString (); + return type.FullName + "," + type.GetTypeInfo().Assembly.GetName().Name; + } + + public static PropertyInfo GetProperty(Type type, string propertyName) + { + var property = type.GetTypeInfo().GetDeclaredProperty(propertyName); + if (property == null && type.BaseType != typeof(object)) + return GetProperty(type.BaseType, propertyName); + return property; + } + + public static FieldInfo GetField(Type type, string fieldName) + { + return type.GetTypeInfo().GetDeclaredField(fieldName); + } + + public static MethodInfo[] GetMethods(Type type, string methodName) + { + return type.GetTypeInfo().GetDeclaredMethods(methodName); + } + + public static bool IsPrimitive(Type type) + { + return (type.GetTypeInfo().IsPrimitive || type == typeof(string) || type == typeof(decimal)); + } + + public static bool AttributeIsDefined(MemberInfo info, Type attributeType) + { + var attributes = info.GetCustomAttributes(attributeType, true); + foreach(var attribute in attributes) + return true; + return false; + } + + public static bool AttributeIsDefined(Type type, Type attributeType) + { + var attributes = type.GetTypeInfo().GetCustomAttributes(attributeType, true); + foreach(var attribute in attributes) + return true; + return false; + } + + public static bool ImplementsInterface(Type type, Type interfaceType) + { + return type.GetTypeInfo().ImplementedInterfaces.Contains(interfaceType); + } + + public static Type BaseType(Type type) + { + return type.GetTypeInfo().BaseType; + } +#else + public static bool IsAbstract(Type type) + { + return type.IsAbstract; + } + + public static bool IsInterface(Type type) + { + return type.IsInterface; + } + + public static bool IsGenericType(Type type) + { + return type.IsGenericType; + } + + public static bool IsValueType(Type type) + { + return type.IsValueType; + } + + public static bool IsEnum(Type type) + { + return type.IsEnum; + } + + public static bool HasParameterlessConstructor(Type type) + { + return type.GetConstructor(Type.EmptyTypes) != null || IsValueType(type); + } + + public static ConstructorInfo GetParameterlessConstructor(Type type) + { + return type.GetConstructor(Type.EmptyTypes); + } + + public static string GetShortAssemblyQualifiedName(Type type) + { + if (IsPrimitive(type)) + return type.ToString(); + return type.FullName + "," + type.Assembly.GetName().Name; + } + + public static PropertyInfo GetProperty(Type type, string propertyName) + { + var property = type.GetProperty(propertyName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + if (property == null && BaseType(type) != typeof(object)) + return GetProperty(BaseType(type), propertyName); + return property; + } + + public static FieldInfo GetField(Type type, string fieldName) + { + var field = type.GetField(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + if (field == null && BaseType(type) != typeof(object)) + return GetField(BaseType(type), fieldName); + return field; + } + + public static MethodInfo[] GetMethods(Type type, string methodName) + { + return type.GetMethods().Where(t => t.Name == methodName).ToArray(); + } + + public static bool IsPrimitive(Type type) + { + return (type.IsPrimitive || type == typeof(string) || type == typeof(decimal)); + } + + public static bool AttributeIsDefined(MemberInfo info, Type attributeType) + { + return Attribute.IsDefined(info, attributeType, true); + } + + public static bool AttributeIsDefined(Type type, Type attributeType) + { + return type.IsDefined(attributeType, true); + } + + public static bool ImplementsInterface(Type type, Type interfaceType) + { + return (type.GetInterface(interfaceType.Name) != null); + } + + public static Type BaseType(Type type) + { + return type.BaseType; + } + + public static Type GetType(string typeString) + { + switch (typeString) + { + case "bool": + return typeof(bool); + case "byte": + return typeof(byte); + case "sbyte": + return typeof(sbyte); + case "char": + return typeof(char); + case "decimal": + return typeof(decimal); + case "double": + return typeof(double); + case "float": + return typeof(float); + case "int": + return typeof(int); + case "uint": + return typeof(uint); + case "long": + return typeof(long); + case "ulong": + return typeof(ulong); + case "short": + return typeof(short); + case "ushort": + return typeof(ushort); + case "string": + return typeof(string); + case "Vector2": + return typeof(Vector2); + case "Vector3": + return typeof(Vector3); + case "Vector4": + return typeof(Vector4); + case "Color": + return typeof(Color); + case "Transform": + return typeof(Transform); + case "Component": + return typeof(UnityEngine.Component); + case "GameObject": + return typeof(GameObject); + case "MeshFilter": + return typeof(MeshFilter); + case "Material": + return typeof(Material); + case "Texture2D": + return typeof(Texture2D); + case "UnityEngine.Object": + return typeof(UnityEngine.Object); + case "System.Object": + return typeof(object); + default: + return Type.GetType(typeString); + } + } + + public static string GetTypeString(Type type) + { + if (type == typeof(bool)) + return "bool"; + else if (type == typeof(byte)) + return "byte"; + else if (type == typeof(sbyte)) + return "sbyte"; + else if (type == typeof(char)) + return "char"; + else if (type == typeof(decimal)) + return "decimal"; + else if (type == typeof(double)) + return "double"; + else if (type == typeof(float)) + return "float"; + else if (type == typeof(int)) + return "int"; + else if (type == typeof(uint)) + return "uint"; + else if (type == typeof(long)) + return "long"; + else if (type == typeof(ulong)) + return "ulong"; + else if (type == typeof(short)) + return "short"; + else if (type == typeof(ushort)) + return "ushort"; + else if (type == typeof(string)) + return "string"; + else if (type == typeof(Vector2)) + return "Vector2"; + else if (type == typeof(Vector3)) + return "Vector3"; + else if (type == typeof(Vector4)) + return "Vector4"; + else if (type == typeof(Color)) + return "Color"; + else if (type == typeof(Transform)) + return "Transform"; + else if (type == typeof(UnityEngine.Component)) + return "Component"; + else if (type == typeof(GameObject)) + return "GameObject"; + else if (type == typeof(MeshFilter)) + return "MeshFilter"; + else if (type == typeof(Material)) + return "Material"; + else if (type == typeof(Texture2D)) + return "Texture2D"; + else if (type == typeof(UnityEngine.Object)) + return "UnityEngine.Object"; + else if (type == typeof(object)) + return "System.Object"; + else + return GetShortAssemblyQualifiedName(type); + } +#endif + + /* + * Allows us to use FieldInfo and PropertyInfo interchangably. + */ + public struct ES3ReflectedMember + { + // The FieldInfo or PropertyInfo for this field. + private FieldInfo fieldInfo; + private PropertyInfo propertyInfo; + public bool isProperty; + + public bool IsNull { get { return fieldInfo == null && propertyInfo == null; } } + public string Name { get { return (isProperty ? propertyInfo.Name : fieldInfo.Name); } } + public Type MemberType { get { return (isProperty ? propertyInfo.PropertyType : fieldInfo.FieldType); } } + public bool IsPublic { get { return (isProperty ? (propertyInfo.GetGetMethod(true).IsPublic && propertyInfo.GetSetMethod(true).IsPublic) : fieldInfo.IsPublic); } } + public bool IsProtected { get { return (isProperty ? (propertyInfo.GetGetMethod(true).IsFamily) : fieldInfo.IsFamily); } } + public bool IsStatic { get { return (isProperty ? (propertyInfo.GetGetMethod(true).IsStatic) : fieldInfo.IsStatic); } } + + public ES3ReflectedMember(System.Object fieldPropertyInfo) + { + if (fieldPropertyInfo == null) + { + this.propertyInfo = null; + this.fieldInfo = null; + isProperty = false; + return; + } + + isProperty = ES3Reflection.IsAssignableFrom(typeof(PropertyInfo), fieldPropertyInfo.GetType()); + if (isProperty) + { + this.propertyInfo = (PropertyInfo)fieldPropertyInfo; + this.fieldInfo = null; + } + else + { + this.fieldInfo = (FieldInfo)fieldPropertyInfo; + this.propertyInfo = null; + } + } + + public void SetValue(System.Object obj, System.Object value) + { + if (isProperty) + propertyInfo.SetValue(obj, value, null); + else + fieldInfo.SetValue(obj, value); + } + + public System.Object GetValue(System.Object obj) + { + if (isProperty) + return propertyInfo.GetValue(obj, null); + else + return fieldInfo.GetValue(obj); + } + } + + public class ES3ReflectedMethod + { + private MethodInfo method; + + public ES3ReflectedMethod(Type type, string methodName, Type[] genericParameters, Type[] parameterTypes) + { + MethodInfo nonGenericMethod = type.GetMethod(methodName, parameterTypes); + this.method = nonGenericMethod.MakeGenericMethod(genericParameters); + } + + public ES3ReflectedMethod(Type type, string methodName, Type[] genericParameters, Type[] parameterTypes, BindingFlags bindingAttr) + { + MethodInfo nonGenericMethod = type.GetMethod(methodName, bindingAttr, null, parameterTypes, null); + this.method = nonGenericMethod.MakeGenericMethod(genericParameters); + } + + public object Invoke(object obj, object[] parameters = null) + { + return method.Invoke(obj, parameters); + } + } + + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs.meta new file mode 100644 index 00000000..e8d30de3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Reflection.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 499c212fb9e3c410dacca179f55ba150 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs new file mode 100644 index 00000000..d95f39b0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Linq; + +namespace ES3Internal +{ + [System.Serializable] + public abstract class ES3SerializableDictionary : Dictionary, ISerializationCallbackReceiver + { + [SerializeField] + private List _Keys; + [SerializeField] + private List _Values; + + protected abstract bool KeysAreEqual(TKey a, TKey b); + protected abstract bool ValuesAreEqual(TVal a, TVal b); + + public void OnBeforeSerialize() + { + _Keys = new List(); + _Values = new List(); + foreach(KeyValuePair pair in this) + { + try + { + _Keys.Add(pair.Key); + _Values.Add(pair.Value); + } + catch { } + } + } + + // load dictionary from lists + public void OnAfterDeserialize() + { + // There are some situations where Unity will not get the serialized data correctly, returning null. + // In this case we don't want to change anything, otherwise we'll lose the data entirely. + if (_Keys == null || _Values == null) + return; + + if(_Keys.Count != _Values.Count) + throw new System.Exception(string.Format("Key count is different to value count after deserialising dictionary.")); + + this.Clear(); + + for (int i = 0; i < _Keys.Count; i++) + { + if (_Keys[i] != null) + { + try + { + this.Add(_Keys[i], _Values[i]); + } + catch { } + } + } + + _Keys = null; + _Values = null; + } + + public int RemoveNullValues() + { + var nullKeys = this.Where(pair => pair.Value == null) + .Select(pair => pair.Key) + .ToList(); + foreach (var nullKey in nullKeys) + Remove(nullKey); + return nullKeys.Count; + } + + // Changes the key of a value without changing it's position in the underlying Lists. + // Mainly used in the Editor where position might otherwise change while the user is editing it. + // Returns true if a change was made. + public bool ChangeKey(TKey oldKey, TKey newKey) + { + if(KeysAreEqual(oldKey, newKey)) + return false; + + var val = this [oldKey]; + Remove(oldKey); + this [newKey] = val; + return true; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs.meta new file mode 100644 index 00000000..50a99d20 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3SerializableDictionary.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 681896bd0089c4f7296b3ecbd899f44d +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs new file mode 100644 index 00000000..ba9b6ad2 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs @@ -0,0 +1,280 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.IO; +using ES3Internal; + +public class ES3Spreadsheet +{ + private int cols = 0; + private int rows = 0; + private Dictionary cells = new Dictionary(); + + private const string QUOTE = "\""; + private const char QUOTE_CHAR = '"'; + private const char COMMA_CHAR = ','; + private const char NEWLINE_CHAR = '\n'; + private const string ESCAPED_QUOTE = "\"\""; + private static char[] CHARS_TO_ESCAPE = { ',', '"', '\n', ' ' }; + + public int ColumnCount + { + get{ return cols; } + } + + public int RowCount + { + get{ return rows; } + } + + public void SetCell(int col, int row, T value) + { + // If we're writing a string, add it without formatting. + if (value.GetType() == typeof(string)) + { + SetCellString(col, row, (string)(object)value); + return; + } + + var settings = new ES3Settings (); + using(var ms = new MemoryStream()) + { + using (var jsonWriter = new ES3JSONWriter (ms, settings, false, false)) + jsonWriter.Write(value, ES3.ReferenceMode.ByValue); + + SetCellString(col, row, settings.encoding.GetString(ms.ToArray())); + } + + // Expand the spreadsheet if necessary. + if(col >= cols) + cols = (col+1); + if(row >= rows) + rows = (row+1); + } + + private void SetCellString(int col, int row, string value) + { + cells [new Index (col, row)] = value; + + // Expand the spreadsheet if necessary. + if(col >= cols) + cols = (col+1); + if (row >= rows) + rows = (row + 1); + } + + + // Don't create non-generic version of this. Generic parameter is necessary as no type data is stored in the CSV file. + public T GetCell(int col, int row) + { + var val = GetCell(typeof(T), col, row); + + if (val == null) + return default(T); + return (T)val; + } + + internal object GetCell(System.Type type, int col, int row) + { + string value; + + if (col >= cols || row >= rows) + throw new System.IndexOutOfRangeException("Cell (" + col + ", " + row + ") is out of bounds of spreadsheet (" + cols + ", " + rows + ")."); + + if (!cells.TryGetValue(new Index(col, row), out value) || string.IsNullOrEmpty(value)) + return null; + + // If we're loading a string, simply return the string value. + if (type == typeof(string)) + { + var str = (object)value; + return str; + } + + var settings = new ES3Settings(); + using (var ms = new MemoryStream(settings.encoding.GetBytes(value))) + { + using (var jsonReader = new ES3JSONReader(ms, settings, false)) + { + var obj = ES3TypeMgr.GetOrCreateES3Type(type, true).Read(jsonReader); + return obj; + } + } + } + + public void Load(string filePath) + { + Load(new ES3Settings (filePath)); + } + + public void Load(string filePath, ES3Settings settings) + { + Load(new ES3Settings (filePath, settings)); + } + + public void Load(ES3Settings settings) + { + Load(ES3Stream.CreateStream(settings, ES3FileMode.Read), settings); + } + + public void LoadRaw(string str) + { + Load(new MemoryStream (((new ES3Settings ()).encoding).GetBytes(str)), new ES3Settings()); + } + + public void LoadRaw(string str, ES3Settings settings) + { + Load(new MemoryStream ((settings.encoding).GetBytes(str)), settings); + } + + private void Load(Stream stream, ES3Settings settings) + { + using (var reader = new StreamReader(stream)) + { + int c_int; + char c; + string value = ""; + int col = 0; + int row = 0; + + // Read until the end of the stream. + while(true) + { + c_int = reader.Read(); + c = (char)c_int; + if(c == QUOTE_CHAR) + { + while (true) + { + c = (char)reader.Read(); + + if(c == QUOTE_CHAR) + { + // If this quote isn't escaped by another, it is the last quote, so we should stop parsing this value. + if(((char)reader.Peek()) != QUOTE_CHAR) + break; + else + c = (char)reader.Read(); + } + value += c; + } + } + // If this is the end of a column, row, or the stream, add the value to the spreadsheet. + else if(c == COMMA_CHAR || c == NEWLINE_CHAR || c_int == -1) + { + SetCell(col, row, value); + value = ""; + if(c == COMMA_CHAR) + col++; + else if(c == NEWLINE_CHAR) + { + col = 0; + row++; + } + else + break; + } + else + value += c; + } + } + } + + public void Save(string filePath) + { + Save(new ES3Settings (filePath), false); + } + + public void Save(string filePath, ES3Settings settings) + { + Save(new ES3Settings (filePath, settings), false); + } + + public void Save(ES3Settings settings) + { + Save(settings, false); + } + + public void Save(string filePath, bool append) + { + Save(new ES3Settings (filePath), append); + } + + public void Save(string filePath, ES3Settings settings, bool append) + { + Save(new ES3Settings (filePath, settings), append); + } + + public void Save(ES3Settings settings, bool append) + { + using (var writer = new StreamWriter(ES3Stream.CreateStream(settings, append ? ES3FileMode.Append : ES3FileMode.Write))) + { + // If data already exists and we're appending, we need to prepend a newline. + if(append && ES3.FileExists(settings)) + writer.Write(NEWLINE_CHAR); + + var array = ToArray(); + for(int row = 0; row < rows; row++) + { + if(row != 0) + writer.Write(NEWLINE_CHAR); + + for(int col = 0; col < cols; col++) + { + if(col != 0) + writer.Write(COMMA_CHAR); + + writer.Write( Escape(array [col, row]) ); + } + } + } + if(!append) + ES3IO.CommitBackup(settings); + } + + private static string Escape(string str, bool isAlreadyWrappedInQuotes=false) + { + if(string.IsNullOrEmpty(str)) + return null; + + // Now escape any other quotes. + if(str.Contains(QUOTE)) + str = str.Replace(QUOTE, ESCAPED_QUOTE); + + // If there's chars to escape, wrap the value in quotes. + if(str.IndexOfAny(CHARS_TO_ESCAPE) > -1) + str = QUOTE + str + QUOTE; + return str; + } + + private static string Unescape(string str) + { + if(str.StartsWith(QUOTE) && str.EndsWith(QUOTE)) + { + str = str.Substring(1, str.Length-2); + if(str.Contains(ESCAPED_QUOTE)) + str = str.Replace(ESCAPED_QUOTE, QUOTE); + } + return str; + } + + private string[,] ToArray() + { + var array = new string[cols, rows]; + foreach (var cell in cells) + array [cell.Key.col, cell.Key.row] = cell.Value; + return array; + } + + protected struct Index + { + public int col; + public int row; + + public Index(int col, int row) + { + this.col = col; + this.row = row; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs.meta new file mode 100644 index 00000000..ad2f7488 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/ES3Spreadsheet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb1f812633929432dabb61bb8de267ba +timeCreated: 1508838134 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers.meta new file mode 100644 index 00000000..3fce6685 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 23cb117b6fd3547afa9766976f6dbd18 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs new file mode 100644 index 00000000..3adeb5d1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs @@ -0,0 +1,571 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.IO; +using System.Text; +using System; +using ES3Types; +using System.Globalization; + +namespace ES3Internal +{ + /* + * Specific ES3Reader for reading JSON data. + * + * Note: Leading & trailing whitespace is ignored whenever + * reading characters which are part of the JSON syntax, + * i.e. { } [ ] , " " : + */ + public class ES3JSONReader : ES3Reader + { + private const char endOfStreamChar = (char)65535; + + public StreamReader baseReader; + + internal ES3JSONReader(Stream stream, ES3Settings settings, bool readHeaderAndFooter = true) : base(settings, readHeaderAndFooter) + { + this.baseReader = new StreamReader(stream); + + // Read opening brace from file if we're loading straight from file. + if(readHeaderAndFooter) + { + try + { + SkipOpeningBraceOfFile(); + } + catch + { + this.Dispose(); + throw new FormatException("Cannot load from file because the data in it is not JSON data, or the data is encrypted.\nIf the save data is encrypted, please ensure that encryption is enabled when you load, and that you are using the same password used to encrypt the data."); + } + } + } + + #region Property/Key Methods + + /* + * Reads the name of a property, and must be positioned (with or without whitespace) either: + * - Before the '"' of a property name. + * - Before the ',' separating properties. + * - Before the '}' or ']' terminating this list of properties. + * Can be used in conjunction with Read(ES3Type) to read a property. + */ + public override string ReadPropertyName() + { + char c = PeekCharIgnoreWhitespace(); + + // Check whether there are any properties left to read. + if(IsTerminator(c)) + return null; + else if(c == ',') + ReadCharIgnoreWhitespace(); + else if(!IsQuotationMark(c)) + throw new FormatException("Expected ',' separating properties or '\"' before property name, found '"+c+"'."); + + var propertyName = Read_string(); + if(propertyName == null) + throw new FormatException("Stream isn't positioned before a property."); + + ES3Debug.Log(""+propertyName+" (reading property)", null, serializationDepth); + + // Skip the ':' seperating property and value. + ReadCharIgnoreWhitespace(':'); + + return propertyName; + } + + /* + * Reads the type data prefixed to this key. + * If ignore is true, it will return null to save the computation of converting + * the string to a Type. + */ + protected override Type ReadKeyPrefix(bool ignoreType=false) + { + StartReadObject(); + + Type dataType = null; + + string propertyName = ReadPropertyName(); + if(propertyName == ES3Type.typeFieldName) + { + string typeString = Read_string(); + dataType = ignoreType ? null : ES3Reflection.GetType(typeString); + propertyName = ReadPropertyName(); + } + + if(propertyName != "value") + throw new FormatException("This data is not Easy Save Key Value data. Expected property name \"value\", found \""+propertyName+"\"."); + + return dataType; + } + + protected override void ReadKeySuffix() + { + EndReadObject(); + } + + + internal override bool StartReadObject() + { + base.StartReadObject(); + return ReadNullOrCharIgnoreWhitespace('{'); + } + + internal override void EndReadObject() + { + ReadCharIgnoreWhitespace('}'); + base.EndReadObject(); + } + + + internal override bool StartReadDictionary() + { + return StartReadObject(); + } + + internal override void EndReadDictionary(){} + + internal override bool StartReadDictionaryKey() + { + // If this is an empty Dictionary, return false. + if(PeekCharIgnoreWhitespace() == '}') + { + ReadCharIgnoreWhitespace(); + return false; + } + return true; + } + + internal override void EndReadDictionaryKey() + { + ReadCharIgnoreWhitespace(':'); + } + + internal override void StartReadDictionaryValue(){} + + internal override bool EndReadDictionaryValue() + { + char c = ReadCharIgnoreWhitespace(); + // If we find a ']', we reached the end of the array. + if(c == '}') + return true; + // Else, we should expect a comma. + else if(c != ',') + throw new FormatException("Expected ',' seperating Dictionary items or '}' terminating Dictionary, found '"+c+"'."); + return false; + } + + + internal override bool StartReadCollection() + { + return ReadNullOrCharIgnoreWhitespace('['); + } + + internal override void EndReadCollection(){} + + internal override bool StartReadCollectionItem() + { + // If this is an empty collection, return false. + if(PeekCharIgnoreWhitespace() == ']') + { + ReadCharIgnoreWhitespace(); + return false; + } + return true; + } + + internal override bool EndReadCollectionItem() + { + char c = ReadCharIgnoreWhitespace(); + // If we find a ']', we reached the end of the array. + if(c == ']') + return true; + // Else, we should expect a comma. + else if(c != ',') + throw new FormatException("Expected ',' seperating collection items or ']' terminating collection, found '"+c+"'."); + return false; + } + + #endregion + + #region Seeking Methods + + /* + * Reads a string value into a StreamWriter. + * Reader should be positioned after the opening quotation mark. + * Will also read the closing quotation mark. + * If the 'skip' parameter is true, data will not be written into a StreamWriter and will return null. + */ + private void ReadString(StreamWriter writer, bool skip=false) + { + bool endOfString = false; + // Read to end of string, or throw error if we reach end of stream. + while(!endOfString) + { + char c = ReadOrSkipChar(writer, skip); + switch(c) + { + case endOfStreamChar: + throw new FormatException("String without closing quotation mark detected."); + case '\\': + ReadOrSkipChar(writer, skip); + break; + default: + if(IsQuotationMark(c)) + endOfString = true; + break; + } + } + } + + /* + * Reads the current object in the stream. + * Stream position should be somewhere before the opening brace for the object. + * When this method successfully exits, it will be on the closing brace for the object. + * If the 'skip' parameter is true, data will not be written into a StreamWriter and will return null. + */ + internal override byte[] ReadElement(bool skip=false) + { + // If 'skip' is enabled, don't create a stream or writer as we'll discard all bytes we read. + StreamWriter writer = skip ? null : new StreamWriter(new MemoryStream(settings.bufferSize)); + + using(writer) + { + int nesting = 0; + char c = (char)baseReader.Peek(); + + // Determine if we're skipping a primitive type. + // First check if it's an opening object or array brace. + if(!IsOpeningBrace(c)) + { + // If we're skipping a string, use SkipString(). + if(c == '\"') + { + // Skip initial quotation mark as SkipString() requires this. + ReadOrSkipChar(writer, skip); + ReadString(writer, skip); + } + // Else we just need to read until we reach a closing brace. + else + // While we've not peeked a closing brace. + while(!IsEndOfValue((char)baseReader.Peek())) + ReadOrSkipChar(writer, skip); + + if(skip) + return null; + writer.Flush(); + return ((MemoryStream)writer.BaseStream).ToArray(); + } + + // Else, we're skipping a type surrounded by braces. + // Iterate through every character, logging nesting. + while(true) + { + c = ReadOrSkipChar(writer, skip); + + if(c == endOfStreamChar) // Detect premature end of stream, which denotes missing closing brace. + throw new FormatException("Missing closing brace detected, as end of stream was reached before finding it."); + + // Handle quoted strings. + // According to the RFC, only '\' and '"' must be escaped in strings. + if(IsQuotationMark(c)) + { + ReadString(writer, skip); + continue; + } + + // Handle braces and other characters. + switch(c) + { + case '{': // Entered another level of nesting. + case '[': + nesting++; + break; + case '}': // Exited a level of nesting. + case ']': + nesting--; + // If nesting < 1, we've come to the end of the object. + if(nesting<1) + { + if(skip) + return null; + writer.Flush(); + return ((MemoryStream)writer.BaseStream).ToArray(); + } + break; + default: + break; + } + } + } + } + + /* + * Reads the next char into a stream, or ignores it if 'skip' is true. + */ + private char ReadOrSkipChar(StreamWriter writer, bool skip) + { + char c = (char)baseReader.Read(); + if(!skip) writer.Write(c); + return c; + } + + #endregion + + #region JSON-specific methods. + + /* + * Reads a char from the stream and ignores leading and trailing whitespace. + */ + private char ReadCharIgnoreWhitespace(bool ignoreTrailingWhitespace=true) + { + char c; + // Skip leading whitespace and read char. + while(IsWhiteSpace(c = (char)baseReader.Read())) + {} + + // Skip trailing whitespace. + if(ignoreTrailingWhitespace) + while(IsWhiteSpace((char)baseReader.Peek())) + baseReader.Read(); + + return c; + } + + /* + * Reads a char, or the NULL value, from the stream and ignores leading and trailing whitespace. + * Returns true if NULL was read. + */ + private bool ReadNullOrCharIgnoreWhitespace(char expectedChar) + { + char c = ReadCharIgnoreWhitespace(); + + // Check for null + if(c == 'n') + { + var chars = new char[3]; + baseReader.ReadBlock(chars, 0, 3); + if((char)chars[0] == 'u' && (char)chars[1] == 'l' && (char)chars[2] == 'l') + return true; + } + + if(c != expectedChar) + { + if(c == endOfStreamChar) + throw new FormatException("End of stream reached when expecting '"+expectedChar+"'."); + else + throw new FormatException("Expected \'"+expectedChar+"\' or \"null\", found \'"+c+"\'."); + } + return false; + } + + /* + * Reads a char from the stream and ignores leading and trailing whitespace. + * Throws an error if the char isn't equal to the one specificed as a parameter, or if it's the end of stream. + */ + private char ReadCharIgnoreWhitespace(char expectedChar) + { + char c = ReadCharIgnoreWhitespace(); + if(c != expectedChar) + { + if(c == endOfStreamChar) + throw new FormatException("End of stream reached when expecting '"+expectedChar+"'."); + else + throw new FormatException("Expected \'"+expectedChar+"\', found \'"+c+"\'."); + } + return c; + } + + private bool ReadQuotationMarkOrNullIgnoreWhitespace() + { + char c = ReadCharIgnoreWhitespace(false); // Don't read trailing whitespace as this is the value. + + if(c == 'n') + { + var chars = new char[3]; + baseReader.ReadBlock(chars, 0, 3); + if((char)chars[0] == 'u' && (char)chars[1] == 'l' && (char)chars[2] == 'l') + return true; + } + else if(!IsQuotationMark(c)) + { + if(c == endOfStreamChar) + throw new FormatException("End of stream reached when expecting quotation mark."); + else + throw new FormatException("Expected quotation mark, found \'"+c+"\'."); + } + return false; + } + + /* + * Peeks the next char in the stream, ignoring leading whitespace, but not trailing whitespace. + */ + private char PeekCharIgnoreWhitespace(char expectedChar) + { + char c = PeekCharIgnoreWhitespace(); + if(c != expectedChar) + { + if(c == endOfStreamChar) + throw new FormatException("End of stream reached while peeking, when expecting '"+expectedChar+"'."); + else + throw new FormatException("Expected \'"+expectedChar+"\', found \'"+c+"\'."); + } + return c; + } + + /* + * Peeks the next char in the stream, ignoring leading whitespace, but not trailing whitespace. + * Throws an error if the char isn't equal to the one specificed as a parameter. + */ + private char PeekCharIgnoreWhitespace() + { + char c; + // Skip leading whitespace and read char. + while(IsWhiteSpace(c = (char)baseReader.Peek())) + baseReader.Read(); + return c; + } + + // Skips all whitespace immediately after the current position. + private void SkipWhiteSpace() + { + while(IsWhiteSpace((char)baseReader.Peek())) + baseReader.Read(); + } + + private void SkipOpeningBraceOfFile() + { + // Skip the whitespace and '{' at the beginning of the JSON file. + char firstChar = ReadCharIgnoreWhitespace(); + if(firstChar != '{') // If first char isn't '{', it's not valid JSON. + throw new FormatException("File is not valid JSON. Expected '{' at beginning of file, but found '"+firstChar+"'."); + } + + private static bool IsWhiteSpace(char c) + { + return (c == ' ' || c == '\t' || c == '\n' || c == '\r'); + } + + private static bool IsOpeningBrace(char c) + { + return (c == '{' || c == '['); + } + + private static bool IsEndOfValue(char c) + { + return (c == '}' || c == ' ' || c == '\t' || c == ']' || c == ',' || c== ':' || c == endOfStreamChar || c == '\n' || c == '\r'); + } + + private static bool IsTerminator(char c) + { + return (c == '}' || c == ']'); + } + + private static bool IsQuotationMark(char c) + { + return c == '\"' || c == '“' || c == '”'; + } + + private static bool IsEndOfStream(char c) + { + return c == endOfStreamChar; + } + + /* + * Reads a value (i.e. non-string, non-object) from the stream as a string. + * Used mostly in Read_[type]() methods. + */ + private string GetValueString() + { + StringBuilder builder = new StringBuilder(); + + while(!IsEndOfValue(PeekCharIgnoreWhitespace())) + builder.Append((char)baseReader.Read()); + + // If it's an empty value, return null. + if(builder.Length == 0) + return null; + return builder.ToString(); + } + + #endregion + + #region Primitive Read() Methods. + + internal override string Read_string() + { + if(ReadQuotationMarkOrNullIgnoreWhitespace()) + return null; + char c; + + StringBuilder sb = new StringBuilder(); + + while(!IsQuotationMark((c = (char)baseReader.Read()))) + { + // If escape mark is found, generate correct escaped character. + if(c == '\\') + { + c = (char)baseReader.Read(); + if(IsEndOfStream(c)) + throw new FormatException("Reached end of stream while trying to read string literal."); + + switch(c) + { + case 'b': + c = '\b'; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + default: + break; + } + } + sb.Append(c); + } + return sb.ToString(); + } + + internal override long Read_ref() + { + if (ES3ReferenceMgr.Current == null) + throw new InvalidOperationException("An Easy Save 3 Manager is required to load references. To add one to your scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene"); + if (IsQuotationMark(PeekCharIgnoreWhitespace())) + return long.Parse(Read_string()); + return Read_long(); + } + + internal override char Read_char() { return char.Parse( Read_string()); } + internal override float Read_float() { return float.Parse( GetValueString(), CultureInfo.InvariantCulture); } + internal override int Read_int() { return int.Parse( GetValueString()); } + internal override bool Read_bool() { return bool.Parse( GetValueString()); } + internal override decimal Read_decimal() { return decimal.Parse( GetValueString(), CultureInfo.InvariantCulture); } + internal override double Read_double() { return double.Parse( GetValueString(), CultureInfo.InvariantCulture); } + internal override long Read_long() { return long.Parse( GetValueString()); } + internal override ulong Read_ulong() { return ulong.Parse( GetValueString()); } + internal override uint Read_uint() { return uint.Parse( GetValueString()); } + internal override byte Read_byte() { return (byte)int.Parse( GetValueString()); } + internal override sbyte Read_sbyte() { return (sbyte)int.Parse( GetValueString()); } + internal override short Read_short() { return (short)int.Parse( GetValueString()); } + internal override ushort Read_ushort() { return (ushort)int.Parse( GetValueString()); } + + internal override byte[] Read_byteArray(){ return System.Convert.FromBase64String(Read_string()); } + + #endregion + + + public override void Dispose() + { + baseReader.Dispose(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs.meta new file mode 100644 index 00000000..663a6bb3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8757682770a6c4537a3dcbed278277bc +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs new file mode 100644 index 00000000..25e8ffff --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs @@ -0,0 +1,451 @@ +using UnityEngine; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System; +using System.ComponentModel; +using ES3Types; +using ES3Internal; + +public abstract class ES3Reader : System.IDisposable +{ + /// The settings used to create this reader. + public ES3Settings settings; + + protected int serializationDepth = 0; + + #region ES3Reader Abstract Methods + + internal abstract int Read_int(); + internal abstract float Read_float(); + internal abstract bool Read_bool(); + internal abstract char Read_char(); + internal abstract decimal Read_decimal(); + internal abstract double Read_double(); + internal abstract long Read_long(); + internal abstract ulong Read_ulong(); + internal abstract byte Read_byte(); + internal abstract sbyte Read_sbyte(); + internal abstract short Read_short(); + internal abstract ushort Read_ushort(); + internal abstract uint Read_uint(); + internal abstract string Read_string(); + internal abstract byte[] Read_byteArray(); + internal abstract long Read_ref(); + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public abstract string ReadPropertyName(); + + protected abstract Type ReadKeyPrefix(bool ignore = false); + protected abstract void ReadKeySuffix(); + internal abstract byte[] ReadElement(bool skip=false); + + /// Disposes of the reader and it's underlying stream. + public abstract void Dispose(); + + // Seeks to the given key. Note that the stream position will not be reset. + internal virtual bool Goto(string key) + { + if (key == null) + throw new ArgumentNullException("Key cannot be NULL when loading data."); + + string currentKey; + while ((currentKey = ReadPropertyName()) != key) + { + if (currentKey == null) + return false; + Skip(); + } + return true; + } + + internal virtual bool StartReadObject() + { + serializationDepth++; + return false; + } + + internal virtual void EndReadObject() + { + serializationDepth--; + } + + internal abstract bool StartReadDictionary(); + internal abstract void EndReadDictionary(); + internal abstract bool StartReadDictionaryKey(); + internal abstract void EndReadDictionaryKey(); + internal abstract void StartReadDictionaryValue(); + internal abstract bool EndReadDictionaryValue(); + + internal abstract bool StartReadCollection(); + internal abstract void EndReadCollection(); + internal abstract bool StartReadCollectionItem(); + internal abstract bool EndReadCollectionItem(); + + #endregion + + internal ES3Reader(ES3Settings settings, bool readHeaderAndFooter = true) + { + this.settings = settings; + } + + // If this is not null, the next call to the Properties will return this name. + internal string overridePropertiesName = null; + /// Allows you to enumerate over each field name. This should only be used within an ES3Type file. + public virtual ES3ReaderPropertyEnumerator Properties + { + get + { + return new ES3ReaderPropertyEnumerator (this); + } + } + + internal virtual ES3ReaderRawEnumerator RawEnumerator + { + get + { + return new ES3ReaderRawEnumerator (this); + } + } + + /* + * Skips the current object in the stream. + * Stream position should be somewhere before the opening brace for the object. + * When this method successfully exits, it will be on the closing brace for the object. + */ + /// Skips the current object in the stream. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void Skip() + { + ReadElement(true); + } + + /// Reads a value of type T from the reader. + public virtual T Read() + { + return Read(ES3TypeMgr.GetOrCreateES3Type(typeof(T))); + } + + /// Reads a value of type T from the reader into an existing object. + /// The object we want to read our value into. + public virtual void ReadInto(object obj) + { + ReadInto(obj, ES3TypeMgr.GetOrCreateES3Type(typeof(T))); + } + + /// Reads a property (i.e. a property name and value) from the reader, ignoring the property name and only returning the value. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public T ReadProperty() + { + return ReadProperty(ES3TypeMgr.GetOrCreateES3Type(typeof(T))); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public T ReadProperty(ES3Type type) + { + ReadPropertyName(); + return Read(type); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public long ReadRefProperty() + { + ReadPropertyName(); + return Read_ref(); + } + + internal Type ReadType() + { + return ES3Reflection.GetType(Read(ES3Type_string.Instance)); + } + + /// Sets the value of a private property on an object. + /// The name of the property we want to set. + /// The value we want to set the property to. + /// The object containing the property we want to set. + public void SetPrivateProperty(string name, object value, object objectContainingProperty) + { + var property = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); + if(property.IsNull) + throw new MissingMemberException("A private property named "+ name + " does not exist in the type "+objectContainingProperty.GetType()); + property.SetValue(objectContainingProperty, value); + } + + /// Sets the value of a private field on an object. + /// The name of the field we want to set. + /// The value we want to set the field to. + /// The object containing the field we want to set. + public void SetPrivateField(string name, object value, object objectContainingField) + { + var field = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); + if(field.IsNull) + throw new MissingMemberException("A private field named "+ name + " does not exist in the type "+objectContainingField.GetType()); + field.SetValue(objectContainingField, value); + } + + #region Read(key) & Read(key, obj) methods + + /// Reads a value from the reader with the given key. + /// The key which uniquely identifies our value. + public virtual T Read(string key) + { + if(!Goto(key)) + throw new KeyNotFoundException("Key \"" + key + "\" was not found in file \""+settings.FullPath+"\". Use Load(key, defaultValue) if you want to return a default value if the key does not exist."); + + Type type = ReadTypeFromHeader(); + + T obj = Read(ES3TypeMgr.GetOrCreateES3Type(type)); + + //ReadKeySuffix(); //No need to read key suffix as we're returning. Doing so would throw an error at this point for BinaryReaders. + return obj; + } + + /// Reads a value from the reader with the given key, returning the default value if the key does not exist. + /// The key which uniquely identifies our value. + /// The value we want to return if this key does not exist in the reader. + public virtual T Read(string key, T defaultValue) + { + if(!Goto(key)) + return defaultValue; + + Type type = ReadTypeFromHeader(); + T obj = Read(ES3TypeMgr.GetOrCreateES3Type(type)); + + //ReadKeySuffix(); //No need to read key suffix as we're returning. Doing so would throw an error at this point for BinaryReaders. + return obj; + } + + /// Reads a value from the reader with the given key into the provided object. + /// The key which uniquely identifies our value. + /// The object we want to load the value into. + public virtual void ReadInto(string key, T obj) where T : class + { + if(!Goto(key)) + throw new KeyNotFoundException("Key \"" + key + "\" was not found in file \""+settings.FullPath+"\""); + + Type type = ReadTypeFromHeader(); + + ReadInto(obj, ES3TypeMgr.GetOrCreateES3Type(type)); + + //ReadKeySuffix(); //No need to read key suffix as we're returning. Doing so would throw an error at this point for BinaryReaders. + } + + protected virtual void ReadObject(object obj, ES3Type type) + { + // Check for null. + if(StartReadObject()) + return; + + type.ReadInto(this, obj); + + EndReadObject(); + } + + protected virtual T ReadObject(ES3Type type) + { + if(StartReadObject()) + return default(T); + + object obj = type.Read(this); + + EndReadObject(); + return (T)obj; + } + + + #endregion + + #region Read(ES3Type) & Read(obj,ES3Type) methods + + /* + * Parses the next JSON Object in the stream (i.e. must be between '{' and '}' chars). + * If the first character in the Stream is not a '{', it will throw an error. + * Will also read the terminating '}'. + * If we have reached the end of stream, it will return null. + */ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual T Read(ES3Type type) + { + if(type == null || type.isUnsupported) + throw new NotSupportedException("Type of "+type+" is not currently supported, and could not be loaded using reflection."); + else if(type.isPrimitive) + return (T)type.Read(this); + else if(type.isCollection) + return (T)((ES3CollectionType)type).Read(this); + else if(type.isDictionary) + return (T)((ES3DictionaryType)type).Read(this); + else + return ReadObject(type); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void ReadInto(object obj, ES3Type type) + { + if(type == null || type.isUnsupported) + throw new NotSupportedException("Type of "+obj.GetType()+" is not currently supported, and could not be loaded using reflection."); + + else if(type.isCollection) + ((ES3CollectionType)type).ReadInto(this, obj); + else if(type.isDictionary) + ((ES3DictionaryType)type).ReadInto(this, obj); + else + ReadObject(obj, type); + } + + + #endregion + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal Type ReadTypeFromHeader() + { + // Check whether we need to determine the type by reading the header. + if(typeof(T) == typeof(object)) + return ReadKeyPrefix(); + else if(settings.typeChecking) + { + Type type = ReadKeyPrefix(); + if(type != typeof(T)) + throw new InvalidOperationException("Trying to load data of type "+typeof(T)+", but data contained in file is type of "+type+"."); + return type; + } + else + { + ReadKeyPrefix(true); + return typeof(T); + } + } + + /// Creates a new ES3Reader and loads the default file into it. + public static ES3Reader Create() + { + return Create(new ES3Settings()); + } + + /// Creates a new ES3Reader and loads a file in storage into it. + /// The relative or absolute path of the file we want to load into the reader. + public static ES3Reader Create(string filePath) + { + return Create(new ES3Settings(filePath)); + } + + /// Creates a new ES3Reader and loads a file in storage into it. + /// The relative or absolute path of the file we want to load into the reader. + /// The settings we want to use to override the default settings. + public static ES3Reader Create(string filePath, ES3Settings settings) + { + return Create(new ES3Settings(filePath, settings)); + } + + /// Creates a new ES3Reader and loads a file in storage into it. + /// The settings we want to use to override the default settings. + public static ES3Reader Create(ES3Settings settings) + { + Stream stream = ES3Stream.CreateStream(settings, ES3FileMode.Read); + if(stream == null) + return null; + + // Get the baseWriter using the given Stream. + if (settings.format == ES3.Format.JSON) + return new ES3JSONReader(stream, settings); + return null; + } + + /// Creates a new ES3Reader and loads the bytes provided into it. + public static ES3Reader Create(byte[] bytes) + { + return Create(bytes, new ES3Settings()); + } + + /// Creates a new ES3Reader and loads the bytes provided into it. + /// The settings we want to use to override the default settings. + public static ES3Reader Create(byte[] bytes, ES3Settings settings) + { + Stream stream = ES3Stream.CreateStream(new MemoryStream(bytes), settings, ES3FileMode.Read); + if(stream == null) + return null; + + // Get the baseWriter using the given Stream. + if(settings.format == ES3.Format.JSON) + return new ES3JSONReader(stream, settings); + return null; + } + + internal static ES3Reader Create(Stream stream, ES3Settings settings) + { + stream = ES3Stream.CreateStream(stream, settings, ES3FileMode.Read); + + // Get the baseWriter using the given Stream. + if(settings.format == ES3.Format.JSON) + return new ES3JSONReader(stream, settings); + return null; + } + + internal static ES3Reader Create(Stream stream, ES3Settings settings, bool readHeaderAndFooter) + { + // Get the baseWriter using the given Stream. + if(settings.format == ES3.Format.JSON) + return new ES3JSONReader(stream, settings, readHeaderAndFooter); + return null; + } + + [EditorBrowsable(EditorBrowsableState.Never)] + public class ES3ReaderPropertyEnumerator + { + public ES3Reader reader; + + public ES3ReaderPropertyEnumerator(ES3Reader reader) + { + this.reader = reader; + } + + public IEnumerator GetEnumerator() + { + string propertyName; + while(true) + { + // Allows us to repeat a property name or insert one of our own. + if(reader.overridePropertiesName != null) + { + string tempName = reader.overridePropertiesName; + reader.overridePropertiesName = null; + yield return tempName; + } + else + { + if((propertyName = reader.ReadPropertyName()) == null) + yield break; + yield return propertyName; + } + } + } + } + + [EditorBrowsable(EditorBrowsableState.Never)] + public class ES3ReaderRawEnumerator + { + public ES3Reader reader; + + public ES3ReaderRawEnumerator(ES3Reader reader) + { + this.reader = reader; + } + + public IEnumerator GetEnumerator() + { + while(true) + { + string key = reader.ReadPropertyName(); + if(key == null) + yield break; + + Type type = reader.ReadTypeFromHeader(); + + byte[] bytes = reader.ReadElement(); + + reader.ReadKeySuffix(); + + if(type != null) + yield return new KeyValuePair(key, new ES3Data(type, bytes)); + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs.meta new file mode 100644 index 00000000..48dcb676 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3Reader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f511cfa2663a045aeac7dfe13754efba +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs new file mode 100644 index 00000000..51565a2d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs @@ -0,0 +1,5 @@ + +public class ES3XMLReader +{ + // Not Implemented +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs.meta new file mode 100644 index 00000000..b824bdec --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Readers/ES3XMLReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ef972c40e0163f4c873b7e18c0e24fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing.meta new file mode 100644 index 00000000..54e00d82 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7aae016e8c4b7924290cd0904f1509b5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs new file mode 100644 index 00000000..f4bf8294 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs @@ -0,0 +1,127 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace ES3Internal +{ + public class ES3GlobalReferences : ScriptableObject + { +#if !UNITY_EDITOR || ES3GLOBAL_DISABLED + public static ES3GlobalReferences Instance{ get{ return null; } } + public UnityEngine.Object Get(long id){return null;} + public long GetOrAdd(UnityEngine.Object obj){return -1;} + public void RemoveInvalidKeys(){} +#else + +#if ES3GLOBAL_DISABLED + private static bool useGlobalReferences = false; +#else + private static bool useGlobalReferences = true; +#endif + + private const string globalReferencesPath = "ES3/ES3GlobalReferences"; + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public ES3RefIdDictionary refId = new ES3RefIdDictionary(); + + private static ES3GlobalReferences _globalReferences = null; + public static ES3GlobalReferences Instance + { + get + { + // If Global References is disabled, we still keep it enabled unless we're playing so that ES3ReferenceMgrs in different scenes still use the same IDs. + if (Application.isPlaying && !useGlobalReferences) + return null; + + if (_globalReferences == null) + { + _globalReferences = Resources.Load(globalReferencesPath); + + if (_globalReferences == null) + { + _globalReferences = ScriptableObject.CreateInstance(); + + // If this is the version being submitted to the Asset Store, don't include ES3Defaults. + if (Application.productName.Contains("ES3 Release")) + { + Debug.Log("This has been identified as a release build as the title contains 'ES3 Release', so ES3GlobalReferences will not be created."); + return _globalReferences; + } + + ES3Settings.CreateDefaultSettingsFolder(); + UnityEditor.AssetDatabase.CreateAsset(_globalReferences, PathToGlobalReferences()); + UnityEditor.AssetDatabase.SaveAssets(); + } + + } + + return _globalReferences; + } + } + + private long Get(UnityEngine.Object obj) + { + if (obj == null) + return -1; + + long id; + if (!refId.TryGetValue(obj, out id)) + return -1; + return id; + } + + public UnityEngine.Object Get(long id) + { + foreach(var kvp in refId) + if (kvp.Value == id) + return kvp.Key; + return null; + } + + public void RemoveInvalidKeys() + { + var newRefId = new ES3RefIdDictionary(); + foreach (var kvp in refId) + { + var obj = kvp.Key; + if (obj == null) + continue; + + if ((((obj.hideFlags & HideFlags.DontSave) == HideFlags.DontSave) || + ((obj.hideFlags & HideFlags.DontSaveInBuild) == HideFlags.DontSaveInBuild) || + ((obj.hideFlags & HideFlags.DontSaveInEditor) == HideFlags.DontSaveInEditor) || + ((obj.hideFlags & HideFlags.HideAndDontSave) == HideFlags.HideAndDontSave))) + { + var type = obj.GetType(); + // Meshes are marked with HideAndDontSave, but shouldn't be ignored. + if (type != typeof(Mesh) && type != typeof(Material)) + continue; + } + newRefId[obj] = kvp.Value; + } + refId = newRefId; + } + + public long GetOrAdd(UnityEngine.Object obj) + { + var id = Get(obj); + + // Only add items to global references when it's not playing. + if (!Application.isPlaying && id == -1 && UnityEditor.AssetDatabase.Contains(obj) && ES3ReferenceMgr.CanBeSaved(obj)) + { + id = ES3ReferenceMgrBase.GetNewRefID(); + refId.Add(obj, id); + + UnityEditor.EditorUtility.SetDirty(this); + } + + return id; + } + + private static string PathToGlobalReferences() + { + return ES3Settings.PathToEasySaveFolder() + "Resources/" + globalReferencesPath +".asset"; + } +#endif + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs.meta new file mode 100644 index 00000000..591df097 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Referencing/ES3GlobalReferences.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e6b16dc7c203450459bb86e24305f9ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings.meta new file mode 100644 index 00000000..034ed770 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6c350197e0cac40839770b990d43d828 +folderAsset: yes +timeCreated: 1499765763 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs new file mode 100644 index 00000000..cd36638d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace ES3Internal +{ + public class ES3DefaultSettings : MonoBehaviour + { + [SerializeField] + public ES3SerializableSettings settings = null; + + public bool autoUpdateReferences = true; + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs.meta new file mode 100644 index 00000000..5cb6de2f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3DefaultSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6d233887d0c64d7e8f3ebcb39bc8c82 +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs new file mode 100644 index 00000000..baac1ff4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ES3Defaults : ScriptableObject +{ + [SerializeField] + public ES3SerializableSettings settings = new ES3SerializableSettings(); + + public bool addMgrToSceneAutomatically = false; + public bool autoUpdateReferences = true; + public bool addAllPrefabsToManager = true; + + public bool logDebugInfo = false; + public bool logWarnings = true; + public bool logErrors = true; +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs.meta new file mode 100644 index 00000000..4a6af3f5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Defaults.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b340139c9e4d054f904d8b452798652 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs new file mode 100644 index 00000000..3cafa2d0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs @@ -0,0 +1,377 @@ +using UnityEngine; +using ES3Internal; +#if UNITY_EDITOR +using UnityEditor; +#endif + +public class ES3Settings : System.ICloneable +{ + + #region Default settings + private static ES3Settings _defaults = null; + private static ES3Defaults _defaultSettingsScriptableObject; + private const string defaultSettingsPath = "ES3/ES3Defaults"; + + public static ES3Defaults defaultSettingsScriptableObject + { + get + { + if (_defaultSettingsScriptableObject == null) + { + _defaultSettingsScriptableObject = Resources.Load(defaultSettingsPath); + +#if UNITY_EDITOR + if (_defaultSettingsScriptableObject == null) + { + _defaultSettingsScriptableObject = ScriptableObject.CreateInstance(); + + // If this is the version being submitted to the Asset Store, don't include ES3Defaults. + if (Application.productName.Contains("ES3 Release")) + { + Debug.Log("This has been identified as a release build as the title contains 'ES3 Release', so ES3Defaults will not be created."); + return _defaultSettingsScriptableObject; + } + + // Convert the old settings to the new settings if necessary. + var oldSettings = GetOldSettings(); + if (oldSettings != null) + { + oldSettings.CopyInto(_defaultSettingsScriptableObject.settings); + // Only enable warning logs by default for new installs as this may look like unexpected behaviour to some. + _defaultSettingsScriptableObject.logWarnings = false; + RemoveOldSettings(); + } + + CreateDefaultSettingsFolder(); + AssetDatabase.CreateAsset(_defaultSettingsScriptableObject, PathToDefaultSettings()); + AssetDatabase.SaveAssets(); + } +#endif + } + return _defaultSettingsScriptableObject; + } + } + + public static ES3Settings defaultSettings + { + get + { + if(_defaults == null) + { + if(defaultSettingsScriptableObject != null) + _defaults = defaultSettingsScriptableObject.settings; + } + return _defaults; + } + } + + private static ES3Settings _unencryptedUncompressedSettings = null; + internal static ES3Settings unencryptedUncompressedSettings + { + get + { + if (_unencryptedUncompressedSettings == null) + _unencryptedUncompressedSettings = new ES3Settings(ES3.EncryptionType.None, ES3.CompressionType.None); + return _unencryptedUncompressedSettings; + } + } + + #endregion + + #region Fields + + private static readonly string[] resourcesExtensions = new string[]{".txt", ".htm", ".html", ".xml", ".bytes", ".json", ".csv", ".yaml", ".fnt" }; + + [SerializeField] + private ES3.Location _location; + /// The location where we wish to store data. As it's not possible to save/load from File in WebGL, if the default location is File it will use PlayerPrefs instead. + public ES3.Location location + { + get + { + if(_location == ES3.Location.File && (Application.platform == RuntimePlatform.WebGLPlayer || Application.platform == RuntimePlatform.tvOS)) + return ES3.Location.PlayerPrefs; + return _location; + } + set{ _location = value; } + } + + /// The path associated with this ES3Settings object, if any. + public string path = "SaveFile.es3"; + /// The type of encryption to use when encrypting data, if any. + public ES3.EncryptionType encryptionType = ES3.EncryptionType.None; + /// The type of encryption to use when encrypting data, if any. + public ES3.CompressionType compressionType = ES3.CompressionType.None; + /// The password to use when encrypting data. + public string encryptionPassword = "password"; + /// The default directory in which to store files, and the location which relative paths should be relative to. + public ES3.Directory directory = ES3.Directory.PersistentDataPath; + /// What format to use when serialising and deserialising data. + public ES3.Format format = ES3.Format.JSON; + /// Whether we want to pretty print JSON. + public bool prettyPrint = true; + /// Any stream buffers will be set to this length in bytes. + public int bufferSize = 2048; + /// The text encoding to use for text-based format. Note that changing this may invalidate previous save data. + public System.Text.Encoding encoding = System.Text.Encoding.UTF8; + // Whether we should serialise children when serialising a GameObject. + public bool saveChildren = true; + + /// Whether we should check that the data we are loading from a file matches the method we are using to load it. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool typeChecking = true; + + /// Enabling this ensures that only serialisable fields are serialised. Otherwise, possibly unsafe fields and properties will be serialised. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool safeReflection = true; + /// Whether UnityEngine.Object members should be stored by value, reference or both. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public ES3.ReferenceMode memberReferenceMode = ES3.ReferenceMode.ByRef; + /// Whether the main save methods should save UnityEngine.Objects by value, reference, or both. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public ES3.ReferenceMode referenceMode = ES3.ReferenceMode.ByRefAndValue; + + /// How many levels of hierarchy Easy Save will serialise. This is used to protect against cyclic references. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int serializationDepthLimit = 64; + + /// The names of the Assemblies we should try to load our ES3Types from. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public string[] assemblyNames = new string[] { "Assembly-CSharp-firstpass", "Assembly-CSharp"}; + + /// Gets the full, absolute path which this ES3Settings object identifies. + public string FullPath + { + get + { + if (path == null) + throw new System.NullReferenceException("The 'path' field of this ES3Settings is null, indicating that it was not possible to load the default settings from Resources. Please check that the ES3 Default Settings.prefab exists in Assets/Plugins/Resources/ES3/"); + + if(IsAbsolute(path)) + return path; + + if(location == ES3.Location.File) + { + if(directory == ES3.Directory.PersistentDataPath) + return ES3IO.persistentDataPath + "/" + path; + if(directory == ES3.Directory.DataPath) + return Application.dataPath + "/" + path; + throw new System.NotImplementedException("File directory \""+directory+"\" has not been implemented."); + } + if(location == ES3.Location.Resources) + { + // Check that it has valid extension + var extension = System.IO.Path.GetExtension(path); + bool hasValidExtension = false; + foreach (var ext in resourcesExtensions) + { + if (extension == ext) + { + hasValidExtension = true; + break; + } + } + + if(!hasValidExtension) + throw new System.ArgumentException("Extension of file in Resources must be .json, .bytes, .txt, .csv, .htm, .html, .xml, .yaml or .fnt, but path given was \"" + path + "\""); + + // Remove extension + string resourcesPath = path.Replace(extension, ""); + return resourcesPath; + } + return path; + } + } + + #endregion + + #region Constructors + + /// Creates a new ES3Settings object with the given path. + /// The path associated with this ES3Settings object. + /// The settings we want to use to override the default settings. + public ES3Settings(string path = null, ES3Settings settings = null) : this(true) + { + // if there are settings to merge, merge them. + if (settings != null) + settings.CopyInto(this); + + if (path != null) + this.path = path; + } + + /// Creates a new ES3Settings object with the given path. + /// The path associated with this ES3Settings object. + /// Accepts an ES3.EncryptionType, ES3.CompressionType, ES3.Location, ES3.Directory or ES3.ReferenceMode. + public ES3Settings(string path, params System.Enum[] enums) : this(enums) + { + if (path != null) + this.path = path; + } + + + /// Creates a new ES3Settings object with the given path. + /// The path associated with this ES3Settings object. + /// Accepts an ES3.EncryptionType, ES3.CompressionType, ES3.Location, ES3.Directory or ES3.ReferenceMode. + public ES3Settings(params System.Enum[] enums) : this(true) + { + foreach (var setting in enums) + { + if (setting is ES3.EncryptionType) + this.encryptionType = (ES3.EncryptionType)setting; + else if (setting is ES3.Location) + this.location = (ES3.Location)setting; + else if (setting is ES3.CompressionType) + this.compressionType = (ES3.CompressionType)setting; + else if (setting is ES3.ReferenceMode) + this.referenceMode = (ES3.ReferenceMode)setting; + else if (setting is ES3.Format) + this.format = (ES3.Format)setting; + else if (setting is ES3.Directory) + this.directory = (ES3.Directory)setting; + } + } + + /// Creates a new ES3Settings object with the given encryption settings. + /// The type of encryption to use, if any. + /// The password to use when encrypting data. + public ES3Settings(ES3.EncryptionType encryptionType, string encryptionPassword) : this(true) + { + this.encryptionType = encryptionType; + this.encryptionPassword = encryptionPassword; + } + + /// Creates a new ES3Settings object with the given path and encryption settings. + /// The path associated with this ES3Settings object. + /// The type of encryption to use, if any. + /// The password to use when encrypting data. + /// The settings we want to use to override the default settings. + public ES3Settings(string path, ES3.EncryptionType encryptionType, string encryptionPassword, ES3Settings settings = null) : this(path, settings) + { + this.encryptionType = encryptionType; + this.encryptionPassword = encryptionPassword; + } + + /* Base constructor which allows us to bypass defaults so it can be called by Editor serialization */ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public ES3Settings(bool applyDefaults) + { + if (applyDefaults) + if (defaultSettings != null) + _defaults.CopyInto(this); + } + + #endregion + + #region Editor methods +#if UNITY_EDITOR + public static string pathToEasySaveFolder = null; + + public static string PathToEasySaveFolder() + { + // If the path has not yet been cached, get the path and cache it. + if (string.IsNullOrEmpty(pathToEasySaveFolder)) + { + string[] guids = AssetDatabase.FindAssets("ES3Window"); + if (guids.Length == 0) + ES3Debug.LogError("Could not locate the Easy Save 3 folder because the ES3Window script has been moved or removed."); + if (guids.Length > 1) + ES3Debug.LogError("Could not locate the Easy Save 3 folder because more than one ES3Window script exists in the project, but this needs to be unique to locate the folder."); + + pathToEasySaveFolder = AssetDatabase.GUIDToAssetPath(guids[0]).Split(new string[] { "Editor" }, System.StringSplitOptions.RemoveEmptyEntries)[0]; + } + return pathToEasySaveFolder; + } + + internal static string PathToDefaultSettings() + { + return PathToEasySaveFolder() + "Resources/"+defaultSettingsPath+".asset"; + } + + internal static void CreateDefaultSettingsFolder() + { + if (AssetDatabase.IsValidFolder(PathToEasySaveFolder() + "Resources/ES3")) + return; + // Remove leading slash from PathToEasySaveFolder. + AssetDatabase.CreateFolder(PathToEasySaveFolder().Remove(PathToEasySaveFolder().Length - 1, 1), "Resources"); + AssetDatabase.CreateFolder(PathToEasySaveFolder() + "Resources", "ES3"); + } + + private static ES3SerializableSettings GetOldSettings() + { + var go = Resources.Load(defaultSettingsPath.Replace("ES3Defaults", "ES3 Default Settings")); + if(go != null) + { + var c = go.GetComponent(); + if (c != null && c.settings != null) + return c.settings; + } + return null; + } + + private static void RemoveOldSettings() + { + AssetDatabase.DeleteAsset(PathToDefaultSettings().Replace("ES3Defaults.asset", "ES3 Default Settings.prefab")); + } +#endif + #endregion + + #region Utility methods + + private static bool IsAbsolute(string path) + { + if (path.Length > 0 && (path[0] == '/' || path[0] == '\\')) + return true; + if (path.Length > 1 && path[1] == ':') + return true; + return false; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public object Clone() + { + var settings = new ES3Settings(); + CopyInto(settings); + return settings; + } + + private void CopyInto(ES3Settings newSettings) + { + newSettings._location = _location; + newSettings.directory = directory; + newSettings.format = format; + newSettings.prettyPrint = prettyPrint; + newSettings.path = path; + newSettings.encryptionType = encryptionType; + newSettings.encryptionPassword = encryptionPassword; + newSettings.compressionType = compressionType; + newSettings.bufferSize = bufferSize; + newSettings.encoding = encoding; + newSettings.typeChecking = typeChecking; + newSettings.safeReflection = safeReflection; + newSettings.memberReferenceMode = memberReferenceMode; + newSettings.assemblyNames = assemblyNames; + newSettings.saveChildren = saveChildren; + newSettings.serializationDepthLimit = serializationDepthLimit; + } + + #endregion +} + +/* + * A serializable version of the settings we can use as a field in the Editor, which doesn't automatically + * assign defaults to itself, so we get no serialization errors. + */ +[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] +[System.Serializable] +public class ES3SerializableSettings : ES3Settings +{ + public ES3SerializableSettings() : base(false){} + public ES3SerializableSettings(bool applyDefaults) : base(applyDefaults){} + public ES3SerializableSettings(string path) : base(false) { this.path = path; } + public ES3SerializableSettings(string path, ES3.Location location) : base(false) { this.location = location; } + +#if UNITY_EDITOR + public bool showAdvancedSettings = false; +#endif +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs.meta new file mode 100644 index 00000000..2b45b24a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Settings/ES3Settings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7b35a33d52a04187b51d5e2e2e5b0c8 +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams.meta new file mode 100644 index 00000000..327f802a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 37ab5860b18cc4976bb573d0554aa453 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs new file mode 100644 index 00000000..e442cc00 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs @@ -0,0 +1,68 @@ +using System.IO; + +namespace ES3Internal +{ + public enum ES3FileMode {Read, Write, Append} + + public class ES3FileStream : FileStream + { + private bool isDisposed = false; + + public ES3FileStream( string path, ES3FileMode fileMode, int bufferSize, bool useAsync) + : base( GetPath(path, fileMode), GetFileMode(fileMode), GetFileAccess(fileMode), FileShare.None, bufferSize, useAsync) + { + } + + // Gets a temporary path if necessary. + protected static string GetPath(string path, ES3FileMode fileMode) + { + string directoryPath = ES3IO.GetDirectoryPath(path); + // Attempt to create the directory incase it does not exist if we are storing data. + if (fileMode != ES3FileMode.Read && directoryPath != ES3IO.persistentDataPath) + ES3IO.CreateDirectory(directoryPath); + if(fileMode != ES3FileMode.Write || fileMode == ES3FileMode.Append) + return path; + return (fileMode == ES3FileMode.Write) ? path + ES3IO.temporaryFileSuffix : path; + } + + protected static FileMode GetFileMode(ES3FileMode fileMode) + { + if (fileMode == ES3FileMode.Read) + return FileMode.Open; + else if (fileMode == ES3FileMode.Write) + return FileMode.Create; + else + return FileMode.Append; + } + + protected static FileAccess GetFileAccess(ES3FileMode fileMode) + { + if (fileMode == ES3FileMode.Read) + return FileAccess.Read; + else if (fileMode == ES3FileMode.Write) + return FileAccess.Write; + else + return FileAccess.Write; + } + + protected override void Dispose (bool disposing) + { + // Ensure we only perform disposable once. + if(isDisposed) + return; + isDisposed = true; + + base.Dispose(disposing); + + + // If this is a file writer, we need to replace the temp file. + /*if(fileMode == ES3FileMode.Write && fileMode != ES3FileMode.Append) + { + // Delete the old file before overwriting it. + ES3IO.DeleteFile(path); + // Rename temporary file to new file. + ES3IO.MoveFile(path + ES3.temporaryFileSuffix, path); + }*/ + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs.meta new file mode 100644 index 00000000..40077cfb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3FileStream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0daff17c3279448f994a7a93d305046a +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs new file mode 100644 index 00000000..98325c3e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs @@ -0,0 +1,63 @@ +using System.IO; +using UnityEngine; + +namespace ES3Internal +{ + internal class ES3PlayerPrefsStream : MemoryStream + { + private string path; + private bool append; + private bool isWriteStream = false; + private bool isDisposed = false; + + // This constructor should be used for read streams only. + public ES3PlayerPrefsStream(string path) : base(GetData(path,false)) + { + this.path = path; + this.append = false; + } + + // This constructor should be used for write streams only. + public ES3PlayerPrefsStream(string path, int bufferSize, bool append=false) : base(bufferSize) + { + this.path = path; + this.append = append; + this.isWriteStream = true; + } + + private static byte[] GetData(string path, bool isWriteStream) + { + if(!PlayerPrefs.HasKey(path)) + throw new FileNotFoundException("File \""+path+"\" could not be found in PlayerPrefs"); + return System.Convert.FromBase64String(PlayerPrefs.GetString(path)); + } + + protected override void Dispose (bool disposing) + { + if(isDisposed) + return; + isDisposed = true; + if(isWriteStream && this.Length > 0) + { + if (append) + { + // Convert data back to bytes before appending, as appending Base-64 strings directly can corrupt the data. + var sourceBytes = System.Convert.FromBase64String(PlayerPrefs.GetString(path)); + var appendBytes = this.ToArray(); + var finalBytes = new byte[sourceBytes.Length + appendBytes.Length]; + System.Buffer.BlockCopy(sourceBytes, 0, finalBytes, 0, sourceBytes.Length); + System.Buffer.BlockCopy(appendBytes, 0, finalBytes, sourceBytes.Length, appendBytes.Length); + + PlayerPrefs.SetString(path, System.Convert.ToBase64String(finalBytes)); + + PlayerPrefs.Save(); + } + else + PlayerPrefs.SetString(path + ES3IO.temporaryFileSuffix, System.Convert.ToBase64String(this.ToArray())); + // Save the timestamp to a separate key. + PlayerPrefs.SetString("timestamp_" + path, System.DateTime.UtcNow.Ticks.ToString()); + } + base.Dispose(disposing); + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs.meta new file mode 100644 index 00000000..690bef4e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3PlayerPrefsStream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: df45161eabf2549c28f00352d4f970dc +timeCreated: 1499764823 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs new file mode 100644 index 00000000..1a7d93de --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs @@ -0,0 +1,32 @@ +using System.IO; +using UnityEngine; + +namespace ES3Internal +{ + internal class ES3ResourcesStream : MemoryStream + { + // Check that data exists by checking stream is not empty. + public bool Exists{ get{ return this.Length > 0; } } + + // Used when creating + public ES3ResourcesStream(string path) : base(GetData(path)) + { + } + + private static byte[] GetData(string path) + { + var textAsset = Resources.Load(path) as TextAsset; + + // If data doesn't exist in Resources, return an empty byte array. + if(textAsset == null) + return new byte[0]; + + return textAsset.bytes; + } + + protected override void Dispose (bool disposing) + { + base.Dispose(disposing); + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs.meta new file mode 100644 index 00000000..06046cf1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3ResourcesStream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fe24380d3aca84a4d97e668349d86d37 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs new file mode 100644 index 00000000..97ee9e74 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs @@ -0,0 +1,118 @@ +using System.IO; +using System.IO.Compression; +using UnityEngine; + +namespace ES3Internal +{ + public static class ES3Stream + { + public static Stream CreateStream(ES3Settings settings, ES3FileMode fileMode) + { + bool isWriteStream = (fileMode != ES3FileMode.Read); + Stream stream = null; + + try + { + if (settings.location == ES3.Location.InternalMS) + { + // There's no point in creating an empty MemoryStream if we're only reading from it. + if (!isWriteStream) + return null; + stream = new MemoryStream(settings.bufferSize); + } + else if (settings.location == ES3.Location.File) + { + if (!isWriteStream && !ES3IO.FileExists(settings.FullPath)) + return null; + stream = new ES3FileStream(settings.FullPath, fileMode, settings.bufferSize, false); + } + else if (settings.location == ES3.Location.PlayerPrefs) + { + if (isWriteStream) + stream = new ES3PlayerPrefsStream(settings.FullPath, settings.bufferSize, (fileMode == ES3FileMode.Append)); + else + { + if (!PlayerPrefs.HasKey(settings.FullPath)) + return null; + stream = new ES3PlayerPrefsStream(settings.FullPath); + } + } + else if (settings.location == ES3.Location.Resources) + { + if (!isWriteStream) + { + var resourcesStream = new ES3ResourcesStream(settings.FullPath); + if (resourcesStream.Exists) + stream = resourcesStream; + else + { + resourcesStream.Dispose(); + return null; + } + } + else if (UnityEngine.Application.isEditor) + throw new System.NotSupportedException("Cannot write directly to Resources folder. Try writing to a directory outside of Resources, and then manually move the file there."); + else + throw new System.NotSupportedException("Cannot write to Resources folder at runtime. Use a different save location at runtime instead."); + } + + return CreateStream(stream, settings, fileMode); + } + catch(System.Exception e) + { + if (stream != null) + stream.Dispose(); + throw e; + } + } + + public static Stream CreateStream(Stream stream, ES3Settings settings, ES3FileMode fileMode) + { + try + { + bool isWriteStream = (fileMode != ES3FileMode.Read); + + #if !DISABLE_ENCRYPTION + // Encryption + if(settings.encryptionType != ES3.EncryptionType.None && stream.GetType() != typeof(UnbufferedCryptoStream)) + { + EncryptionAlgorithm alg = null; + if(settings.encryptionType == ES3.EncryptionType.AES) + alg = new AESEncryptionAlgorithm(); + stream = new UnbufferedCryptoStream(stream, !isWriteStream, settings.encryptionPassword, settings.bufferSize, alg); + } + #endif + + // Compression + if (settings.compressionType != ES3.CompressionType.None && stream.GetType() != typeof(GZipStream)) + { + if (settings.compressionType == ES3.CompressionType.Gzip) + stream = isWriteStream ? new GZipStream(stream, CompressionMode.Compress) : new GZipStream(stream, CompressionMode.Decompress); + } + + return stream; + } + catch (System.Exception e) + { + if (stream != null) + stream.Dispose(); + if (e.GetType() == typeof(System.Security.Cryptography.CryptographicException)) + throw new System.Security.Cryptography.CryptographicException("Could not decrypt file. Please ensure that you are using the same password used to encrypt the file."); + else + throw e; + } + } + + public static void CopyTo(Stream source, Stream destination) + { + #if UNITY_2019_1_OR_NEWER + source.CopyTo(destination); + #else + byte[] buffer = new byte[2048]; + int bytesRead; + while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) + destination.Write(buffer, 0, bytesRead); + #endif + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs.meta new file mode 100644 index 00000000..ed9f16ce --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Streams/ES3Stream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4ec91ea5d66749aca7d5555b767728a +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types.meta new file mode 100644 index 00000000..40da695c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1b8a01835c8014ce9bef4d4e31eb057b +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types.meta new file mode 100644 index 00000000..092cfa19 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1995368ea5d4c45878840cfba12bd7bd +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs new file mode 100644 index 00000000..b7cc29f8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; +using System.Linq; + +namespace ES3Types +{ + public class ES32DArrayType : ES3CollectionType + { + public ES32DArrayType(Type type) : base(type){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode unityObjectType) + { + var array = (System.Array)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + for(int i=0; i < array.GetLength(0); i++) + { + writer.StartWriteCollectionItem(i); + writer.StartWriteCollection(); + for(int j=0; j < array.GetLength(1); j++) + { + writer.StartWriteCollectionItem(j); + writer.Write(array.GetValue(i,j), elementType, unityObjectType); + writer.EndWriteCollectionItem(j); + } + writer.EndWriteCollection(); + writer.EndWriteCollectionItem(i); + } + + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + /*if(reader.StartReadCollection()) + return null; + + // Create a List to store the items as a 1D array, which we can work out the positions of by calculating the lengths of the two dimensions. + var items = new List(); + int length1 = 0; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + + ReadICollection(reader, items, elementType); + length1++; + + if(reader.EndReadCollectionItem()) + break; + } + + int length2 = items.Count / length1; + + var array = new T[length1,length2]; + + for(int i=0; i(); + int length1 = 0; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + + ReadICollection(reader, items, elementType); + length1++; + + if(reader.EndReadCollectionItem()) + break; + } + + int length2 = items.Count / length1; + + var array = ES3Reflection.ArrayCreateInstance(elementType.type, new int[]{length1, length2}); + + for(int i=0; i(ES3Reader reader, object obj) + { + ReadInto(reader, obj); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var array = (Array)obj; + + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + bool iHasBeenRead = false; + + for(int i=0; i < array.GetLength(0); i++) + { + bool jHasBeenRead = false; + + if(!reader.StartReadCollectionItem()) + throw new IndexOutOfRangeException("The collection we are loading is smaller than the collection provided as a parameter."); + + reader.StartReadCollection(); + for(int j=0; j < array.GetLength(1); j++) + { + if(!reader.StartReadCollectionItem()) + throw new IndexOutOfRangeException("The collection we are loading is smaller than the collection provided as a parameter."); + reader.ReadInto(array.GetValue(i,j), elementType); + jHasBeenRead = reader.EndReadCollectionItem(); + } + + if(!jHasBeenRead) + throw new IndexOutOfRangeException("The collection we are loading is larger than the collection provided as a parameter."); + + reader.EndReadCollection(); + + iHasBeenRead = reader.EndReadCollectionItem(); + } + + if(!iHasBeenRead) + throw new IndexOutOfRangeException("The collection we are loading is larger than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs.meta new file mode 100644 index 00000000..5d924b3d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES32DArrayType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 16f7aabe86b814cc8a059954a1c78d25 +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs new file mode 100644 index 00000000..fc7786cf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types + { + public class ES33DArrayType : ES3CollectionType + { + public ES33DArrayType(Type type) : base(type){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + var array = (System.Array)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + for(int i=0; i < array.GetLength(0); i++) + { + writer.StartWriteCollectionItem(i); + writer.StartWriteCollection(); + + for(int j=0; j < array.GetLength(1); j++) + { + writer.StartWriteCollectionItem(j); + writer.StartWriteCollection(); + + for(int k=0; k < array.GetLength(2); k++) + { + writer.StartWriteCollectionItem(k); + writer.Write(array.GetValue(i,j,k), elementType, memberReferenceMode); + writer.EndWriteCollectionItem(k); + } + writer.EndWriteCollection(); + writer.EndWriteCollectionItem(j); + } + writer.EndWriteCollection(); + writer.EndWriteCollectionItem(i); + } + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + } + + public override object Read(ES3Reader reader) + { + if(reader.StartReadCollection()) + return null; + + // Create a List to store the items as a 1D array, which we can work out the positions of by calculating the lengths of the two dimensions. + var items = new List(); + int length1 = 0; + int length2 = 0; + + // Iterate through each sub-array + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + reader.StartReadCollection(); + + length1++; + + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + + ReadICollection(reader, items, elementType); + length2++; + + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + length2 = length2/length1; + int length3 = items.Count / length2 / length1; + + var array = ES3Reflection.ArrayCreateInstance(elementType.type, new int[]{length1,length2,length3}); + + for(int i=0; i(ES3Reader reader, object obj) + { + ReadInto(reader, obj); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var array = (Array)obj; + + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + bool iHasBeenRead = false; + + for(int i=0; i < array.GetLength(0); i++) + { + bool jHasBeenRead = false; + + if(!reader.StartReadCollectionItem()) + throw new IndexOutOfRangeException("The collection we are loading is smaller than the collection provided as a parameter."); + + reader.StartReadCollection(); + + for(int j=0; j < array.GetLength(1); j++) + { + bool kHasBeenRead = false; + + if(!reader.StartReadCollectionItem()) + throw new IndexOutOfRangeException("The collection we are loading is smaller than the collection provided as a parameter."); + + reader.StartReadCollection(); + + for(int k=0; k < array.GetLength(2); k++) + { + if(!reader.StartReadCollectionItem()) + throw new IndexOutOfRangeException("The collection we are loading is smaller than the collection provided as a parameter."); + reader.ReadInto(array.GetValue(i,j,k), elementType); + kHasBeenRead = reader.EndReadCollectionItem(); + } + + if(!kHasBeenRead) + throw new IndexOutOfRangeException("The collection we are loading is larger than the collection provided as a parameter."); + + reader.EndReadCollection(); + + jHasBeenRead = reader.EndReadCollectionItem(); + } + + if(!jHasBeenRead) + throw new IndexOutOfRangeException("The collection we are loading is larger than the collection provided as a parameter."); + + reader.EndReadCollection(); + + iHasBeenRead = reader.EndReadCollectionItem(); + } + + if(!iHasBeenRead) + throw new IndexOutOfRangeException("The collection we are loading is larger than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs.meta new file mode 100644 index 00000000..f87024da --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES33DArrayType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f60b75065118c4199aeaa2c3c31ecc0f +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs new file mode 100644 index 00000000..6ea1100d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3ArrayType : ES3CollectionType + { + public ES3ArrayType(Type type) : base(type){} + public ES3ArrayType(Type type, ES3Type elementType) : base(type, elementType){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + var array = (System.Array)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + for(int i=0; i(); + if (!ReadICollection(reader, list, elementType)) + return null; + + var array = ES3Reflection.ArrayCreateInstance(elementType.type, list.Count); + int i = 0; + foreach (var item in list) + { + array.SetValue(item, i); + i++; + } + + return array; + + /*var instance = new List(); + + if(reader.StartReadCollection()) + return null; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + instance.Add(reader.Read(elementType)); + + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + var array = ES3Reflection.ArrayCreateInstance(elementType.type, instance.Count); + int i = 0; + foreach(var item in instance) + { + array.SetValue(item, i); + i++; + } + + return array;*/ + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + /*var list = new List(); + if(!ReadICollection(reader, list, elementType)) + return null; + + var array = ES3Reflection.ArrayCreateInstance(elementType.type, list.Count); + int i = 0; + foreach (var item in list) + { + array.SetValue(item, i); + i++; + } + + return array;*/ + } + + public override void ReadInto(ES3Reader reader, object obj) + { + ReadICollectionInto(reader, (ICollection)obj, elementType); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var collection = (IList)obj; + + if (collection.Count == 0) + ES3Debug.LogWarning("LoadInto/ReadInto expects a collection containing instances to load data in to, but the collection is empty."); + + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + // Iterate through each item in the collection and try to load it. + foreach(var item in collection) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs.meta new file mode 100644 index 00000000..bcdc911a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80139e4c0efc5414caff6bb50527d63d +timeCreated: 1519132289 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs new file mode 100644 index 00000000..4a718654 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public abstract class ES3CollectionType : ES3Type + { + public ES3Type elementType; + + /*protected ES3Reflection.ES3ReflectedMethod readMethod = null; + protected ES3Reflection.ES3ReflectedMethod readIntoMethod = null;*/ + + public abstract object Read(ES3Reader reader); + public abstract void ReadInto(ES3Reader reader, object obj); + public abstract void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode); + + public ES3CollectionType(Type type) : base(type) + { + elementType = ES3TypeMgr.GetOrCreateES3Type(ES3Reflection.GetElementTypes(type)[0], false); + isCollection = true; + + // If the element type is null (i.e. unsupported), make this ES3Type null. + if(elementType == null) + isUnsupported = true; + } + + public ES3CollectionType(Type type, ES3Type elementType) : base(type) + { + this.elementType = elementType; + isCollection = true; + } + + [UnityEngine.Scripting.Preserve] + public override void Write(object obj, ES3Writer writer) + { + Write(obj, writer, ES3.ReferenceMode.ByRefAndValue); + } + + protected virtual bool ReadICollection(ES3Reader reader, ICollection collection, ES3Type elementType) + { + if(reader.StartReadCollection()) + return false; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + collection.Add(reader.Read(elementType)); + + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + return true; + } + + protected virtual void ReadICollectionInto(ES3Reader reader, ICollection collection, ES3Type elementType) + { + ReadICollectionInto(reader, collection, elementType); + } + + [UnityEngine.Scripting.Preserve] + protected virtual void ReadICollectionInto(ES3Reader reader, ICollection collection, ES3Type elementType) + { + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + // Iterate through each item in the collection and try to load it. + foreach(var item in collection) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + + /* + * Calls the Read method using reflection so we don't need to provide a generic parameter. + */ + /*public virtual object Read(ES3Reader reader) + { + if(readMethod == null) + readMethod = ES3Reflection.GetMethod(this.GetType(), "Read", new Type[]{elementType.type}, new Type[]{typeof(ES3Reader)}); + return readMethod.Invoke(this, new object[]{reader}); + } + + public virtual void ReadInto(ES3Reader reader, object obj) + { + if(readIntoMethod == null) + readIntoMethod = ES3Reflection.GetMethod(this.GetType(), "ReadInto", new Type[]{elementType.type}, new Type[]{typeof(ES3Reader), typeof(object)}); + readIntoMethod.Invoke(this, new object[]{reader, obj}); + }*/ + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs.meta new file mode 100644 index 00000000..d02b40dc --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4758f55361e6f4485afe7dfdd3a3a372 +timeCreated: 1519132284 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs new file mode 100644 index 00000000..faa48d9d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs @@ -0,0 +1,142 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3DictionaryType : ES3Type + { + public ES3Type keyType; + public ES3Type valueType; + + protected ES3Reflection.ES3ReflectedMethod readMethod = null; + protected ES3Reflection.ES3ReflectedMethod readIntoMethod = null; + + public ES3DictionaryType(Type type) : base(type) + { + var types = ES3Reflection.GetElementTypes(type); + keyType = ES3TypeMgr.GetOrCreateES3Type(types[0], false); + valueType = ES3TypeMgr.GetOrCreateES3Type(types[1], false); + + // If either the key or value type is unsupported, make this type NULL. + if(keyType == null || valueType == null) + isUnsupported = true;; + + isDictionary = true; + } + + public ES3DictionaryType(Type type, ES3Type keyType, ES3Type valueType) : base(type) + { + this.keyType = keyType; + this.valueType = valueType; + + // If either the key or value type is unsupported, make this type NULL. + if (keyType == null || valueType == null) + isUnsupported = true; ; + + isDictionary = true; + } + + public override void Write(object obj, ES3Writer writer) + { + Write(obj, writer, writer.settings.memberReferenceMode); + } + + public void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + var dict = (IDictionary)obj; + + //writer.StartWriteDictionary(dict.Count); + + int i=0; + foreach(System.Collections.DictionaryEntry kvp in dict) + { + writer.StartWriteDictionaryKey(i); + writer.Write(kvp.Key, keyType, memberReferenceMode); + writer.EndWriteDictionaryKey(i); + writer.StartWriteDictionaryValue(i); + writer.Write(kvp.Value, valueType, memberReferenceMode); + writer.EndWriteDictionaryValue(i); + i++; + } + + //writer.EndWriteDictionary(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + ReadInto(reader, obj); + } + + /* + * Allows us to call the generic Read method using Reflection so we can define the generic parameter at runtime. + * It also caches the method to improve performance in later calls. + */ + public object Read(ES3Reader reader) + { + if(reader.StartReadDictionary()) + return null; + + var dict = (IDictionary)ES3Reflection.CreateInstance(type); + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadDictionaryKey()) + return dict; + var key = reader.Read(keyType); + reader.EndReadDictionaryKey(); + + reader.StartReadDictionaryValue(); + var value = reader.Read(valueType); + + dict.Add(key,value); + + if(reader.EndReadDictionaryValue()) + break; + } + + reader.EndReadDictionary(); + + return dict; + } + + public void ReadInto(ES3Reader reader, object obj) + { + if(reader.StartReadDictionary()) + throw new NullReferenceException("The Dictionary we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + var dict = (IDictionary)obj; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadDictionaryKey()) + return; + var key = reader.Read(keyType); + + if(!dict.Contains(key)) + throw new KeyNotFoundException("The key \"" + key + "\" in the Dictionary we are loading does not exist in the Dictionary we are loading into"); + var value = dict[key]; + reader.EndReadDictionaryKey(); + + reader.StartReadDictionaryValue(); + + reader.ReadInto(value, valueType); + + if(reader.EndReadDictionaryValue()) + break; + } + + reader.EndReadDictionary(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs.meta new file mode 100644 index 00000000..ee845c5e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3DictionaryType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2bc573810521e44bea185a4fa7c415e9 +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs new file mode 100644 index 00000000..f6da1298 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; +using System.Linq; +using System.Reflection; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3HashSetType : ES3CollectionType + { + public ES3HashSetType(Type type) : base(type){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + if (obj == null) { writer.WriteNull(); return; }; + + var list = (IEnumerable)obj; + + if (elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + int count = 0; + foreach (var item in list) + count++; + + //writer.StartWriteCollection(count); + + int i = 0; + foreach (object item in list) + { + writer.StartWriteCollectionItem(i); + writer.Write(item, elementType, memberReferenceMode); + writer.EndWriteCollectionItem(i); + i++; + } + + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + var val = Read(reader); + if (val == null) + return default(T); + return (T)val; + } + + + public override object Read(ES3Reader reader) + { + /*var method = typeof(ES3CollectionType).GetMethod("ReadICollection", BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(elementType.type); + if(!(bool)method.Invoke(this, new object[] { reader, list, elementType })) + return null;*/ + + var genericParam = ES3Reflection.GetGenericArguments(type)[0]; + var listType = ES3Reflection.MakeGenericType(typeof(List<>), genericParam); + var list = (IList)ES3Reflection.CreateInstance(listType); + + if (!reader.StartReadCollection()) + { + // Iterate through each character until we reach the end of the array. + while (true) + { + if (!reader.StartReadCollectionItem()) + break; + list.Add(reader.Read(elementType)); + + if (reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + } + + return ES3Reflection.CreateInstance(type, list); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + ReadInto(reader, obj); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + throw new NotImplementedException("Cannot use LoadInto/ReadInto with HashSet because HashSets do not maintain the order of elements"); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs.meta new file mode 100644 index 00000000..1301c2e4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3HashSetType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e2a5f03b11de242bf9f3c6766875188b +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs new file mode 100644 index 00000000..20a01ab7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3ListType : ES3CollectionType + { + public ES3ListType(Type type) : base(type){} + public ES3ListType(Type type, ES3Type elementType) : base(type, elementType){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + if(obj == null){ writer.WriteNull(); return; }; + + var list = (IList)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + int i = 0; + foreach(object item in list) + { + writer.StartWriteCollectionItem(i); + writer.Write(item, elementType, memberReferenceMode); + writer.EndWriteCollectionItem(i); + i++; + } + + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + + /*var list = new List(); + if(!ReadICollection(reader, list, elementType)) + return null; + return list;*/ + } + + public override void ReadInto(ES3Reader reader, object obj) + { + ReadICollectionInto(reader, (ICollection)obj, elementType); + } + + public override object Read(ES3Reader reader) + { + var instance = (IList)ES3Reflection.CreateInstance(type); + + if(reader.StartReadCollection()) + return null; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + instance.Add(reader.Read(elementType)); + + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var collection = (IList)obj; + + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + // Iterate through each item in the collection and try to load it. + foreach(var item in collection) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs.meta new file mode 100644 index 00000000..628bd825 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3ListType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3502f1923072c49498bb91827fae42eb +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs new file mode 100644 index 00000000..2b7b7d38 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3QueueType : ES3CollectionType + { + public ES3QueueType(Type type) : base(type){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + var list = (ICollection)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + int i = 0; + foreach(object item in list) + { + writer.StartWriteCollectionItem(i); + writer.Write(item, elementType, memberReferenceMode); + writer.EndWriteCollectionItem(i); + i++; + } + + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + /*if(reader.StartReadCollection()) + return null; + + var queue = new Queue(); + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + queue.Enqueue(reader.Read(elementType)); + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + return queue;*/ + } + + public override void ReadInto(ES3Reader reader, object obj) + { + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + var queue = (Queue)obj; + + // Iterate through each item in the collection and try to load it. + foreach(var item in queue) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == queue.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != queue.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + + public override object Read(ES3Reader reader) + { + var instance = (IList)ES3Reflection.CreateInstance(ES3Reflection.MakeGenericType(typeof(List<>), elementType.type)); + + if(reader.StartReadCollection()) + return null; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if (!reader.StartReadCollectionItem()) + break; + instance.Add(reader.Read(elementType)); + + if (reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + return ES3Reflection.CreateInstance(type, instance); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + var collection = (ICollection)obj; + + // Iterate through each item in the collection and try to load it. + foreach(var item in collection) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs.meta new file mode 100644 index 00000000..98238b8a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3QueueType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0832bfdeae2dc410db8d4963332335c7 +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs new file mode 100644 index 00000000..a7e64752 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; +using System.Reflection; +using System.Linq; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3StackType : ES3CollectionType + { + public ES3StackType(Type type) : base(type){} + + public override void Write(object obj, ES3Writer writer, ES3.ReferenceMode memberReferenceMode) + { + var list = (ICollection)obj; + + if(elementType == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + + //writer.StartWriteCollection(); + + int i = 0; + foreach(object item in list) + { + writer.StartWriteCollectionItem(i); + writer.Write(item, elementType, memberReferenceMode); + writer.EndWriteCollectionItem(i); + i++; + } + + //writer.EndWriteCollection(); + } + + public override object Read(ES3Reader reader) + { + return Read(reader); + /*if(reader.StartReadCollection()) + return null; + + var stack = new Stack(); + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + stack.Push(reader.Read(elementType)); + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + return stack;*/ + } + + public override void ReadInto(ES3Reader reader, object obj) + { + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + var stack = (Stack)obj; + + // Iterate through each item in the collection and try to load it. + foreach(var item in stack) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == stack.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != stack.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + + public override object Read(ES3Reader reader) + { + var instance = (IList)ES3Reflection.CreateInstance(ES3Reflection.MakeGenericType(typeof(List<>), elementType.type)); + + if(reader.StartReadCollection()) + return null; + + // Iterate through each character until we reach the end of the array. + while(true) + { + if(!reader.StartReadCollectionItem()) + break; + instance.Add(reader.Read(elementType)); + + if(reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + + ES3Reflection.GetMethods(instance.GetType(), "Reverse").FirstOrDefault(t => !t.IsStatic).Invoke(instance, new object[]{}); + return ES3Reflection.CreateInstance(type, instance); + + } + + public override void ReadInto(ES3Reader reader, object obj) + { + if(reader.StartReadCollection()) + throw new NullReferenceException("The Collection we are trying to load is stored as null, which is not allowed when using ReadInto methods."); + + int itemsLoaded = 0; + + var collection = (ICollection)obj; + + // Iterate through each item in the collection and try to load it. + foreach(var item in collection) + { + itemsLoaded++; + + if(!reader.StartReadCollectionItem()) + break; + + reader.ReadInto(item, elementType); + + // If we find a ']', we reached the end of the array. + if(reader.EndReadCollectionItem()) + break; + // If there's still items to load, but we've reached the end of the collection we're loading into, throw an error. + if(itemsLoaded == collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is longer than the collection provided as a parameter."); + } + + // If we loaded fewer items than the parameter collection, throw index out of range exception. + if(itemsLoaded != collection.Count) + throw new IndexOutOfRangeException("The collection we are loading is shorter than the collection provided as a parameter."); + + reader.EndReadCollection(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs.meta new file mode 100644 index 00000000..549bb641 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Collection Types/ES3StackType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 45a74cb7ab3d648208c9f89b7be930a7 +timeCreated: 1519132284 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs new file mode 100644 index 00000000..3e61896e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs @@ -0,0 +1,140 @@ +using System; +using UnityEngine; +using System.Collections; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public abstract class ES3ComponentType : ES3UnityObjectType + { + public ES3ComponentType(Type type) : base(type) { } + + protected abstract void WriteComponent(object obj, ES3Writer writer); + protected abstract void ReadComponent(ES3Reader reader, object obj); + + protected const string gameObjectPropertyName = "goID"; + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = obj as Component; + if (obj != null && instance == null) + throw new ArgumentException("Only types of UnityEngine.Component can be written with this method, but argument given is type of " + obj.GetType()); + + var refMgr = ES3ReferenceMgrBase.Current; + + if (refMgr != null) + { + // Write the reference of the GameObject so we know what one to attach it to. + writer.WriteProperty(gameObjectPropertyName, refMgr.Add(instance.gameObject).ToString(), ES3Type_string.Instance); + } + WriteComponent(instance, writer); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + ReadComponent(reader, obj); + } + + protected override object ReadUnityObject(ES3Reader reader) + { + throw new NotImplementedException(); + } + + /* + * It's IMPORTANT that we override ReadObject in ES3UnityObjectType rather than use ReadUnityObject because otherwise the first IF statement will never be called, + * and we will never get the reference ID for the Component we're loading, so if we create a new Component we cannot assign it's correct reference ID. + */ + protected override object ReadObject(ES3Reader reader) + { + var refMgr = ES3ReferenceMgrBase.Current; + long id = -1; + UnityEngine.Object instance = null; + + foreach (string propertyName in reader.Properties) + { + if (propertyName == ES3ReferenceMgrBase.referencePropertyName) + { + id = reader.Read_ref(); + instance = refMgr.Get(id, true); + + /*if (instance != null) + break;*/ + } + else if (propertyName == gameObjectPropertyName) + { + long goID = reader.Read_ref(); + var go = (GameObject)refMgr.Get(goID, type); + + if (go == null) + { + go = new GameObject("Easy Save 3 Loaded GameObject"); +#if UNITY_EDITOR + go.AddComponent().SetMessage("This GameObject was created because Easy Save could not find a GameObject in the scene with the same instance ID as the GameObject the Component we are loading is attached to.\nTo prevent this from being created, use the LoadInto methods to tell Easy Save what Component the data should be loaded in to."); +#endif + refMgr.Add(go, goID); + } + instance = GetOrAddComponent(go, type); + refMgr.Add(instance, id); + break; + } + else + { + reader.overridePropertiesName = propertyName; + if (instance == null) + { + var go = new GameObject("Easy Save 3 Loaded GameObject"); +#if UNITY_EDITOR + go.AddComponent().SetMessage("This GameObject was created because Easy Save could not find a GameObject in the scene with the same instance ID as the GameObject the Component we are loading is attached to.\nTo prevent this from being created, use the LoadInto methods to tell Easy Save what Component the data should be loaded in to."); +#endif + instance = GetOrAddComponent(go, type); + refMgr.Add(instance, id); + refMgr.Add(go); + } + break; + } + } + + if(instance != null) + ReadComponent(reader, instance); + + return instance; + } + + private static Component GetOrAddComponent(GameObject go, Type type) + { + var c = go.GetComponent(type); + if (c != null) + return c; + return go.AddComponent(type); + + /*if (type == typeof(Transform)) + return go.GetComponent(type); + // Manage types which can only have a single Component attached. + else if (type == typeof(MeshFilter) || type.Name.ToString().Contains("Renderer") || ES3Reflection.AttributeIsDefined(type, typeof(DisallowMultipleComponent))) + return GetOrCreateComponentIfNotExists(go, type); + return go.AddComponent(type);*/ + } + + public static Component CreateComponent(Type type) + { + GameObject go = new GameObject("Easy Save 3 Loaded Component"); +#if UNITY_EDITOR + // If we're running in the Editor, add a description explaining why this object was created. + go.AddComponent().SetMessage("This GameObject was created because Easy Save tried to load a Component with an instance ID which does not exist in this scene.\nTo prevent this from being created, use the LoadInto methods to tell Easy Save what Component the data should be loaded in to.\nThis can also happen if you load a class which references another object, but that object has not yet been loaded. In this case, you should load the object the class references before loading the class."); +#endif + if (type == typeof(Transform)) + return go.GetComponent(type); + return GetOrAddComponent(go, type); + } + + // Creates a Component if one doesn't exist, or returns the existing instance. + /*public static Component GetOrCreateComponentIfNotExists(GameObject go, Type type) + { + Component mf; + if ((mf = go.GetComponent(type)) != null) + return mf; + return go.AddComponent(type); + }*/ + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs.meta new file mode 100644 index 00000000..c7ba4023 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ComponentType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6d82e3d10b49c4028bca528611e53210 +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs new file mode 100644 index 00000000..88a1dac4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs @@ -0,0 +1,82 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public abstract class ES3ObjectType : ES3Type + { + public ES3ObjectType(Type type) : base(type) {} + + protected abstract void WriteObject(object obj, ES3Writer writer); + protected abstract object ReadObject(ES3Reader reader); + + protected virtual void ReadObject(ES3Reader reader, object obj) + { + throw new NotSupportedException("ReadInto is not supported for type "+type); + } + + public override void Write(object obj, ES3Writer writer) + { + if (!WriteUsingDerivedType(obj, writer)) + { + var baseType = ES3Reflection.BaseType(obj.GetType()); + if (baseType != typeof(object)) + { + var es3Type = ES3TypeMgr.GetOrCreateES3Type(baseType); + // If it's a Dictionary, we need to write it as a field with a property name. + if (es3Type.isDictionary || es3Type.isCollection) + writer.WriteProperty("_Values", obj, es3Type); + } + + WriteObject(obj, writer); + } + } + + public override object Read(ES3Reader reader) + { + string propertyName; + while(true) + { + propertyName = ReadPropertyName(reader); + + if(propertyName == ES3Type.typeFieldName) + return ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).Read(reader); + else if(propertyName == null) + return null; + else + { + reader.overridePropertiesName = propertyName; + + return ReadObject(reader); + } + } + } + + public override void ReadInto(ES3Reader reader, object obj) + { + string propertyName; + while(true) + { + propertyName = ReadPropertyName(reader); + + if(propertyName == ES3Type.typeFieldName) + { + ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).ReadInto(reader, obj); + return; + } + // This is important we return if the enumerator returns null, otherwise we will encounter an endless cycle. + else if (propertyName == null) + return; + else + { + reader.overridePropertiesName = propertyName; + ReadObject(reader, obj); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs.meta new file mode 100644 index 00000000..fd73df36 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2becffd8c9d4e4e0db6031d9680eae48 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs new file mode 100644 index 00000000..34a14f5a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs @@ -0,0 +1,30 @@ +using System; +using System.ComponentModel; + +namespace ES3Internal +{ + public class ES3Member + { + public string name; + public Type type; + public bool isProperty; + public ES3Reflection.ES3ReflectedMember reflectedMember; + public bool useReflection = false; + + public ES3Member(string name, Type type, bool isProperty) + { + this.name = name; + this.type = type; + this.isProperty = isProperty; + } + + public ES3Member(ES3Reflection.ES3ReflectedMember reflectedMember) + { + this.reflectedMember = reflectedMember; + this.name = reflectedMember.Name; + this.type = reflectedMember.MemberType; + this.isProperty = reflectedMember.isProperty; + this.useReflection = true; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs.meta new file mode 100644 index 00000000..f3f82e00 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Property.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b987e63c8e10f448c8364eaceddd96e5 +timeCreated: 1519132295 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs new file mode 100644 index 00000000..85dd6ce6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs @@ -0,0 +1,73 @@ +using System; +using UnityEngine; +using System.Collections; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public abstract class ES3ScriptableObjectType : ES3UnityObjectType + { + public ES3ScriptableObjectType(Type type) : base(type) {} + + protected abstract void WriteScriptableObject(object obj, ES3Writer writer); + protected abstract void ReadScriptableObject(ES3Reader reader, object obj); + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = obj as ScriptableObject; + if(obj != null && instance == null) + throw new ArgumentException("Only types of UnityEngine.ScriptableObject can be written with this method, but argument given is type of "+obj.GetType()); + + // If this object is in the instance manager, store it's instance ID with it. + var refMgr = ES3ReferenceMgrBase.Current; + if(refMgr != null) + writer.WriteRef(instance); + WriteScriptableObject(instance, writer); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + ReadScriptableObject(reader, obj); + } + + protected override object ReadUnityObject(ES3Reader reader) + { + throw new NotImplementedException(); + } + + + protected override object ReadObject(ES3Reader reader) + { + var refMgr = ES3ReferenceMgrBase.Current; + long id = -1; + UnityEngine.Object instance = null; + + foreach(string propertyName in reader.Properties) + { + if(propertyName == ES3ReferenceMgrBase.referencePropertyName && refMgr != null) + { + id = reader.Read_ref(); + instance = refMgr.Get(id, type); + + if (instance != null) + break; + } + else + { + reader.overridePropertiesName = propertyName; + if(instance == null) + { + instance = ScriptableObject.CreateInstance(type); + if(refMgr != null) + refMgr.Add(instance, id); + } + break; + } + } + + ReadScriptableObject(reader, instance); + return instance; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs.meta new file mode 100644 index 00000000..f3d9c7be --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3ScriptableObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a26529496f04146959460074ab1a9b3f +timeCreated: 1519132293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Type.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Type.cs new file mode 100644 index 00000000..2e5257bf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3Type.cs @@ -0,0 +1,190 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; +using System.Linq; + +namespace ES3Types +{ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [UnityEngine.Scripting.Preserve] + public abstract class ES3Type + { + public const string typeFieldName = "__type"; + + public ES3Member[] members; + public Type type; + public bool isPrimitive = false; + public bool isValueType = false; + public bool isCollection = false; + public bool isDictionary = false; + public bool isEnum = false; + public bool isES3TypeUnityObject = false; + public bool isReflectedType = false; + public bool isUnsupported = false; + public int priority = 0; + + protected ES3Type(Type type) + { + ES3TypeMgr.Add(type, this); + this.type = type; + this.isValueType = ES3Reflection.IsValueType(type); + } + + public abstract void Write(object obj, ES3Writer writer); + public abstract object Read(ES3Reader reader); + + public virtual void ReadInto(ES3Reader reader, object obj) + { + throw new NotImplementedException("Self-assigning Read is not implemented or supported on this type."); + } + + protected bool WriteUsingDerivedType(object obj, ES3Writer writer) + { + var objType = obj.GetType(); + + if(objType != this.type) + { + writer.WriteType(objType); + ES3TypeMgr.GetOrCreateES3Type(objType).Write(obj, writer); + return true; + } + return false; + } + + protected void ReadUsingDerivedType(ES3Reader reader, object obj) + { + ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).ReadInto(reader, obj); + } + + internal string ReadPropertyName(ES3Reader reader) + { + if(reader.overridePropertiesName != null) + { + string propertyName = reader.overridePropertiesName; + reader.overridePropertiesName = null; + return propertyName; + } + return reader.ReadPropertyName(); + } + + #region Reflection Methods + + protected void WriteProperties(object obj, ES3Writer writer) + { + if(members == null) + GetMembers(writer.settings.safeReflection); + for(int i=0; i(reader); + foreach (DictionaryEntry kvp in loaded) + dict[kvp.Key] = kvp.Value; + } + else if(baseType.isCollection) + { + var loaded = (IEnumerable)baseType.Read(reader); + + var type = baseType.GetType(); + + if (type == typeof(ES3ListType)) + foreach (var item in loaded) + ((IList)obj).Add(item); + else if (type == typeof(ES3QueueType)) + { + var method = baseType.type.GetMethod("Enqueue"); + foreach (var item in loaded) + method.Invoke(obj, new object[] { item }); + } + else if (type == typeof(ES3StackType)) + { + var method = baseType.type.GetMethod("Push"); + foreach (var item in loaded) + method.Invoke(obj, new object[] { item }); + } + else if (type == typeof(ES3HashSetType)) + { + var method = baseType.type.GetMethod("Add"); + foreach (var item in loaded) + method.Invoke(obj, new object[] { item }); + } + } + } + + if (property == null) + reader.Skip(); + else + { + var type = ES3TypeMgr.GetOrCreateES3Type(property.type); + + if(ES3Reflection.IsAssignableFrom(typeof(ES3DictionaryType), type.GetType())) + property.reflectedMember.SetValue(obj, ((ES3DictionaryType)type).Read(reader)); + else if(ES3Reflection.IsAssignableFrom(typeof(ES3CollectionType), type.GetType())) + property.reflectedMember.SetValue(obj, ((ES3CollectionType)type).Read(reader)); + else + { + object readObj = reader.Read(type); + property.reflectedMember.SetValue(obj, readObj); + } + } + } + return obj; + } + + protected void GetMembers(bool safe) + { + GetMembers(safe, null); + } + + protected void GetMembers(bool safe, string[] memberNames) + { + var serializedMembers = ES3Reflection.GetSerializableMembers(type, safe, memberNames); + members = new ES3Member[serializedMembers.Length]; + for(int i=0; i types = null; + + // We cache the last accessed type as we quite often use the same type multiple times, + // so this improves performance as another lookup is not required. + private static ES3Type lastAccessedType = null; + + public static ES3Type GetOrCreateES3Type(Type type, bool throwException = true) + { + if(types == null) + Init(); + + if (type != typeof(object) && lastAccessedType != null && lastAccessedType.type == type) + return lastAccessedType; + + // If type doesn't exist, create one. + if(types.TryGetValue(type, out lastAccessedType)) + return lastAccessedType; + return (lastAccessedType = CreateES3Type(type, throwException)); + } + + public static ES3Type GetES3Type(Type type) + { + if(types == null) + Init(); + + if(types.TryGetValue(type, out lastAccessedType)) + return lastAccessedType; + return null; + } + + internal static void Add(Type type, ES3Type es3Type) + { + if(types == null) + Init(); + + var existingType = GetES3Type(type); + if (existingType != null && existingType.priority > es3Type.priority) + return; + + lock (_lock) + { + types[type] = es3Type; + } + } + + internal static ES3Type CreateES3Type(Type type, bool throwException = true) + { + ES3Type es3Type; + + if(ES3Reflection.IsEnum(type)) + return new ES3Type_enum(type); + else if(ES3Reflection.TypeIsArray(type)) + { + int rank = ES3Reflection.GetArrayRank(type); + if(rank == 1) + es3Type = new ES3ArrayType(type); + else if(rank == 2) + es3Type = new ES32DArrayType(type); + else if(rank == 3) + es3Type = new ES33DArrayType(type); + else if(throwException) + throw new NotSupportedException("Only arrays with up to three dimensions are supported by Easy Save."); + else + return null; + } + else if(ES3Reflection.IsGenericType(type) && ES3Reflection.ImplementsInterface(type, typeof(IEnumerable))) + { + Type genericType = ES3Reflection.GetGenericTypeDefinition(type); + if(genericType == typeof(List<>)) + es3Type = new ES3ListType(type); + else if(genericType == typeof(Dictionary<,>)) + es3Type = new ES3DictionaryType(type); + else if(genericType == typeof(Queue<>)) + es3Type = new ES3QueueType(type); + else if(genericType == typeof(Stack<>)) + es3Type = new ES3StackType(type); + else if(genericType == typeof(HashSet<>)) + es3Type = new ES3HashSetType(type); + else if(throwException) + throw new NotSupportedException("Generic type \""+type.ToString()+"\" is not supported by Easy Save."); + else + return null; + } + else if(ES3Reflection.IsPrimitive(type)) // ERROR: We should not have to create an ES3Type for a primitive. + { + if(types == null || types.Count == 0) // If the type list is not initialised, it is most likely an initialisation error. + throw new TypeLoadException("ES3Type for primitive could not be found, and the type list is empty. Please contact Easy Save developers at http://www.moodkie.com/contact"); + else // Else it's a different error, possibly an error in the specific ES3Type for that type. + throw new TypeLoadException("ES3Type for primitive could not be found, but the type list has been initialised and is not empty. Please contact Easy Save developers on mail@moodkie.com"); + } + else + { + if(ES3Reflection.IsAssignableFrom(typeof(Component), type)) + es3Type = new ES3ReflectedComponentType(type); + else if(ES3Reflection.IsValueType(type)) + es3Type = new ES3ReflectedValueType(type); + else if(ES3Reflection.IsAssignableFrom(typeof(ScriptableObject), type)) + es3Type = new ES3ReflectedScriptableObjectType(type); + else if(ES3Reflection.HasParameterlessConstructor(type) || ES3Reflection.IsAbstract(type) || ES3Reflection.IsInterface(type)) + es3Type = new ES3ReflectedObjectType(type); + else if(throwException) + throw new NotSupportedException("Type of "+type+" is not supported as it does not have a parameterless constructor. Only value types, Components or ScriptableObjects are supportable without a parameterless constructor. However, you may be able to create an ES3Type script to add support for it."); + else + return null; + } + + if(es3Type.type == null || es3Type.isUnsupported) + { + if(throwException) + throw new NotSupportedException(string.Format("ES3Type.type is null when trying to create an ES3Type for {0}, possibly because the element type is not supported.", type)); + return null; + } + + Add(type, es3Type); + return es3Type; + } + + internal static void Init() + { + lock (_lock) + { + types = new Dictionary(); + // ES3Types add themselves to the types Dictionary. + ES3Reflection.GetInstances(); + + // Check that the type list was initialised correctly. + if (types == null || types.Count == 0) + throw new TypeLoadException("Type list could not be initialised. Please contact Easy Save developers on mail@moodkie.com."); + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3TypeMgr.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3TypeMgr.cs.meta new file mode 100644 index 00000000..3b697d69 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3TypeMgr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ed6202a98cbc545a0842c63cf8894b99 +timeCreated: 1499764823 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs new file mode 100644 index 00000000..b2a78781 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs @@ -0,0 +1,124 @@ +using System; +using UnityEngine; +using System.Collections; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public abstract class ES3UnityObjectType : ES3ObjectType + { + public ES3UnityObjectType(Type type) : base(type) + { + this.isValueType = false; + isES3TypeUnityObject = true; + } + + protected abstract void WriteUnityObject(object obj, ES3Writer writer); + protected abstract void ReadUnityObject(ES3Reader reader, object obj); + protected abstract object ReadUnityObject(ES3Reader reader); + + protected override void WriteObject(object obj, ES3Writer writer) + { + WriteObject(obj, writer, ES3.ReferenceMode.ByRefAndValue); + } + + public virtual void WriteObject(object obj, ES3Writer writer, ES3.ReferenceMode mode) + { + if(WriteUsingDerivedType(obj, writer, mode)) + return; + + var instance = obj as UnityEngine.Object; + if(obj != null && instance == null) + throw new ArgumentException("Only types of UnityEngine.Object can be written with this method, but argument given is type of "+obj.GetType()); + + // If this object is in the instance manager, store it's instance ID with it. + var refMgr = ES3ReferenceMgrBase.Current; + if(mode != ES3.ReferenceMode.ByValue) + { + if(refMgr == null) + throw new InvalidOperationException("An Easy Save 3 Manager is required to load references. To add one to your scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene"); + writer.WriteRef(instance); + if(mode == ES3.ReferenceMode.ByRef) + return; + } + WriteUnityObject(instance, writer); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var refMgr = ES3ReferenceMgrBase.Current; + if (refMgr != null) + { + foreach (string propertyName in reader.Properties) + { + if (propertyName == ES3ReferenceMgrBase.referencePropertyName) + // If the object we're loading into isn't registered with the reference manager, register it. + refMgr.Add((UnityEngine.Object)obj, reader.Read_ref()); + else + { + reader.overridePropertiesName = propertyName; + break; + } + } + } + ReadUnityObject(reader, obj); + } + + protected override object ReadObject(ES3Reader reader) + { + var refMgr = ES3ReferenceMgrBase.Current; + if(refMgr == null) + return ReadUnityObject(reader); + + long id = -1; + UnityEngine.Object instance = null; + + foreach(string propertyName in reader.Properties) + { + if(propertyName == ES3ReferenceMgrBase.referencePropertyName) + { + if(refMgr == null) + throw new InvalidOperationException("An Easy Save 3 Manager is required to load references. To add one to your scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene"); + id = reader.Read_ref(); + instance = refMgr.Get(id, type); + + if(instance != null) + break; + } + else + { + reader.overridePropertiesName = propertyName; + if (instance == null) + { + instance = (UnityEngine.Object)ReadUnityObject(reader); + refMgr.Add(instance, id); + } + break; + } + } + + ReadUnityObject(reader, instance); + return instance; + } + + protected bool WriteUsingDerivedType(object obj, ES3Writer writer, ES3.ReferenceMode mode) + { + var objType = obj.GetType(); + + if (objType != this.type) + { + writer.WriteType(objType); + + var es3Type = ES3TypeMgr.GetOrCreateES3Type(objType); + if (es3Type is ES3UnityObjectType) + ((ES3UnityObjectType)es3Type).WriteObject(obj, writer, mode); + else + es3Type.Write(obj, writer); + + return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs.meta new file mode 100644 index 00000000..ac4d0294 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6206e73d6e9414301b5475296e1103a2 +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types.meta new file mode 100644 index 00000000..f2de0321 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 01ada09c8494e744a87f6e4bc52f3235 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs new file mode 100644 index 00000000..a18ee346 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs @@ -0,0 +1,64 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("inext", "inextp", "SeedArray")] + public class ES3Type_Random : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Random() : base(typeof(System.Random)){ Instance = this; } + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (System.Random)obj; + + writer.WritePrivateField("inext", instance); + writer.WritePrivateField("inextp", instance); + writer.WritePrivateField("SeedArray", instance); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (System.Random)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "inext": + reader.SetPrivateField("inext", reader.Read(), instance); + break; + case "inextp": + reader.SetPrivateField("inextp", reader.Read(), instance); + break; + case "SeedArray": + reader.SetPrivateField("SeedArray", reader.Read(), instance); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new System.Random(); + ReadObject(reader, instance); + return instance; + } + } + + public class ES3Type_RandomArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_RandomArray() : base(typeof(System.Random[]), ES3Type_Random.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs.meta new file mode 100644 index 00000000..a207ee35 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/NET Types/ES3Type_Random.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84232cc4cb5a646249f6ebe5eeee1e97 +timeCreated: 1538210707 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types.meta new file mode 100644 index 00000000..ec25ae60 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 045cb4c329b0141ea8d3acd96dff32c2 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs new file mode 100644 index 00000000..f12903d3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_DateTime : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_DateTime() : base(typeof(DateTime)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WriteProperty("ticks", ((DateTime)obj).Ticks, ES3Type_long.Instance); + } + + public override object Read(ES3Reader reader) + { + reader.ReadPropertyName(); + return new DateTime(reader.Read(ES3Type_long.Instance)); + } + } + + public class ES3Type_DateTimeArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_DateTimeArray() : base(typeof(DateTime[]), ES3Type_DateTime.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs.meta new file mode 100644 index 00000000..ed6ed0a5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_DateTime.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9c9737ff78c714548af339e220b90303 +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs new file mode 100644 index 00000000..a9950b80 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_ES3Ref : ES3Type + { + public static ES3Type Instance = new ES3Type_ES3Ref(); + + public ES3Type_ES3Ref() : base(typeof(long)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive(((long)obj).ToString()); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)new ES3Ref(reader.Read_ref()); + } + } + + public class ES3Type_ES3RefArray : ES3ArrayType + { + public static ES3Type Instance = new ES3Type_ES3RefArray(); + + public ES3Type_ES3RefArray() : base(typeof(ES3Ref[]), ES3Type_ES3Ref.Instance) + { + Instance = this; + } + } + + public class ES3Type_ES3RefDictionary : ES3DictionaryType + { + public static ES3Type Instance = new ES3Type_ES3RefDictionary(); + + public ES3Type_ES3RefDictionary() : base(typeof(Dictionary), ES3Type_ES3Ref.Instance, ES3Type_ES3Ref.Instance) + { + Instance = this; + } + } +} + +public class ES3Ref +{ + public long id; + public ES3Ref(long id) + { + this.id = id; + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs.meta new file mode 100644 index 00000000..a88c0e05 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ES3Ref.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab1dd0b4209f2c144ad424236e639426 +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs new file mode 100644 index 00000000..34f7c1d0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_UIntPtr : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_UIntPtr() : base(typeof(UIntPtr)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((ulong)obj); + } + + public override object Read(ES3Reader reader) + { + return (object)reader.Read_ulong(); + } + } + + public class ES3Type_UIntPtrArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_UIntPtrArray() : base(typeof(UIntPtr[]), ES3Type_UIntPtr.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs.meta new file mode 100644 index 00000000..e1a3ccb9 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_UIntPtr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6fe9eb4dc6fa54989a516115e34602df +timeCreated: 1519132288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs new file mode 100644 index 00000000..475b322a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_bool : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_bool() : base(typeof(bool)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((bool)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_bool(); + } + } + + public class ES3Type_boolArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_boolArray() : base(typeof(bool[]), ES3Type_bool.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs.meta new file mode 100644 index 00000000..81ea5f7c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_bool.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6fa779d8184f649f897074ba540ab1f9 +timeCreated: 1519132288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs new file mode 100644 index 00000000..8bf5e11a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_byte : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_byte() : base(typeof(byte)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((byte)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_byte(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs.meta new file mode 100644 index 00000000..d72b2808 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byte.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c6f8718240d84f40a9d4b3ac41b3398 +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs new file mode 100644 index 00000000..751db72f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_byteArray : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_byteArray() : base(typeof(byte[])) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((byte[])obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_byteArray(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs.meta new file mode 100644 index 00000000..614f5dc7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_byteArray.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 59bd4a4624c4a4082bb3b8333a399ee2 +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs new file mode 100644 index 00000000..10b5a47d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs @@ -0,0 +1,33 @@ +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_char : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_char() : base(typeof(char)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((char)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_char(); + } + } + public class ES3Type_charArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_charArray() : base(typeof(char[]), ES3Type_char.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs.meta new file mode 100644 index 00000000..4e5cc821 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_char.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fdc3981e5018244468c97a2bbcbb610a +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs new file mode 100644 index 00000000..5ffaf6fe --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_decimal : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_decimal() : base(typeof(decimal)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((decimal)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_decimal(); + } + } + + public class ES3Type_decimalArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_decimalArray() : base(typeof(decimal[]), ES3Type_decimal.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs.meta new file mode 100644 index 00000000..78ea5c77 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_decimal.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 030f062403dc345f78476442992e3c9c +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs new file mode 100644 index 00000000..e6e581d6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_double : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_double() : base(typeof(double)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((double)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_double(); + } + } + + public class ES3Type_doubleArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_doubleArray() : base(typeof(double[]), ES3Type_double.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs.meta new file mode 100644 index 00000000..5ccb756f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_double.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c445261bbbfc24045863aa3c2c097a73 +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs new file mode 100644 index 00000000..8980e9e0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs @@ -0,0 +1,59 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_enum : ES3Type + { + public static ES3Type Instance = null; + private Type underlyingType = null; + + public ES3Type_enum(Type type) : base(type) + { + isPrimitive = true; + isEnum = true; + Instance = this; + underlyingType = Enum.GetUnderlyingType(type); + } + + public override void Write(object obj, ES3Writer writer) + { + if(underlyingType == typeof(int)) writer.WritePrimitive((int)obj); + else if(underlyingType == typeof(bool)) writer.WritePrimitive((bool)obj); + else if(underlyingType == typeof(byte)) writer.WritePrimitive((byte)obj); + else if(underlyingType == typeof(char)) writer.WritePrimitive((char)obj); + else if(underlyingType == typeof(decimal)) writer.WritePrimitive((decimal)obj); + else if(underlyingType == typeof(double)) writer.WritePrimitive((double)obj); + else if(underlyingType == typeof(float)) writer.WritePrimitive((float)obj); + else if(underlyingType == typeof(long)) writer.WritePrimitive((long)obj); + else if(underlyingType == typeof(sbyte)) writer.WritePrimitive((sbyte)obj); + else if(underlyingType == typeof(short)) writer.WritePrimitive((short)obj); + else if(underlyingType == typeof(uint)) writer.WritePrimitive((uint)obj); + else if(underlyingType == typeof(ulong)) writer.WritePrimitive((ulong)obj); + else if(underlyingType == typeof(ushort)) writer.WritePrimitive((ushort)obj); + else + throw new System.InvalidCastException("The underlying type " + underlyingType + " of Enum "+type+" is not supported"); + + } + + public override object Read(ES3Reader reader) + { + if(underlyingType == typeof(int)) return Enum.ToObject (type, reader.Read_int()); + else if(underlyingType == typeof(bool)) return Enum.ToObject (type, reader.Read_bool()); + else if(underlyingType == typeof(byte)) return Enum.ToObject (type, reader.Read_byte()); + else if(underlyingType == typeof(char)) return Enum.ToObject (type, reader.Read_char()); + else if(underlyingType == typeof(decimal)) return Enum.ToObject (type, reader.Read_decimal()); + else if(underlyingType == typeof(double)) return Enum.ToObject (type, reader.Read_double()); + else if(underlyingType == typeof(float)) return Enum.ToObject (type, reader.Read_float()); + else if(underlyingType == typeof(long)) return Enum.ToObject (type, reader.Read_long()); + else if(underlyingType == typeof(sbyte)) return Enum.ToObject (type, reader.Read_sbyte()); + else if(underlyingType == typeof(short)) return Enum.ToObject (type, reader.Read_short()); + else if(underlyingType == typeof(uint)) return Enum.ToObject (type, reader.Read_uint()); + else if(underlyingType == typeof(ulong)) return Enum.ToObject (type, reader.Read_ulong()); + else if(underlyingType == typeof(ushort)) return Enum.ToObject (type, reader.Read_ushort()); + else + throw new System.InvalidCastException("The underlying type " + underlyingType + " of Enum "+type+" is not supported"); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs.meta new file mode 100644 index 00000000..822eee48 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_enum.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0bc176cf7e9c84850b4ead41131e66af +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs new file mode 100644 index 00000000..7f081e3d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_float : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_float() : base(typeof(float)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((float)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_float(); + } + } + + public class ES3Type_floatArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_floatArray() : base(typeof(float[]), ES3Type_float.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs.meta new file mode 100644 index 00000000..a27a1f6b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_float.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f40643b43129b41ff9143c8a23741391 +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs new file mode 100644 index 00000000..418bc0b1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_int : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_int() : base(typeof(int)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((int)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_int(); + } + } + + public class ES3Type_intArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_intArray() : base(typeof(int[]), ES3Type_int.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs.meta new file mode 100644 index 00000000..53a2beb3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_int.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13efdffd9de75437f8eb6d09e595e70d +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs new file mode 100644 index 00000000..70679e60 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_IntPtr : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_IntPtr() : base(typeof(IntPtr)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((long)(IntPtr)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)(IntPtr)reader.Read_long(); + } + } + + public class ES3Type_IntPtrArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_IntPtrArray() : base(typeof(IntPtr[]), ES3Type_IntPtr.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs.meta new file mode 100644 index 00000000..09cb3a15 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_intptr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8fe212a329d2d46a482270d9a93d704f +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs new file mode 100644 index 00000000..4344cbe4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_long : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_long() : base(typeof(long)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((long)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_long(); + } + } + + public class ES3Type_longArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_longArray() : base(typeof(long[]), ES3Type_long.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs.meta new file mode 100644 index 00000000..792ad5ea --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_long.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b534e98b9d5dc4219978a5aada0d11b0 +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs new file mode 100644 index 00000000..41e74955 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_sbyte : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_sbyte() : base(typeof(sbyte)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((sbyte)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_sbyte(); + } + } + + public class ES3Type_sbyteArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_sbyteArray() : base(typeof(sbyte[]), ES3Type_sbyte.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs.meta new file mode 100644 index 00000000..383ec759 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_sbyte.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5aaea33736cb64165b06b21ccffb4dde +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs new file mode 100644 index 00000000..75cd6e7d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_short : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_short() : base(typeof(short)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((short)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_short(); + } + } + + public class ES3Type_shortArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_shortArray() : base(typeof(short[]), ES3Type_short.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs.meta new file mode 100644 index 00000000..80887467 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_short.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 62ef5aa170d8444eb9613f6733dace9c +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs new file mode 100644 index 00000000..585590ff --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_string : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_string() : base(typeof(string)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((string)obj); + } + + public override object Read(ES3Reader reader) + { + return reader.Read_string(); + } + } + + public class ES3Type_StringArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_StringArray() : base(typeof(string[]), ES3Type_string.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs.meta new file mode 100644 index 00000000..5c503469 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_string.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 138987e042d4e4283a967a0958ab0a52 +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs new file mode 100644 index 00000000..6fb12e61 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_uint : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_uint() : base(typeof(uint)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((uint)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_uint(); + } + } + + public class ES3Type_uintArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_uintArray() : base(typeof(uint[]), ES3Type_uint.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs.meta new file mode 100644 index 00000000..4c9fcc29 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_uint.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c39c4f1168884e94b9e7e6087affd2d +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs new file mode 100644 index 00000000..500ed4ea --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_ulong : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ulong() : base(typeof(ulong)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((ulong)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_ulong(); + } + } + + public class ES3Type_ulongArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_ulongArray() : base(typeof(ulong[]), ES3Type_ulong.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs.meta new file mode 100644 index 00000000..2e8f548c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ulong.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f25dca3f336094cababceb772c7e390b +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs new file mode 100644 index 00000000..6918abb4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs @@ -0,0 +1,37 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_ushort : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ushort() : base(typeof(ushort)) + { + isPrimitive = true; + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + writer.WritePrimitive((ushort)obj); + } + + public override object Read(ES3Reader reader) + { + return (T)(object)reader.Read_ushort(); + } + } + + public class ES3Type_ushortArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_ushortArray() : base(typeof(ushort[]), ES3Type_ushort.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs.meta new file mode 100644 index 00000000..37c6b4ef --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Primitive Types/ES3Type_ushort.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 33d86db06b1954996a48d38a75c76dd9 +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types.meta new file mode 100644 index 00000000..cdc6e252 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4082e405acc0345388494ffa52b63839 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs new file mode 100644 index 00000000..505635df --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs @@ -0,0 +1,24 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedComponentType : ES3ComponentType + { + public ES3ReflectedComponentType(Type type) : base(type) + { + isReflectedType = true; + GetMembers(true); + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + WriteProperties(obj, writer); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + ReadProperties(reader, obj); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs.meta new file mode 100644 index 00000000..9a624022 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedComponentType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b125647af96a4b5494ca82d1da9a9e6 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs new file mode 100644 index 00000000..8cb25243 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedObjectType : ES3ObjectType + { + public ES3ReflectedObjectType(Type type) : base(type) + { + isReflectedType = true; + GetMembers(true); + } + + protected override void WriteObject(object obj, ES3Writer writer) + { + WriteProperties(obj, writer); + + } + + protected override object ReadObject(ES3Reader reader) + { + var obj = ES3Reflection.CreateInstance(this.type); + ReadProperties(reader, obj); + return obj; + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + ReadProperties(reader, obj); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs.meta new file mode 100644 index 00000000..99d776ed --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d239970ac781b4079bda34e2999dc775 +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs new file mode 100644 index 00000000..e14f8486 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedScriptableObjectType : ES3ScriptableObjectType + { + public ES3ReflectedScriptableObjectType(Type type) : base(type) + { + isReflectedType = true; + GetMembers(true); + } + + protected override void WriteScriptableObject(object obj, ES3Writer writer) + { + WriteProperties(obj, writer); + } + + protected override void ReadScriptableObject(ES3Reader reader, object obj) + { + ReadProperties(reader, obj); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs.meta new file mode 100644 index 00000000..45d74330 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedScriptableObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd9e88c6e3735412ab2033c284212528 +timeCreated: 1519132298 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs new file mode 100644 index 00000000..f9e324fd --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs @@ -0,0 +1,119 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedType : ES3Type + { + public ES3ReflectedType(Type type) : base(type) + { + isReflectedType = true; + } + + // Constructs a reflected ES3Type, only serializing members which are in the provided members array. + public ES3ReflectedType(Type type, string[] members) : this(type) + { + GetMembers(false, members); + } + + public override void Write(object obj, ES3Writer writer) + { + // Manage NULL values. + if(obj == null){writer.WriteNull(); return;}; + + UnityEngine.Object unityObj = obj as UnityEngine.Object; + bool isUnityEngineObject = (unityObj != null); + + // If this is a derived type, write the type as a property and use it's specific ES3Type. + var objType = obj.GetType(); + if(objType != this.type) + { + writer.WriteType(objType); + ES3TypeMgr.GetOrCreateES3Type(objType).Write(obj, writer); + return; + } + + if(isUnityEngineObject) + writer.WriteRef(unityObj); + + if(members == null) + GetMembers(writer.settings.safeReflection); + for(int i=0; i(ES3Reader reader) + { + if(members == null) + GetMembers(reader.settings.safeReflection); + + object obj; + string propertyName = reader.ReadPropertyName(); + + // If we're loading a derived type, use it's specific ES3Type. + if(propertyName == ES3Type.typeFieldName) + return ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).Read(reader); + + // If we're loading a reference, load it. Else, create an instance. + if(propertyName == ES3ReferenceMgrBase.referencePropertyName) + { + long id = reader.Read_ref(); + obj = ES3ReferenceMgrBase.Current.Get(id, type); + if(obj == null) + { + // If an instance isn't already registered for this object, create an instance and register the reference. + obj = ES3Reflection.CreateInstance(this.type); + ES3ReferenceMgrBase.Current.Add((UnityEngine.Object)obj, id); + } + } + else + { + reader.overridePropertiesName = propertyName; + obj = ES3Reflection.CreateInstance(this.type); + } + + // Iterate through each property in the file and try to load it using the appropriate + // ES3Property in the members array. + ReadProperties(reader, obj); + + return obj; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + if(members == null) + GetMembers(reader.settings.safeReflection); + + string propertyName = reader.ReadPropertyName(); + + // If we're loading a derived type, use it's specific ES3Type. + if(propertyName == ES3Type.typeFieldName) + { + ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).ReadInto(reader, obj); + return; + } + else + reader.overridePropertiesName = propertyName; + + // Iterate through each property in the file and try to load it using the appropriate + // ES3Property in the members array. + ReadProperties(reader, obj); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs.meta new file mode 100644 index 00000000..3a91f091 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d859cda1b74634568a53487bd1651001 +timeCreated: 1499764823 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs new file mode 100644 index 00000000..e9a4aeda --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedUnityObjectType : ES3UnityObjectType + { + public ES3ReflectedUnityObjectType(Type type) : base(type) + { + isReflectedType = true; + GetMembers(true); + } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + WriteProperties(obj, writer); + } + + protected override object ReadUnityObject(ES3Reader reader) + { + var obj = ES3Reflection.CreateInstance(this.type); + ReadProperties(reader, obj); + return obj; + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + ReadProperties(reader, obj); + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs.meta new file mode 100644 index 00000000..c9d58892 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedUnityObjectType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f8c48527c8cb247f1be391e0ca112968 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs new file mode 100644 index 00000000..9bf15352 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs @@ -0,0 +1,38 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + internal class ES3ReflectedValueType : ES3Type + { + public ES3ReflectedValueType(Type type) : base(type) + { + isReflectedType = true; + GetMembers(true); + } + + public override void Write(object obj, ES3Writer writer) + { + WriteProperties(obj, writer); + } + + public override object Read(ES3Reader reader) + { + var obj = ES3Reflection.CreateInstance(this.type); + + if(obj == null) + throw new NotSupportedException("Cannot create an instance of "+this.type+". However, you may be able to add support for it using a custom ES3Type file. For more information see: http://docs.moodkie.com/easy-save-3/es3-guides/controlling-serialization-using-es3types/"); + // Make sure we return the result of ReadProperties as properties aren't assigned by reference. + return ReadProperties(reader, obj); + } + + public override void ReadInto(ES3Reader reader, object obj) + { + throw new NotSupportedException("Cannot perform self-assigning load on a value type."); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs.meta new file mode 100644 index 00000000..20999100 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Reflected Types/ES3ReflectedValueType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f8bc4124377914b60b46b243480f0eb5 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types.meta new file mode 100644 index 00000000..73891638 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a14e00d7328764c16803c1a5f854286b +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types.meta new file mode 100644 index 00000000..4873446d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 96e5384a630b34a90a22b84d95f3dac9 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs new file mode 100644 index 00000000..f0b5f8bc --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs @@ -0,0 +1,61 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("center", "size", "enabled", "isTrigger", "contactOffset", "sharedMaterial")] + public class ES3Type_BoxCollider : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_BoxCollider() : base(typeof(UnityEngine.BoxCollider)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.BoxCollider)obj; + + writer.WriteProperty("center", instance.center); + writer.WriteProperty("size", instance.size); + writer.WriteProperty("enabled", instance.enabled); + writer.WriteProperty("isTrigger", instance.isTrigger); + writer.WriteProperty("contactOffset", instance.contactOffset); + writer.WritePropertyByRef("material", instance.sharedMaterial); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.BoxCollider)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "center": + instance.center = reader.Read(); + break; + case "size": + instance.size = reader.Read(); + break; + case "enabled": + instance.enabled = reader.Read(); + break; + case "isTrigger": + instance.isTrigger = reader.Read(); + break; + case "contactOffset": + instance.contactOffset = reader.Read(); + break; + case "material": + instance.sharedMaterial = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs.meta new file mode 100644 index 00000000..a45de667 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d36ea4342de4546b198eea1405516979 +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs new file mode 100644 index 00000000..fb8a3073 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs @@ -0,0 +1,66 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("size", "density", "isTrigger", "usedByEffector", "offset", "sharedMaterial", "enabled")] + public class ES3Type_BoxCollider2D : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_BoxCollider2D() : base(typeof(UnityEngine.BoxCollider2D)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.BoxCollider2D)obj; + + writer.WriteProperty("size", instance.size); + if(instance.attachedRigidbody != null && instance.attachedRigidbody.useAutoMass) + writer.WriteProperty("density", instance.density); + writer.WriteProperty("isTrigger", instance.isTrigger); + writer.WriteProperty("usedByEffector", instance.usedByEffector); + writer.WriteProperty("offset", instance.offset); + writer.WritePropertyByRef("sharedMaterial", instance.sharedMaterial); + writer.WriteProperty("enabled", instance.enabled); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.BoxCollider2D)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "size": + instance.size = reader.Read(); + break; + case "density": + instance.density = reader.Read(); + break; + case "isTrigger": + instance.isTrigger = reader.Read(); + break; + case "usedByEffector": + instance.usedByEffector = reader.Read(); + break; + case "offset": + instance.offset = reader.Read(); + break; + case "sharedMaterial": + instance.sharedMaterial = reader.Read(); + break; + case "enabled": + instance.enabled = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs.meta new file mode 100644 index 00000000..0795afc6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_BoxCollider2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8ae32677f95cd4f2ba1c34db2a065c9c +timeCreated: 1519132290 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs new file mode 100644 index 00000000..275d758a --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs @@ -0,0 +1,165 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("fieldOfView", "nearClipPlane", "farClipPlane", "renderingPath", "allowHDR", "orthographicSize", "orthographic", "opaqueSortMode", "transparencySortMode", "depth", "aspect", "cullingMask", "eventMask", "backgroundColor", "rect", "pixelRect", "worldToCameraMatrix", "projectionMatrix", "nonJitteredProjectionMatrix", "useJitteredProjectionMatrixForTransparentRendering", "clearFlags", "stereoSeparation", "stereoConvergence", "cameraType", "stereoTargetEye", "targetDisplay", "useOcclusionCulling", "cullingMatrix", "layerCullSpherical", "depthTextureMode", "clearStencilAfterLightingPass", "enabled", "hideFlags")] + public class ES3Type_Camera : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_Camera() : base(typeof(UnityEngine.Camera)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Camera)obj; + + writer.WriteProperty("fieldOfView", instance.fieldOfView); + writer.WriteProperty("nearClipPlane", instance.nearClipPlane); + writer.WriteProperty("farClipPlane", instance.farClipPlane); + writer.WriteProperty("renderingPath", instance.renderingPath); + #if UNITY_5_6_OR_NEWER + writer.WriteProperty("allowHDR", instance.allowHDR); + #endif + writer.WriteProperty("orthographicSize", instance.orthographicSize); + writer.WriteProperty("orthographic", instance.orthographic); + writer.WriteProperty("opaqueSortMode", instance.opaqueSortMode); + writer.WriteProperty("transparencySortMode", instance.transparencySortMode); + writer.WriteProperty("depth", instance.depth); + writer.WriteProperty("aspect", instance.aspect); + writer.WriteProperty("cullingMask", instance.cullingMask); + writer.WriteProperty("eventMask", instance.eventMask); + writer.WriteProperty("backgroundColor", instance.backgroundColor); + writer.WriteProperty("rect", instance.rect); + writer.WriteProperty("pixelRect", instance.pixelRect); + writer.WriteProperty("projectionMatrix", instance.projectionMatrix); + writer.WriteProperty("nonJitteredProjectionMatrix", instance.nonJitteredProjectionMatrix); + writer.WriteProperty("useJitteredProjectionMatrixForTransparentRendering", instance.useJitteredProjectionMatrixForTransparentRendering); + writer.WriteProperty("clearFlags", instance.clearFlags); + writer.WriteProperty("stereoSeparation", instance.stereoSeparation); + writer.WriteProperty("stereoConvergence", instance.stereoConvergence); + writer.WriteProperty("cameraType", instance.cameraType); + writer.WriteProperty("stereoTargetEye", instance.stereoTargetEye); + writer.WriteProperty("targetDisplay", instance.targetDisplay); + writer.WriteProperty("useOcclusionCulling", instance.useOcclusionCulling); + writer.WriteProperty("layerCullSpherical", instance.layerCullSpherical); + writer.WriteProperty("depthTextureMode", instance.depthTextureMode); + writer.WriteProperty("clearStencilAfterLightingPass", instance.clearStencilAfterLightingPass); + writer.WriteProperty("enabled", instance.enabled); + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Camera)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "fieldOfView": + instance.fieldOfView = reader.Read(); + break; + case "nearClipPlane": + instance.nearClipPlane = reader.Read(); + break; + case "farClipPlane": + instance.farClipPlane = reader.Read(); + break; + case "renderingPath": + instance.renderingPath = reader.Read(); + break; + #if UNITY_5_6_OR_NEWER + case "allowHDR": + instance.allowHDR = reader.Read(); + break; + #endif + case "orthographicSize": + instance.orthographicSize = reader.Read(); + break; + case "orthographic": + instance.orthographic = reader.Read(); + break; + case "opaqueSortMode": + instance.opaqueSortMode = reader.Read(); + break; + case "transparencySortMode": + instance.transparencySortMode = reader.Read(); + break; + case "depth": + instance.depth = reader.Read(); + break; + case "aspect": + instance.aspect = reader.Read(); + break; + case "cullingMask": + instance.cullingMask = reader.Read(); + break; + case "eventMask": + instance.eventMask = reader.Read(); + break; + case "backgroundColor": + instance.backgroundColor = reader.Read(); + break; + case "rect": + instance.rect = reader.Read(); + break; + case "pixelRect": + instance.pixelRect = reader.Read(); + break; + case "projectionMatrix": + instance.projectionMatrix = reader.Read(); + break; + case "nonJitteredProjectionMatrix": + instance.nonJitteredProjectionMatrix = reader.Read(); + break; + case "useJitteredProjectionMatrixForTransparentRendering": + instance.useJitteredProjectionMatrixForTransparentRendering = reader.Read(); + break; + case "clearFlags": + instance.clearFlags = reader.Read(); + break; + case "stereoSeparation": + instance.stereoSeparation = reader.Read(); + break; + case "stereoConvergence": + instance.stereoConvergence = reader.Read(); + break; + case "cameraType": + instance.cameraType = reader.Read(); + break; + case "stereoTargetEye": + instance.stereoTargetEye = reader.Read(); + break; + case "targetDisplay": + instance.targetDisplay = reader.Read(); + break; + case "useOcclusionCulling": + instance.useOcclusionCulling = reader.Read(); + break; + case "layerCullSpherical": + instance.layerCullSpherical = reader.Read(); + break; + case "depthTextureMode": + instance.depthTextureMode = reader.Read(); + break; + case "clearStencilAfterLightingPass": + instance.clearStencilAfterLightingPass = reader.Read(); + break; + case "enabled": + instance.enabled = reader.Read(); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs.meta new file mode 100644 index 00000000..2d367aa3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Camera.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c88c1ce73e1f3462ea1aff5df7935e22 +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs new file mode 100644 index 00000000..cdf38d53 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs @@ -0,0 +1,69 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("center", "radius", "height", "direction", "enabled", "isTrigger", "contactOffset", "sharedMaterial")] + public class ES3Type_CapsuleCollider : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_CapsuleCollider() : base(typeof(UnityEngine.CapsuleCollider)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.CapsuleCollider)obj; + + writer.WriteProperty("center", instance.center, ES3Type_Vector3.Instance); + writer.WriteProperty("radius", instance.radius, ES3Type_float.Instance); + writer.WriteProperty("height", instance.height, ES3Type_float.Instance); + writer.WriteProperty("direction", instance.direction, ES3Type_int.Instance); + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("isTrigger", instance.isTrigger, ES3Type_bool.Instance); + writer.WriteProperty("contactOffset", instance.contactOffset, ES3Type_float.Instance); + writer.WritePropertyByRef("material", instance.sharedMaterial); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.CapsuleCollider)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "center": + instance.center = reader.Read(ES3Type_Vector3.Instance); + break; + case "radius": + instance.radius = reader.Read(ES3Type_float.Instance); + break; + case "height": + instance.height = reader.Read(ES3Type_float.Instance); + break; + case "direction": + instance.direction = reader.Read(ES3Type_int.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "isTrigger": + instance.isTrigger = reader.Read(ES3Type_bool.Instance); + break; + case "contactOffset": + instance.contactOffset = reader.Read(ES3Type_float.Instance); + break; + case "material": + instance.sharedMaterial = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs.meta new file mode 100644 index 00000000..f4c88e0e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_CapsuleCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c523bafd506f04c85b160320b0b6d9dd +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs new file mode 100644 index 00000000..960e8313 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + public class ES3Type_EventSystem : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_EventSystem() : base(typeof(EventSystem)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + foreach(string propertyName in reader.Properties) + reader.Skip(); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs.meta new file mode 100644 index 00000000..d9017201 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_EventSystem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02df167b6b77741308bfc8110dae71dd +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs new file mode 100644 index 00000000..aa4b4a86 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs @@ -0,0 +1,136 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("sprite", "overrideSprite", "type", "preserveAspect", "fillCenter", "fillMethod", "fillAmount", "fillClockwise", "fillOrigin", "alphaHitTestMinimumThreshold", "useSpriteMesh", "pixelsPerUnitMultiplier", "material", "onCullStateChanged", "maskable", "color", "raycastTarget", "useLegacyMeshGeneration", "useGUILayout", "enabled", "hideFlags")] + public class ES3Type_Image : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_Image() : base(typeof(UnityEngine.UI.Image)){ Instance = this; priority = 1;} + + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.UI.Image)obj; + + writer.WritePropertyByRef("sprite", instance.sprite); + writer.WritePropertyByRef("overrideSprite", instance.overrideSprite); + writer.WriteProperty("type", instance.type); + writer.WriteProperty("preserveAspect", instance.preserveAspect, ES3Type_bool.Instance); + writer.WriteProperty("fillCenter", instance.fillCenter, ES3Type_bool.Instance); + writer.WriteProperty("fillMethod", instance.fillMethod); + writer.WriteProperty("fillAmount", instance.fillAmount, ES3Type_float.Instance); + writer.WriteProperty("fillClockwise", instance.fillClockwise, ES3Type_bool.Instance); + writer.WriteProperty("fillOrigin", instance.fillOrigin, ES3Type_int.Instance); + writer.WriteProperty("alphaHitTestMinimumThreshold", instance.alphaHitTestMinimumThreshold, ES3Type_float.Instance); +#if UNITY_2019_1_OR_NEWER + writer.WriteProperty("useSpriteMesh", instance.useSpriteMesh, ES3Type_bool.Instance); +#endif + // Unity automatically sets the default material if it's set to null. + // This prevents missing reference warnings. + if (instance.material.name.Contains("Default")) + writer.WriteProperty("material", null); + else + writer.WriteProperty("material", instance.material); + writer.WriteProperty("onCullStateChanged", instance.onCullStateChanged); + writer.WriteProperty("maskable", instance.maskable, ES3Type_bool.Instance); + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("raycastTarget", instance.raycastTarget, ES3Type_bool.Instance); + writer.WritePrivateProperty("useLegacyMeshGeneration", instance); + writer.WriteProperty("useGUILayout", instance.useGUILayout, ES3Type_bool.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("hideFlags", instance.hideFlags, ES3Type_enum.Instance); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.UI.Image)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "sprite": + instance.sprite = reader.Read(ES3Type_Sprite.Instance); + break; + case "overrideSprite": + instance.overrideSprite = reader.Read(ES3Type_Sprite.Instance); + break; + case "type": + instance.type = reader.Read(); + break; + case "preserveAspect": + instance.preserveAspect = reader.Read(ES3Type_bool.Instance); + break; + case "fillCenter": + instance.fillCenter = reader.Read(ES3Type_bool.Instance); + break; + case "fillMethod": + instance.fillMethod = reader.Read(); + break; + case "fillAmount": + instance.fillAmount = reader.Read(ES3Type_float.Instance); + break; + case "fillClockwise": + instance.fillClockwise = reader.Read(ES3Type_bool.Instance); + break; + case "fillOrigin": + instance.fillOrigin = reader.Read(ES3Type_int.Instance); + break; + case "alphaHitTestMinimumThreshold": + instance.alphaHitTestMinimumThreshold = reader.Read(ES3Type_float.Instance); + break; +#if UNITY_2019_1_OR_NEWER + case "useSpriteMesh": + instance.useSpriteMesh = reader.Read(ES3Type_bool.Instance); + break; +#endif + case "material": + instance.material = reader.Read(ES3Type_Material.Instance); + break; + case "onCullStateChanged": + instance.onCullStateChanged = reader.Read(); + break; + case "maskable": + instance.maskable = reader.Read(ES3Type_bool.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_Color.Instance); + break; + case "raycastTarget": + instance.raycastTarget = reader.Read(ES3Type_bool.Instance); + break; + case "useLegacyMeshGeneration": + reader.SetPrivateProperty("useLegacyMeshGeneration", reader.Read(), instance); + break; + case "useGUILayout": + instance.useGUILayout = reader.Read(ES3Type_bool.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "hideFlags": + instance.hideFlags = reader.Read(ES3Type_enum.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3Type_ImageArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_ImageArray() : base(typeof(UnityEngine.UI.Image[]), ES3Type_Image.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs.meta new file mode 100644 index 00000000..0b131786 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Image.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 044e538602955694c90bc8b86d487ac5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs new file mode 100644 index 00000000..6ef58b82 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs @@ -0,0 +1,80 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("sharedMesh", "convex", "inflateMesh", "skinWidth", "enabled", "isTrigger", "contactOffset", "sharedMaterial")] + public class ES3Type_MeshCollider : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_MeshCollider() : base(typeof(UnityEngine.MeshCollider)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.MeshCollider)obj; + + writer.WritePropertyByRef("sharedMesh", instance.sharedMesh); + writer.WriteProperty("convex", instance.convex, ES3Type_bool.Instance); + /*writer.WriteProperty("inflateMesh", instance.inflateMesh, ES3Type_bool.Instance); + writer.WriteProperty("skinWidth", instance.skinWidth, ES3Type_float.Instance);*/ + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("isTrigger", instance.isTrigger, ES3Type_bool.Instance); + writer.WriteProperty("contactOffset", instance.contactOffset, ES3Type_float.Instance); + writer.WriteProperty("material", instance.sharedMaterial); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.MeshCollider)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "sharedMesh": + instance.sharedMesh = reader.Read(ES3Type_Mesh.Instance); + break; + case "convex": + instance.convex = reader.Read(ES3Type_bool.Instance); + break; + /*case "inflateMesh": + instance.inflateMesh = reader.Read(ES3Type_bool.Instance); + break; + case "skinWidth": + instance.skinWidth = reader.Read(ES3Type_float.Instance); + break;*/ + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "isTrigger": + instance.isTrigger = reader.Read(ES3Type_bool.Instance); + break; + case "contactOffset": + instance.contactOffset = reader.Read(ES3Type_float.Instance); + break; + case "material": + instance.sharedMaterial = reader.Read(ES3Type_PhysicMaterial.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_MeshColliderArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_MeshColliderArray() : base(typeof(UnityEngine.MeshCollider[]), ES3Type_MeshCollider.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs.meta new file mode 100644 index 00000000..dfb148f5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7825b483b5804bcb95a1a47cb287500 +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs new file mode 100644 index 00000000..2c4bd8ce --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs @@ -0,0 +1,51 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("sharedMesh")] + public class ES3Type_MeshFilter : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_MeshFilter() : base(typeof(UnityEngine.MeshFilter)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.MeshFilter)obj; + writer.WritePropertyByRef("sharedMesh", instance.sharedMesh); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.MeshFilter)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "sharedMesh": + instance.sharedMesh = reader.Read(ES3Type_Mesh.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_MeshFilterArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_MeshFilterArray() : base(typeof(UnityEngine.MeshFilter[]), ES3Type_MeshFilter.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs.meta new file mode 100644 index 00000000..9a22df1c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshFilter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00364532a712841328836c36da833503 +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs new file mode 100644 index 00000000..f17cc86c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs @@ -0,0 +1,116 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("additionalVertexStreams", "enabled", "shadowCastingMode", "receiveShadows", "sharedMaterials", "lightmapIndex", "realtimeLightmapIndex", "lightmapScaleOffset", "motionVectorGenerationMode", "realtimeLightmapScaleOffset", "lightProbeUsage", "lightProbeProxyVolumeOverride", "probeAnchor", "reflectionProbeUsage", "sortingLayerName", "sortingLayerID", "sortingOrder")] + public class ES3Type_MeshRenderer : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_MeshRenderer() : base(typeof(UnityEngine.MeshRenderer)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.MeshRenderer)obj; + + writer.WriteProperty("additionalVertexStreams", instance.additionalVertexStreams, ES3Type_Mesh.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("shadowCastingMode", instance.shadowCastingMode); + writer.WriteProperty("receiveShadows", instance.receiveShadows, ES3Type_bool.Instance); + writer.WriteProperty("sharedMaterials", instance.sharedMaterials, ES3Type_MaterialArray.Instance); + writer.WriteProperty("lightmapIndex", instance.lightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("realtimeLightmapIndex", instance.realtimeLightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("lightmapScaleOffset", instance.lightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("motionVectorGenerationMode", instance.motionVectorGenerationMode); + writer.WriteProperty("realtimeLightmapScaleOffset", instance.realtimeLightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("lightProbeUsage", instance.lightProbeUsage); + writer.WriteProperty("lightProbeProxyVolumeOverride", instance.lightProbeProxyVolumeOverride); + writer.WriteProperty("probeAnchor", instance.probeAnchor, ES3Type_Transform.Instance); + writer.WriteProperty("reflectionProbeUsage", instance.reflectionProbeUsage); + writer.WriteProperty("sortingLayerName", instance.sortingLayerName, ES3Type_string.Instance); + writer.WriteProperty("sortingLayerID", instance.sortingLayerID, ES3Type_int.Instance); + writer.WriteProperty("sortingOrder", instance.sortingOrder, ES3Type_int.Instance); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.MeshRenderer)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "additionalVertexStreams": + instance.additionalVertexStreams = reader.Read(ES3Type_Mesh.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "shadowCastingMode": + instance.shadowCastingMode = reader.Read(); + break; + case "receiveShadows": + instance.receiveShadows = reader.Read(ES3Type_bool.Instance); + break; + case "sharedMaterials": + instance.sharedMaterials = reader.Read(); + break; + case "lightmapIndex": + instance.lightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "realtimeLightmapIndex": + instance.realtimeLightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "lightmapScaleOffset": + instance.lightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "motionVectorGenerationMode": + instance.motionVectorGenerationMode = reader.Read(); + break; + case "realtimeLightmapScaleOffset": + instance.realtimeLightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "lightProbeUsage": + instance.lightProbeUsage = reader.Read(); + break; + case "lightProbeProxyVolumeOverride": + instance.lightProbeProxyVolumeOverride = reader.Read(ES3Type_GameObject.Instance); + break; + case "probeAnchor": + instance.probeAnchor = reader.Read(ES3Type_Transform.Instance); + break; + case "reflectionProbeUsage": + instance.reflectionProbeUsage = reader.Read(); + break; + case "sortingLayerName": + instance.sortingLayerName = reader.Read(ES3Type_string.Instance); + break; + case "sortingLayerID": + instance.sortingLayerID = reader.Read(ES3Type_int.Instance); + break; + case "sortingOrder": + instance.sortingOrder = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_MeshRendererArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_MeshRendererArray() : base(typeof(UnityEngine.MeshRenderer[]), ES3Type_MeshRenderer.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs.meta new file mode 100644 index 00000000..72771620 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_MeshRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d33e88a8388cf4cf1b47495afc6722a7 +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs new file mode 100644 index 00000000..866ce93f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs @@ -0,0 +1,140 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("time", "hideFlags", "collision", "colorBySpeed", "colorOverLifetime", "emission", "externalForces", "forceOverLifetime", "inheritVelocity", + "lights", "limitVelocityOverLifetime", "main", "noise", "rotatonBySpeed", "rotationOverLifetime", "shape", "sizeBySpeed", "sizeOverLifetime", + "subEmitters", "textureSheetAnimation", "trails", "trigger", "useAutoRandomSeed", "velocityOverLifetime", "isPaused", "isPlaying", "isStopped")] + public class ES3Type_ParticleSystem : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_ParticleSystem() : base(typeof(UnityEngine.ParticleSystem)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem)obj; + + writer.WriteProperty("time", instance.time); + writer.WriteProperty("hideFlags", instance.hideFlags); + writer.WriteProperty("collision", instance.collision); + writer.WriteProperty("colorBySpeed", instance.colorBySpeed); + writer.WriteProperty("colorOverLifetime", instance.colorOverLifetime); + writer.WriteProperty("emission", instance.emission); + writer.WriteProperty("externalForces", instance.externalForces); + writer.WriteProperty("forceOverLifetime", instance.forceOverLifetime); + writer.WriteProperty("inheritVelocity", instance.inheritVelocity); + writer.WriteProperty("lights", instance.lights); + writer.WriteProperty("limitVelocityOverLifetime", instance.limitVelocityOverLifetime); + writer.WriteProperty("main", instance.main); + writer.WriteProperty("noise", instance.noise); + writer.WriteProperty("rotationBySpeed", instance.rotationBySpeed); + writer.WriteProperty("rotationOverLifetime", instance.rotationOverLifetime); + writer.WriteProperty("shape", instance.shape); + writer.WriteProperty("sizeBySpeed", instance.sizeBySpeed); + writer.WriteProperty("sizeOverLifetime", instance.collision); + writer.WriteProperty("subEmitters", instance.subEmitters); + writer.WriteProperty("textureSheetAnimation", instance.textureSheetAnimation); + writer.WriteProperty("trails", instance.trails); + writer.WriteProperty("trigger", instance.trigger); + writer.WriteProperty("useAutoRandomSeed", instance.useAutoRandomSeed); + writer.WriteProperty("velocityOverLifetime", instance.velocityOverLifetime); + writer.WriteProperty("isPaused", instance.isPaused); + writer.WriteProperty("isPlaying", instance.isPlaying); + writer.WriteProperty("isStopped", instance.isStopped); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem)obj; + // Stop particle system as some properties require it to not be playing to be set. + instance.Stop(); + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "time": + instance.time = reader.Read(); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + case "collision": + reader.ReadInto(instance.collision, ES3Type_CollisionModule.Instance); + break; + case "colorBySpeed": + reader.ReadInto(instance.colorBySpeed, ES3Type_ColorBySpeedModule.Instance); + break; + case "colorOverLifetime": + reader.ReadInto(instance.colorOverLifetime, ES3Type_ColorOverLifetimeModule.Instance); + break; + case "emission": + reader.ReadInto(instance.emission, ES3Type_EmissionModule.Instance); + break; + case "externalForces": + reader.ReadInto(instance.externalForces, ES3Type_ExternalForcesModule.Instance); + break; + case "forceOverLifetime": + reader.ReadInto(instance.forceOverLifetime, ES3Type_ForceOverLifetimeModule.Instance); + break; + case "inheritVelocity": + reader.ReadInto(instance.inheritVelocity, ES3Type_InheritVelocityModule.Instance); + break; + case "lights": + reader.ReadInto(instance.lights, ES3Type_LightsModule.Instance); + break; + case "limitVelocityOverLifetime": + reader.ReadInto(instance.limitVelocityOverLifetime, ES3Type_LimitVelocityOverLifetimeModule.Instance); + break; + case "main": + reader.ReadInto(instance.main, ES3Type_MainModule.Instance); + break; + case "noise": + reader.ReadInto(instance.noise, ES3Type_NoiseModule.Instance); + break; + case "rotationBySpeed": + reader.ReadInto(instance.rotationBySpeed, ES3Type_RotationBySpeedModule.Instance); + break; + case "rotationOverLifetime": + reader.ReadInto(instance.rotationOverLifetime, ES3Type_RotationOverLifetimeModule.Instance); + break; + case "subEmitters": + reader.ReadInto(instance.subEmitters, ES3Type_SubEmittersModule.Instance); + break; + case "textureSheetAnimation": + reader.ReadInto(instance.textureSheetAnimation, ES3Type_TextureSheetAnimationModule.Instance); + break; + case "trails": + reader.ReadInto(instance.trails, ES3Type_TrailModule.Instance); + break; + case "trigger": + reader.ReadInto(instance.trigger, ES3Type_TriggerModule.Instance); + break; + case "useAutoRandomSeed": + instance.useAutoRandomSeed = reader.Read(ES3Type_bool.Instance); + break; + case "velocityOverLifetime": + reader.ReadInto(instance.velocityOverLifetime, ES3Type_VelocityOverLifetimeModule.Instance); + break; + case "isPaused": + if(reader.Read(ES3Type_bool.Instance)) instance.Pause(); + break; + case "isPlaying": + if(reader.Read(ES3Type_bool.Instance)) instance.Play(); + break; + case "isStopped": + if(reader.Read(ES3Type_bool.Instance)) instance.Stop(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs.meta new file mode 100644 index 00000000..62abfe50 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_ParticleSystem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9484f3e3b46ec4871977550c93381f25 +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs new file mode 100644 index 00000000..0dbc47d7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs @@ -0,0 +1,87 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("points", "pathCount", "paths", "density", "isTrigger", "usedByEffector", "offset", "sharedMaterial", "enabled")] + public class ES3Type_PolygonCollider2D : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_PolygonCollider2D() : base(typeof(UnityEngine.PolygonCollider2D)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.PolygonCollider2D)obj; + + writer.WriteProperty("points", instance.points, ES3Type_Vector2Array.Instance); + writer.WriteProperty("pathCount", instance.pathCount, ES3Type_int.Instance); + + for(int i=0; i(ES3Reader reader, object obj) + { + var instance = (UnityEngine.PolygonCollider2D)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "points": + instance.points = reader.Read(ES3Type_Vector2Array.Instance); + break; + case "pathCount": + int pathCount = reader.Read(ES3Type_int.Instance); + for(int i=0; i(ES3Type_Vector2Array.Instance)); + break; + case "density": + instance.density = reader.Read(ES3Type_float.Instance); + break; + case "isTrigger": + instance.isTrigger = reader.Read(ES3Type_bool.Instance); + break; + case "usedByEffector": + instance.usedByEffector = reader.Read(ES3Type_bool.Instance); + break; + case "offset": + instance.offset = reader.Read(ES3Type_Vector2.Instance); + break; + case "sharedMaterial": + instance.sharedMaterial = reader.Read(ES3Type_PhysicsMaterial2D.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_PolygonCollider2DArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_PolygonCollider2DArray() : base(typeof(UnityEngine.PolygonCollider2D[]), ES3Type_PolygonCollider2D.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs.meta new file mode 100644 index 00000000..21a81430 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_PolygonCollider2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ec8749737dd724d6a91ac3a9c241ba17 +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs new file mode 100644 index 00000000..5d00a0a5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs @@ -0,0 +1,96 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("texture", "uvRect", "onCullStateChanged", "maskable", "color", "raycastTarget", "useLegacyMeshGeneration", "material", "useGUILayout", "enabled", "hideFlags")] + public class ES3Type_RawImage : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_RawImage() : base(typeof(UnityEngine.UI.RawImage)){ Instance = this; priority = 1;} + + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.UI.RawImage)obj; + + writer.WritePropertyByRef("texture", instance.texture); + writer.WriteProperty("uvRect", instance.uvRect, ES3Type_Rect.Instance); + writer.WriteProperty("onCullStateChanged", instance.onCullStateChanged); + writer.WriteProperty("maskable", instance.maskable, ES3Type_bool.Instance); + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("raycastTarget", instance.raycastTarget, ES3Type_bool.Instance); + writer.WritePrivateProperty("useLegacyMeshGeneration", instance); + // Unity automatically sets the default material if it's set to null. + // This prevents missing reference warnings. + if (instance.material.name.Contains("Default")) + writer.WriteProperty("material", null); + else + writer.WriteProperty("material", instance.material); + writer.WriteProperty("useGUILayout", instance.useGUILayout, ES3Type_bool.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.UI.RawImage)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "texture": + instance.texture = reader.Read(ES3Type_Texture.Instance); + break; + case "uvRect": + instance.uvRect = reader.Read(ES3Type_Rect.Instance); + break; + case "onCullStateChanged": + instance.onCullStateChanged = reader.Read(); + break; + case "maskable": + instance.maskable = reader.Read(ES3Type_bool.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_Color.Instance); + break; + case "raycastTarget": + instance.raycastTarget = reader.Read(ES3Type_bool.Instance); + break; + case "useLegacyMeshGeneration": + reader.SetPrivateProperty("useLegacyMeshGeneration", reader.Read(), instance); + break; + case "material": + instance.material = reader.Read(ES3Type_Material.Instance); + break; + case "useGUILayout": + instance.useGUILayout = reader.Read(ES3Type_bool.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3Type_RawImageArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_RawImageArray() : base(typeof(UnityEngine.UI.RawImage[]), ES3Type_RawImage.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs.meta new file mode 100644 index 00000000..3d4e161b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_RawImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8b1e267b6439604a9854f1876a085b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs new file mode 100644 index 00000000..6e508574 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs @@ -0,0 +1,135 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("velocity", "angularVelocity", "drag", "angularDrag", "mass", "useGravity", "maxDepenetrationVelocity", "isKinematic", "freezeRotation", "constraints", "collisionDetectionMode", "centerOfMass", "inertiaTensorRotation", "inertiaTensor", "detectCollisions", "position", "rotation", "interpolation", "solverIterations", "sleepThreshold", "maxAngularVelocity", "solverVelocityIterations")] + public class ES3Type_Rigidbody : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_Rigidbody() : base(typeof(UnityEngine.Rigidbody)){ Instance = this; priority = 1;} + + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Rigidbody)obj; + + writer.WriteProperty("velocity", instance.velocity, ES3Type_Vector3.Instance); + writer.WriteProperty("angularVelocity", instance.angularVelocity, ES3Type_Vector3.Instance); + writer.WriteProperty("drag", instance.drag, ES3Type_float.Instance); + writer.WriteProperty("angularDrag", instance.angularDrag, ES3Type_float.Instance); + writer.WriteProperty("mass", instance.mass, ES3Type_float.Instance); + writer.WriteProperty("useGravity", instance.useGravity, ES3Type_bool.Instance); + writer.WriteProperty("maxDepenetrationVelocity", instance.maxDepenetrationVelocity, ES3Type_float.Instance); + writer.WriteProperty("isKinematic", instance.isKinematic, ES3Type_bool.Instance); + writer.WriteProperty("freezeRotation", instance.freezeRotation, ES3Type_bool.Instance); + writer.WriteProperty("constraints", instance.constraints); + writer.WriteProperty("collisionDetectionMode", instance.collisionDetectionMode); + writer.WriteProperty("centerOfMass", instance.centerOfMass, ES3Type_Vector3.Instance); + writer.WriteProperty("inertiaTensorRotation", instance.inertiaTensorRotation, ES3Type_Quaternion.Instance); + writer.WriteProperty("inertiaTensor", instance.inertiaTensor, ES3Type_Vector3.Instance); + writer.WriteProperty("detectCollisions", instance.detectCollisions, ES3Type_bool.Instance); + writer.WriteProperty("position", instance.position, ES3Type_Vector3.Instance); + writer.WriteProperty("rotation", instance.rotation, ES3Type_Quaternion.Instance); + writer.WriteProperty("interpolation", instance.interpolation); + writer.WriteProperty("solverIterations", instance.solverIterations, ES3Type_int.Instance); + writer.WriteProperty("sleepThreshold", instance.sleepThreshold, ES3Type_float.Instance); + writer.WriteProperty("maxAngularVelocity", instance.maxAngularVelocity, ES3Type_float.Instance); + writer.WriteProperty("solverVelocityIterations", instance.solverVelocityIterations, ES3Type_int.Instance); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Rigidbody)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "velocity": + instance.velocity = reader.Read(ES3Type_Vector3.Instance); + break; + case "angularVelocity": + instance.angularVelocity = reader.Read(ES3Type_Vector3.Instance); + break; + case "drag": + instance.drag = reader.Read(ES3Type_float.Instance); + break; + case "angularDrag": + instance.angularDrag = reader.Read(ES3Type_float.Instance); + break; + case "mass": + instance.mass = reader.Read(ES3Type_float.Instance); + break; + case "useGravity": + instance.useGravity = reader.Read(ES3Type_bool.Instance); + break; + case "maxDepenetrationVelocity": + instance.maxDepenetrationVelocity = reader.Read(ES3Type_float.Instance); + break; + case "isKinematic": + instance.isKinematic = reader.Read(ES3Type_bool.Instance); + break; + case "freezeRotation": + instance.freezeRotation = reader.Read(ES3Type_bool.Instance); + break; + case "constraints": + instance.constraints = reader.Read(); + break; + case "collisionDetectionMode": + instance.collisionDetectionMode = reader.Read(); + break; + case "centerOfMass": + instance.centerOfMass = reader.Read(ES3Type_Vector3.Instance); + break; + case "inertiaTensorRotation": + instance.inertiaTensorRotation = reader.Read(ES3Type_Quaternion.Instance); + break; + case "inertiaTensor": + instance.inertiaTensor = reader.Read(ES3Type_Vector3.Instance); + break; + case "detectCollisions": + instance.detectCollisions = reader.Read(ES3Type_bool.Instance); + break; + case "position": + instance.position = reader.Read(ES3Type_Vector3.Instance); + break; + case "rotation": + instance.rotation = reader.Read(ES3Type_Quaternion.Instance); + break; + case "interpolation": + instance.interpolation = reader.Read(); + break; + case "solverIterations": + instance.solverIterations = reader.Read(ES3Type_int.Instance); + break; + case "sleepThreshold": + instance.sleepThreshold = reader.Read(ES3Type_float.Instance); + break; + case "maxAngularVelocity": + instance.maxAngularVelocity = reader.Read(ES3Type_float.Instance); + break; + case "solverVelocityIterations": + instance.solverVelocityIterations = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + + public class ES3UserType_RigidbodyArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3UserType_RigidbodyArray() : base(typeof(UnityEngine.Rigidbody[]), ES3Type_Rigidbody.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs.meta new file mode 100644 index 00000000..471e990f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Rigidbody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8154830c992ded745b9784a07116b1b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs new file mode 100644 index 00000000..54690e60 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs @@ -0,0 +1,60 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("center", "radius", "enabled", "isTrigger", "contactOffset", "sharedMaterial")] + public class ES3Type_SphereCollider : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_SphereCollider() : base(typeof(UnityEngine.SphereCollider)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.SphereCollider)obj; + + writer.WriteProperty("center", instance.center, ES3Type_Vector3.Instance); + writer.WriteProperty("radius", instance.radius, ES3Type_float.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("isTrigger", instance.isTrigger, ES3Type_bool.Instance); + writer.WriteProperty("contactOffset", instance.contactOffset, ES3Type_float.Instance); + writer.WritePropertyByRef("material", instance.sharedMaterial); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.SphereCollider)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "center": + instance.center = reader.Read(ES3Type_Vector3.Instance); + break; + case "radius": + instance.radius = reader.Read(ES3Type_float.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "isTrigger": + instance.isTrigger = reader.Read(ES3Type_bool.Instance); + break; + case "contactOffset": + instance.contactOffset = reader.Read(ES3Type_float.Instance); + break; + case "material": + instance.sharedMaterial = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs.meta new file mode 100644 index 00000000..c3880530 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_SphereCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb19da8937a274e63ada528bb6215c6d +timeCreated: 1519132295 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs new file mode 100644 index 00000000..20c6828c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs @@ -0,0 +1,144 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("font", "text", "supportRichText", "resizeTextForBestFit", "resizeTextMinSize", "resizeTextMaxSize", "alignment", "alignByGeometry", "fontSize", "horizontalOverflow", "verticalOverflow", "lineSpacing", "fontStyle", "onCullStateChanged", "maskable", "color", "raycastTarget", "material", "useGUILayout", "enabled", "tag", "name", "hideFlags")] + public class ES3Type_Text : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_Text() : base(typeof(UnityEngine.UI.Text)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.UI.Text)obj; + + //writer.WriteProperty("font", instance.font); + writer.WriteProperty("text", instance.text); + writer.WriteProperty("supportRichText", instance.supportRichText); + writer.WriteProperty("resizeTextForBestFit", instance.resizeTextForBestFit); + writer.WriteProperty("resizeTextMinSize", instance.resizeTextMinSize); + writer.WriteProperty("resizeTextMaxSize", instance.resizeTextMaxSize); + writer.WriteProperty("alignment", instance.alignment); + writer.WriteProperty("alignByGeometry", instance.alignByGeometry); + writer.WriteProperty("fontSize", instance.fontSize); + writer.WriteProperty("horizontalOverflow", instance.horizontalOverflow); + writer.WriteProperty("verticalOverflow", instance.verticalOverflow); + writer.WriteProperty("lineSpacing", instance.lineSpacing); + writer.WriteProperty("fontStyle", instance.fontStyle); + writer.WriteProperty("onCullStateChanged", instance.onCullStateChanged); + writer.WriteProperty("maskable", instance.maskable); + writer.WriteProperty("color", instance.color); + writer.WriteProperty("raycastTarget", instance.raycastTarget); + // Unity automatically sets the default material if it's set to null. + // This prevents missing reference warnings. + if (instance.material.name.Contains("Default")) + writer.WriteProperty("material", null); + else + writer.WriteProperty("material", instance.material); + writer.WriteProperty("useGUILayout", instance.useGUILayout); + writer.WriteProperty("enabled", instance.enabled); + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.UI.Text)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "m_FontData": + reader.SetPrivateField("m_FontData", reader.Read(), instance); + break; + case "m_LastTrackedFont": + reader.SetPrivateField("m_LastTrackedFont", reader.Read(), instance); + break; + case "m_Text": + reader.SetPrivateField("m_Text", reader.Read(), instance); + break; + case "m_TextCache": + reader.SetPrivateField("m_TextCache", reader.Read(), instance); + break; + case "m_TextCacheForLayout": + reader.SetPrivateField("m_TextCacheForLayout", reader.Read(), instance); + break; + case "m_Material": + reader.SetPrivateField("m_Material", reader.Read(), instance); + break; + case "font": + instance.font = reader.Read(); + break; + case "text": + instance.text = reader.Read(); + break; + case "supportRichText": + instance.supportRichText = reader.Read(); + break; + case "resizeTextForBestFit": + instance.resizeTextForBestFit = reader.Read(); + break; + case "resizeTextMinSize": + instance.resizeTextMinSize = reader.Read(); + break; + case "resizeTextMaxSize": + instance.resizeTextMaxSize = reader.Read(); + break; + case "alignment": + instance.alignment = reader.Read(); + break; + case "alignByGeometry": + instance.alignByGeometry = reader.Read(); + break; + case "fontSize": + instance.fontSize = reader.Read(); + break; + case "horizontalOverflow": + instance.horizontalOverflow = reader.Read(); + break; + case "verticalOverflow": + instance.verticalOverflow = reader.Read(); + break; + case "lineSpacing": + instance.lineSpacing = reader.Read(); + break; + case "fontStyle": + instance.fontStyle = reader.Read(); + break; + case "onCullStateChanged": + instance.onCullStateChanged = reader.Read(); + break; + case "maskable": + instance.maskable = reader.Read(); + break; + case "color": + instance.color = reader.Read(); + break; + case "raycastTarget": + instance.raycastTarget = reader.Read(); + break; + case "material": + instance.material = reader.Read(); + break; + case "useGUILayout": + instance.useGUILayout = reader.Read(); + break; + case "enabled": + instance.enabled = reader.Read(); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs.meta new file mode 100644 index 00000000..83aa4f43 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Text.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69268592921476a42b9819cd66b6ea4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs new file mode 100644 index 00000000..bb23fa1f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs @@ -0,0 +1,54 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("localPosition","localRotation","localScale","parent")] + public class ES3Type_Transform : ES3ComponentType + { + public static int countRead = 0; + public static ES3Type Instance = null; + + public ES3Type_Transform() : base(typeof(UnityEngine.Transform)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Transform)obj; + writer.WritePropertyByRef("parent", instance.parent); + writer.WriteProperty("localPosition", instance.localPosition); + writer.WriteProperty("localRotation", instance.localRotation); + writer.WriteProperty("localScale", instance.localScale); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (Transform)obj; + + foreach(string propertyName in reader.Properties) + { + switch (propertyName) + { + case "parent": + instance.SetParent(reader.Read()); + break; + case "localPosition": + instance.localPosition = reader.Read(); + break; + case "localRotation": + instance.localRotation = reader.Read(); + break; + case "localScale": + instance.localScale = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs.meta new file mode 100644 index 00000000..92c5277e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/Component Types/ES3Type_Transform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 91cb5bec8da6744608c92304a04462fd +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs new file mode 100644 index 00000000..389641b1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("keys", "preWrapMode", "postWrapMode")] + public class ES3Type_AnimationCurve : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_AnimationCurve() : base(typeof(UnityEngine.AnimationCurve)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.AnimationCurve)obj; + + writer.WriteProperty("keys", instance.keys, ES3Type_KeyframeArray.Instance); + writer.WriteProperty("preWrapMode", instance.preWrapMode); + writer.WriteProperty("postWrapMode", instance.postWrapMode); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.AnimationCurve(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.AnimationCurve)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "keys": + instance.keys = reader.Read(); + break; + case "preWrapMode": + instance.preWrapMode = reader.Read(); + break; + case "postWrapMode": + instance.postWrapMode = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs.meta new file mode 100644 index 00000000..4744a269 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AnimationCurve.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5939fcd6cf1ac4167b4320111cb9930e +timeCreated: 1519132286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs new file mode 100644 index 00000000..ca1a37fc --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs @@ -0,0 +1,90 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("name", "samples", "channels", "frequency", "sampleData")] + public class ES3Type_AudioClip : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_AudioClip() : base(typeof(UnityEngine.AudioClip)){ Instance = this; } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var param = (UnityEngine.AudioClip)obj; + float[] samples = new float[param.samples * param.channels]; + param.GetData(samples, 0); + writer.WriteProperty("name", param.name); + writer.WriteProperty("samples", param.samples); + writer.WriteProperty("channels", param.channels); + writer.WriteProperty("frequency", param.frequency); + writer.WriteProperty("sampleData", samples); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + var clip = (AudioClip)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "sampleData": + clip.SetData(reader.Read(ES3Type_floatArray.Instance), 0); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadUnityObject(ES3Reader reader) + { + string name = ""; + int samples = 0; + int channels = 0; + int frequency = 0; + AudioClip clip = null; + + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "name": + name = reader.Read(ES3Type_string.Instance); + break; + case "samples": + samples = reader.Read(ES3Type_int.Instance); + break; + case "channels": + channels = reader.Read(ES3Type_int.Instance); + break; + case "frequency": + frequency = reader.Read(ES3Type_int.Instance); + break; + case "sampleData": + clip = AudioClip.Create(name, samples, channels, frequency, false); + clip.SetData(reader.Read(ES3Type_floatArray.Instance), 0); + break; + default: + reader.Skip(); + break; + } + } + + return clip; + } + } + + public class ES3Type_AudioClipArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_AudioClipArray() : base(typeof(UnityEngine.AudioClip[]), ES3Type_AudioClip.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs.meta new file mode 100644 index 00000000..77d148d8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_AudioClip.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b8f97ab775644e1782f7775c54f891a +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs new file mode 100644 index 00000000..03ed224f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs @@ -0,0 +1,61 @@ +using System; +using UnityEngine; +using System.Collections.Generic; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("boneIndex0", "boneIndex1", "boneIndex2", "boneIndex3", "weight0", "weight1", "weight2", "weight3")] + public class ES3Type_BoneWeight : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_BoneWeight() : base(typeof(BoneWeight)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + BoneWeight casted = (BoneWeight)obj; + + writer.WriteProperty("boneIndex0", casted.boneIndex0, ES3Type_int.Instance); + writer.WriteProperty("boneIndex1", casted.boneIndex1, ES3Type_int.Instance); + writer.WriteProperty("boneIndex2", casted.boneIndex2, ES3Type_int.Instance); + writer.WriteProperty("boneIndex3", casted.boneIndex3, ES3Type_int.Instance); + + writer.WriteProperty("weight0", casted.weight0, ES3Type_float.Instance); + writer.WriteProperty("weight1", casted.weight1, ES3Type_float.Instance); + writer.WriteProperty("weight2", casted.weight2, ES3Type_float.Instance); + writer.WriteProperty("weight3", casted.weight3, ES3Type_float.Instance); + + } + + public override object Read(ES3Reader reader) + { + var obj = new BoneWeight(); + + obj.boneIndex0 = reader.ReadProperty(ES3Type_int.Instance); + obj.boneIndex1 = reader.ReadProperty(ES3Type_int.Instance); + obj.boneIndex2 = reader.ReadProperty(ES3Type_int.Instance); + obj.boneIndex3 = reader.ReadProperty(ES3Type_int.Instance); + + obj.weight0 = reader.ReadProperty(ES3Type_float.Instance); + obj.weight1 = reader.ReadProperty(ES3Type_float.Instance); + obj.weight2 = reader.ReadProperty(ES3Type_float.Instance); + obj.weight3 = reader.ReadProperty(ES3Type_float.Instance); + + return obj; + } + } + + public class ES3Type_BoneWeightArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_BoneWeightArray() : base(typeof(BoneWeight[]), ES3Type_BoneWeight.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs.meta new file mode 100644 index 00000000..66448fdb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_BoneWeight.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 570ee00d71c7c43a5a7e6a68e2c9d96f +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs new file mode 100644 index 00000000..468d0ccf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine; +using System.Collections.Generic; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("center", "size")] + public class ES3Type_Bounds : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Bounds() : base(typeof(Bounds)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Bounds casted = (Bounds)obj; + + writer.WriteProperty("center", casted.center, ES3Type_Vector3.Instance); + writer.WriteProperty("size", casted.size, ES3Type_Vector3.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Bounds( reader.ReadProperty(ES3Type_Vector3.Instance), + reader.ReadProperty(ES3Type_Vector3.Instance)); + } + } + + public class ES3Type_BoundsArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_BoundsArray() : base(typeof(Bounds[]), ES3Type_Bounds.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs.meta new file mode 100644 index 00000000..c85d95de --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Bounds.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a9d8a8b9b10b466786d6d39807aa8e0 +timeCreated: 1519132283 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs new file mode 100644 index 00000000..afbbf40b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs @@ -0,0 +1,117 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "type", "mode", "dampen", "dampenMultiplier", "bounce", "bounceMultiplier", "lifetimeLoss", "lifetimeLossMultiplier", "minKillSpeed", "maxKillSpeed", "collidesWith", "enableDynamicColliders", "maxCollisionShapes", "quality", "voxelSize", "radiusScale", "sendCollisionMessages")] + public class ES3Type_CollisionModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_CollisionModule() : base(typeof(UnityEngine.ParticleSystem.CollisionModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.CollisionModule)obj; + + writer.WriteProperty("enabled", instance.enabled); + writer.WriteProperty("type", instance.type); + writer.WriteProperty("mode", instance.mode); + writer.WriteProperty("dampen", instance.dampen); + writer.WriteProperty("dampenMultiplier", instance.dampenMultiplier); + writer.WriteProperty("bounce", instance.bounce); + writer.WriteProperty("bounceMultiplier", instance.bounceMultiplier); + writer.WriteProperty("lifetimeLoss", instance.lifetimeLoss); + writer.WriteProperty("lifetimeLossMultiplier", instance.lifetimeLossMultiplier); + writer.WriteProperty("minKillSpeed", instance.minKillSpeed); + writer.WriteProperty("maxKillSpeed", instance.maxKillSpeed); + writer.WriteProperty("collidesWith", instance.collidesWith); + writer.WriteProperty("enableDynamicColliders", instance.enableDynamicColliders); + writer.WriteProperty("maxCollisionShapes", instance.maxCollisionShapes); + writer.WriteProperty("quality", instance.quality); + writer.WriteProperty("voxelSize", instance.voxelSize); + writer.WriteProperty("radiusScale", instance.radiusScale); + writer.WriteProperty("sendCollisionMessages", instance.sendCollisionMessages); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.CollisionModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.CollisionModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "enabled": + instance.enabled = reader.Read(); + break; + case "type": + instance.type = reader.Read(); + break; + case "mode": + instance.mode = reader.Read(); + break; + case "dampen": + instance.dampen = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "dampenMultiplier": + instance.dampenMultiplier = reader.Read(); + break; + case "bounce": + instance.bounce = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "bounceMultiplier": + instance.bounceMultiplier = reader.Read(); + break; + case "lifetimeLoss": + instance.lifetimeLoss = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "lifetimeLossMultiplier": + instance.lifetimeLossMultiplier = reader.Read(); + break; + case "minKillSpeed": + instance.minKillSpeed = reader.Read(); + break; + case "maxKillSpeed": + instance.maxKillSpeed = reader.Read(); + break; + case "collidesWith": + instance.collidesWith = reader.Read(); + break; + case "enableDynamicColliders": + instance.enableDynamicColliders = reader.Read(); + break; + case "maxCollisionShapes": + instance.maxCollisionShapes = reader.Read(); + break; + case "quality": + instance.quality = reader.Read(); + break; + case "voxelSize": + instance.voxelSize = reader.Read(); + break; + case "radiusScale": + instance.radiusScale = reader.Read(); + break; + case "sendCollisionMessages": + instance.sendCollisionMessages = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs.meta new file mode 100644 index 00000000..8474ea01 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_CollisionModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 45f02f0eb77fe4209a290c5928c9ade5 +timeCreated: 1519132284 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs new file mode 100644 index 00000000..7e131936 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs @@ -0,0 +1,44 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("r", "g", "b", "a")] + public class ES3Type_Color : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Color() : base(typeof(Color)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Color casted = (Color)obj; + writer.WriteProperty("r", casted.r, ES3Type_float.Instance); + writer.WriteProperty("g", casted.g, ES3Type_float.Instance); + writer.WriteProperty("b", casted.b, ES3Type_float.Instance); + writer.WriteProperty("a", casted.a, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Color( reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_ColorArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_ColorArray() : base(typeof(Color[]), ES3Type_Color.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs.meta new file mode 100644 index 00000000..1d0dc8bf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b97411847937943ab859b0ab7acfb872 +timeCreated: 1519132295 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs new file mode 100644 index 00000000..2e31f2f0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs @@ -0,0 +1,51 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("r", "g", "b", "a")] + public class ES3Type_Color32 : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Color32() : base(typeof(Color32)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Color32 casted = (Color32)obj; + writer.WriteProperty("r", casted.r, ES3Type_byte.Instance); + writer.WriteProperty("g", casted.g, ES3Type_byte.Instance); + writer.WriteProperty("b", casted.b, ES3Type_byte.Instance); + writer.WriteProperty("a", casted.a, ES3Type_byte.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Color32( reader.ReadProperty(ES3Type_byte.Instance), + reader.ReadProperty(ES3Type_byte.Instance), + reader.ReadProperty(ES3Type_byte.Instance), + reader.ReadProperty(ES3Type_byte.Instance)); + } + + public static bool Equals(Color32 a, Color32 b) + { + if(a.r != b.r || a.g != b.g || a.b != b.b || a.a != b.a) + return false; + return true; + } + } + + public class ES3Type_Color32Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Color32Array() : base(typeof(Color32[]), ES3Type_Color32.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs.meta new file mode 100644 index 00000000..93d9bfc6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Color32.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b1b3a09c48c14072a133f5ba4c651e7 +timeCreated: 1519132283 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs new file mode 100644 index 00000000..dd0e0d10 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "color", "range")] + public class ES3Type_ColorBySpeedModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ColorBySpeedModule() : base(typeof(UnityEngine.ParticleSystem.ColorBySpeedModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.ColorBySpeedModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("color", instance.color, ES3Type_MinMaxGradient.Instance); + writer.WriteProperty("range", instance.range, ES3Type_Vector2.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.ColorBySpeedModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.ColorBySpeedModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_MinMaxGradient.Instance); + break; + case "range": + instance.range = reader.Read(ES3Type_Vector2.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs.meta new file mode 100644 index 00000000..38e51073 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorBySpeedModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fb109d087368d4849b6e1222c912ec72 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs new file mode 100644 index 00000000..db9f3d17 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs @@ -0,0 +1,54 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "color")] + public class ES3Type_ColorOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ColorOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.ColorOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.ColorOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("color", instance.color, ES3Type_MinMaxGradient.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.ColorOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.ColorOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_MinMaxGradient.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs.meta new file mode 100644 index 00000000..39921c11 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ColorOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 744909a4693a34ff99f9886d8bddc408 +timeCreated: 1519132288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs new file mode 100644 index 00000000..79600928 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs @@ -0,0 +1,66 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "rateOverTime", "rateOverTimeMultiplier", "rateOverDistance", "rateOverDistanceMultiplier")] + public class ES3Type_EmissionModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_EmissionModule() : base(typeof(UnityEngine.ParticleSystem.EmissionModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.EmissionModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("rateOverTime", instance.rateOverTime, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("rateOverTimeMultiplier", instance.rateOverTimeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("rateOverDistance", instance.rateOverDistance, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("rateOverDistanceMultiplier", instance.rateOverDistanceMultiplier, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.EmissionModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.EmissionModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "rateOverTime": + instance.rateOverTime = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "rateOverTimeMultiplier": + instance.rateOverTimeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "rateOverDistance": + instance.rateOverDistance = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "rateOverDistanceMultiplier": + instance.rateOverDistanceMultiplier = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs.meta new file mode 100644 index 00000000..99fcbece --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_EmissionModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0601343d0f8fb45d591c1f16dde23330 +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs new file mode 100644 index 00000000..a05306cb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs @@ -0,0 +1,54 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "multiplier")] + public class ES3Type_ExternalForcesModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ExternalForcesModule() : base(typeof(UnityEngine.ParticleSystem.ExternalForcesModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.ExternalForcesModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("multiplier", instance.multiplier, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.ExternalForcesModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.ExternalForcesModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "multiplier": + instance.multiplier = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs.meta new file mode 100644 index 00000000..6c9f7893 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ExternalForcesModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73b0b581a64c54420b1931059384200c +timeCreated: 1519132288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs new file mode 100644 index 00000000..aa3bd28b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs @@ -0,0 +1,60 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("hideFlags")] + public class ES3Type_Flare : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Flare() : base(typeof(UnityEngine.Flare)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Flare)obj; + + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.Flare(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Flare)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_FlareArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_FlareArray() : base(typeof(UnityEngine.Flare[]), ES3Type_Flare.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs.meta new file mode 100644 index 00000000..daf3587b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Flare.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32592ed571b254a1ebc1cda3cc03f861 +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs new file mode 100644 index 00000000..03bef37f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs @@ -0,0 +1,57 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("material", "name")] + public class ES3Type_Font : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Font() : base(typeof(UnityEngine.Font)){ Instance = this; } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Font)obj; + + writer.WriteProperty("name", instance.name, ES3Type_string.Instance); + writer.WriteProperty("material", instance.material); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Font)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "material": + instance.material = reader.Read(ES3Type_Material.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadUnityObject(ES3Reader reader) + { + var instance = new UnityEngine.Font(reader.ReadProperty(ES3Type_string.Instance)); + ReadObject(reader, instance); + return instance; + } + } + + public class ES3Type_FontArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_FontArray() : base(typeof(UnityEngine.Font[]), ES3Type_Font.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs.meta new file mode 100644 index 00000000..e82c7b77 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Font.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b779410f33269447a8410aa5c60a3366 +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs new file mode 100644 index 00000000..841e2d10 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs @@ -0,0 +1,82 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "x", "y", "z", "xMultiplier", "yMultiplier", "zMultiplier", "space", "randomized")] + public class ES3Type_ForceOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ForceOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.ForceOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.ForceOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("space", instance.space); + writer.WriteProperty("randomized", instance.randomized, ES3Type_bool.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.ForceOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.ForceOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "space": + instance.space = reader.Read(); + break; + case "randomized": + instance.randomized = reader.Read(ES3Type_bool.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs.meta new file mode 100644 index 00000000..537835b2 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ForceOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fd5844fc025754c5399be113ca40fc39 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs new file mode 100644 index 00000000..7606802c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs @@ -0,0 +1,288 @@ +using System; +using UnityEngine; +using System.Collections.Generic; +using ES3Internal; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("layer", "isStatic", "tag", "name", "hideFlags", "children", "components")] + public class ES3Type_GameObject : ES3UnityObjectType + { + private const string prefabPropertyName = "es3Prefab"; + private const string transformPropertyName = "transformID"; + public static ES3Type Instance = null; + public bool saveChildren = false; + + public ES3Type_GameObject() : base(typeof(UnityEngine.GameObject)) { Instance = this; } + + public override void WriteObject(object obj, ES3Writer writer, ES3.ReferenceMode mode) + { + if (WriteUsingDerivedType(obj, writer)) + return; + var instance = (UnityEngine.GameObject)obj; + + if (mode != ES3.ReferenceMode.ByValue) + { + writer.WriteRef(instance); + + if (mode == ES3.ReferenceMode.ByRef) + return; + + var es3Prefab = instance.GetComponent(); + if (es3Prefab != null) + writer.WriteProperty(prefabPropertyName, es3Prefab, ES3Type_ES3PrefabInternal.Instance); + + // Write the ID of this Transform so we can assign it's ID when we load. + writer.WriteProperty(transformPropertyName, ES3ReferenceMgrBase.Current.Add(instance.transform)); + } + + var es3AutoSave = instance.GetComponent(); + + if(es3AutoSave == null || es3AutoSave.saveLayer) + writer.WriteProperty("layer", instance.layer, ES3Type_int.Instance); + if (es3AutoSave == null || es3AutoSave.saveTag) + writer.WriteProperty("tag", instance.tag, ES3Type_string.Instance); + if (es3AutoSave == null || es3AutoSave.saveName) + writer.WriteProperty("name", instance.name, ES3Type_string.Instance); + if (es3AutoSave == null || es3AutoSave.saveHideFlags) + writer.WriteProperty("hideFlags", instance.hideFlags); + if (es3AutoSave == null || es3AutoSave.saveActive) + writer.WriteProperty("active", instance.activeSelf); + + if ((es3AutoSave == null && saveChildren) || (es3AutoSave != null && es3AutoSave.saveChildren)) + writer.WriteProperty("children", GetChildren(instance), ES3.ReferenceMode.ByRefAndValue); + + List components; + + // If there's an ES3AutoSave attached and Components are marked to be saved, save these. + var autoSave = instance.GetComponent(); + if (autoSave != null && autoSave.componentsToSave != null && autoSave.componentsToSave.Count > 0) + components = autoSave.componentsToSave; + // Otherwise, only save explicitly-supported Components, /*or those explicitly marked as Serializable*/. + else + { + components = new List(); + foreach (var component in instance.GetComponents()) + if (component != null && ES3TypeMgr.GetES3Type(component.GetType()) != null) + components.Add(component); + } + + writer.WriteProperty("components", components, ES3.ReferenceMode.ByRefAndValue); + } + + protected override object ReadObject(ES3Reader reader) + { + UnityEngine.Object obj = null; + var refMgr = ES3ReferenceMgrBase.Current; + long id = 0; + + // Read the intial properties regarding the instance we're loading. + while (true) + { + if (refMgr == null) + throw new InvalidOperationException("An Easy Save 3 Manager is required to load references. To add one to your scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene"); + + var propertyName = ReadPropertyName(reader); + + if (propertyName == ES3Type.typeFieldName) + return ES3TypeMgr.GetOrCreateES3Type(reader.ReadType()).Read(reader); + else if (propertyName == ES3ReferenceMgrBase.referencePropertyName) + { + id = reader.Read_ref(); + obj = refMgr.Get(id, true); + } + else if (propertyName == transformPropertyName) + { + // Now load the Transform's ID and assign it to the Transform of our object. + long transformID = reader.Read_ref(); + if (obj == null) + obj = CreateNewGameObject(refMgr, id); + refMgr.Add(((GameObject)obj).transform, transformID); + } + else if (propertyName == prefabPropertyName) + { + if (obj != null || ES3ReferenceMgrBase.Current == null) + { + reader.ReadInto(obj); // ReadInto to apply the prefab references. + } + else + { + obj = reader.Read(ES3Type_ES3PrefabInternal.Instance); + ES3ReferenceMgrBase.Current.Add(obj, id); + } + } + else if (propertyName == null) + { + if (obj == null) + return CreateNewGameObject(refMgr, id); + return obj; + } + else + { + reader.overridePropertiesName = propertyName; + break; + } + } + + if (obj == null) + obj = CreateNewGameObject(refMgr, id); + + ReadInto(reader, obj); + return obj; + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.GameObject)obj; + + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + case ES3ReferenceMgrBase.referencePropertyName: + ES3ReferenceMgr.Current.Add(instance, reader.Read_ref()); + break; + case "prefab": + break; + case "layer": + instance.layer = reader.Read(ES3Type_int.Instance); + break; + case "tag": + instance.tag = reader.Read(ES3Type_string.Instance); + break; + case "name": + instance.name = reader.Read(ES3Type_string.Instance); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + case "active": + instance.SetActive(reader.Read(ES3Type_bool.Instance)); + break; + case "children": + reader.Read(); + break; + case "components": + ReadComponents(reader, instance); + break; + default: + reader.Skip(); + break; + } + } + } + + private void ReadComponents(ES3Reader reader, GameObject go) + { + if (reader.StartReadCollection()) + return; + + var components = new List(go.GetComponents()); + + // Read each Component in Components array + while (true) + { + if (!reader.StartReadCollectionItem()) + break; + + if (reader.StartReadObject()) + return; + + Type type = null; + + string propertyName; + while (true) + { + propertyName = ReadPropertyName(reader); + + if (propertyName == ES3Type.typeFieldName) + type = reader.ReadType(); + else if (propertyName == ES3ReferenceMgrBase.referencePropertyName) + { + if (type == null) + throw new InvalidOperationException("Cannot load Component because no type data has been stored with it, so it's not possible to determine it's type"); + + var componentRef = reader.Read_ref(); + + // Rather than loading by reference, load using the Components list. + var c = components.Find(x => x.GetType() == type); + // If the Component exists in the Component list, load into it and remove it from the list. + if (c != null) + { + if (ES3ReferenceMgrBase.Current != null) + ES3ReferenceMgrBase.Current.Add(c, componentRef); + + ES3TypeMgr.GetOrCreateES3Type(type).ReadInto(reader, c); + components.Remove(c); + } + // Else, create a new Component. + else + { + var component = ES3TypeMgr.GetOrCreateES3Type(type).Read(reader); + if(component != null) + ES3ReferenceMgrBase.Current.Add((Component)component, componentRef); + } + break; + } + else if (propertyName == null) + break; + else + { + reader.overridePropertiesName = propertyName; + ReadObject(reader); + break; + } + } + + reader.EndReadObject(); + + if (reader.EndReadCollectionItem()) + break; + } + + reader.EndReadCollection(); + } + + private GameObject CreateNewGameObject(ES3ReferenceMgrBase refMgr, long id) + { + GameObject go = new GameObject(); + if (id != 0) + refMgr.Add(go, id); + else + refMgr.Add(go); + return go; + } + + /* + * Gets the direct children of this GameObject. + */ + public static List GetChildren(GameObject go) + { + var goTransform = go.transform; + var children = new List(); + + foreach (Transform child in goTransform) + // If a child has an Auto Save component, let it save itself. + //if(child.GetComponent() == null) + children.Add(child.gameObject); + + return children; + } + + // These are not used as we've overridden the ReadObject methods instead. + protected override void WriteUnityObject(object obj, ES3Writer writer) { } + protected override void ReadUnityObject(ES3Reader reader, object obj) { } + protected override object ReadUnityObject(ES3Reader reader) { return null; } + } + + public class ES3Type_GameObjectArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_GameObjectArray() : base(typeof(UnityEngine.GameObject[]), ES3Type_GameObject.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs.meta new file mode 100644 index 00000000..0f59d3be --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1ca7947fbcbec457f89b984a9647a9d7 +timeCreated: 1519132281 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs new file mode 100644 index 00000000..81952f4d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs @@ -0,0 +1,55 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("colorKeys", "alphaKeys", "mode")] + public class ES3Type_Gradient : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Gradient() : base(typeof(UnityEngine.Gradient)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Gradient)obj; + writer.WriteProperty("colorKeys", instance.colorKeys, ES3Type_GradientColorKeyArray.Instance); + writer.WriteProperty("alphaKeys", instance.alphaKeys, ES3Type_GradientAlphaKeyArray.Instance); + writer.WriteProperty("mode", instance.mode); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.Gradient(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Gradient)obj; + instance.SetKeys( + reader.ReadProperty(ES3Type_GradientColorKeyArray.Instance), + reader.ReadProperty(ES3Type_GradientAlphaKeyArray.Instance) + ); + + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "mode": + instance.mode = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs.meta new file mode 100644 index 00000000..e400a6e4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Gradient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a509023afeeee4a49965009b6ba4bc44 +timeCreated: 1519132293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs new file mode 100644 index 00000000..c85746e8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("alpha", "time")] + public class ES3Type_GradientAlphaKey : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_GradientAlphaKey() : base(typeof(UnityEngine.GradientAlphaKey)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.GradientAlphaKey)obj; + + writer.WriteProperty("alpha", instance.alpha, ES3Type_float.Instance); + writer.WriteProperty("time", instance.time, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new UnityEngine.GradientAlphaKey(reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_GradientAlphaKeyArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_GradientAlphaKeyArray() : base(typeof(GradientAlphaKey[]), ES3Type_GradientAlphaKey.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs.meta new file mode 100644 index 00000000..8b69cd88 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientAlphaKey.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 934a57ef826284a56bb97406bcf373fd +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs new file mode 100644 index 00000000..39f93cfa --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("color", "time")] + public class ES3Type_GradientColorKey : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_GradientColorKey() : base(typeof(UnityEngine.GradientColorKey)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.GradientColorKey)obj; + + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("time", instance.time, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new UnityEngine.GradientColorKey(reader.ReadProperty(ES3Type_Color.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_GradientColorKeyArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_GradientColorKeyArray() : base(typeof(GradientColorKey[]), ES3Type_GradientColorKey.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs.meta new file mode 100644 index 00000000..b154e9a7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GradientColorKey.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9dcbf4e7ca28b4bd5a6eb0a9d256c082 +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs new file mode 100644 index 00000000..11f020f2 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs @@ -0,0 +1,62 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "mode", "curve", "curveMultiplier")] + public class ES3Type_InheritVelocityModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_InheritVelocityModule() : base(typeof(UnityEngine.ParticleSystem.InheritVelocityModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.InheritVelocityModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("mode", instance.mode); + writer.WriteProperty("curve", instance.curve, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("curveMultiplier", instance.curveMultiplier, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.InheritVelocityModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.InheritVelocityModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "mode": + instance.mode = reader.Read(); + break; + case "curve": + instance.curve = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "curveMultiplier": + instance.curveMultiplier = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs.meta new file mode 100644 index 00000000..35f3ffd0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_InheritVelocityModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c652805edba024e5c885fa799b3a5775 +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs new file mode 100644 index 00000000..547d916b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs @@ -0,0 +1,45 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("time", "value", "inTangent", "outTangent")] + public class ES3Type_Keyframe : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Keyframe() : base(typeof(UnityEngine.Keyframe)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Keyframe)obj; + + writer.WriteProperty("time", instance.time, ES3Type_float.Instance); + writer.WriteProperty("value", instance.value, ES3Type_float.Instance); + writer.WriteProperty("inTangent", instance.inTangent, ES3Type_float.Instance); + writer.WriteProperty("outTangent", instance.outTangent, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new UnityEngine.Keyframe(reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_KeyframeArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_KeyframeArray() : base(typeof(Keyframe[]), ES3Type_Keyframe.Instance) + { + Instance = this; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs.meta new file mode 100644 index 00000000..81154b3f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Keyframe.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 63eb0700074954e23aa09edcc4b81016 +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs new file mode 100644 index 00000000..b8459229 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs @@ -0,0 +1,43 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("colorKeys", "alphaKeys", "mode")] + public class ES3Type_LayerMask : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_LayerMask() : base(typeof(UnityEngine.LayerMask)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.LayerMask)obj; + + writer.WriteProperty("value", instance.value, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + LayerMask instance = new LayerMask(); + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "value": + instance = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + return instance; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs.meta new file mode 100644 index 00000000..45f770c5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LayerMask.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad28544641a3c495b8ebbf10c51bf359 +timeCreated: 1519132293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs new file mode 100644 index 00000000..e1af7b59 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs @@ -0,0 +1,117 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("type", "color", "intensity", "bounceIntensity", "shadows", "shadowStrength", "shadowResolution", "shadowCustomResolution", "shadowBias", "shadowNormalBias", "shadowNearPlane", "range", "spotAngle", "cookieSize", "cookie", "flare", "renderMode", "cullingMask", "areaSize", "lightmappingMode", "enabled", "hideFlags")] + public class ES3Type_Light : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_Light() : base(typeof(UnityEngine.Light)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Light)obj; + + writer.WriteProperty("type", instance.type); + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("intensity", instance.intensity, ES3Type_float.Instance); + writer.WriteProperty("bounceIntensity", instance.bounceIntensity, ES3Type_float.Instance); + writer.WriteProperty("shadows", instance.shadows); + writer.WriteProperty("shadowStrength", instance.shadowStrength, ES3Type_float.Instance); + writer.WriteProperty("shadowResolution", instance.shadowResolution); + writer.WriteProperty("shadowCustomResolution", instance.shadowCustomResolution, ES3Type_int.Instance); + writer.WriteProperty("shadowBias", instance.shadowBias, ES3Type_float.Instance); + writer.WriteProperty("shadowNormalBias", instance.shadowNormalBias, ES3Type_float.Instance); + writer.WriteProperty("shadowNearPlane", instance.shadowNearPlane, ES3Type_float.Instance); + writer.WriteProperty("range", instance.range, ES3Type_float.Instance); + writer.WriteProperty("spotAngle", instance.spotAngle, ES3Type_float.Instance); + writer.WriteProperty("cookieSize", instance.cookieSize, ES3Type_float.Instance); + writer.WriteProperty("cookie", instance.cookie, ES3Type_Texture2D.Instance); + writer.WriteProperty("flare", instance.flare, ES3Type_Texture2D.Instance); + writer.WriteProperty("renderMode", instance.renderMode); + writer.WriteProperty("cullingMask", instance.cullingMask, ES3Type_int.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Light)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "type": + instance.type = reader.Read(); + break; + case "color": + instance.color = reader.Read(ES3Type_Color.Instance); + break; + case "intensity": + instance.intensity = reader.Read(ES3Type_float.Instance); + break; + case "bounceIntensity": + instance.bounceIntensity = reader.Read(ES3Type_float.Instance); + break; + case "shadows": + instance.shadows = reader.Read(); + break; + case "shadowStrength": + instance.shadowStrength = reader.Read(ES3Type_float.Instance); + break; + case "shadowResolution": + instance.shadowResolution = reader.Read(); + break; + case "shadowCustomResolution": + instance.shadowCustomResolution = reader.Read(ES3Type_int.Instance); + break; + case "shadowBias": + instance.shadowBias = reader.Read(ES3Type_float.Instance); + break; + case "shadowNormalBias": + instance.shadowNormalBias = reader.Read(ES3Type_float.Instance); + break; + case "shadowNearPlane": + instance.shadowNearPlane = reader.Read(ES3Type_float.Instance); + break; + case "range": + instance.range = reader.Read(ES3Type_float.Instance); + break; + case "spotAngle": + instance.spotAngle = reader.Read(ES3Type_float.Instance); + break; + case "cookieSize": + instance.cookieSize = reader.Read(ES3Type_float.Instance); + break; + case "cookie": + instance.cookie = reader.Read(); + break; + case "flare": + instance.flare = reader.Read(); + break; + case "renderMode": + instance.renderMode = reader.Read(); + break; + case "cullingMask": + instance.cullingMask = reader.Read(ES3Type_int.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs.meta new file mode 100644 index 00000000..54c6c1b4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Light.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ed020448eba3f489fafcf36e1bf3b7e0 +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs new file mode 100644 index 00000000..7cdcfeb2 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs @@ -0,0 +1,94 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "ratio", "useRandomDistribution", "light", "useParticleColor", "sizeAffectsRange", "alphaAffectsIntensity", "range", "rangeMultiplier", "intensity", "intensityMultiplier", "maxLights")] + public class ES3Type_LightsModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_LightsModule() : base(typeof(UnityEngine.ParticleSystem.LightsModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.LightsModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("ratio", instance.ratio, ES3Type_float.Instance); + writer.WriteProperty("useRandomDistribution", instance.useRandomDistribution, ES3Type_bool.Instance); + writer.WritePropertyByRef("light", instance.light); + writer.WriteProperty("useParticleColor", instance.useParticleColor, ES3Type_bool.Instance); + writer.WriteProperty("sizeAffectsRange", instance.sizeAffectsRange, ES3Type_bool.Instance); + writer.WriteProperty("alphaAffectsIntensity", instance.alphaAffectsIntensity, ES3Type_bool.Instance); + writer.WriteProperty("range", instance.range, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("rangeMultiplier", instance.rangeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("intensity", instance.intensity, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("intensityMultiplier", instance.intensityMultiplier, ES3Type_float.Instance); + writer.WriteProperty("maxLights", instance.maxLights, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.LightsModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.LightsModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "ratio": + instance.ratio = reader.Read(ES3Type_float.Instance); + break; + case "useRandomDistribution": + instance.useRandomDistribution = reader.Read(ES3Type_bool.Instance); + break; + case "light": + instance.light = reader.Read(ES3Type_Light.Instance); + break; + case "useParticleColor": + instance.useParticleColor = reader.Read(ES3Type_bool.Instance); + break; + case "sizeAffectsRange": + instance.sizeAffectsRange = reader.Read(ES3Type_bool.Instance); + break; + case "alphaAffectsIntensity": + instance.alphaAffectsIntensity = reader.Read(ES3Type_bool.Instance); + break; + case "range": + instance.range = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "rangeMultiplier": + instance.rangeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "intensity": + instance.intensity = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "intensityMultiplier": + instance.intensityMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "maxLights": + instance.maxLights = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs.meta new file mode 100644 index 00000000..c27d8224 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LightsModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ca49590603e164a87a49d3c66013bede +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs new file mode 100644 index 00000000..508eed16 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs @@ -0,0 +1,94 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "limitX", "limitXMultiplier", "limitY", "limitYMultiplier", "limitZ", "limitZMultiplier", "limit", "limitMultiplier", "dampen", "separateAxes", "space")] + public class ES3Type_LimitVelocityOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_LimitVelocityOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.LimitVelocityOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.LimitVelocityOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("limitX", instance.limitX, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("limitXMultiplier", instance.limitXMultiplier, ES3Type_float.Instance); + writer.WriteProperty("limitY", instance.limitY, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("limitYMultiplier", instance.limitYMultiplier, ES3Type_float.Instance); + writer.WriteProperty("limitZ", instance.limitZ, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("limitZMultiplier", instance.limitZMultiplier, ES3Type_float.Instance); + writer.WriteProperty("limit", instance.limit, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("limitMultiplier", instance.limitMultiplier, ES3Type_float.Instance); + writer.WriteProperty("dampen", instance.dampen, ES3Type_float.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + writer.WriteProperty("space", instance.space); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.LimitVelocityOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.LimitVelocityOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "limitX": + instance.limitX = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "limitXMultiplier": + instance.limitXMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "limitY": + instance.limitY = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "limitYMultiplier": + instance.limitYMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "limitZ": + instance.limitZ = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "limitZMultiplier": + instance.limitZMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "limit": + instance.limit = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "limitMultiplier": + instance.limitMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "dampen": + instance.dampen = reader.Read(ES3Type_float.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + case "space": + instance.space = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs.meta new file mode 100644 index 00000000..7dbe48e8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_LimitVelocityOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1b26d58c373b9474591275b8c3b33514 +timeCreated: 1519132281 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs new file mode 100644 index 00000000..1285fdb1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs @@ -0,0 +1,206 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("duration", "loop", "prewarm", "startDelay", "startDelayMultiplier", "startLifetime", "startLifetimeMultiplier", "startSpeed", "startSpeedMultiplier", "startSize3D", "startSize", "startSizeMultiplier", "startSizeX", "startSizeXMultiplier", "startSizeY", "startSizeYMultiplier", "startSizeZ", "startSizeZMultiplier", "startRotation3D", "startRotation", "startRotationMultiplier", "startRotationX", "startRotationXMultiplier", "startRotationY", "startRotationYMultiplier", "startRotationZ", "startRotationZMultiplier", "randomizeRotationDirection", "startColor", "gravityModifier", "gravityModifierMultiplier", "simulationSpace", "customSimulationSpace", "simulationSpeed", "scalingMode", "playOnAwake", "maxParticles")] + public class ES3Type_MainModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_MainModule() : base(typeof(UnityEngine.ParticleSystem.MainModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.MainModule)obj; + + writer.WriteProperty("duration", instance.duration, ES3Type_float.Instance); + writer.WriteProperty("loop", instance.loop, ES3Type_bool.Instance); + writer.WriteProperty("prewarm", instance.prewarm, ES3Type_bool.Instance); + writer.WriteProperty("startDelay", instance.startDelay, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startDelayMultiplier", instance.startDelayMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startLifetime", instance.startLifetime, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startLifetimeMultiplier", instance.startLifetimeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startSpeed", instance.startSpeed, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startSpeedMultiplier", instance.startSpeedMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startSize3D", instance.startSize3D, ES3Type_bool.Instance); + writer.WriteProperty("startSize", instance.startSize, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startSizeMultiplier", instance.startSizeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startSizeX", instance.startSizeX, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startSizeXMultiplier", instance.startSizeXMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startSizeY", instance.startSizeY, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startSizeYMultiplier", instance.startSizeYMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startSizeZ", instance.startSizeZ, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startSizeZMultiplier", instance.startSizeZMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startRotation3D", instance.startRotation3D, ES3Type_bool.Instance); + writer.WriteProperty("startRotation", instance.startRotation, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startRotationMultiplier", instance.startRotationMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startRotationX", instance.startRotationX, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startRotationXMultiplier", instance.startRotationXMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startRotationY", instance.startRotationY, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startRotationYMultiplier", instance.startRotationYMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startRotationZ", instance.startRotationZ, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startRotationZMultiplier", instance.startRotationZMultiplier, ES3Type_float.Instance); + #if UNITY_2018_1_OR_NEWER + writer.WriteProperty("flipRotation", instance.flipRotation, ES3Type_float.Instance); + #else + writer.WriteProperty("randomizeRotationDirection", instance.randomizeRotationDirection, ES3Type_float.Instance); + #endif + writer.WriteProperty("startColor", instance.startColor, ES3Type_MinMaxGradient.Instance); + writer.WriteProperty("gravityModifier", instance.gravityModifier, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("gravityModifierMultiplier", instance.gravityModifierMultiplier, ES3Type_float.Instance); + writer.WriteProperty("simulationSpace", instance.simulationSpace); + writer.WritePropertyByRef("customSimulationSpace", instance.customSimulationSpace); + writer.WriteProperty("simulationSpeed", instance.simulationSpeed, ES3Type_float.Instance); + writer.WriteProperty("scalingMode", instance.scalingMode); + writer.WriteProperty("playOnAwake", instance.playOnAwake, ES3Type_bool.Instance); + writer.WriteProperty("maxParticles", instance.maxParticles, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.MainModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.MainModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "duration": + instance.duration = reader.Read(ES3Type_float.Instance); + break; + case "loop": + instance.loop = reader.Read(ES3Type_bool.Instance); + break; + case "prewarm": + instance.prewarm = reader.Read(ES3Type_bool.Instance); + break; + case "startDelay": + instance.startDelay = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startDelayMultiplier": + instance.startDelayMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startLifetime": + instance.startLifetime = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startLifetimeMultiplier": + instance.startLifetimeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startSpeed": + instance.startSpeed = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startSpeedMultiplier": + instance.startSpeedMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startSize3D": + instance.startSize3D = reader.Read(ES3Type_bool.Instance); + break; + case "startSize": + instance.startSize = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startSizeMultiplier": + instance.startSizeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startSizeX": + instance.startSizeX = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startSizeXMultiplier": + instance.startSizeXMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startSizeY": + instance.startSizeY = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startSizeYMultiplier": + instance.startSizeYMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startSizeZ": + instance.startSizeZ = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startSizeZMultiplier": + instance.startSizeZMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startRotation3D": + instance.startRotation3D = reader.Read(ES3Type_bool.Instance); + break; + case "startRotation": + instance.startRotation = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startRotationMultiplier": + instance.startRotationMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startRotationX": + instance.startRotationX = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startRotationXMultiplier": + instance.startRotationXMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startRotationY": + instance.startRotationY = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startRotationYMultiplier": + instance.startRotationYMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startRotationZ": + instance.startRotationZ = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startRotationZMultiplier": + instance.startRotationZMultiplier = reader.Read(ES3Type_float.Instance); + break; + #if UNITY_2018_1_OR_NEWER + case "flipRotation": + instance.flipRotation = reader.Read(ES3Type_float.Instance); + break; + case "randomizeRotationDirection": + instance.flipRotation = reader.Read(ES3Type_float.Instance); + break; + #else + case "randomizeRotationDirection": + instance.randomizeRotationDirection = reader.Read(ES3Type_float.Instance); + break; + #endif + case "startColor": + instance.startColor = reader.Read(ES3Type_MinMaxGradient.Instance); + break; + case "gravityModifier": + instance.gravityModifier = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "gravityModifierMultiplier": + instance.gravityModifierMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "simulationSpace": + instance.simulationSpace = reader.Read(); + break; + case "customSimulationSpace": + instance.customSimulationSpace = reader.Read(ES3Type_Transform.Instance); + break; + case "simulationSpeed": + instance.simulationSpeed = reader.Read(ES3Type_float.Instance); + break; + case "scalingMode": + instance.scalingMode = reader.Read(); + break; + case "playOnAwake": + instance.playOnAwake = reader.Read(ES3Type_bool.Instance); + break; + case "maxParticles": + instance.maxParticles = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs.meta new file mode 100644 index 00000000..945d2965 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MainModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 55fa2d96d06d64809ad226f1874be169 +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs new file mode 100644 index 00000000..d977814e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs @@ -0,0 +1,1199 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("shader", "renderQueue", "shaderKeywords", "globalIlluminationFlags", "properties")] + public class ES3Type_Material : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Material() : base(typeof(UnityEngine.Material)){ Instance = this; } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Material)obj; + + writer.WriteProperty("name", instance.name); + writer.WriteProperty("shader", instance.shader); + writer.WriteProperty("renderQueue", instance.renderQueue, ES3Type_int.Instance); + writer.WriteProperty("shaderKeywords", instance.shaderKeywords); + writer.WriteProperty("globalIlluminationFlags", instance.globalIlluminationFlags); + if(instance.HasProperty("_Color")) + writer.WriteProperty("_Color", instance.GetColor("_Color")); + if(instance.HasProperty("_SpecColor")) + writer.WriteProperty("_SpecColor", instance.GetColor("_SpecColor")); + if(instance.HasProperty("_Shininess")) + writer.WriteProperty("_Shininess", instance.GetFloat("_Shininess")); + if(instance.HasProperty("_MainTex")) + { + writer.WriteProperty("_MainTex", instance.GetTexture("_MainTex")); + writer.WriteProperty("_MainTex_Scale", instance.GetTextureScale("_MainTex")); + } + if(instance.HasProperty("_MainTex_TextureOffset")) + writer.WriteProperty("_MainTex_TextureOffset", instance.GetTextureOffset("_MainTex_TextureOffset")); + if(instance.HasProperty("_MainTex_TextureScale")) + writer.WriteProperty("_MainTex_TextureScale", instance.GetTextureScale("_MainTex_TextureScale")); + if(instance.HasProperty("_Illum")) + writer.WriteProperty("_Illum", instance.GetTexture("_Illum")); + if(instance.HasProperty("_Illum_TextureOffset")) + writer.WriteProperty("_Illum_TextureOffset", instance.GetTextureOffset("_Illum_TextureOffset")); + if(instance.HasProperty("_Illum_TextureScale")) + writer.WriteProperty("_Illum_TextureScale", instance.GetTextureScale("_Illum_TextureScale")); + if(instance.HasProperty("_BumpMap")) + writer.WriteProperty("_BumpMap", instance.GetTexture("_BumpMap")); + if(instance.HasProperty("_BumpMap_TextureOffset")) + writer.WriteProperty("_BumpMap_TextureOffset", instance.GetTextureOffset("_BumpMap_TextureOffset")); + if(instance.HasProperty("_BumpMap_TextureScale")) + writer.WriteProperty("_BumpMap_TextureScale", instance.GetTextureScale("_BumpMap_TextureScale")); + if(instance.HasProperty("_Emission")) + writer.WriteProperty("_Emission", instance.GetFloat("_Emission")); + if(instance.HasProperty("_Specular")) + writer.WriteProperty("_Specular", instance.GetColor("_Specular")); + if(instance.HasProperty("_MainBump")) + writer.WriteProperty("_MainBump", instance.GetTexture("_MainBump")); + if(instance.HasProperty("_MainBump_TextureOffset")) + writer.WriteProperty("_MainBump_TextureOffset", instance.GetTextureOffset("_MainBump_TextureOffset")); + if(instance.HasProperty("_MainBump_TextureScale")) + writer.WriteProperty("_MainBump_TextureScale", instance.GetTextureScale("_MainBump_TextureScale")); + if(instance.HasProperty("_Mask")) + writer.WriteProperty("_Mask", instance.GetTexture("_Mask")); + if(instance.HasProperty("_Mask_TextureOffset")) + writer.WriteProperty("_Mask_TextureOffset", instance.GetTextureOffset("_Mask_TextureOffset")); + if(instance.HasProperty("_Mask_TextureScale")) + writer.WriteProperty("_Mask_TextureScale", instance.GetTextureScale("_Mask_TextureScale")); + if(instance.HasProperty("_Focus")) + writer.WriteProperty("_Focus", instance.GetFloat("_Focus")); + if(instance.HasProperty("_StencilComp")) + writer.WriteProperty("_StencilComp", instance.GetFloat("_StencilComp")); + if(instance.HasProperty("_Stencil")) + writer.WriteProperty("_Stencil", instance.GetFloat("_Stencil")); + if(instance.HasProperty("_StencilOp")) + writer.WriteProperty("_StencilOp", instance.GetFloat("_StencilOp")); + if(instance.HasProperty("_StencilWriteMask")) + writer.WriteProperty("_StencilWriteMask", instance.GetFloat("_StencilWriteMask")); + if(instance.HasProperty("_StencilReadMask")) + writer.WriteProperty("_StencilReadMask", instance.GetFloat("_StencilReadMask")); + if(instance.HasProperty("_ColorMask")) + writer.WriteProperty("_ColorMask", instance.GetFloat("_ColorMask")); + if(instance.HasProperty("_UseUIAlphaClip")) + writer.WriteProperty("_UseUIAlphaClip", instance.GetFloat("_UseUIAlphaClip")); + if(instance.HasProperty("_SrcBlend")) + writer.WriteProperty("_SrcBlend", instance.GetFloat("_SrcBlend")); + if(instance.HasProperty("_DstBlend")) + writer.WriteProperty("_DstBlend", instance.GetFloat("_DstBlend")); + if(instance.HasProperty("_ReflectColor")) + writer.WriteProperty("_ReflectColor", instance.GetColor("_ReflectColor")); + if(instance.HasProperty("_Cube")) + writer.WriteProperty("_Cube", instance.GetTexture("_Cube")); + if(instance.HasProperty("_Cube_TextureOffset")) + writer.WriteProperty("_Cube_TextureOffset", instance.GetTextureOffset("_Cube_TextureOffset")); + if(instance.HasProperty("_Cube_TextureScale")) + writer.WriteProperty("_Cube_TextureScale", instance.GetTextureScale("_Cube_TextureScale")); + if(instance.HasProperty("_Tint")) + writer.WriteProperty("_Tint", instance.GetColor("_Tint")); + if(instance.HasProperty("_Exposure")) + writer.WriteProperty("_Exposure", instance.GetFloat("_Exposure")); + if(instance.HasProperty("_Rotation")) + writer.WriteProperty("_Rotation", instance.GetFloat("_Rotation")); + if(instance.HasProperty("_Tex")) + writer.WriteProperty("_Tex", instance.GetTexture("_Tex")); + if(instance.HasProperty("_Tex_TextureOffset")) + writer.WriteProperty("_Tex_TextureOffset", instance.GetTextureOffset("_Tex_TextureOffset")); + if(instance.HasProperty("_Tex_TextureScale")) + writer.WriteProperty("_Tex_TextureScale", instance.GetTextureScale("_Tex_TextureScale")); + if(instance.HasProperty("_Control")) + writer.WriteProperty("_Control", instance.GetTexture("_Control")); + if(instance.HasProperty("_Control_TextureOffset")) + writer.WriteProperty("_Control_TextureOffset", instance.GetTextureOffset("_Control_TextureOffset")); + if(instance.HasProperty("_Control_TextureScale")) + writer.WriteProperty("_Control_TextureScale", instance.GetTextureScale("_Control_TextureScale")); + if(instance.HasProperty("_Splat3")) + writer.WriteProperty("_Splat3", instance.GetTexture("_Splat3")); + if(instance.HasProperty("_Splat3_TextureOffset")) + writer.WriteProperty("_Splat3_TextureOffset", instance.GetTextureOffset("_Splat3_TextureOffset")); + if(instance.HasProperty("_Splat3_TextureScale")) + writer.WriteProperty("_Splat3_TextureScale", instance.GetTextureScale("_Splat3_TextureScale")); + if(instance.HasProperty("_Splat2")) + writer.WriteProperty("_Splat2", instance.GetTexture("_Splat2")); + if(instance.HasProperty("_Splat2_TextureOffset")) + writer.WriteProperty("_Splat2_TextureOffset", instance.GetTextureOffset("_Splat2_TextureOffset")); + if(instance.HasProperty("_Splat2_TextureScale")) + writer.WriteProperty("_Splat2_TextureScale", instance.GetTextureScale("_Splat2_TextureScale")); + if(instance.HasProperty("_Splat1")) + writer.WriteProperty("_Splat1", instance.GetTexture("_Splat1")); + if(instance.HasProperty("_Splat1_TextureOffset")) + writer.WriteProperty("_Splat1_TextureOffset", instance.GetTextureOffset("_Splat1_TextureOffset")); + if(instance.HasProperty("_Splat1_TextureScale")) + writer.WriteProperty("_Splat1_TextureScale", instance.GetTextureScale("_Splat1_TextureScale")); + if(instance.HasProperty("_Splat0")) + writer.WriteProperty("_Splat0", instance.GetTexture("_Splat0")); + if(instance.HasProperty("_Splat0_TextureOffset")) + writer.WriteProperty("_Splat0_TextureOffset", instance.GetTextureOffset("_Splat0_TextureOffset")); + if(instance.HasProperty("_Splat0_TextureScale")) + writer.WriteProperty("_Splat0_TextureScale", instance.GetTextureScale("_Splat0_TextureScale")); + if(instance.HasProperty("_Normal3")) + writer.WriteProperty("_Normal3", instance.GetTexture("_Normal3")); + if(instance.HasProperty("_Normal3_TextureOffset")) + writer.WriteProperty("_Normal3_TextureOffset", instance.GetTextureOffset("_Normal3_TextureOffset")); + if(instance.HasProperty("_Normal3_TextureScale")) + writer.WriteProperty("_Normal3_TextureScale", instance.GetTextureScale("_Normal3_TextureScale")); + if(instance.HasProperty("_Normal2")) + writer.WriteProperty("_Normal2", instance.GetTexture("_Normal2")); + if(instance.HasProperty("_Normal2_TextureOffset")) + writer.WriteProperty("_Normal2_TextureOffset", instance.GetTextureOffset("_Normal2_TextureOffset")); + if(instance.HasProperty("_Normal2_TextureScale")) + writer.WriteProperty("_Normal2_TextureScale", instance.GetTextureScale("_Normal2_TextureScale")); + if(instance.HasProperty("_Normal1")) + writer.WriteProperty("_Normal1", instance.GetTexture("_Normal1")); + if(instance.HasProperty("_Normal1_TextureOffset")) + writer.WriteProperty("_Normal1_TextureOffset", instance.GetTextureOffset("_Normal1_TextureOffset")); + if(instance.HasProperty("_Normal1_TextureScale")) + writer.WriteProperty("_Normal1_TextureScale", instance.GetTextureScale("_Normal1_TextureScale")); + if(instance.HasProperty("_Normal0")) + writer.WriteProperty("_Normal0", instance.GetTexture("_Normal0")); + if(instance.HasProperty("_Normal0_TextureOffset")) + writer.WriteProperty("_Normal0_TextureOffset", instance.GetTextureOffset("_Normal0_TextureOffset")); + if(instance.HasProperty("_Normal0_TextureScale")) + writer.WriteProperty("_Normal0_TextureScale", instance.GetTextureScale("_Normal0_TextureScale")); + if(instance.HasProperty("_Cutoff")) + writer.WriteProperty("_Cutoff", instance.GetFloat("_Cutoff")); + if(instance.HasProperty("_BaseLight")) + writer.WriteProperty("_BaseLight", instance.GetFloat("_BaseLight")); + if(instance.HasProperty("_AO")) + writer.WriteProperty("_AO", instance.GetFloat("_AO")); + if(instance.HasProperty("_Occlusion")) + writer.WriteProperty("_Occlusion", instance.GetFloat("_Occlusion")); + if(instance.HasProperty("_TreeInstanceColor")) + writer.WriteProperty("_TreeInstanceColor", instance.GetVector("_TreeInstanceColor")); + if(instance.HasProperty("_TreeInstanceScale")) + writer.WriteProperty("_TreeInstanceScale", instance.GetVector("_TreeInstanceScale")); + if(instance.HasProperty("_SquashAmount")) + writer.WriteProperty("_SquashAmount", instance.GetFloat("_SquashAmount")); + if(instance.HasProperty("_TranslucencyColor")) + writer.WriteProperty("_TranslucencyColor", instance.GetColor("_TranslucencyColor")); + if(instance.HasProperty("_TranslucencyViewDependency")) + writer.WriteProperty("_TranslucencyViewDependency", instance.GetFloat("_TranslucencyViewDependency")); + if(instance.HasProperty("_ShadowStrength")) + writer.WriteProperty("_ShadowStrength", instance.GetFloat("_ShadowStrength")); + if(instance.HasProperty("_ShadowOffsetScale")) + writer.WriteProperty("_ShadowOffsetScale", instance.GetFloat("_ShadowOffsetScale")); + if(instance.HasProperty("_ShadowTex")) + writer.WriteProperty("_ShadowTex", instance.GetTexture("_ShadowTex")); + if(instance.HasProperty("_ShadowTex_TextureOffset")) + writer.WriteProperty("_ShadowTex_TextureOffset", instance.GetTextureOffset("_ShadowTex_TextureOffset")); + if(instance.HasProperty("_ShadowTex_TextureScale")) + writer.WriteProperty("_ShadowTex_TextureScale", instance.GetTextureScale("_ShadowTex_TextureScale")); + if(instance.HasProperty("_BumpSpecMap")) + writer.WriteProperty("_BumpSpecMap", instance.GetTexture("_BumpSpecMap")); + if(instance.HasProperty("_BumpSpecMap_TextureOffset")) + writer.WriteProperty("_BumpSpecMap_TextureOffset", instance.GetTextureOffset("_BumpSpecMap_TextureOffset")); + if(instance.HasProperty("_BumpSpecMap_TextureScale")) + writer.WriteProperty("_BumpSpecMap_TextureScale", instance.GetTextureScale("_BumpSpecMap_TextureScale")); + if(instance.HasProperty("_TranslucencyMap")) + writer.WriteProperty("_TranslucencyMap", instance.GetTexture("_TranslucencyMap")); + if(instance.HasProperty("_TranslucencyMap_TextureOffset")) + writer.WriteProperty("_TranslucencyMap_TextureOffset", instance.GetTextureOffset("_TranslucencyMap_TextureOffset")); + if(instance.HasProperty("_TranslucencyMap_TextureScale")) + writer.WriteProperty("_TranslucencyMap_TextureScale", instance.GetTextureScale("_TranslucencyMap_TextureScale")); + if(instance.HasProperty("_LightMap")) + writer.WriteProperty("_LightMap", instance.GetTexture("_LightMap")); + if(instance.HasProperty("_LightMap_TextureOffset")) + writer.WriteProperty("_LightMap_TextureOffset", instance.GetTextureOffset("_LightMap_TextureOffset")); + if(instance.HasProperty("_LightMap_TextureScale")) + writer.WriteProperty("_LightMap_TextureScale", instance.GetTextureScale("_LightMap_TextureScale")); + if(instance.HasProperty("_DetailTex")) + writer.WriteProperty("_DetailTex", instance.GetTexture("_DetailTex")); + if(instance.HasProperty("_DetailTex_TextureOffset")) + writer.WriteProperty("_DetailTex_TextureOffset", instance.GetTextureOffset("_DetailTex_TextureOffset")); + if(instance.HasProperty("_DetailTex_TextureScale")) + writer.WriteProperty("_DetailTex_TextureScale", instance.GetTextureScale("_DetailTex_TextureScale")); + if(instance.HasProperty("_DetailBump")) + writer.WriteProperty("_DetailBump", instance.GetTexture("_DetailBump")); + if(instance.HasProperty("_DetailBump_TextureOffset")) + writer.WriteProperty("_DetailBump_TextureOffset", instance.GetTextureOffset("_DetailBump_TextureOffset")); + if(instance.HasProperty("_DetailBump_TextureScale")) + writer.WriteProperty("_DetailBump_TextureScale", instance.GetTextureScale("_DetailBump_TextureScale")); + if(instance.HasProperty("_Strength")) + writer.WriteProperty("_Strength", instance.GetFloat("_Strength")); + if(instance.HasProperty("_InvFade")) + writer.WriteProperty("_InvFade", instance.GetFloat("_InvFade")); + if(instance.HasProperty("_EmisColor")) + writer.WriteProperty("_EmisColor", instance.GetColor("_EmisColor")); + if(instance.HasProperty("_Parallax")) + writer.WriteProperty("_Parallax", instance.GetFloat("_Parallax")); + if(instance.HasProperty("_ParallaxMap")) + writer.WriteProperty("_ParallaxMap", instance.GetTexture("_ParallaxMap")); + if(instance.HasProperty("_ParallaxMap_TextureOffset")) + writer.WriteProperty("_ParallaxMap_TextureOffset", instance.GetTextureOffset("_ParallaxMap_TextureOffset")); + if(instance.HasProperty("_ParallaxMap_TextureScale")) + writer.WriteProperty("_ParallaxMap_TextureScale", instance.GetTextureScale("_ParallaxMap_TextureScale")); + if(instance.HasProperty("_DecalTex")) + writer.WriteProperty("_DecalTex", instance.GetTexture("_DecalTex")); + if(instance.HasProperty("_DecalTex_TextureOffset")) + writer.WriteProperty("_DecalTex_TextureOffset", instance.GetTextureOffset("_DecalTex_TextureOffset")); + if(instance.HasProperty("_DecalTex_TextureScale")) + writer.WriteProperty("_DecalTex_TextureScale", instance.GetTextureScale("_DecalTex_TextureScale")); + if(instance.HasProperty("_GlossMap")) + writer.WriteProperty("_GlossMap", instance.GetTexture("_GlossMap")); + if(instance.HasProperty("_GlossMap_TextureOffset")) + writer.WriteProperty("_GlossMap_TextureOffset", instance.GetTextureOffset("_GlossMap_TextureOffset")); + if(instance.HasProperty("_GlossMap_TextureScale")) + writer.WriteProperty("_GlossMap_TextureScale", instance.GetTextureScale("_GlossMap_TextureScale")); + if(instance.HasProperty("_ShadowOffset")) + writer.WriteProperty("_ShadowOffset", instance.GetTexture("_ShadowOffset")); + if(instance.HasProperty("_ShadowOffset_TextureOffset")) + writer.WriteProperty("_ShadowOffset_TextureOffset", instance.GetTextureOffset("_ShadowOffset_TextureOffset")); + if(instance.HasProperty("_ShadowOffset_TextureScale")) + writer.WriteProperty("_ShadowOffset_TextureScale", instance.GetTextureScale("_ShadowOffset_TextureScale")); + if(instance.HasProperty("_SunDisk")) + writer.WriteProperty("_SunDisk", instance.GetFloat("_SunDisk")); + if(instance.HasProperty("_SunSize")) + writer.WriteProperty("_SunSize", instance.GetFloat("_SunSize")); + if(instance.HasProperty("_AtmosphereThickness")) + writer.WriteProperty("_AtmosphereThickness", instance.GetFloat("_AtmosphereThickness")); + if(instance.HasProperty("_SkyTint")) + writer.WriteProperty("_SkyTint", instance.GetColor("_SkyTint")); + if(instance.HasProperty("_GroundColor")) + writer.WriteProperty("_GroundColor", instance.GetColor("_GroundColor")); + if(instance.HasProperty("_WireThickness")) + writer.WriteProperty("_WireThickness", instance.GetFloat("_WireThickness")); + if(instance.HasProperty("_ZWrite")) + writer.WriteProperty("_ZWrite", instance.GetFloat("_ZWrite")); + if(instance.HasProperty("_ZTest")) + writer.WriteProperty("_ZTest", instance.GetFloat("_ZTest")); + if(instance.HasProperty("_Cull")) + writer.WriteProperty("_Cull", instance.GetFloat("_Cull")); + if(instance.HasProperty("_ZBias")) + writer.WriteProperty("_ZBias", instance.GetFloat("_ZBias")); + if(instance.HasProperty("_HueVariation")) + writer.WriteProperty("_HueVariation", instance.GetColor("_HueVariation")); + if(instance.HasProperty("_WindQuality")) + writer.WriteProperty("_WindQuality", instance.GetFloat("_WindQuality")); + if(instance.HasProperty("_DetailMask")) + writer.WriteProperty("_DetailMask", instance.GetTexture("_DetailMask")); + if(instance.HasProperty("_DetailMask_TextureOffset")) + writer.WriteProperty("_DetailMask_TextureOffset", instance.GetTextureOffset("_DetailMask_TextureOffset")); + if(instance.HasProperty("_DetailMask_TextureScale")) + writer.WriteProperty("_DetailMask_TextureScale", instance.GetTextureScale("_DetailMask_TextureScale")); + if(instance.HasProperty("_MetallicTex")) + writer.WriteProperty("_MetallicTex", instance.GetTexture("_MetallicTex")); + if(instance.HasProperty("_MetallicTex_TextureOffset")) + writer.WriteProperty("_MetallicTex_TextureOffset", instance.GetTextureOffset("_MetallicTex_TextureOffset")); + if(instance.HasProperty("_MetallicTex_TextureScale")) + writer.WriteProperty("_MetallicTex_TextureScale", instance.GetTextureScale("_MetallicTex_TextureScale")); + if(instance.HasProperty("_Glossiness")) + writer.WriteProperty("_Glossiness", instance.GetFloat("_Glossiness")); + if(instance.HasProperty("_GlossMapScale")) + writer.WriteProperty("_GlossMapScale", instance.GetFloat("_GlossMapScale")); + if(instance.HasProperty("_SmoothnessTextureChannel")) + writer.WriteProperty("_SmoothnessTextureChannel", instance.GetFloat("_SmoothnessTextureChannel")); + if(instance.HasProperty("_Metallic")) + writer.WriteProperty("_Metallic", instance.GetFloat("_Metallic")); + if(instance.HasProperty("_MetallicGlossMap")) + writer.WriteProperty("_MetallicGlossMap", instance.GetTexture("_MetallicGlossMap")); + if(instance.HasProperty("_MetallicGlossMap_TextureOffset")) + writer.WriteProperty("_MetallicGlossMap_TextureOffset", instance.GetTextureOffset("_MetallicGlossMap_TextureOffset")); + if(instance.HasProperty("_MetallicGlossMap_TextureScale")) + writer.WriteProperty("_MetallicGlossMap_TextureScale", instance.GetTextureScale("_MetallicGlossMap_TextureScale")); + if(instance.HasProperty("_SpecularHighlights")) + writer.WriteProperty("_SpecularHighlights", instance.GetFloat("_SpecularHighlights")); + if(instance.HasProperty("_GlossyReflections")) + writer.WriteProperty("_GlossyReflections", instance.GetFloat("_GlossyReflections")); + if(instance.HasProperty("_BumpScale")) + writer.WriteProperty("_BumpScale", instance.GetFloat("_BumpScale")); + if(instance.HasProperty("_OcclusionStrength")) + writer.WriteProperty("_OcclusionStrength", instance.GetFloat("_OcclusionStrength")); + if(instance.HasProperty("_OcclusionMap")) + writer.WriteProperty("_OcclusionMap", instance.GetTexture("_OcclusionMap")); + if(instance.HasProperty("_OcclusionMap_TextureOffset")) + writer.WriteProperty("_OcclusionMap_TextureOffset", instance.GetTextureOffset("_OcclusionMap_TextureOffset")); + if(instance.HasProperty("_OcclusionMap_TextureScale")) + writer.WriteProperty("_OcclusionMap_TextureScale", instance.GetTextureScale("_OcclusionMap_TextureScale")); + if(instance.HasProperty("_EmissionColor")) + writer.WriteProperty("_EmissionColor", instance.GetColor("_EmissionColor")); + if(instance.HasProperty("_EmissionMap")) + writer.WriteProperty("_EmissionMap", instance.GetTexture("_EmissionMap")); + if(instance.HasProperty("_EmissionMap_TextureOffset")) + writer.WriteProperty("_EmissionMap_TextureOffset", instance.GetTextureOffset("_EmissionMap_TextureOffset")); + if(instance.HasProperty("_EmissionMap_TextureScale")) + writer.WriteProperty("_EmissionMap_TextureScale", instance.GetTextureScale("_EmissionMap_TextureScale")); + if(instance.HasProperty("_DetailAlbedoMap")) + writer.WriteProperty("_DetailAlbedoMap", instance.GetTexture("_DetailAlbedoMap")); + if(instance.HasProperty("_DetailAlbedoMap_TextureOffset")) + writer.WriteProperty("_DetailAlbedoMap_TextureOffset", instance.GetTextureOffset("_DetailAlbedoMap_TextureOffset")); + if(instance.HasProperty("_DetailAlbedoMap_TextureScale")) + writer.WriteProperty("_DetailAlbedoMap_TextureScale", instance.GetTextureScale("_DetailAlbedoMap_TextureScale")); + if(instance.HasProperty("_DetailNormalMapScale")) + writer.WriteProperty("_DetailNormalMapScale", instance.GetFloat("_DetailNormalMapScale")); + if(instance.HasProperty("_DetailNormalMap")) + writer.WriteProperty("_DetailNormalMap", instance.GetTexture("_DetailNormalMap")); + if(instance.HasProperty("_DetailNormalMap_TextureOffset")) + writer.WriteProperty("_DetailNormalMap_TextureOffset", instance.GetTextureOffset("_DetailNormalMap_TextureOffset")); + if(instance.HasProperty("_DetailNormalMap_TextureScale")) + writer.WriteProperty("_DetailNormalMap_TextureScale", instance.GetTextureScale("_DetailNormalMap_TextureScale")); + if(instance.HasProperty("_UVSec")) + writer.WriteProperty("_UVSec", instance.GetFloat("_UVSec")); + if(instance.HasProperty("_Mode")) + writer.WriteProperty("_Mode", instance.GetFloat("_Mode")); + if(instance.HasProperty("_TintColor")) + writer.WriteProperty("_TintColor", instance.GetColor("_TintColor")); + if(instance.HasProperty("_WavingTint")) + writer.WriteProperty("_WavingTint", instance.GetColor("_WavingTint")); + if(instance.HasProperty("_WaveAndDistance")) + writer.WriteProperty("_WaveAndDistance", instance.GetVector("_WaveAndDistance")); + if(instance.HasProperty("_LightTexture0")) + writer.WriteProperty("_LightTexture0", instance.GetTexture("_LightTexture0")); + if(instance.HasProperty("_LightTexture0_TextureOffset")) + writer.WriteProperty("_LightTexture0_TextureOffset", instance.GetTextureOffset("_LightTexture0_TextureOffset")); + if(instance.HasProperty("_LightTexture0_TextureScale")) + writer.WriteProperty("_LightTexture0_TextureScale", instance.GetTextureScale("_LightTexture0_TextureScale")); + if(instance.HasProperty("_LightTextureB0")) + writer.WriteProperty("_LightTextureB0", instance.GetTexture("_LightTextureB0")); + if(instance.HasProperty("_LightTextureB0_TextureOffset")) + writer.WriteProperty("_LightTextureB0_TextureOffset", instance.GetTextureOffset("_LightTextureB0_TextureOffset")); + if(instance.HasProperty("_LightTextureB0_TextureScale")) + writer.WriteProperty("_LightTextureB0_TextureScale", instance.GetTextureScale("_LightTextureB0_TextureScale")); + if(instance.HasProperty("_ShadowMapTexture")) + writer.WriteProperty("_ShadowMapTexture", instance.GetTexture("_ShadowMapTexture")); + if(instance.HasProperty("_ShadowMapTexture_TextureOffset")) + writer.WriteProperty("_ShadowMapTexture_TextureOffset", instance.GetTextureOffset("_ShadowMapTexture_TextureOffset")); + if(instance.HasProperty("_ShadowMapTexture_TextureScale")) + writer.WriteProperty("_ShadowMapTexture_TextureScale", instance.GetTextureScale("_ShadowMapTexture_TextureScale")); + if(instance.HasProperty("_SecondTex")) + writer.WriteProperty("_SecondTex", instance.GetTexture("_SecondTex")); + if(instance.HasProperty("_SecondTex_TextureOffset")) + writer.WriteProperty("_SecondTex_TextureOffset", instance.GetTextureOffset("_SecondTex_TextureOffset")); + if(instance.HasProperty("_SecondTex_TextureScale")) + writer.WriteProperty("_SecondTex_TextureScale", instance.GetTextureScale("_SecondTex_TextureScale")); + if(instance.HasProperty("_ThirdTex")) + writer.WriteProperty("_ThirdTex", instance.GetTexture("_ThirdTex")); + if(instance.HasProperty("_ThirdTex_TextureOffset")) + writer.WriteProperty("_ThirdTex_TextureOffset", instance.GetTextureOffset("_ThirdTex_TextureOffset")); + if(instance.HasProperty("_ThirdTex_TextureScale")) + writer.WriteProperty("_ThirdTex_TextureScale", instance.GetTextureScale("_ThirdTex_TextureScale")); + if(instance.HasProperty("PixelSnap")) + writer.WriteProperty("PixelSnap", instance.GetFloat("PixelSnap")); + if(instance.HasProperty("_RendererColor")) + writer.WriteProperty("_RendererColor", instance.GetColor("_RendererColor")); + if(instance.HasProperty("_Flip")) + writer.WriteProperty("_Flip", instance.GetVector("_Flip")); + if(instance.HasProperty("_AlphaTex")) + writer.WriteProperty("_AlphaTex", instance.GetTexture("_AlphaTex")); + if(instance.HasProperty("_AlphaTex_TextureOffset")) + writer.WriteProperty("_AlphaTex_TextureOffset", instance.GetTextureOffset("_AlphaTex_TextureOffset")); + if(instance.HasProperty("_AlphaTex_TextureScale")) + writer.WriteProperty("_AlphaTex_TextureScale", instance.GetTextureScale("_AlphaTex_TextureScale")); + if(instance.HasProperty("_EnableExternalAlpha")) + writer.WriteProperty("_EnableExternalAlpha", instance.GetFloat("_EnableExternalAlpha")); + if(instance.HasProperty("_Level")) + writer.WriteProperty("_Level", instance.GetFloat("_Level")); + if(instance.HasProperty("_SpecGlossMap")) + writer.WriteProperty("_SpecGlossMap", instance.GetTexture("_SpecGlossMap")); + if(instance.HasProperty("_SpecGlossMap_TextureOffset")) + writer.WriteProperty("_SpecGlossMap_TextureOffset", instance.GetTextureOffset("_SpecGlossMap_TextureOffset")); + if(instance.HasProperty("_SpecGlossMap_TextureScale")) + writer.WriteProperty("_SpecGlossMap_TextureScale", instance.GetTextureScale("_SpecGlossMap_TextureScale")); + if(instance.HasProperty("_FrontTex")) + writer.WriteProperty("_FrontTex", instance.GetTexture("_FrontTex")); + if(instance.HasProperty("_FrontTex_TextureOffset")) + writer.WriteProperty("_FrontTex_TextureOffset", instance.GetTextureOffset("_FrontTex_TextureOffset")); + if(instance.HasProperty("_FrontTex_TextureScale")) + writer.WriteProperty("_FrontTex_TextureScale", instance.GetTextureScale("_FrontTex_TextureScale")); + if(instance.HasProperty("_BackTex")) + writer.WriteProperty("_BackTex", instance.GetTexture("_BackTex")); + if(instance.HasProperty("_BackTex_TextureOffset")) + writer.WriteProperty("_BackTex_TextureOffset", instance.GetTextureOffset("_BackTex_TextureOffset")); + if(instance.HasProperty("_BackTex_TextureScale")) + writer.WriteProperty("_BackTex_TextureScale", instance.GetTextureScale("_BackTex_TextureScale")); + if(instance.HasProperty("_LeftTex")) + writer.WriteProperty("_LeftTex", instance.GetTexture("_LeftTex")); + if(instance.HasProperty("_LeftTex_TextureOffset")) + writer.WriteProperty("_LeftTex_TextureOffset", instance.GetTextureOffset("_LeftTex_TextureOffset")); + if(instance.HasProperty("_LeftTex_TextureScale")) + writer.WriteProperty("_LeftTex_TextureScale", instance.GetTextureScale("_LeftTex_TextureScale")); + if(instance.HasProperty("_RightTex")) + writer.WriteProperty("_RightTex", instance.GetTexture("_RightTex")); + if(instance.HasProperty("_RightTex_TextureOffset")) + writer.WriteProperty("_RightTex_TextureOffset", instance.GetTextureOffset("_RightTex_TextureOffset")); + if(instance.HasProperty("_RightTex_TextureScale")) + writer.WriteProperty("_RightTex_TextureScale", instance.GetTextureScale("_RightTex_TextureScale")); + if(instance.HasProperty("_UpTex")) + writer.WriteProperty("_UpTex", instance.GetTexture("_UpTex")); + if(instance.HasProperty("_UpTex_TextureOffset")) + writer.WriteProperty("_UpTex_TextureOffset", instance.GetTextureOffset("_UpTex_TextureOffset")); + if(instance.HasProperty("_UpTex_TextureScale")) + writer.WriteProperty("_UpTex_TextureScale", instance.GetTextureScale("_UpTex_TextureScale")); + if(instance.HasProperty("_DownTex")) + writer.WriteProperty("_DownTex", instance.GetTexture("_DownTex")); + if(instance.HasProperty("_DownTex_TextureOffset")) + writer.WriteProperty("_DownTex_TextureOffset", instance.GetTextureOffset("_DownTex_TextureOffset")); + if(instance.HasProperty("_DownTex_TextureScale")) + writer.WriteProperty("_DownTex_TextureScale", instance.GetTextureScale("_DownTex_TextureScale")); + if(instance.HasProperty("_Metallic0")) + writer.WriteProperty("_Metallic0", instance.GetFloat("_Metallic0")); + if(instance.HasProperty("_Metallic1")) + writer.WriteProperty("_Metallic1", instance.GetFloat("_Metallic1")); + if(instance.HasProperty("_Metallic2")) + writer.WriteProperty("_Metallic2", instance.GetFloat("_Metallic2")); + if(instance.HasProperty("_Metallic3")) + writer.WriteProperty("_Metallic3", instance.GetFloat("_Metallic3")); + if(instance.HasProperty("_Smoothness0")) + writer.WriteProperty("_Smoothness0", instance.GetFloat("_Smoothness0")); + if(instance.HasProperty("_Smoothness1")) + writer.WriteProperty("_Smoothness1", instance.GetFloat("_Smoothness1")); + if(instance.HasProperty("_Smoothness2")) + writer.WriteProperty("_Smoothness2", instance.GetFloat("_Smoothness2")); + if(instance.HasProperty("_Smoothness3")) + writer.WriteProperty("_Smoothness3", instance.GetFloat("_Smoothness3")); + if(instance.HasProperty("_TexA")) + writer.WriteProperty("_TexA", instance.GetTexture("_TexA")); + if(instance.HasProperty("_TexA_TextureOffset")) + writer.WriteProperty("_TexA_TextureOffset", instance.GetTextureOffset("_TexA_TextureOffset")); + if(instance.HasProperty("_TexA_TextureScale")) + writer.WriteProperty("_TexA_TextureScale", instance.GetTextureScale("_TexA_TextureScale")); + if(instance.HasProperty("_TexB")) + writer.WriteProperty("_TexB", instance.GetTexture("_TexB")); + if(instance.HasProperty("_TexB_TextureOffset")) + writer.WriteProperty("_TexB_TextureOffset", instance.GetTextureOffset("_TexB_TextureOffset")); + if(instance.HasProperty("_TexB_TextureScale")) + writer.WriteProperty("_TexB_TextureScale", instance.GetTextureScale("_TexB_TextureScale")); + if(instance.HasProperty("_value")) + writer.WriteProperty("_value", instance.GetFloat("_value")); + if(instance.HasProperty("_Texel")) + writer.WriteProperty("_Texel", instance.GetFloat("_Texel")); + if(instance.HasProperty("_Detail")) + writer.WriteProperty("_Detail", instance.GetTexture("_Detail")); + if(instance.HasProperty("_Detail_TextureOffset")) + writer.WriteProperty("_Detail_TextureOffset", instance.GetTextureOffset("_Detail_TextureOffset")); + if(instance.HasProperty("_Detail_TextureScale")) + writer.WriteProperty("_Detail_TextureScale", instance.GetTextureScale("_Detail_TextureScale")); + if(instance.HasProperty("_HalfOverCutoff")) + writer.WriteProperty("_HalfOverCutoff", instance.GetFloat("_HalfOverCutoff")); + + } + + protected override object ReadUnityObject(ES3Reader reader) + { + var obj = new Material(Shader.Find("Diffuse")); + ReadUnityObject(reader, obj); + return obj; + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Material)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "name": + instance.name = reader.Read(ES3Type_string.Instance); + break; + case "shader": + instance.shader = reader.Read(ES3Type_Shader.Instance); + break; + case "renderQueue": + instance.renderQueue = reader.Read(ES3Type_int.Instance); + break; + case "shaderKeywords": + instance.shaderKeywords = reader.Read(); + break; + case "globalIlluminationFlags": + instance.globalIlluminationFlags = reader.Read(); + break; + case "_Color": + instance.SetColor("_Color", reader.Read()); + break; + case "_SpecColor": + instance.SetColor("_SpecColor", reader.Read()); + break; + case "_Shininess": + instance.SetFloat("_Shininess", reader.Read()); + break; + case "_MainTex": + instance.SetTexture("_MainTex", reader.Read()); + break; + case "_MainTex_TextureOffset": + instance.SetTextureOffset("_MainTex_TextureOffset", reader.Read()); + break; + case "_MainTex_TextureScale": + instance.SetTextureScale("_MainTex_TextureScale", reader.Read()); + break; + case "_Illum": + instance.SetTexture("_Illum", reader.Read()); + break; + case "_Illum_TextureOffset": + instance.SetTextureOffset("_Illum_TextureOffset", reader.Read()); + break; + case "_Illum_TextureScale": + instance.SetTextureScale("_Illum_TextureScale", reader.Read()); + break; + case "_BumpMap": + instance.SetTexture("_BumpMap", reader.Read()); + break; + case "_BumpMap_TextureOffset": + instance.SetTextureOffset("_BumpMap_TextureOffset", reader.Read()); + break; + case "_BumpMap_TextureScale": + instance.SetTextureScale("_BumpMap_TextureScale", reader.Read()); + break; + case "_Emission": + instance.SetFloat("_Emission", reader.Read()); + break; + case "_Specular": + instance.SetColor("_Specular", reader.Read()); + break; + case "_MainBump": + instance.SetTexture("_MainBump", reader.Read()); + break; + case "_MainBump_TextureOffset": + instance.SetTextureOffset("_MainBump_TextureOffset", reader.Read()); + break; + case "_MainBump_TextureScale": + instance.SetTextureScale("_MainBump_TextureScale", reader.Read()); + break; + case "_Mask": + instance.SetTexture("_Mask", reader.Read()); + break; + case "_Mask_TextureOffset": + instance.SetTextureOffset("_Mask_TextureOffset", reader.Read()); + break; + case "_Mask_TextureScale": + instance.SetTextureScale("_Mask_TextureScale", reader.Read()); + break; + case "_Focus": + instance.SetFloat("_Focus", reader.Read()); + break; + case "_StencilComp": + instance.SetFloat("_StencilComp", reader.Read()); + break; + case "_Stencil": + instance.SetFloat("_Stencil", reader.Read()); + break; + case "_StencilOp": + instance.SetFloat("_StencilOp", reader.Read()); + break; + case "_StencilWriteMask": + instance.SetFloat("_StencilWriteMask", reader.Read()); + break; + case "_StencilReadMask": + instance.SetFloat("_StencilReadMask", reader.Read()); + break; + case "_ColorMask": + instance.SetFloat("_ColorMask", reader.Read()); + break; + case "_UseUIAlphaClip": + instance.SetFloat("_UseUIAlphaClip", reader.Read()); + break; + case "_SrcBlend": + instance.SetFloat("_SrcBlend", reader.Read()); + break; + case "_DstBlend": + instance.SetFloat("_DstBlend", reader.Read()); + break; + case "_ReflectColor": + instance.SetColor("_ReflectColor", reader.Read()); + break; + case "_Cube": + instance.SetTexture("_Cube", reader.Read()); + break; + case "_Cube_TextureOffset": + instance.SetTextureOffset("_Cube_TextureOffset", reader.Read()); + break; + case "_Cube_TextureScale": + instance.SetTextureScale("_Cube_TextureScale", reader.Read()); + break; + case "_Tint": + instance.SetColor("_Tint", reader.Read()); + break; + case "_Exposure": + instance.SetFloat("_Exposure", reader.Read()); + break; + case "_Rotation": + instance.SetFloat("_Rotation", reader.Read()); + break; + case "_Tex": + instance.SetTexture("_Tex", reader.Read()); + break; + case "_Tex_TextureOffset": + instance.SetTextureOffset("_Tex_TextureOffset", reader.Read()); + break; + case "_Tex_TextureScale": + instance.SetTextureScale("_Tex_TextureScale", reader.Read()); + break; + case "_MainTex_Scale": + instance.SetTextureScale("_MainTex", reader.Read()); + break; + case "_Control": + instance.SetTexture("_Control", reader.Read()); + break; + case "_Control_TextureOffset": + instance.SetTextureOffset("_Control_TextureOffset", reader.Read()); + break; + case "_Control_TextureScale": + instance.SetTextureScale("_Control_TextureScale", reader.Read()); + break; + case "_Splat3": + instance.SetTexture("_Splat3", reader.Read()); + break; + case "_Splat3_TextureOffset": + instance.SetTextureOffset("_Splat3_TextureOffset", reader.Read()); + break; + case "_Splat3_TextureScale": + instance.SetTextureScale("_Splat3_TextureScale", reader.Read()); + break; + case "_Splat2": + instance.SetTexture("_Splat2", reader.Read()); + break; + case "_Splat2_TextureOffset": + instance.SetTextureOffset("_Splat2_TextureOffset", reader.Read()); + break; + case "_Splat2_TextureScale": + instance.SetTextureScale("_Splat2_TextureScale", reader.Read()); + break; + case "_Splat1": + instance.SetTexture("_Splat1", reader.Read()); + break; + case "_Splat1_TextureOffset": + instance.SetTextureOffset("_Splat1_TextureOffset", reader.Read()); + break; + case "_Splat1_TextureScale": + instance.SetTextureScale("_Splat1_TextureScale", reader.Read()); + break; + case "_Splat0": + instance.SetTexture("_Splat0", reader.Read()); + break; + case "_Splat0_TextureOffset": + instance.SetTextureOffset("_Splat0_TextureOffset", reader.Read()); + break; + case "_Splat0_TextureScale": + instance.SetTextureScale("_Splat0_TextureScale", reader.Read()); + break; + case "_Normal3": + instance.SetTexture("_Normal3", reader.Read()); + break; + case "_Normal3_TextureOffset": + instance.SetTextureOffset("_Normal3_TextureOffset", reader.Read()); + break; + case "_Normal3_TextureScale": + instance.SetTextureScale("_Normal3_TextureScale", reader.Read()); + break; + case "_Normal2": + instance.SetTexture("_Normal2", reader.Read()); + break; + case "_Normal2_TextureOffset": + instance.SetTextureOffset("_Normal2_TextureOffset", reader.Read()); + break; + case "_Normal2_TextureScale": + instance.SetTextureScale("_Normal2_TextureScale", reader.Read()); + break; + case "_Normal1": + instance.SetTexture("_Normal1", reader.Read()); + break; + case "_Normal1_TextureOffset": + instance.SetTextureOffset("_Normal1_TextureOffset", reader.Read()); + break; + case "_Normal1_TextureScale": + instance.SetTextureScale("_Normal1_TextureScale", reader.Read()); + break; + case "_Normal0": + instance.SetTexture("_Normal0", reader.Read()); + break; + case "_Normal0_TextureOffset": + instance.SetTextureOffset("_Normal0_TextureOffset", reader.Read()); + break; + case "_Normal0_TextureScale": + instance.SetTextureScale("_Normal0_TextureScale", reader.Read()); + break; + case "_Cutoff": + instance.SetFloat("_Cutoff", reader.Read()); + break; + case "_BaseLight": + instance.SetFloat("_BaseLight", reader.Read()); + break; + case "_AO": + instance.SetFloat("_AO", reader.Read()); + break; + case "_Occlusion": + instance.SetFloat("_Occlusion", reader.Read()); + break; + case "_TreeInstanceColor": + instance.SetVector("_TreeInstanceColor", reader.Read()); + break; + case "_TreeInstanceScale": + instance.SetVector("_TreeInstanceScale", reader.Read()); + break; + case "_SquashAmount": + instance.SetFloat("_SquashAmount", reader.Read()); + break; + case "_TranslucencyColor": + instance.SetColor("_TranslucencyColor", reader.Read()); + break; + case "_TranslucencyViewDependency": + instance.SetFloat("_TranslucencyViewDependency", reader.Read()); + break; + case "_ShadowStrength": + instance.SetFloat("_ShadowStrength", reader.Read()); + break; + case "_ShadowOffsetScale": + instance.SetFloat("_ShadowOffsetScale", reader.Read()); + break; + case "_ShadowTex": + instance.SetTexture("_ShadowTex", reader.Read()); + break; + case "_ShadowTex_TextureOffset": + instance.SetTextureOffset("_ShadowTex_TextureOffset", reader.Read()); + break; + case "_ShadowTex_TextureScale": + instance.SetTextureScale("_ShadowTex_TextureScale", reader.Read()); + break; + case "_BumpSpecMap": + instance.SetTexture("_BumpSpecMap", reader.Read()); + break; + case "_BumpSpecMap_TextureOffset": + instance.SetTextureOffset("_BumpSpecMap_TextureOffset", reader.Read()); + break; + case "_BumpSpecMap_TextureScale": + instance.SetTextureScale("_BumpSpecMap_TextureScale", reader.Read()); + break; + case "_TranslucencyMap": + instance.SetTexture("_TranslucencyMap", reader.Read()); + break; + case "_TranslucencyMap_TextureOffset": + instance.SetTextureOffset("_TranslucencyMap_TextureOffset", reader.Read()); + break; + case "_TranslucencyMap_TextureScale": + instance.SetTextureScale("_TranslucencyMap_TextureScale", reader.Read()); + break; + case "_LightMap": + instance.SetTexture("_LightMap", reader.Read()); + break; + case "_LightMap_TextureOffset": + instance.SetTextureOffset("_LightMap_TextureOffset", reader.Read()); + break; + case "_LightMap_TextureScale": + instance.SetTextureScale("_LightMap_TextureScale", reader.Read()); + break; + case "_DetailTex": + instance.SetTexture("_DetailTex", reader.Read()); + break; + case "_DetailTex_TextureOffset": + instance.SetTextureOffset("_DetailTex_TextureOffset", reader.Read()); + break; + case "_DetailTex_TextureScale": + instance.SetTextureScale("_DetailTex_TextureScale", reader.Read()); + break; + case "_DetailBump": + instance.SetTexture("_DetailBump", reader.Read()); + break; + case "_DetailBump_TextureOffset": + instance.SetTextureOffset("_DetailBump_TextureOffset", reader.Read()); + break; + case "_DetailBump_TextureScale": + instance.SetTextureScale("_DetailBump_TextureScale", reader.Read()); + break; + case "_Strength": + instance.SetFloat("_Strength", reader.Read()); + break; + case "_InvFade": + instance.SetFloat("_InvFade", reader.Read()); + break; + case "_EmisColor": + instance.SetColor("_EmisColor", reader.Read()); + break; + case "_Parallax": + instance.SetFloat("_Parallax", reader.Read()); + break; + case "_ParallaxMap": + instance.SetTexture("_ParallaxMap", reader.Read()); + break; + case "_ParallaxMap_TextureOffset": + instance.SetTextureOffset("_ParallaxMap_TextureOffset", reader.Read()); + break; + case "_ParallaxMap_TextureScale": + instance.SetTextureScale("_ParallaxMap_TextureScale", reader.Read()); + break; + case "_DecalTex": + instance.SetTexture("_DecalTex", reader.Read()); + break; + case "_DecalTex_TextureOffset": + instance.SetTextureOffset("_DecalTex_TextureOffset", reader.Read()); + break; + case "_DecalTex_TextureScale": + instance.SetTextureScale("_DecalTex_TextureScale", reader.Read()); + break; + case "_GlossMap": + instance.SetTexture("_GlossMap", reader.Read()); + break; + case "_GlossMap_TextureOffset": + instance.SetTextureOffset("_GlossMap_TextureOffset", reader.Read()); + break; + case "_GlossMap_TextureScale": + instance.SetTextureScale("_GlossMap_TextureScale", reader.Read()); + break; + case "_ShadowOffset": + instance.SetTexture("_ShadowOffset", reader.Read()); + break; + case "_ShadowOffset_TextureOffset": + instance.SetTextureOffset("_ShadowOffset_TextureOffset", reader.Read()); + break; + case "_ShadowOffset_TextureScale": + instance.SetTextureScale("_ShadowOffset_TextureScale", reader.Read()); + break; + case "_SunDisk": + instance.SetFloat("_SunDisk", reader.Read()); + break; + case "_SunSize": + instance.SetFloat("_SunSize", reader.Read()); + break; + case "_AtmosphereThickness": + instance.SetFloat("_AtmosphereThickness", reader.Read()); + break; + case "_SkyTint": + instance.SetColor("_SkyTint", reader.Read()); + break; + case "_GroundColor": + instance.SetColor("_GroundColor", reader.Read()); + break; + case "_WireThickness": + instance.SetFloat("_WireThickness", reader.Read()); + break; + case "_ZWrite": + instance.SetFloat("_ZWrite", reader.Read()); + break; + case "_ZTest": + instance.SetFloat("_ZTest", reader.Read()); + break; + case "_Cull": + instance.SetFloat("_Cull", reader.Read()); + break; + case "_ZBias": + instance.SetFloat("_ZBias", reader.Read()); + break; + case "_HueVariation": + instance.SetColor("_HueVariation", reader.Read()); + break; + case "_WindQuality": + instance.SetFloat("_WindQuality", reader.Read()); + break; + case "_DetailMask": + instance.SetTexture("_DetailMask", reader.Read()); + break; + case "_DetailMask_TextureOffset": + instance.SetTextureOffset("_DetailMask_TextureOffset", reader.Read()); + break; + case "_DetailMask_TextureScale": + instance.SetTextureScale("_DetailMask_TextureScale", reader.Read()); + break; + case "_MetallicTex": + instance.SetTexture("_MetallicTex", reader.Read()); + break; + case "_MetallicTex_TextureOffset": + instance.SetTextureOffset("_MetallicTex_TextureOffset", reader.Read()); + break; + case "_MetallicTex_TextureScale": + instance.SetTextureScale("_MetallicTex_TextureScale", reader.Read()); + break; + case "_Glossiness": + instance.SetFloat("_Glossiness", reader.Read()); + break; + case "_GlossMapScale": + instance.SetFloat("_GlossMapScale", reader.Read()); + break; + case "_SmoothnessTextureChannel": + instance.SetFloat("_SmoothnessTextureChannel", reader.Read()); + break; + case "_Metallic": + instance.SetFloat("_Metallic", reader.Read()); + break; + case "_MetallicGlossMap": + instance.SetTexture("_MetallicGlossMap", reader.Read()); + break; + case "_MetallicGlossMap_TextureOffset": + instance.SetTextureOffset("_MetallicGlossMap_TextureOffset", reader.Read()); + break; + case "_MetallicGlossMap_TextureScale": + instance.SetTextureScale("_MetallicGlossMap_TextureScale", reader.Read()); + break; + case "_SpecularHighlights": + instance.SetFloat("_SpecularHighlights", reader.Read()); + break; + case "_GlossyReflections": + instance.SetFloat("_GlossyReflections", reader.Read()); + break; + case "_BumpScale": + instance.SetFloat("_BumpScale", reader.Read()); + break; + case "_OcclusionStrength": + instance.SetFloat("_OcclusionStrength", reader.Read()); + break; + case "_OcclusionMap": + instance.SetTexture("_OcclusionMap", reader.Read()); + break; + case "_OcclusionMap_TextureOffset": + instance.SetTextureOffset("_OcclusionMap_TextureOffset", reader.Read()); + break; + case "_OcclusionMap_TextureScale": + instance.SetTextureScale("_OcclusionMap_TextureScale", reader.Read()); + break; + case "_EmissionColor": + instance.SetColor("_EmissionColor", reader.Read()); + break; + case "_EmissionMap": + instance.SetTexture("_EmissionMap", reader.Read()); + break; + case "_EmissionMap_TextureOffset": + instance.SetTextureOffset("_EmissionMap_TextureOffset", reader.Read()); + break; + case "_EmissionMap_TextureScale": + instance.SetTextureScale("_EmissionMap_TextureScale", reader.Read()); + break; + case "_DetailAlbedoMap": + instance.SetTexture("_DetailAlbedoMap", reader.Read()); + break; + case "_DetailAlbedoMap_TextureOffset": + instance.SetTextureOffset("_DetailAlbedoMap_TextureOffset", reader.Read()); + break; + case "_DetailAlbedoMap_TextureScale": + instance.SetTextureScale("_DetailAlbedoMap_TextureScale", reader.Read()); + break; + case "_DetailNormalMapScale": + instance.SetFloat("_DetailNormalMapScale", reader.Read()); + break; + case "_DetailNormalMap": + instance.SetTexture("_DetailNormalMap", reader.Read()); + break; + case "_DetailNormalMap_TextureOffset": + instance.SetTextureOffset("_DetailNormalMap_TextureOffset", reader.Read()); + break; + case "_DetailNormalMap_TextureScale": + instance.SetTextureScale("_DetailNormalMap_TextureScale", reader.Read()); + break; + case "_UVSec": + instance.SetFloat("_UVSec", reader.Read()); + break; + case "_Mode": + instance.SetFloat("_Mode", reader.Read()); + break; + case "_TintColor": + instance.SetColor("_TintColor", reader.Read()); + break; + case "_WavingTint": + instance.SetColor("_WavingTint", reader.Read()); + break; + case "_WaveAndDistance": + instance.SetVector("_WaveAndDistance", reader.Read()); + break; + case "_LightTexture0": + instance.SetTexture("_LightTexture0", reader.Read()); + break; + case "_LightTexture0_TextureOffset": + instance.SetTextureOffset("_LightTexture0_TextureOffset", reader.Read()); + break; + case "_LightTexture0_TextureScale": + instance.SetTextureScale("_LightTexture0_TextureScale", reader.Read()); + break; + case "_LightTextureB0": + instance.SetTexture("_LightTextureB0", reader.Read()); + break; + case "_LightTextureB0_TextureOffset": + instance.SetTextureOffset("_LightTextureB0_TextureOffset", reader.Read()); + break; + case "_LightTextureB0_TextureScale": + instance.SetTextureScale("_LightTextureB0_TextureScale", reader.Read()); + break; + case "_ShadowMapTexture": + instance.SetTexture("_ShadowMapTexture", reader.Read()); + break; + case "_ShadowMapTexture_TextureOffset": + instance.SetTextureOffset("_ShadowMapTexture_TextureOffset", reader.Read()); + break; + case "_ShadowMapTexture_TextureScale": + instance.SetTextureScale("_ShadowMapTexture_TextureScale", reader.Read()); + break; + case "_SecondTex": + instance.SetTexture("_SecondTex", reader.Read()); + break; + case "_SecondTex_TextureOffset": + instance.SetTextureOffset("_SecondTex_TextureOffset", reader.Read()); + break; + case "_SecondTex_TextureScale": + instance.SetTextureScale("_SecondTex_TextureScale", reader.Read()); + break; + case "_ThirdTex": + instance.SetTexture("_ThirdTex", reader.Read()); + break; + case "_ThirdTex_TextureOffset": + instance.SetTextureOffset("_ThirdTex_TextureOffset", reader.Read()); + break; + case "_ThirdTex_TextureScale": + instance.SetTextureScale("_ThirdTex_TextureScale", reader.Read()); + break; + case "PixelSnap": + instance.SetFloat("PixelSnap", reader.Read()); + break; + case "_RendererColor": + instance.SetColor("_RendererColor", reader.Read()); + break; + case "_Flip": + instance.SetVector("_Flip", reader.Read()); + break; + case "_AlphaTex": + instance.SetTexture("_AlphaTex", reader.Read()); + break; + case "_AlphaTex_TextureOffset": + instance.SetTextureOffset("_AlphaTex_TextureOffset", reader.Read()); + break; + case "_AlphaTex_TextureScale": + instance.SetTextureScale("_AlphaTex_TextureScale", reader.Read()); + break; + case "_EnableExternalAlpha": + instance.SetFloat("_EnableExternalAlpha", reader.Read()); + break; + case "_Level": + instance.SetFloat("_Level", reader.Read()); + break; + case "_SpecGlossMap": + instance.SetTexture("_SpecGlossMap", reader.Read()); + break; + case "_SpecGlossMap_TextureOffset": + instance.SetTextureOffset("_SpecGlossMap_TextureOffset", reader.Read()); + break; + case "_SpecGlossMap_TextureScale": + instance.SetTextureScale("_SpecGlossMap_TextureScale", reader.Read()); + break; + case "_FrontTex": + instance.SetTexture("_FrontTex", reader.Read()); + break; + case "_FrontTex_TextureOffset": + instance.SetTextureOffset("_FrontTex_TextureOffset", reader.Read()); + break; + case "_FrontTex_TextureScale": + instance.SetTextureScale("_FrontTex_TextureScale", reader.Read()); + break; + case "_BackTex": + instance.SetTexture("_BackTex", reader.Read()); + break; + case "_BackTex_TextureOffset": + instance.SetTextureOffset("_BackTex_TextureOffset", reader.Read()); + break; + case "_BackTex_TextureScale": + instance.SetTextureScale("_BackTex_TextureScale", reader.Read()); + break; + case "_LeftTex": + instance.SetTexture("_LeftTex", reader.Read()); + break; + case "_LeftTex_TextureOffset": + instance.SetTextureOffset("_LeftTex_TextureOffset", reader.Read()); + break; + case "_LeftTex_TextureScale": + instance.SetTextureScale("_LeftTex_TextureScale", reader.Read()); + break; + case "_RightTex": + instance.SetTexture("_RightTex", reader.Read()); + break; + case "_RightTex_TextureOffset": + instance.SetTextureOffset("_RightTex_TextureOffset", reader.Read()); + break; + case "_RightTex_TextureScale": + instance.SetTextureScale("_RightTex_TextureScale", reader.Read()); + break; + case "_UpTex": + instance.SetTexture("_UpTex", reader.Read()); + break; + case "_UpTex_TextureOffset": + instance.SetTextureOffset("_UpTex_TextureOffset", reader.Read()); + break; + case "_UpTex_TextureScale": + instance.SetTextureScale("_UpTex_TextureScale", reader.Read()); + break; + case "_DownTex": + instance.SetTexture("_DownTex", reader.Read()); + break; + case "_DownTex_TextureOffset": + instance.SetTextureOffset("_DownTex_TextureOffset", reader.Read()); + break; + case "_DownTex_TextureScale": + instance.SetTextureScale("_DownTex_TextureScale", reader.Read()); + break; + case "_Metallic0": + instance.SetFloat("_Metallic0", reader.Read()); + break; + case "_Metallic1": + instance.SetFloat("_Metallic1", reader.Read()); + break; + case "_Metallic2": + instance.SetFloat("_Metallic2", reader.Read()); + break; + case "_Metallic3": + instance.SetFloat("_Metallic3", reader.Read()); + break; + case "_Smoothness0": + instance.SetFloat("_Smoothness0", reader.Read()); + break; + case "_Smoothness1": + instance.SetFloat("_Smoothness1", reader.Read()); + break; + case "_Smoothness2": + instance.SetFloat("_Smoothness2", reader.Read()); + break; + case "_Smoothness3": + instance.SetFloat("_Smoothness3", reader.Read()); + break; + case "_TexA": + instance.SetTexture("_TexA", reader.Read()); + break; + case "_TexA_TextureOffset": + instance.SetTextureOffset("_TexA_TextureOffset", reader.Read()); + break; + case "_TexA_TextureScale": + instance.SetTextureScale("_TexA_TextureScale", reader.Read()); + break; + case "_TexB": + instance.SetTexture("_TexB", reader.Read()); + break; + case "_TexB_TextureOffset": + instance.SetTextureOffset("_TexB_TextureOffset", reader.Read()); + break; + case "_TexB_TextureScale": + instance.SetTextureScale("_TexB_TextureScale", reader.Read()); + break; + case "_value": + instance.SetFloat("_value", reader.Read()); + break; + case "_Texel": + instance.SetFloat("_Texel", reader.Read()); + break; + case "_Detail": + instance.SetTexture("_Detail", reader.Read()); + break; + case "_Detail_TextureOffset": + instance.SetTextureOffset("_Detail_TextureOffset", reader.Read()); + break; + case "_Detail_TextureScale": + instance.SetTextureScale("_Detail_TextureScale", reader.Read()); + break; + case "_HalfOverCutoff": + instance.SetFloat("_HalfOverCutoff", reader.Read()); + break; + + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_MaterialArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_MaterialArray() : base(typeof(Material[]), ES3Type_Material.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs.meta new file mode 100644 index 00000000..0240dd42 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Material.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e2fe9704b49ad41cbb997e2b68befc6e +timeCreated: 1519132298 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs new file mode 100644 index 00000000..ca67ca11 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs @@ -0,0 +1,47 @@ +using System; +using UnityEngine; +using System.Collections.Generic; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("col0", "col1", "col2", "col3")] + public class ES3Type_Matrix4x4 : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Matrix4x4() : base(typeof(Matrix4x4)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Matrix4x4 casted = (Matrix4x4)obj; + writer.WriteProperty("col0", casted.GetColumn(0), ES3Type_Vector4.Instance); + writer.WriteProperty("col1", casted.GetColumn(1), ES3Type_Vector4.Instance); + writer.WriteProperty("col2", casted.GetColumn(2), ES3Type_Vector4.Instance); + writer.WriteProperty("col3", casted.GetColumn(3), ES3Type_Vector4.Instance); + } + + public override object Read(ES3Reader reader) + { + var matrix = new Matrix4x4(); + matrix.SetColumn(0, reader.ReadProperty(ES3Type_Vector4.Instance)); + matrix.SetColumn(1, reader.ReadProperty(ES3Type_Vector4.Instance)); + matrix.SetColumn(2, reader.ReadProperty(ES3Type_Vector4.Instance)); + matrix.SetColumn(3, reader.ReadProperty(ES3Type_Vector4.Instance)); + return matrix; + } + } + + public class ES3Type_Matrix4x4Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Matrix4x4Array() : base(typeof(Matrix4x4[]), ES3Type_Matrix4x4.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs.meta new file mode 100644 index 00000000..ee057a43 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Matrix4x4.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b08ac351ee185470bb1ccb5150c4082f +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs new file mode 100644 index 00000000..2bd50086 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs @@ -0,0 +1,127 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("bounds", "subMeshCount", "boneWeights", "bindposes", "vertices", "normals", "tangents", "uv", "uv2", "uv3", "uv4", "colors32", "triangles", "subMeshes")] + public class ES3Type_Mesh : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Mesh() : base(typeof(UnityEngine.Mesh)) + { + Instance = this; + } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Mesh)obj; + + if(!instance.isReadable) + { + ES3Internal.ES3Debug.LogWarning("Easy Save cannot save the vertices for this Mesh because it is not marked as readable, so it will be stored by reference. To save the vertex data for this Mesh, check the 'Read/Write Enabled' checkbox in its Import Settings.", instance); + return; + } + + #if UNITY_2017_3 + writer.WriteProperty("indexFormat", instance.indexFormat); + #endif + writer.WriteProperty("vertices", instance.vertices, ES3Type_Vector3Array.Instance); + writer.WriteProperty("triangles", instance.triangles, ES3Type_intArray.Instance); + writer.WriteProperty("bounds", instance.bounds, ES3Type_Bounds.Instance); + writer.WriteProperty("boneWeights", instance.boneWeights, ES3Type_BoneWeightArray.Instance); + writer.WriteProperty("bindposes", instance.bindposes, ES3Type_Matrix4x4Array.Instance); + writer.WriteProperty("normals", instance.normals, ES3Type_Vector3Array.Instance); + writer.WriteProperty("tangents", instance.tangents, ES3Type_Vector4Array.Instance); + writer.WriteProperty("uv", instance.uv, ES3Type_Vector2Array.Instance); + writer.WriteProperty("uv2", instance.uv2, ES3Type_Vector2Array.Instance); + writer.WriteProperty("uv3", instance.uv3, ES3Type_Vector2Array.Instance); + writer.WriteProperty("uv4", instance.uv4, ES3Type_Vector2Array.Instance); + writer.WriteProperty("colors32", instance.colors32, ES3Type_Color32Array.Instance); + writer.WriteProperty("subMeshCount", instance.subMeshCount, ES3Type_int.Instance); + for(int i=0; i(ES3Reader reader) + { + var obj = new Mesh(); + ReadUnityObject(reader, obj); + return obj; + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Mesh)obj; + if (instance == null) + return; + + if (!instance.isReadable) + ES3Internal.ES3Debug.LogWarning("Easy Save cannot load the vertices for this Mesh because it is not marked as readable, so it will be loaded by reference. To load the vertex data for this Mesh, check the 'Read/Write Enabled' checkbox in its Import Settings.", instance); + + foreach (string propertyName in reader.Properties) + { + // If this Mesh isn't readable, we should skip past all of its properties. + if (!instance.isReadable) + { + reader.Skip(); + continue; + } + + switch (propertyName) + { + #if UNITY_2017_3 + case "indexFormat": + instance.indexFormat = reader.Read(); + break; + #endif + case "bounds": + instance.bounds = reader.Read(ES3Type_Bounds.Instance); + break; + case "boneWeights": + instance.boneWeights = reader.Read(ES3Type_BoneWeightArray.Instance); + break; + case "bindposes": + instance.bindposes = reader.Read(ES3Type_Matrix4x4Array.Instance); + break; + case "vertices": + instance.vertices = reader.Read(ES3Type_Vector3Array.Instance); + break; + case "normals": + instance.normals = reader.Read(ES3Type_Vector3Array.Instance); + break; + case "tangents": + instance.tangents = reader.Read(ES3Type_Vector4Array.Instance); + break; + case "uv": + instance.uv = reader.Read(ES3Type_Vector2Array.Instance); + break; + case "uv2": + instance.uv2 = reader.Read(ES3Type_Vector2Array.Instance); + break; + case "uv3": + instance.uv3 = reader.Read(ES3Type_Vector2Array.Instance); + break; + case "uv4": + instance.uv4 = reader.Read(ES3Type_Vector2Array.Instance); + break; + case "colors32": + instance.colors32 = reader.Read(ES3Type_Color32Array.Instance); + break; + case "triangles": + instance.triangles = reader.Read(ES3Type_intArray.Instance); + break; + case "subMeshCount": + instance.subMeshCount = reader.Read(ES3Type_int.Instance); + for(int i=0; i(ES3Type_intArray.Instance), i); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs.meta new file mode 100644 index 00000000..d4f2333b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Mesh.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e39bdb3d7bcae4f1aa682cbc9ff72ce7 +timeCreated: 1519132298 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs new file mode 100644 index 00000000..3d4b54fc --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs @@ -0,0 +1,114 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("mode", "curveMultiplier", "curveMax", "curveMin", "constantMax", "constantMin", "constant", "curve")] + public class ES3Type_MinMaxCurve : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_MinMaxCurve() : base(typeof(UnityEngine.ParticleSystem.MinMaxCurve)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.MinMaxCurve)obj; + + writer.WriteProperty("mode", instance.mode); + writer.WriteProperty("curveMultiplier", instance.curveMultiplier, ES3Type_float.Instance); + writer.WriteProperty("curveMax", instance.curveMax, ES3Type_AnimationCurve.Instance); + writer.WriteProperty("curveMin", instance.curveMin, ES3Type_AnimationCurve.Instance); + writer.WriteProperty("constantMax", instance.constantMax, ES3Type_float.Instance); + writer.WriteProperty("constantMin", instance.constantMin, ES3Type_float.Instance); + writer.WriteProperty("constant", instance.constant, ES3Type_float.Instance); + writer.WriteProperty("curve", instance.curve, ES3Type_AnimationCurve.Instance); + } + + [UnityEngine.Scripting.Preserve] + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.MinMaxCurve(); + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "mode": + instance.mode = reader.Read(); + break; + case "curveMultiplier": + instance.curveMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "curveMax": + instance.curveMax = reader.Read(ES3Type_AnimationCurve.Instance); + break; + case "curveMin": + instance.curveMin = reader.Read(ES3Type_AnimationCurve.Instance); + break; + case "constantMax": + instance.constantMax = reader.Read(ES3Type_float.Instance); + break; + case "constantMin": + instance.constantMin = reader.Read(ES3Type_float.Instance); + break; + case "constant": + instance.constant = reader.Read(ES3Type_float.Instance); + break; + case "curve": + instance.curve = reader.Read(ES3Type_AnimationCurve.Instance); + break; + default: + reader.Skip(); + break; + } + } + return instance; + } + + [UnityEngine.Scripting.Preserve] + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.MinMaxCurve)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "mode": + instance.mode = reader.Read(); + break; + case "curveMultiplier": + instance.curveMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "curveMax": + instance.curveMax = reader.Read(ES3Type_AnimationCurve.Instance); + break; + case "curveMin": + instance.curveMin = reader.Read(ES3Type_AnimationCurve.Instance); + break; + case "constantMax": + instance.constantMax = reader.Read(ES3Type_float.Instance); + break; + case "constantMin": + instance.constantMin = reader.Read(ES3Type_float.Instance); + break; + case "constant": + instance.constant = reader.Read(ES3Type_float.Instance); + break; + case "curve": + instance.curve = reader.Read(ES3Type_AnimationCurve.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs.meta new file mode 100644 index 00000000..6c43b9e5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxCurve.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b63607ddb964c4897880a99d41c70efd +timeCreated: 1519132294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs new file mode 100644 index 00000000..bc188d97 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs @@ -0,0 +1,68 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("mode", "gradientMax", "gradientMin", "colorMax", "colorMin", "color", "gradient")] + public class ES3Type_MinMaxGradient : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_MinMaxGradient() : base(typeof(UnityEngine.ParticleSystem.MinMaxGradient)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.MinMaxGradient)obj; + + writer.WriteProperty("mode", instance.mode); + writer.WriteProperty("gradientMax", instance.gradientMax, ES3Type_Gradient.Instance); + writer.WriteProperty("gradientMin", instance.gradientMin, ES3Type_Gradient.Instance); + writer.WriteProperty("colorMax", instance.colorMax, ES3Type_Color.Instance); + writer.WriteProperty("colorMin", instance.colorMin, ES3Type_Color.Instance); + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("gradient", instance.gradient, ES3Type_Gradient.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.MinMaxGradient(); + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "mode": + instance.mode = reader.Read(); + break; + case "gradientMax": + instance.gradientMax = reader.Read(ES3Type_Gradient.Instance); + break; + case "gradientMin": + instance.gradientMin = reader.Read(ES3Type_Gradient.Instance); + break; + case "colorMax": + instance.colorMax = reader.Read(ES3Type_Color.Instance); + break; + case "colorMin": + instance.colorMin = reader.Read(ES3Type_Color.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_Color.Instance); + break; + case "gradient": + instance.gradient = reader.Read(ES3Type_Gradient.Instance); + break; + default: + reader.Skip(); + break; + } + } + return instance; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs.meta new file mode 100644 index 00000000..72fe4964 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_MinMaxGradient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c5b12866f2f984f6a822a127d5be1f9c +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs new file mode 100644 index 00000000..3d1fb716 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs @@ -0,0 +1,154 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "separateAxes", "strength", "strengthMultiplier", "strengthX", "strengthXMultiplier", "strengthY", "strengthYMultiplier", "strengthZ", "strengthZMultiplier", "frequency", "damping", "octaveCount", "octaveMultiplier", "octaveScale", "quality", "scrollSpeed", "scrollSpeedMultiplier", "remapEnabled", "remap", "remapMultiplier", "remapX", "remapXMultiplier", "remapY", "remapYMultiplier", "remapZ", "remapZMultiplier")] + public class ES3Type_NoiseModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_NoiseModule() : base(typeof(UnityEngine.ParticleSystem.NoiseModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.NoiseModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + writer.WriteProperty("strength", instance.strength, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("strengthMultiplier", instance.strengthMultiplier, ES3Type_float.Instance); + writer.WriteProperty("strengthX", instance.strengthX, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("strengthXMultiplier", instance.strengthXMultiplier, ES3Type_float.Instance); + writer.WriteProperty("strengthY", instance.strengthY, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("strengthYMultiplier", instance.strengthYMultiplier, ES3Type_float.Instance); + writer.WriteProperty("strengthZ", instance.strengthZ, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("strengthZMultiplier", instance.strengthZMultiplier, ES3Type_float.Instance); + writer.WriteProperty("frequency", instance.frequency, ES3Type_float.Instance); + writer.WriteProperty("damping", instance.damping, ES3Type_bool.Instance); + writer.WriteProperty("octaveCount", instance.octaveCount, ES3Type_int.Instance); + writer.WriteProperty("octaveMultiplier", instance.octaveMultiplier, ES3Type_float.Instance); + writer.WriteProperty("octaveScale", instance.octaveScale, ES3Type_float.Instance); + writer.WriteProperty("quality", instance.quality); + writer.WriteProperty("scrollSpeed", instance.scrollSpeed, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("scrollSpeedMultiplier", instance.scrollSpeedMultiplier, ES3Type_float.Instance); + writer.WriteProperty("remapEnabled", instance.remapEnabled, ES3Type_bool.Instance); + writer.WriteProperty("remap", instance.remap, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("remapMultiplier", instance.remapMultiplier, ES3Type_float.Instance); + writer.WriteProperty("remapX", instance.remapX, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("remapXMultiplier", instance.remapXMultiplier, ES3Type_float.Instance); + writer.WriteProperty("remapY", instance.remapY, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("remapYMultiplier", instance.remapYMultiplier, ES3Type_float.Instance); + writer.WriteProperty("remapZ", instance.remapZ, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("remapZMultiplier", instance.remapZMultiplier, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.NoiseModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.NoiseModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + case "strength": + instance.strength = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "strengthMultiplier": + instance.strengthMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "strengthX": + instance.strengthX = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "strengthXMultiplier": + instance.strengthXMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "strengthY": + instance.strengthY = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "strengthYMultiplier": + instance.strengthYMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "strengthZ": + instance.strengthZ = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "strengthZMultiplier": + instance.strengthZMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "frequency": + instance.frequency = reader.Read(ES3Type_float.Instance); + break; + case "damping": + instance.damping = reader.Read(ES3Type_bool.Instance); + break; + case "octaveCount": + instance.octaveCount = reader.Read(ES3Type_int.Instance); + break; + case "octaveMultiplier": + instance.octaveMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "octaveScale": + instance.octaveScale = reader.Read(ES3Type_float.Instance); + break; + case "quality": + instance.quality = reader.Read(); + break; + case "scrollSpeed": + instance.scrollSpeed = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "scrollSpeedMultiplier": + instance.scrollSpeedMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "remapEnabled": + instance.remapEnabled = reader.Read(ES3Type_bool.Instance); + break; + case "remap": + instance.remap = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "remapMultiplier": + instance.remapMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "remapX": + instance.remapX = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "remapXMultiplier": + instance.remapXMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "remapY": + instance.remapY = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "remapYMultiplier": + instance.remapYMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "remapZ": + instance.remapZ = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "remapZMultiplier": + instance.remapZMultiplier = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs.meta new file mode 100644 index 00000000..8c930461 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_NoiseModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95fd95820c7c942ef96f463a52c3d4ae +timeCreated: 1519132291 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs new file mode 100644 index 00000000..ac5ec249 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs @@ -0,0 +1,71 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("dynamicFriction", "staticFriction", "bounciness", "frictionCombine", "bounceCombine")] + public class ES3Type_PhysicMaterial : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_PhysicMaterial() : base(typeof(UnityEngine.PhysicMaterial)){ Instance = this; } + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.PhysicMaterial)obj; + + writer.WriteProperty("dynamicFriction", instance.dynamicFriction, ES3Type_float.Instance); + writer.WriteProperty("staticFriction", instance.staticFriction, ES3Type_float.Instance); + writer.WriteProperty("bounciness", instance.bounciness, ES3Type_float.Instance); + writer.WriteProperty("frictionCombine", instance.frictionCombine); + writer.WriteProperty("bounceCombine", instance.bounceCombine); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.PhysicMaterial)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "dynamicFriction": + instance.dynamicFriction = reader.Read(ES3Type_float.Instance); + break; + case "staticFriction": + instance.staticFriction = reader.Read(ES3Type_float.Instance); + break; + case "bounciness": + instance.bounciness = reader.Read(ES3Type_float.Instance); + break; + case "frictionCombine": + instance.frictionCombine = reader.Read(); + break; + case "bounceCombine": + instance.bounceCombine = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new UnityEngine.PhysicMaterial(); + ReadObject(reader, instance); + return instance; + } + } + + public class ES3Type_PhysicMaterialArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_PhysicMaterialArray() : base(typeof(UnityEngine.PhysicMaterial[]), ES3Type_PhysicMaterial.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs.meta new file mode 100644 index 00000000..bbc3c126 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicMaterial.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4b8d9e47b0dc49f48c834a160b6fe55 +timeCreated: 1519132300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs new file mode 100644 index 00000000..102b25a0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs @@ -0,0 +1,59 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("bounciness", "friction")] + public class ES3Type_PhysicsMaterial2D : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_PhysicsMaterial2D() : base(typeof(UnityEngine.PhysicsMaterial2D)){ Instance = this; } + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.PhysicsMaterial2D)obj; + + writer.WriteProperty("bounciness", instance.bounciness, ES3Type_float.Instance); + writer.WriteProperty("friction", instance.friction, ES3Type_float.Instance); + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.PhysicsMaterial2D)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "bounciness": + instance.bounciness = reader.Read(ES3Type_float.Instance); + break; + case "friction": + instance.friction = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var instance = new UnityEngine.PhysicsMaterial2D(); + ReadObject(reader, instance); + return instance; + } + } + + public class ES3Type_PhysicsMaterial2DArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_PhysicsMaterial2DArray() : base(typeof(UnityEngine.PhysicsMaterial2D[]), ES3Type_PhysicsMaterial2D.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs.meta new file mode 100644 index 00000000..765da0f4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_PhysicsMaterial2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 456568556c632458bb73fffbb1be0c84 +timeCreated: 1519132284 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs new file mode 100644 index 00000000..0f2e2b08 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs @@ -0,0 +1,44 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y", "z", "w")] + public class ES3Type_Quaternion : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Quaternion() : base(typeof(Quaternion)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var casted = (Quaternion)obj; + writer.WriteProperty("x", casted.x, ES3Type_float.Instance); + writer.WriteProperty("y", casted.y, ES3Type_float.Instance); + writer.WriteProperty("z", casted.z, ES3Type_float.Instance); + writer.WriteProperty("w", casted.w, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Quaternion( reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_QuaternionArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_QuaternionArray() : base(typeof(Quaternion[]), ES3Type_Quaternion.Instance) + { + Instance = this; + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs.meta new file mode 100644 index 00000000..bb4c22a3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Quaternion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9975ecdd621d46a285708463dde7816 +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs new file mode 100644 index 00000000..a9222e56 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y", "width", "height")] + public class ES3Type_Rect : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Rect() : base(typeof(UnityEngine.Rect)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Rect)obj; + + writer.WriteProperty("x", instance.x, ES3Type_float.Instance); + writer.WriteProperty("y", instance.y, ES3Type_float.Instance); + writer.WriteProperty("width", instance.width, ES3Type_float.Instance); + writer.WriteProperty("height", instance.height, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Rect(reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs.meta new file mode 100644 index 00000000..1874834c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Rect.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9b9aa6e5759a4a3e857f90a2de74e5f +timeCreated: 1519132297 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs new file mode 100644 index 00000000..3aa738ad --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs @@ -0,0 +1,92 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("anchorMin", "anchorMax", "anchoredPosition", "sizeDelta", "pivot", "offsetMin", "offsetMax", "localPosition", "localRotation", "localScale", "parent", "hideFlags")] + public class ES3Type_RectTransform : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_RectTransform() : base(typeof(UnityEngine.RectTransform)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.RectTransform)obj; + + writer.WriteProperty("anchorMin", instance.anchorMin, ES3Type_Vector2.Instance); + writer.WriteProperty("anchorMax", instance.anchorMax, ES3Type_Vector2.Instance); + writer.WriteProperty("anchoredPosition", instance.anchoredPosition, ES3Type_Vector2.Instance); + writer.WriteProperty("sizeDelta", instance.sizeDelta, ES3Type_Vector2.Instance); + writer.WriteProperty("pivot", instance.pivot, ES3Type_Vector2.Instance); + writer.WriteProperty("offsetMin", instance.offsetMin, ES3Type_Vector2.Instance); + writer.WriteProperty("offsetMax", instance.offsetMax, ES3Type_Vector2.Instance); + writer.WriteProperty("localPosition", instance.localPosition, ES3Type_Vector3.Instance); + writer.WriteProperty("localRotation", instance.localRotation, ES3Type_Quaternion.Instance); + writer.WriteProperty("localScale", instance.localScale, ES3Type_Vector3.Instance); + writer.WritePropertyByRef("parent", instance.parent); + writer.WriteProperty("hideFlags", instance.hideFlags); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + if (obj.GetType() == typeof(UnityEngine.Transform)) + obj = ((Transform)obj).gameObject.AddComponent(); + + var instance = (UnityEngine.RectTransform)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "anchorMin": + instance.anchorMin = reader.Read(ES3Type_Vector2.Instance); + break; + case "anchorMax": + instance.anchorMax = reader.Read(ES3Type_Vector2.Instance); + break; + case "anchoredPosition": + instance.anchoredPosition = reader.Read(ES3Type_Vector2.Instance); + break; + case "sizeDelta": + instance.sizeDelta = reader.Read(ES3Type_Vector2.Instance); + break; + case "pivot": + instance.pivot = reader.Read(ES3Type_Vector2.Instance); + break; + case "offsetMin": + instance.offsetMin = reader.Read(ES3Type_Vector2.Instance); + break; + case "offsetMax": + instance.offsetMax = reader.Read(ES3Type_Vector2.Instance); + break; + case "localPosition": + instance.localPosition = reader.Read(ES3Type_Vector3.Instance); + break; + case "localRotation": + instance.localRotation = reader.Read(ES3Type_Quaternion.Instance); + break; + case "localScale": + instance.localScale = reader.Read(ES3Type_Vector3.Instance); + break; + case "parent": + instance.SetParent(reader.Read(ES3Type_Transform.Instance)); + break; + case "hierarchyCapacity": + instance.hierarchyCapacity = reader.Read(ES3Type_int.Instance); + break; + case "hideFlags": + instance.hideFlags = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs.meta new file mode 100644 index 00000000..2386dc3d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RectTransform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2f7556a7c1bb04cf5979c7e6e65c5e51 +timeCreated: 1519132282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs new file mode 100644 index 00000000..92852673 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs @@ -0,0 +1,169 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("width", "height", "dimension", "graphicsFormat", "useMipMap", "vrUsage", "memorylessMode", "format", "stencilFormat", "autoGenerateMips", "volumeDepth", "antiAliasing", "bindTextureMS", "enableRandomWrite", "useDynamicScale", "isPowerOfTwo", "depth", "descriptor", "masterTextureLimit", "anisotropicFiltering", "wrapMode", "wrapModeU", "wrapModeV", "wrapModeW", "filterMode", "anisoLevel", "mipMapBias", "imageContentsHash", "streamingTextureForceLoadAll", "streamingTextureDiscardUnusedMips", "allowThreadedTextureCreation", "name")] + public class ES3Type_RenderTexture : ES3ObjectType + { + public static ES3Type Instance = null; + + public ES3Type_RenderTexture() : base(typeof(UnityEngine.RenderTexture)) { Instance = this; } + + + protected override void WriteObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.RenderTexture)obj; + + writer.WriteProperty("descriptor", instance.descriptor); + writer.WriteProperty("antiAliasing", instance.antiAliasing, ES3Type_int.Instance); + writer.WriteProperty("isPowerOfTwo", instance.isPowerOfTwo, ES3Type_bool.Instance); + writer.WriteProperty("masterTextureLimit", UnityEngine.RenderTexture.masterTextureLimit, ES3Type_int.Instance); + writer.WriteProperty("anisotropicFiltering", UnityEngine.RenderTexture.anisotropicFiltering); + writer.WriteProperty("wrapMode", instance.wrapMode); + writer.WriteProperty("wrapModeU", instance.wrapModeU); + writer.WriteProperty("wrapModeV", instance.wrapModeV); + writer.WriteProperty("wrapModeW", instance.wrapModeW); + writer.WriteProperty("filterMode", instance.filterMode); + writer.WriteProperty("anisoLevel", instance.anisoLevel, ES3Type_int.Instance); + writer.WriteProperty("mipMapBias", instance.mipMapBias, ES3Type_float.Instance); + +#if UNITY_2020_1_OR_NEWER + writer.WriteProperty("streamingTextureForceLoadAll", UnityEngine.RenderTexture.streamingTextureForceLoadAll, ES3Type_bool.Instance); + writer.WriteProperty("streamingTextureDiscardUnusedMips", UnityEngine.RenderTexture.streamingTextureDiscardUnusedMips, ES3Type_bool.Instance); + writer.WriteProperty("allowThreadedTextureCreation", UnityEngine.RenderTexture.allowThreadedTextureCreation, ES3Type_bool.Instance); +#endif + } + + protected override void ReadObject(ES3Reader reader, object obj) + { + var instance = (UnityEngine.RenderTexture)obj; + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + case "width": + instance.width = reader.Read(ES3Type_int.Instance); + break; + case "height": + instance.height = reader.Read(ES3Type_int.Instance); + break; + case "dimension": + instance.dimension = reader.Read(); + break; + case "useMipMap": + instance.useMipMap = reader.Read(ES3Type_bool.Instance); + break; + case "memorylessMode": + instance.memorylessMode = reader.Read(); + break; + case "format": + instance.format = reader.Read(); + break; + case "autoGenerateMips": + instance.autoGenerateMips = reader.Read(ES3Type_bool.Instance); + break; + case "volumeDepth": + instance.volumeDepth = reader.Read(ES3Type_int.Instance); + break; + case "antiAliasing": + instance.antiAliasing = reader.Read(ES3Type_int.Instance); + break; + case "enableRandomWrite": + instance.enableRandomWrite = reader.Read(ES3Type_bool.Instance); + break; + case "isPowerOfTwo": + instance.isPowerOfTwo = reader.Read(ES3Type_bool.Instance); + break; + case "depth": + instance.depth = reader.Read(ES3Type_int.Instance); + break; + case "descriptor": + instance.descriptor = reader.Read(); + break; + case "masterTextureLimit": + UnityEngine.RenderTexture.masterTextureLimit = reader.Read(ES3Type_int.Instance); + break; + case "anisotropicFiltering": + UnityEngine.RenderTexture.anisotropicFiltering = reader.Read(); + break; + case "wrapMode": + instance.wrapMode = reader.Read(); + break; + case "wrapModeU": + instance.wrapModeU = reader.Read(); + break; + case "wrapModeV": + instance.wrapModeV = reader.Read(); + break; + case "wrapModeW": + instance.wrapModeW = reader.Read(); + break; + case "filterMode": + instance.filterMode = reader.Read(); + break; + case "anisoLevel": + instance.anisoLevel = reader.Read(ES3Type_int.Instance); + break; + case "mipMapBias": + instance.mipMapBias = reader.Read(ES3Type_float.Instance); + break; + case "name": + instance.name = reader.Read(ES3Type_string.Instance); + break; + +#if UNITY_2020_1_OR_NEWER + case "vrUsage": + instance.vrUsage = reader.Read(); + break; + case "graphicsFormat": + instance.graphicsFormat = reader.Read(); + break; + case "stencilFormat": + instance.stencilFormat = reader.Read(); + break; + case "bindTextureMS": + instance.bindTextureMS = reader.Read(ES3Type_bool.Instance); + break; + case "useDynamicScale": + instance.useDynamicScale = reader.Read(ES3Type_bool.Instance); + break; + case "streamingTextureForceLoadAll": + UnityEngine.RenderTexture.streamingTextureForceLoadAll = reader.Read(ES3Type_bool.Instance); + break; + case "streamingTextureDiscardUnusedMips": + UnityEngine.RenderTexture.streamingTextureDiscardUnusedMips = reader.Read(ES3Type_bool.Instance); + break; + case "allowThreadedTextureCreation": + UnityEngine.RenderTexture.allowThreadedTextureCreation = reader.Read(ES3Type_bool.Instance); + break; +#endif + + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadObject(ES3Reader reader) + { + var descriptor = reader.ReadProperty(); + var instance = new UnityEngine.RenderTexture(descriptor); + ReadObject(reader, instance); + return instance; + } + } + + + public class ES3Type_RenderTextureArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_RenderTextureArray() : base(typeof(UnityEngine.RenderTexture[]), ES3Type_RenderTexture.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs.meta new file mode 100644 index 00000000..a0082df4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RenderTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 589b7cd3ec938964197a399aa93bff00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs new file mode 100644 index 00000000..65f1c947 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs @@ -0,0 +1,82 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "x", "xMultiplier", "y", "yMultiplier", "z", "zMultiplier", "separateAxes", "range")] + public class ES3Type_RotationBySpeedModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_RotationBySpeedModule() : base(typeof(UnityEngine.ParticleSystem.RotationBySpeedModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.RotationBySpeedModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + writer.WriteProperty("range", instance.range, ES3Type_Vector2.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.RotationBySpeedModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.RotationBySpeedModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + case "range": + instance.range = reader.Read(ES3Type_Vector2.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs.meta new file mode 100644 index 00000000..1f0bd644 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationBySpeedModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0a7279e70f63d4a2787489257b5e3ea9 +timeCreated: 1519132280 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs new file mode 100644 index 00000000..820e00d1 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs @@ -0,0 +1,78 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "x", "xMultiplier", "y", "yMultiplier", "z", "zMultiplier", "separateAxes")] + public class ES3Type_RotationOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_RotationOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.RotationOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.RotationOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.RotationOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.RotationOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs.meta new file mode 100644 index 00000000..6eeaf0ac --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_RotationOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e54d1e36b07864bc2b7f33a6182d124b +timeCreated: 1519132299 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs new file mode 100644 index 00000000..607bb06d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs @@ -0,0 +1,61 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("name","maximumLOD")] + public class ES3Type_Shader : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Shader() : base(typeof(UnityEngine.Shader)){ Instance = this; } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Shader)obj; + + writer.WriteProperty("name", instance.name, ES3Type_string.Instance); + writer.WriteProperty("maximumLOD", instance.maximumLOD, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + Shader obj = Shader.Find(reader.ReadProperty(ES3Type_string.Instance)); + if(obj == null) + obj = Shader.Find("Diffuse"); + ReadInto(reader, obj); + return obj; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.Shader)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "name": + instance.name = reader.Read(ES3Type_string.Instance); + break; + case "maximumLOD": + instance.maximumLOD = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_ShaderArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_ShaderArray() : base(typeof(UnityEngine.Shader[]), ES3Type_Shader.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs.meta new file mode 100644 index 00000000..c980dbf4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Shader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d42e849fe2364f1b92d805b3fa7f874 +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs new file mode 100644 index 00000000..3a3c0806 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs @@ -0,0 +1,132 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "shapeType", "randomDirectionAmount", "sphericalDirectionAmount", "alignToDirection", "radius", "angle", "length", "box", "meshShapeType", "mesh", "meshRenderer", "skinnedMeshRenderer", "useMeshMaterialIndex", "meshMaterialIndex", "useMeshColors", "normalOffset", "meshScale", "arc")] + public class ES3Type_ShapeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_ShapeModule() : base(typeof(UnityEngine.ParticleSystem.ShapeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.ShapeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("shapeType", instance.shapeType); + writer.WriteProperty("randomDirectionAmount", instance.randomDirectionAmount, ES3Type_float.Instance); + writer.WriteProperty("sphericalDirectionAmount", instance.sphericalDirectionAmount, ES3Type_float.Instance); + writer.WriteProperty("alignToDirection", instance.alignToDirection, ES3Type_bool.Instance); + writer.WriteProperty("radius", instance.radius, ES3Type_float.Instance); + writer.WriteProperty("angle", instance.angle, ES3Type_float.Instance); + writer.WriteProperty("length", instance.length, ES3Type_float.Instance); + #if UNITY_5 + writer.WriteProperty("box", instance.box, ES3Type_Vector3.Instance); + writer.WriteProperty("meshScale", instance.meshScale, ES3Type_float.Instance); + #else + writer.WriteProperty("scale", instance.scale, ES3Type_Vector3.Instance); + #endif + writer.WriteProperty("meshShapeType", instance.meshShapeType); + writer.WritePropertyByRef("mesh", instance.mesh); + writer.WritePropertyByRef("meshRenderer", instance.meshRenderer); + writer.WritePropertyByRef("skinnedMeshRenderer", instance.skinnedMeshRenderer); + writer.WriteProperty("useMeshMaterialIndex", instance.useMeshMaterialIndex, ES3Type_bool.Instance); + writer.WriteProperty("meshMaterialIndex", instance.meshMaterialIndex, ES3Type_int.Instance); + writer.WriteProperty("useMeshColors", instance.useMeshColors, ES3Type_bool.Instance); + writer.WriteProperty("normalOffset", instance.normalOffset, ES3Type_float.Instance); + writer.WriteProperty("arc", instance.arc, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.ShapeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.ShapeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "shapeType": + instance.shapeType = reader.Read(); + break; + case "randomDirectionAmount": + instance.randomDirectionAmount = reader.Read(ES3Type_float.Instance); + break; + case "sphericalDirectionAmount": + instance.sphericalDirectionAmount = reader.Read(ES3Type_float.Instance); + break; + case "alignToDirection": + instance.alignToDirection = reader.Read(ES3Type_bool.Instance); + break; + case "radius": + instance.radius = reader.Read(ES3Type_float.Instance); + break; + case "angle": + instance.angle = reader.Read(ES3Type_float.Instance); + break; + case "length": + instance.length = reader.Read(ES3Type_float.Instance); + break; + #if UNITY_5 + case "box": + instance.box = reader.Read(ES3Type_Vector3.Instance); + break; + case "meshScale": + instance.meshScale = reader.Read(ES3Type_float.Instance); + break; + #else + case "scale": + instance.scale = reader.Read(ES3Type_Vector3.Instance); + break; + #endif + case "meshShapeType": + instance.meshShapeType = reader.Read(); + break; + case "mesh": + instance.mesh = reader.Read(); + break; + case "meshRenderer": + instance.meshRenderer = reader.Read(); + break; + case "skinnedMeshRenderer": + instance.skinnedMeshRenderer = reader.Read(); + break; + case "useMeshMaterialIndex": + instance.useMeshMaterialIndex = reader.Read(ES3Type_bool.Instance); + break; + case "meshMaterialIndex": + instance.meshMaterialIndex = reader.Read(ES3Type_int.Instance); + break; + case "useMeshColors": + instance.useMeshColors = reader.Read(ES3Type_bool.Instance); + break; + case "normalOffset": + instance.normalOffset = reader.Read(ES3Type_float.Instance); + break; + case "arc": + instance.arc = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs.meta new file mode 100644 index 00000000..a9a4b213 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_ShapeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 238b82f3d73ce4b4ebeb3a5c22eff5e9 +timeCreated: 1519132281 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs new file mode 100644 index 00000000..41071491 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs @@ -0,0 +1,90 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "size", "sizeMultiplier", "x", "xMultiplier", "y", "yMultiplier", "z", "zMultiplier", "separateAxes", "range")] + public class ES3Type_SizeBySpeedModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_SizeBySpeedModule() : base(typeof(UnityEngine.ParticleSystem.SizeBySpeedModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.SizeBySpeedModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("size", instance.size, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("sizeMultiplier", instance.sizeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + writer.WriteProperty("range", instance.range, ES3Type_Vector2.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.SizeBySpeedModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.SizeBySpeedModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "size": + instance.size = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "sizeMultiplier": + instance.sizeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + case "range": + instance.range = reader.Read(ES3Type_Vector2.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs.meta new file mode 100644 index 00000000..9a3e3e93 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeBySpeedModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 553dbccc70c984444a8e1e4fb140acaa +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs new file mode 100644 index 00000000..caaf20b3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs @@ -0,0 +1,86 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "size", "sizeMultiplier", "x", "xMultiplier", "y", "yMultiplier", "z", "zMultiplier", "separateAxes")] + public class ES3Type_SizeOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_SizeOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.SizeOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.SizeOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("size", instance.size, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("sizeMultiplier", instance.sizeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("separateAxes", instance.separateAxes, ES3Type_bool.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.SizeOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.SizeOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "size": + instance.size = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "sizeMultiplier": + instance.sizeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "separateAxes": + instance.separateAxes = reader.Read(ES3Type_bool.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs.meta new file mode 100644 index 00000000..a1511c27 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SizeOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 414f41e320e5f4be0a7aa4b39344c5e4 +timeCreated: 1519132284 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs new file mode 100644 index 00000000..2e86f4b3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs @@ -0,0 +1,157 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("bones", "rootBone", "quality", "sharedMesh", "updateWhenOffscreen", "skinnedMotionVectors", "localBounds", "enabled", "shadowCastingMode", "receiveShadows", "sharedMaterials", "lightmapIndex", "realtimeLightmapIndex", "lightmapScaleOffset", "motionVectorGenerationMode", "realtimeLightmapScaleOffset", "lightProbeUsage", "lightProbeProxyVolumeOverride", "probeAnchor", "reflectionProbeUsage", "sortingLayerName", "sortingLayerID", "sortingOrder")] + public class ES3Type_SkinnedMeshRenderer : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_SkinnedMeshRenderer() : base(typeof(UnityEngine.SkinnedMeshRenderer)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.SkinnedMeshRenderer)obj; + + writer.WriteProperty("bones", instance.bones); + writer.WriteProperty("rootBone", instance.rootBone); + writer.WriteProperty("quality", instance.quality); + writer.WriteProperty("sharedMesh", instance.sharedMesh); + writer.WriteProperty("updateWhenOffscreen", instance.updateWhenOffscreen, ES3Type_bool.Instance); + writer.WriteProperty("skinnedMotionVectors", instance.skinnedMotionVectors, ES3Type_bool.Instance); + writer.WriteProperty("localBounds", instance.localBounds, ES3Type_Bounds.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("shadowCastingMode", instance.shadowCastingMode); + writer.WriteProperty("receiveShadows", instance.receiveShadows, ES3Type_bool.Instance); + writer.WriteProperty("sharedMaterials", instance.sharedMaterials); + writer.WriteProperty("lightmapIndex", instance.lightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("realtimeLightmapIndex", instance.realtimeLightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("lightmapScaleOffset", instance.lightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("motionVectorGenerationMode", instance.motionVectorGenerationMode); + writer.WriteProperty("realtimeLightmapScaleOffset", instance.realtimeLightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("lightProbeUsage", instance.lightProbeUsage); + writer.WriteProperty("lightProbeProxyVolumeOverride", instance.lightProbeProxyVolumeOverride); + writer.WriteProperty("probeAnchor", instance.probeAnchor); + writer.WriteProperty("reflectionProbeUsage", instance.reflectionProbeUsage); + writer.WriteProperty("sortingLayerName", instance.sortingLayerName, ES3Type_string.Instance); + writer.WriteProperty("sortingLayerID", instance.sortingLayerID, ES3Type_int.Instance); + writer.WriteProperty("sortingOrder", instance.sortingOrder, ES3Type_int.Instance); + + // Get BlendShapeWeights + if (instance.sharedMesh != null) + { + var blendShapeWeights = new float[instance.sharedMesh.blendShapeCount]; + for (int i = 0; i < blendShapeWeights.Length; i++) + blendShapeWeights[i] = instance.GetBlendShapeWeight(i); + writer.WriteProperty("blendShapeWeights", blendShapeWeights, ES3Type_floatArray.Instance); + } + + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.SkinnedMeshRenderer)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + + case "bones": + instance.bones = reader.Read(); + break; + case "rootBone": + instance.rootBone = reader.Read(ES3Type_Transform.Instance); + break; + case "quality": + instance.quality = reader.Read(); + break; + case "sharedMesh": + instance.sharedMesh = reader.Read(ES3Type_Mesh.Instance); + break; + case "updateWhenOffscreen": + instance.updateWhenOffscreen = reader.Read(ES3Type_bool.Instance); + break; + case "skinnedMotionVectors": + instance.skinnedMotionVectors = reader.Read(ES3Type_bool.Instance); + break; + case "localBounds": + instance.localBounds = reader.Read(ES3Type_Bounds.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "shadowCastingMode": + instance.shadowCastingMode = reader.Read(); + break; + case "receiveShadows": + instance.receiveShadows = reader.Read(ES3Type_bool.Instance); + break; + case "sharedMaterials": + instance.sharedMaterials = reader.Read(); + break; + case "lightmapIndex": + instance.lightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "realtimeLightmapIndex": + instance.realtimeLightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "lightmapScaleOffset": + instance.lightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "motionVectorGenerationMode": + instance.motionVectorGenerationMode = reader.Read(); + break; + case "realtimeLightmapScaleOffset": + instance.realtimeLightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "lightProbeUsage": + instance.lightProbeUsage = reader.Read(); + break; + case "lightProbeProxyVolumeOverride": + instance.lightProbeProxyVolumeOverride = reader.Read(ES3Type_GameObject.Instance); + break; + case "probeAnchor": + instance.probeAnchor = reader.Read(ES3Type_Transform.Instance); + break; + case "reflectionProbeUsage": + instance.reflectionProbeUsage = reader.Read(); + break; + case "sortingLayerName": + instance.sortingLayerName = reader.Read(ES3Type_string.Instance); + break; + case "sortingLayerID": + instance.sortingLayerID = reader.Read(ES3Type_int.Instance); + break; + case "sortingOrder": + instance.sortingOrder = reader.Read(ES3Type_int.Instance); + break; + case "blendShapeWeights": + var blendShapeWeights = reader.Read(ES3Type_floatArray.Instance); + if (instance.sharedMesh == null) break; + if (blendShapeWeights.Length != instance.sharedMesh.blendShapeCount) + ES3Internal.ES3Debug.LogError("The number of blend shape weights we are loading does not match the number of blend shapes in this SkinnedMeshRenderer's Mesh"); + for (int i = 0; i < blendShapeWeights.Length; i++) + instance.SetBlendShapeWeight(i, blendShapeWeights[i]); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_SkinnedMeshRendererArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_SkinnedMeshRendererArray() : base(typeof(UnityEngine.SkinnedMeshRenderer[]), ES3Type_SkinnedMeshRenderer.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs.meta new file mode 100644 index 00000000..be24b9c7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SkinnedMeshRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c60a9d4280a1740059c9784d75d00ad9 +timeCreated: 1519132296 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs new file mode 100644 index 00000000..2b4a0a03 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs @@ -0,0 +1,68 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("texture", "textureRect", "pivot", "pixelsPerUnit", "border")] + public class ES3Type_Sprite : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Sprite() : base(typeof(UnityEngine.Sprite)) { Instance = this; } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (UnityEngine.Sprite)obj; + + writer.WriteProperty("texture", instance.texture, ES3Type_Texture2D.Instance); + writer.WriteProperty("textureRect", instance.textureRect, ES3Type_Rect.Instance); + // Pivot value is in pixels, but we require a normalised pivot when using Sprite.Create during loading, so we normalise it here. + writer.WriteProperty("pivot", new Vector2(instance.pivot.x / instance.texture.width, instance.pivot.y / instance.texture.height), ES3Type_Vector2.Instance); + writer.WriteProperty("pixelsPerUnit", instance.pixelsPerUnit, ES3Type_float.Instance); + writer.WriteProperty("border", instance.border, ES3Type_Vector4.Instance); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + foreach (string propertyName in reader.Properties) + reader.Skip(); + } + + protected override object ReadUnityObject(ES3Reader reader) + { + Texture2D texture = null; + Rect textureRect = Rect.zero; + Vector2 pivot = Vector2.zero; + float pixelsPerUnit = 0; + Vector4 border = Vector4.zero; + + foreach (string propertyName in reader.Properties) + { + switch (propertyName) + { + case "texture": + texture = reader.Read(ES3Type_Texture2D.Instance); + break; + case "textureRect": + textureRect = reader.Read(ES3Type_Rect.Instance); + break; + case "pivot": + pivot = reader.Read(ES3Type_Vector2.Instance); + break; + case "pixelsPerUnit": + pixelsPerUnit = reader.Read(ES3Type_float.Instance); + break; + case "border": + border = reader.Read(ES3Type_Vector4.Instance); + break; + default: + reader.Skip(); + break; + } + } + + return Sprite.Create(texture, textureRect, pivot, pixelsPerUnit, 0, SpriteMeshType.Tight, border); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs.meta new file mode 100644 index 00000000..24da62d7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd9947bd586c04b26ae52e608a032be9 +timeCreated: 1519132298 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs new file mode 100644 index 00000000..353b09fb --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs @@ -0,0 +1,126 @@ +using System; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("sprite", "color", "flipX", "flipY", "enabled", "shadowCastingMode", "receiveShadows", "sharedMaterials", "lightmapIndex", "realtimeLightmapIndex", "lightmapScaleOffset", "motionVectorGenerationMode", "realtimeLightmapScaleOffset", "lightProbeUsage", "lightProbeProxyVolumeOverride", "probeAnchor", "reflectionProbeUsage", "sortingLayerName", "sortingLayerID", "sortingOrder")] + public class ES3Type_SpriteRenderer : ES3ComponentType + { + public static ES3Type Instance = null; + + public ES3Type_SpriteRenderer() : base(typeof(UnityEngine.SpriteRenderer)) + { + Instance = this; + } + + protected override void WriteComponent(object obj, ES3Writer writer) + { + var instance = (UnityEngine.SpriteRenderer)obj; + + writer.WriteProperty("sprite", instance.sprite); + writer.WriteProperty("color", instance.color, ES3Type_Color.Instance); + writer.WriteProperty("flipX", instance.flipX, ES3Type_bool.Instance); + writer.WriteProperty("flipY", instance.flipY, ES3Type_bool.Instance); + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("shadowCastingMode", instance.shadowCastingMode); + writer.WriteProperty("receiveShadows", instance.receiveShadows, ES3Type_bool.Instance); + writer.WriteProperty("sharedMaterials", instance.sharedMaterials); + writer.WriteProperty("lightmapIndex", instance.lightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("realtimeLightmapIndex", instance.realtimeLightmapIndex, ES3Type_int.Instance); + writer.WriteProperty("lightmapScaleOffset", instance.lightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("motionVectorGenerationMode", instance.motionVectorGenerationMode); + writer.WriteProperty("realtimeLightmapScaleOffset", instance.realtimeLightmapScaleOffset, ES3Type_Vector4.Instance); + writer.WriteProperty("lightProbeUsage", instance.lightProbeUsage); + writer.WriteProperty("lightProbeProxyVolumeOverride", instance.lightProbeProxyVolumeOverride, ES3Type_GameObject.Instance); + writer.WriteProperty("probeAnchor", instance.probeAnchor, ES3Type_Transform.Instance); + writer.WriteProperty("reflectionProbeUsage", instance.reflectionProbeUsage); + writer.WriteProperty("sortingLayerName", instance.sortingLayerName, ES3Type_string.Instance); + writer.WriteProperty("sortingLayerID", instance.sortingLayerID, ES3Type_int.Instance); + writer.WriteProperty("sortingOrder", instance.sortingOrder, ES3Type_int.Instance); + } + + protected override void ReadComponent(ES3Reader reader, object obj) + { + var instance = (UnityEngine.SpriteRenderer)obj; + foreach(string propertyName in reader.Properties) + { + switch(propertyName) + { + case "sprite": + instance.sprite = reader.Read(ES3Type_Sprite.Instance); + break; + case "color": + instance.color = reader.Read(ES3Type_Color.Instance); + break; + case "flipX": + instance.flipX = reader.Read(ES3Type_bool.Instance); + break; + case "flipY": + instance.flipY = reader.Read(ES3Type_bool.Instance); + break; + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "shadowCastingMode": + instance.shadowCastingMode = reader.Read(); + break; + case "receiveShadows": + instance.receiveShadows = reader.Read(ES3Type_bool.Instance); + break; + case "sharedMaterials": + instance.sharedMaterials = reader.Read(); + break; + case "lightmapIndex": + instance.lightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "realtimeLightmapIndex": + instance.realtimeLightmapIndex = reader.Read(ES3Type_int.Instance); + break; + case "lightmapScaleOffset": + instance.lightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "motionVectorGenerationMode": + instance.motionVectorGenerationMode = reader.Read(); + break; + case "realtimeLightmapScaleOffset": + instance.realtimeLightmapScaleOffset = reader.Read(ES3Type_Vector4.Instance); + break; + case "lightProbeUsage": + instance.lightProbeUsage = reader.Read(); + break; + case "lightProbeProxyVolumeOverride": + instance.lightProbeProxyVolumeOverride = reader.Read(ES3Type_GameObject.Instance); + break; + case "probeAnchor": + instance.probeAnchor = reader.Read(ES3Type_Transform.Instance); + break; + case "reflectionProbeUsage": + instance.reflectionProbeUsage = reader.Read(); + break; + case "sortingLayerName": + instance.sortingLayerName = reader.Read(ES3Type_string.Instance); + break; + case "sortingLayerID": + instance.sortingLayerID = reader.Read(ES3Type_int.Instance); + break; + case "sortingOrder": + instance.sortingOrder = reader.Read(ES3Type_int.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } + + public class ES3Type_SpriteRendererArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_SpriteRendererArray() : base(typeof(UnityEngine.SpriteRenderer[]), ES3Type_SpriteRenderer.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs.meta new file mode 100644 index 00000000..f5cf21ba --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SpriteRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f9f81f5e14f124e78877586f0b733864 +timeCreated: 1519132301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SubEmittersModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SubEmittersModule.cs new file mode 100644 index 00000000..7f4daae5 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_SubEmittersModule.cs @@ -0,0 +1,86 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("properties", "systems", "types")] + public class ES3Type_SubEmittersModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_SubEmittersModule() : base(typeof(UnityEngine.ParticleSystem.SubEmittersModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.SubEmittersModule)obj; + + var seProperties = new ParticleSystemSubEmitterProperties[instance.subEmittersCount]; + var seSystems = new ParticleSystem[instance.subEmittersCount]; + var seTypes = new ParticleSystemSubEmitterType[instance.subEmittersCount]; + + for(int i=0; i(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.SubEmittersModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.SubEmittersModule)obj; + + ParticleSystemSubEmitterProperties[] seProperties = null; + ParticleSystem[] seSystems = null; + ParticleSystemSubEmitterType[] seTypes = null; + + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "properties": + seProperties = reader.Read(new ES3ArrayType(typeof(ParticleSystemSubEmitterProperties[]))); + break; + case "systems": + seSystems = reader.Read(); + break; + case "types": + seTypes = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + + if(seProperties != null) + { + for(int i=0; i(ES3Reader reader, object obj) + { + if (obj.GetType () == typeof(Texture2D)) + ES3Type_Texture2D.Instance.ReadInto(reader, obj); + else + throw new NotSupportedException ("Textures of type "+obj.GetType()+" are not currently supported."); + } + + public override object Read(ES3Reader reader) + { + return ES3Type_Texture2D.Instance.Read(reader); + } + } + + public class ES3Type_TextureArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_TextureArray() : base(typeof(UnityEngine.Texture[]), ES3Type_Texture.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture.cs.meta new file mode 100644 index 00000000..74296684 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 615cb2cf345144f858b56b5ff6690a9f +timeCreated: 1536306115 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs new file mode 100644 index 00000000..34146747 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs @@ -0,0 +1,132 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("filterMode", "anisoLevel", "wrapMode", "mipMapBias", "rawTextureData")] + public class ES3Type_Texture2D : ES3UnityObjectType + { + public static ES3Type Instance = null; + + public ES3Type_Texture2D() : base(typeof(Texture2D)){ Instance = this; } + + protected override void WriteUnityObject(object obj, ES3Writer writer) + { + var instance = (Texture2D)obj; + + if (!IsReadable(instance)) + { + ES3Internal.ES3Debug.LogWarning("Easy Save cannot save the pixels or properties of this Texture because it is not read/write enabled, so Easy Save will store it by reference instead. To save the pixel data, check the 'Read/Write Enabled' checkbox in the Texture's import settings. Clicking this warning will take you to the Texture, assuming it is not generated at runtime.", instance); + return; + } + + writer.WriteProperty("width", instance.width, ES3Type_int.Instance); + writer.WriteProperty("height", instance.height, ES3Type_int.Instance); + writer.WriteProperty("format", instance.format); + writer.WriteProperty("mipmapCount", instance.mipmapCount, ES3Type_int.Instance); + writer.WriteProperty("filterMode", instance.filterMode); + writer.WriteProperty("anisoLevel", instance.anisoLevel, ES3Type_int.Instance); + writer.WriteProperty("wrapMode", instance.wrapMode); + writer.WriteProperty("mipMapBias", instance.mipMapBias, ES3Type_float.Instance); + writer.WriteProperty("rawTextureData", instance.GetRawTextureData(), ES3Type_byteArray.Instance); + } + + protected override void ReadUnityObject(ES3Reader reader, object obj) + { + if (obj == null) + return; + + if (obj.GetType() == typeof(RenderTexture)) + { + ES3Type_RenderTexture.Instance.ReadInto(reader, obj); + return; + } + + var instance = (Texture2D)obj; + + if (!IsReadable(instance)) + ES3Internal.ES3Debug.LogWarning("Easy Save cannot load the properties or pixels for this Texture because it is not read/write enabled, so it will be loaded by reference. To load the properties and pixels for this Texture, check the 'Read/Write Enabled' checkbox in its Import Settings.", instance); + + foreach (string propertyName in reader.Properties) + { + // If this Texture isn't readable, we should skip past all of its properties. + if (!IsReadable(instance)) + { + reader.Skip(); + continue; + } + + switch (propertyName) + { + case "filterMode": + instance.filterMode = reader.Read(); + break; + case "anisoLevel": + instance.anisoLevel = reader.Read(ES3Type_int.Instance); + break; + case "wrapMode": + instance.wrapMode = reader.Read(); + break; + case "mipMapBias": + instance.mipMapBias = reader.Read(ES3Type_float.Instance); + break; + case "rawTextureData": + // LoadRawTextureData requires that the correct width, height, TextureFormat and mipMaps are set before being called. + // If an error occurs here, it's likely that we're using LoadInto to load into a Texture which differs in these values. + // In this case, LoadInto should be avoided and Load should be used instead. + if (!IsReadable(instance)) + { + ES3Internal.ES3Debug.LogWarning("Easy Save cannot load the pixels of this Texture because it is not read/write enabled, so Easy Save will ignore the pixel data. To load the pixel data, check the 'Read/Write Enabled' checkbox in the Texture's import settings. Clicking this warning will take you to the Texture, assuming it is not generated at runtime.", instance); + reader.Skip(); + } + else + { + try + { + instance.LoadRawTextureData(reader.Read(ES3Type_byteArray.Instance)); + instance.Apply(); + } + catch(Exception e) + { + ES3Internal.ES3Debug.LogError("Easy Save encountered an error when trying to load this Texture, please see the end of this messasge for the error. This is most likely because the Texture format of the instance we are loading into is different to the Texture we saved.\n"+e.ToString(), instance); + } + } + break; + default: + reader.Skip(); + break; + } + } + } + + protected override object ReadUnityObject(ES3Reader reader) + { + var instance = new Texture2D( reader.Read(ES3Type_int.Instance), // Property name has already been read in ES3UnityObjectType, so we only need to read the value. + reader.ReadProperty(ES3Type_int.Instance), + reader.ReadProperty(), + (reader.ReadProperty(ES3Type_int.Instance) > 1)); + ReadObject(reader, instance); + return instance; + } + + protected bool IsReadable(Texture2D instance) + { + #if UNITY_2018_3_OR_NEWER + return instance != null && instance.isReadable; + #else + return true; + #endif + } + } + + public class ES3Type_Texture2DArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Texture2DArray() : base(typeof(Texture2D[]), ES3Type_Texture2D.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs.meta new file mode 100644 index 00000000..03717ba8 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Texture2D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 86d4ce7d016c24d0489778178716fa3d +timeCreated: 1519132290 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs new file mode 100644 index 00000000..f405e670 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs @@ -0,0 +1,112 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "numTilesX", "numTilesY", "animation", "useRandomRow", "frameOverTime", "frameOverTimeMultiplier", "startFrame", "startFrameMultiplier", "cycleCount", "rowIndex", "uvChannelMask", "flipU", "flipV")] + public class ES3Type_TextureSheetAnimationModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_TextureSheetAnimationModule() : base(typeof(UnityEngine.ParticleSystem.TextureSheetAnimationModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.TextureSheetAnimationModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("numTilesX", instance.numTilesX, ES3Type_int.Instance); + writer.WriteProperty("numTilesY", instance.numTilesY, ES3Type_int.Instance); + writer.WriteProperty("animation", instance.animation); +#if UNITY_2019_1_OR_NEWER + writer.WriteProperty("useRandomRow", instance.rowMode); +#else + writer.WriteProperty("useRandomRow", instance.useRandomRow, ES3Type_bool.Instance); +#endif + writer.WriteProperty("frameOverTime", instance.frameOverTime, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("frameOverTimeMultiplier", instance.frameOverTimeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("startFrame", instance.startFrame, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("startFrameMultiplier", instance.startFrameMultiplier, ES3Type_float.Instance); + writer.WriteProperty("cycleCount", instance.cycleCount, ES3Type_int.Instance); + writer.WriteProperty("rowIndex", instance.rowIndex, ES3Type_int.Instance); + writer.WriteProperty("uvChannelMask", instance.uvChannelMask); + //writer.WriteProperty("flipU", instance.flipU, ES3Type_float.Instance); + //writer.WriteProperty("flipV", instance.flipV, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.TextureSheetAnimationModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.TextureSheetAnimationModule)obj; + string propertyName; + while ((propertyName = reader.ReadPropertyName()) != null) + { + switch (propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "numTilesX": + instance.numTilesX = reader.Read(ES3Type_int.Instance); + break; + case "numTilesY": + instance.numTilesY = reader.Read(ES3Type_int.Instance); + break; + case "animation": + instance.animation = reader.Read(); + break; +#if UNITY_2019_1_OR_NEWER + case "rowMode": + instance.rowMode = reader.Read(); + break; +#else + case "useRandomRow": + instance.useRandomRow = reader.Read(ES3Type_bool.Instance); + break; +#endif + case "frameOverTime": + instance.frameOverTime = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "frameOverTimeMultiplier": + instance.frameOverTimeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "startFrame": + instance.startFrame = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "startFrameMultiplier": + instance.startFrameMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "cycleCount": + instance.cycleCount = reader.Read(ES3Type_int.Instance); + break; + case "rowIndex": + instance.rowIndex = reader.Read(ES3Type_int.Instance); + break; + case "uvChannelMask": + instance.uvChannelMask = reader.Read(); + break; + /*case "flipU": + instance.flipU = reader.Read(ES3Type_float.Instance); + break; + case "flipV": + instance.flipV = reader.Read(ES3Type_float.Instance); + break;*/ + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs.meta new file mode 100644 index 00000000..9f587759 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TextureSheetAnimationModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 059be233c84494c01be9f48a8be8e89e +timeCreated: 1519132279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs new file mode 100644 index 00000000..d36c14c4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs @@ -0,0 +1,106 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "ratio", "lifetime", "lifetimeMultiplier", "minVertexDistance", "textureMode", "worldSpace", "dieWithParticles", "sizeAffectsWidth", "sizeAffectsLifetime", "inheritParticleColor", "colorOverLifetime", "widthOverTrail", "widthOverTrailMultiplier", "colorOverTrail")] + public class ES3Type_TrailModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_TrailModule() : base(typeof(UnityEngine.ParticleSystem.TrailModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.TrailModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("ratio", instance.ratio, ES3Type_float.Instance); + writer.WriteProperty("lifetime", instance.lifetime, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("lifetimeMultiplier", instance.lifetimeMultiplier, ES3Type_float.Instance); + writer.WriteProperty("minVertexDistance", instance.minVertexDistance, ES3Type_float.Instance); + writer.WriteProperty("textureMode", instance.textureMode); + writer.WriteProperty("worldSpace", instance.worldSpace, ES3Type_bool.Instance); + writer.WriteProperty("dieWithParticles", instance.dieWithParticles, ES3Type_bool.Instance); + writer.WriteProperty("sizeAffectsWidth", instance.sizeAffectsWidth, ES3Type_bool.Instance); + writer.WriteProperty("sizeAffectsLifetime", instance.sizeAffectsLifetime, ES3Type_bool.Instance); + writer.WriteProperty("inheritParticleColor", instance.inheritParticleColor, ES3Type_bool.Instance); + writer.WriteProperty("colorOverLifetime", instance.colorOverLifetime, ES3Type_MinMaxGradient.Instance); + writer.WriteProperty("widthOverTrail", instance.widthOverTrail, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("widthOverTrailMultiplier", instance.widthOverTrailMultiplier, ES3Type_float.Instance); + writer.WriteProperty("colorOverTrail", instance.colorOverTrail, ES3Type_MinMaxGradient.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.TrailModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.TrailModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "ratio": + instance.ratio = reader.Read(ES3Type_float.Instance); + break; + case "lifetime": + instance.lifetime = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "lifetimeMultiplier": + instance.lifetimeMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "minVertexDistance": + instance.minVertexDistance = reader.Read(ES3Type_float.Instance); + break; + case "textureMode": + instance.textureMode = reader.Read(); + break; + case "worldSpace": + instance.worldSpace = reader.Read(ES3Type_bool.Instance); + break; + case "dieWithParticles": + instance.dieWithParticles = reader.Read(ES3Type_bool.Instance); + break; + case "sizeAffectsWidth": + instance.sizeAffectsWidth = reader.Read(ES3Type_bool.Instance); + break; + case "sizeAffectsLifetime": + instance.sizeAffectsLifetime = reader.Read(ES3Type_bool.Instance); + break; + case "inheritParticleColor": + instance.inheritParticleColor = reader.Read(ES3Type_bool.Instance); + break; + case "colorOverLifetime": + instance.colorOverLifetime = reader.Read(ES3Type_MinMaxGradient.Instance); + break; + case "widthOverTrail": + instance.widthOverTrail = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "widthOverTrailMultiplier": + instance.widthOverTrailMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "colorOverTrail": + instance.colorOverTrail = reader.Read(ES3Type_MinMaxGradient.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs.meta new file mode 100644 index 00000000..bdb0464f --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TrailModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 56ad47761f46a452b84d1efde61de80c +timeCreated: 1519132285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs new file mode 100644 index 00000000..ac658e6c --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs @@ -0,0 +1,70 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "inside", "outside", "enter", "exit", "radiusScale")] + public class ES3Type_TriggerModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_TriggerModule() : base(typeof(UnityEngine.ParticleSystem.TriggerModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.TriggerModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("inside", instance.inside); + writer.WriteProperty("outside", instance.outside); + writer.WriteProperty("enter", instance.enter); + writer.WriteProperty("exit", instance.exit); + writer.WriteProperty("radiusScale", instance.radiusScale, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.TriggerModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.TriggerModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "inside": + instance.inside = reader.Read(); + break; + case "outside": + instance.outside = reader.Read(); + break; + case "enter": + instance.enter = reader.Read(); + break; + case "exit": + instance.exit = reader.Read(); + break; + case "radiusScale": + instance.radiusScale = reader.Read(ES3Type_float.Instance); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs.meta new file mode 100644 index 00000000..9aed3767 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_TriggerModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7cf3d6f533d04498fb0601796570f998 +timeCreated: 1519132289 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs new file mode 100644 index 00000000..06b05973 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs @@ -0,0 +1,40 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y")] + public class ES3Type_Vector2 : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Vector2() : base(typeof(Vector2)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Vector2 casted = (Vector2)obj; + writer.WriteProperty("x", casted.x, ES3Type_float.Instance); + writer.WriteProperty("y", casted.y, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Vector2( reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_Vector2Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Vector2Array() : base(typeof(Vector2[]), ES3Type_Vector2.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs.meta new file mode 100644 index 00000000..6d94ec37 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6cdccaf6dcab94e45931bf15d2a90640 +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs new file mode 100644 index 00000000..7c91f901 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs @@ -0,0 +1,42 @@ +#if UNITY_2017_2_OR_NEWER +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y")] + public class ES3Type_Vector2Int : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Vector2Int() : base(typeof(Vector2Int)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Vector2Int casted = (Vector2Int)obj; + writer.WriteProperty("x", casted.x, ES3Type_int.Instance); + writer.WriteProperty("y", casted.y, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Vector2Int( reader.ReadProperty(ES3Type_int.Instance), + reader.ReadProperty(ES3Type_int.Instance)); + } + } + + public class ES3Type_Vector2IntArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Vector2IntArray() : base(typeof(Vector2Int[]), ES3Type_Vector2Int.Instance) + { + Instance = this; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs.meta new file mode 100644 index 00000000..a8cc1433 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector2Int.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d4ce5526a479a4cdab37fa9c10dc3964 +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs new file mode 100644 index 00000000..6baa1192 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3Properties("x", "y", "z")] + public class ES3Type_Vector3 : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Vector3() : base(typeof(Vector3)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Vector3 casted = (Vector3)obj; + writer.WriteProperty("x", casted.x, ES3Type_float.Instance); + writer.WriteProperty("y", casted.y, ES3Type_float.Instance); + writer.WriteProperty("z", casted.z, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Vector3( reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + } + + public class ES3Type_Vector3Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Vector3Array() : base(typeof(Vector3[]), ES3Type_Vector3.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs.meta new file mode 100644 index 00000000..80e53bb7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65ba0614942de49678702985ca4ca357 +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs new file mode 100644 index 00000000..d5699592 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs @@ -0,0 +1,44 @@ +#if UNITY_2017_2_OR_NEWER +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y", "z")] + public class ES3Type_Vector3Int : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Vector3Int() : base(typeof(Vector3Int)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Vector3Int casted = (Vector3Int)obj; + writer.WriteProperty("x", casted.x, ES3Type_int.Instance); + writer.WriteProperty("y", casted.y, ES3Type_int.Instance); + writer.WriteProperty("z", casted.z, ES3Type_int.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Vector3Int( reader.ReadProperty(ES3Type_int.Instance), + reader.ReadProperty(ES3Type_int.Instance), + reader.ReadProperty(ES3Type_int.Instance)); + } + } + + public class ES3Type_Vector3IntArray : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Vector3IntArray() : base(typeof(Vector3Int[]), ES3Type_Vector3Int.Instance) + { + Instance = this; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs.meta new file mode 100644 index 00000000..cf4d455b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector3Int.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7e3a1d8e6e8144f71a61562fc86b2b2c +timeCreated: 1519132287 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs new file mode 100644 index 00000000..d17c5858 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs @@ -0,0 +1,50 @@ +using System; +using UnityEngine; +using System.Collections.Generic; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("x", "y", "z", "w")] + public class ES3Type_Vector4 : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_Vector4() : base(typeof(Vector4)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + Vector4 casted = (Vector4)obj; + writer.WriteProperty("x", casted.x, ES3Type_float.Instance); + writer.WriteProperty("y", casted.y, ES3Type_float.Instance); + writer.WriteProperty("z", casted.z, ES3Type_float.Instance); + writer.WriteProperty("w", casted.w, ES3Type_float.Instance); + } + + public override object Read(ES3Reader reader) + { + return new Vector4( reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance), + reader.ReadProperty(ES3Type_float.Instance)); + } + + public static bool Equals(Vector4 a, Vector4 b) + { + return (Mathf.Approximately(a.x,b.x) && Mathf.Approximately(a.y,b.y) && Mathf.Approximately(a.z,b.z) && Mathf.Approximately(a.w,b.w)); + } + } + + public class ES3Type_Vector4Array : ES3ArrayType + { + public static ES3Type Instance; + + public ES3Type_Vector4Array() : base(typeof(Vector4[]), ES3Type_Vector4.Instance) + { + Instance = this; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs.meta new file mode 100644 index 00000000..8b99b5cf --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Vector4.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 970684b89a8e24102a42f02a5ed59a66 +timeCreated: 1519132292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs new file mode 100644 index 00000000..e48cfba7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs @@ -0,0 +1,77 @@ +using System; +using UnityEngine; + +namespace ES3Types +{ + [UnityEngine.Scripting.Preserve] + [ES3PropertiesAttribute("enabled", "x", "y", "z", "xMultiplier", "yMultiplier", "zMultiplier", "space")] + public class ES3Type_VelocityOverLifetimeModule : ES3Type + { + public static ES3Type Instance = null; + + public ES3Type_VelocityOverLifetimeModule() : base(typeof(UnityEngine.ParticleSystem.VelocityOverLifetimeModule)) + { + Instance = this; + } + + public override void Write(object obj, ES3Writer writer) + { + var instance = (UnityEngine.ParticleSystem.VelocityOverLifetimeModule)obj; + + writer.WriteProperty("enabled", instance.enabled, ES3Type_bool.Instance); + writer.WriteProperty("x", instance.x, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("y", instance.y, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("z", instance.z, ES3Type_MinMaxCurve.Instance); + writer.WriteProperty("xMultiplier", instance.xMultiplier, ES3Type_float.Instance); + writer.WriteProperty("yMultiplier", instance.yMultiplier, ES3Type_float.Instance); + writer.WriteProperty("zMultiplier", instance.zMultiplier, ES3Type_float.Instance); + writer.WriteProperty("space", instance.space); + } + + public override object Read(ES3Reader reader) + { + var instance = new UnityEngine.ParticleSystem.VelocityOverLifetimeModule(); + ReadInto(reader, instance); + return instance; + } + + public override void ReadInto(ES3Reader reader, object obj) + { + var instance = (UnityEngine.ParticleSystem.VelocityOverLifetimeModule)obj; + string propertyName; + while((propertyName = reader.ReadPropertyName()) != null) + { + switch(propertyName) + { + case "enabled": + instance.enabled = reader.Read(ES3Type_bool.Instance); + break; + case "x": + instance.x = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "y": + instance.y = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "z": + instance.z = reader.Read(ES3Type_MinMaxCurve.Instance); + break; + case "xMultiplier": + instance.xMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "yMultiplier": + instance.yMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "zMultiplier": + instance.zMultiplier = reader.Read(ES3Type_float.Instance); + break; + case "space": + instance.space = reader.Read(); + break; + default: + reader.Skip(); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs.meta new file mode 100644 index 00000000..a344c8be --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_VelocityOverLifetimeModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a4884364ae36a4916a8bc2bd6e5e9683 +timeCreated: 1519132293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Web.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web.meta new file mode 100644 index 00000000..454424f3 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a31790717a932467d825f30d95c413bb +folderAsset: yes +timeCreated: 1500448038 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs new file mode 100644 index 00000000..257cac95 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs @@ -0,0 +1,752 @@ +#if !DISABLE_WEB +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using System; +using ES3Internal; + +public class ES3Cloud : ES3WebClass +{ + int timeout = 20; + + /// Constructs an new ES3Cloud object with the given URL to an ES3.php file. + /// The URL of the ES3.php file on your server you want to use. + public ES3Cloud(string url, string apiKey) : base(url, apiKey) + { + } + + public ES3Cloud(string url, string apiKey, int timeout) : base(url, apiKey) + { + this.timeout = timeout; + } + + #region Downloaded Data Handling + + /// The encoding to use when encoding and decoding data as strings. + public System.Text.Encoding encoding = System.Text.Encoding.UTF8; + + + private byte[] _data = null; + /// Any downloaded data, if applicable. This may also contain an error message, so you should check the 'ifError' variable before reading data. + public byte[] data + { + get{ return _data; } + } + + /// The downloaded data as text, decoded using the encoding specified by the 'encoding' variable. + public string text + { + get + { + if(data == null) + return null; + return encoding.GetString(data); + } + } + + /// An array of filenames downloaded from the server. This must only be accessed after calling the 'DownloadFilenames' routine. + public string[] filenames + { + get + { + if(data == null || data.Length == 0) + return new string[0]; + return text.Split(';'); + } + + } + + /// A UTC DateTime object representing the date and time a file on the server was last updated. This should only be called after calling the 'DownloadTimestamp' routine. + public DateTime timestamp + { + get + { + if(data == null || data.Length == 0) + return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + + double timestamp; + if(!double.TryParse(text, out timestamp)) + throw new FormatException("Could not convert downloaded data to a timestamp. Data downloaded was: " + text); + + return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(timestamp); + } + } + + #endregion + + #region Sync + + /// Synchronises the default file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + public IEnumerator Sync() + { + return Sync(new ES3Settings(), "", ""); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the local file we want to synchronise. + public IEnumerator Sync(string filePath) + { + return Sync(new ES3Settings(filePath), "", ""); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the local file we want to synchronise. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator Sync(string filePath, string user) + { + return Sync(new ES3Settings(filePath), user, ""); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the local file we want to synchronise. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator Sync(string filePath, string user, string password) + { + return Sync(new ES3Settings(filePath), user, password); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the local file we want to synchronise. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator Sync(string filePath, ES3Settings settings) + { + return Sync(new ES3Settings(filePath, settings), "", ""); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the file we want to use. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator Sync(string filePath, string user, ES3Settings settings) + { + return Sync(new ES3Settings(filePath, settings), user, ""); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The relative or absolute path of the local file we want to synchronise. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator Sync(string filePath, string user, string password, ES3Settings settings) + { + return Sync(new ES3Settings(filePath, settings), user, password); + } + + /// Synchronises a local file with a file on the server. If the file on the server is newer than the local copy, the local file will be overwritten by the file on the server. Otherwise, the file on the server will be overwritten. + /// The settings we want to use to override the default settings. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + private IEnumerator Sync(ES3Settings settings, string user, string password) + { + Reset(); + + yield return DownloadFile(settings, user, password, GetFileTimestamp(settings)); + + if(errorCode == 3) + { + // Clear the error. + Reset(); + + // File does not exist on server, or is older than locally stored data, so upload the local file to the server if it exists. + if(ES3.FileExists(settings)) + yield return UploadFile(settings, user, password); + } + + isDone = true; + } + + #endregion + + #region UploadFile + + /// Uploads the default file to the server, overwriting any existing file. + public IEnumerator UploadFile() + { + return UploadFile(new ES3Settings(), "", ""); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + public IEnumerator UploadFile(string filePath) + { + return UploadFile(new ES3Settings(filePath), "", ""); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator UploadFile(string filePath, string user) + { + return UploadFile(new ES3Settings(filePath), user, ""); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator UploadFile(string filePath, string user, string password) + { + return UploadFile(new ES3Settings(filePath), user, password); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + /// The settings we want to use to override the default settings. + public IEnumerator UploadFile(string filePath, ES3Settings settings) + { + return UploadFile(new ES3Settings(filePath, settings), "", ""); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator UploadFile(string filePath, string user, ES3Settings settings) + { + return UploadFile(new ES3Settings(filePath, settings), user, ""); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The relative or absolute path of the file we want to use. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator UploadFile(string filePath, string user, string password, ES3Settings settings) + { + return UploadFile(new ES3Settings(filePath, settings), user, password); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// An ES3File containing the data we want to upload. + public IEnumerator UploadFile(ES3File es3File) + { + return UploadFile(es3File.GetBytes(), es3File.settings, "", "", DateTimeToUnixTimestamp(DateTime.Now)); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// An ES3File containing the data we want to upload. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator UploadFile(ES3File es3File, string user) + { + return UploadFile(es3File.GetBytes(), es3File.settings, user, "", DateTimeToUnixTimestamp(DateTime.Now)); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// An ES3File containing the data we want to upload. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator UploadFile(ES3File es3File, string user, string password) + { + return UploadFile(es3File.GetBytes(), es3File.settings, user, password, DateTimeToUnixTimestamp(DateTime.Now)); + } + + /// Uploads a local file to the server, overwriting any existing file. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator UploadFile(ES3Settings settings, string user, string password) + { + return UploadFile(ES3.LoadRawBytes(settings), settings, user, password); + } + + public IEnumerator UploadFile(byte[] bytes, ES3Settings settings, string user, string password) + { + return UploadFile(bytes, settings, user, password, DateTimeToUnixTimestamp(ES3.GetTimestamp(settings))); + } + + private IEnumerator UploadFile(byte[] bytes, ES3Settings settings, string user, string password, long fileTimestamp) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("putFile", settings.path); + form.AddField("timestamp", fileTimestamp.ToString()); + form.AddField("user", GetUser(user, password)); + form.AddBinaryData("data", bytes, "data.dat", "multipart/form-data"); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + yield return SendWebRequest(webRequest); + HandleError(webRequest, true); + } + + isDone = true; + } + + #endregion + + #region DownloadFile + + /// Downloads the default file from the server and saves it locally, overwriting the existing local default file. An error is returned if the file does not exist. + public IEnumerator DownloadFile() + { + return DownloadFile(new ES3Settings(), "", "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + public IEnumerator DownloadFile(string filePath) + { + return DownloadFile(new ES3Settings(filePath), "", "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator DownloadFile(string filePath, string user) + { + return DownloadFile(new ES3Settings(filePath), user, "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator DownloadFile(string filePath, string user, string password) + { + return DownloadFile(new ES3Settings(filePath), user, password, 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadFile(string filePath, ES3Settings settings) + { + return DownloadFile(new ES3Settings(filePath, settings), "", "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadFile(string filePath, string user, ES3Settings settings) + { + return DownloadFile(new ES3Settings(filePath, settings), user, "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The relative or absolute path of the file we want to download. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadFile(string filePath, string user, string password, ES3Settings settings) + { + return DownloadFile(new ES3Settings(filePath, settings), user, password, 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The ES3File we want to load our data into. The filename in the settings of the ES3File will be used when downloading. + public IEnumerator DownloadFile(ES3File es3File) + { + return DownloadFile(es3File, "", "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The ES3File we want to load our data into. The filename in the settings of the ES3File will be used when downloading. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator DownloadFile(ES3File es3File, string user) + { + return DownloadFile(es3File, user, "", 0); + } + + /// Downloads a file from the server and saves it locally, overwriting any existing local file. An error is returned if the file does not exist. + /// The ES3File we want to load our data into. The filename in the settings of the ES3File will be used when downloading. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator DownloadFile(ES3File es3File, string user, string password) + { + return DownloadFile(es3File, user, password, 0); + } + + private IEnumerator DownloadFile(ES3File es3File, string user, string password, long timestamp) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("getFile", es3File.settings.path); + form.AddField("user", GetUser(user, password)); + if(timestamp > 0) + form.AddField("timestamp", timestamp.ToString()); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + + if(!HandleError(webRequest, false)) + { + if(webRequest.downloadedBytes > 0) + { + es3File.Clear(); + es3File.SaveRaw(webRequest.downloadHandler.data); + } + else + { + error = string.Format("File {0} was not found on the server.", es3File.settings.path); + errorCode = 3; + } + } + } + + isDone = true; + } + + private IEnumerator DownloadFile(ES3Settings settings, string user, string password, long timestamp) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("getFile", settings.path); + form.AddField("user", GetUser(user, password)); + if(timestamp > 0) + form.AddField("timestamp", timestamp.ToString()); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + if(!HandleError(webRequest, false)) + { + if(webRequest.downloadedBytes > 0) + { + ES3.SaveRaw(webRequest.downloadHandler.data, settings); + } + else + { + error = string.Format("File {0} was not found on the server.", settings.path); + errorCode = 3; + } + } + } + + isDone = true; + } + + #endregion + + #region DeleteFile + + /// Deletes the default file from the server. An error is *not* returned if the file does not exist. + public IEnumerator DeleteFile() + { + return DeleteFile(new ES3Settings(), "", ""); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + public IEnumerator DeleteFile(string filePath) + { + return DeleteFile(new ES3Settings(filePath), "", ""); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator DeleteFile(string filePath, string user) + { + return DeleteFile(new ES3Settings(filePath), user, ""); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator DeleteFile(string filePath, string user, string password) + { + return DeleteFile(new ES3Settings(filePath), user, password); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The settings we want to use to override the default settings. + public IEnumerator DeleteFile(string filePath, ES3Settings settings) + { + return DeleteFile(new ES3Settings(filePath, settings), "", ""); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator DeleteFile(string filePath, string user, ES3Settings settings) + { + return DeleteFile(new ES3Settings(filePath, settings), user, ""); + } + + /// Deletes a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator DeleteFile(string filePath, string user, string password, ES3Settings settings) + { + return DeleteFile(new ES3Settings(filePath, settings), user, password); + } + + private IEnumerator DeleteFile(ES3Settings settings, string user, string password) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("deleteFile", settings.path); + form.AddField("user", GetUser(user, password)); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + HandleError(webRequest, true); + } + + isDone = true; + } + + #endregion + + #region RenameFile + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + public IEnumerator RenameFile(string filePath, string newFilePath) + { + return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), "", ""); + } + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator RenameFile(string filePath, string newFilePath, string user) + { + return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), user, ""); + } + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator RenameFile(string filePath, string newFilePath, string user, string password) + { + return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), user, password); + } + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The settings we want to use to override the default settings. + public IEnumerator RenameFile(string filePath, string newFilePath, ES3Settings settings) + { + return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), "", ""); + } + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator RenameFile(string filePath, string newFilePath, string user, ES3Settings settings) + { + return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), user, ""); + } + + /// Renames a file from the server. An error is *not* returned if the file does not exist. + /// The relative or absolute path of the file we want to delete. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator RenameFile(string filePath, string newFilePath, string user, string password, ES3Settings settings) + { + return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), user, password); + } + + private IEnumerator RenameFile(ES3Settings settings, ES3Settings newSettings, string user, string password) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("renameFile", settings.path); + form.AddField("newFilename", newSettings.path); + form.AddField("user", GetUser(user, password)); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + HandleError(webRequest, true); + } + + isDone = true; + } + + #endregion + + #region DownloadFilenames + + /// Downloads the names of all of the files on the server. Downloaded filenames are stored in the 'filenames' variable of the ES3Cloud object. + /// The unique name of the user we want to find the filenames of. + /// The password of the user we want to find the filenames of. + public IEnumerator DownloadFilenames(string user="", string password="") + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("getFilenames", ""); + form.AddField("user", GetUser(user, password)); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + if(!HandleError(webRequest, false)) + _data = webRequest.downloadHandler.data; + } + + isDone = true; + } + + /// Downloads the names of all of the files on the server. Downloaded filenames are stored in the 'filenames' variable of the ES3Cloud object. + /// The unique name of the user we want to find the filenames of. + /// The password of the user we want to find the filenames of. + /// A search pattern containing '%' or '_' wildcards where '%' represents zero, one, or multiple characters, and '_' represents a single character. + public IEnumerator SearchFilenames(string searchPattern, string user="", string password="") + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("getFilenames", ""); + form.AddField("user", GetUser(user, password)); + if (!string.IsNullOrEmpty(searchPattern)) + form.AddField("pattern", searchPattern); + + using (var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + if (!HandleError(webRequest, false)) + _data = webRequest.downloadHandler.data; + } + + isDone = true; + } + + #endregion + + #region DownloadTimestamp + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + public IEnumerator DownloadTimestamp() + { + return DownloadTimestamp(new ES3Settings(), "", ""); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + public IEnumerator DownloadTimestamp(string filePath) + { + return DownloadTimestamp(new ES3Settings(filePath), "", ""); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + public IEnumerator DownloadTimestamp(string filePath, string user) + { + return DownloadTimestamp(new ES3Settings(filePath), user, ""); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + public IEnumerator DownloadTimestamp(string filePath, string user, string password) + { + return DownloadTimestamp(new ES3Settings(filePath), user, password); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadTimestamp(string filePath, ES3Settings settings) + { + return DownloadTimestamp(new ES3Settings(filePath, settings), "", ""); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadTimestamp(string filePath, string user, ES3Settings settings) + { + return DownloadTimestamp(new ES3Settings(filePath, settings), user, ""); + } + + /// Downloads the timestamp representing when the server file was last updated. The downloaded timestamp is stored in the 'timestamp' variable of the ES3Cloud object. + /// The relative or absolute path of the file we want to get the timestamp of. + /// The unique name of the user this file belongs to, if the file isn't globally accessible. + /// The password of the user this file belongs to. + /// The settings we want to use to override the default settings. + public IEnumerator DownloadTimestamp(string filePath, string user, string password, ES3Settings settings) + { + return DownloadTimestamp(new ES3Settings(filePath, settings), user, password); + } + + private IEnumerator DownloadTimestamp(ES3Settings settings, string user, string password) + { + Reset(); + + var form = CreateWWWForm(); + form.AddField("apiKey", apiKey); + form.AddField("getTimestamp", settings.path); + form.AddField("user", GetUser(user, password)); + + using(var webRequest = UnityWebRequest.Post(url, form)) + { + webRequest.timeout = timeout; + + yield return SendWebRequest(webRequest); + if(!HandleError(webRequest, false)) + _data = webRequest.downloadHandler.data; + } + + isDone = true; + } + + #endregion + + #region Internal Methods + + private long DateTimeToUnixTimestamp(DateTime dt) + { + return Convert.ToInt64((dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc)).TotalSeconds); + } + + private long GetFileTimestamp(ES3Settings settings) + { + return DateTimeToUnixTimestamp(ES3.GetTimestamp(settings)); + } + + protected override void Reset() + { + _data = null; + base.Reset(); + } + + #endregion +} + +#endif \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs.meta new file mode 100644 index 00000000..02e505ee --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3Cloud.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e639a3698613946f0951d104a492f138 +timeCreated: 1500448165 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs new file mode 100644 index 00000000..e7b8825e --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs @@ -0,0 +1,148 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Networking; + +namespace ES3Internal +{ + public class ES3WebClass + { + protected string url; + protected string apiKey; + + protected List> formData = new List>(); + protected UnityWebRequest _webRequest = null; + + + public bool isDone = false; + public float uploadProgress + { + get + { + if(_webRequest == null) + return 0; + else + return _webRequest.uploadProgress; + } + } + + public float downloadProgress + { + get + { + if(_webRequest == null) + return 0; + else + return _webRequest.downloadProgress; + } + } + + #region Error Handling + + /// An error message, if an error occurred. + public string error = null; + /// This is set to true if an error occurred while performing an operation. + public bool isError{ get{ return !string.IsNullOrEmpty(error) || errorCode > 0; } } + /// The error code relating to the error, if one occurred. If it's a server error, this will return the HTTP error code. + public long errorCode = 0; + + public static bool IsNetworkError(UnityWebRequest www) + { +#if UNITY_2020_1_OR_NEWER + return www.result == UnityWebRequest.Result.ConnectionError; +#else + return www.isNetworkError; +#endif + } + +#endregion + + protected ES3WebClass(string url, string apiKey) + { + this.url = url; + this.apiKey = apiKey; + } + +#region Other Methods + + /// Adds POST data to any requests sent by this ES3Cloud object. Use this if you are sending data to a custom script on your server. + /// The name of the POST field we want to add. + /// The string value of the POST field we want to add. + public void AddPOSTField(string fieldName, string value) + { + formData.Add(new KeyValuePair(fieldName, value)); + } + +#endregion + +#region Internal Methods + + protected string GetUser(string user, string password) + { + if(string.IsNullOrEmpty(user)) + return ""; + // Final user string is a combination of the username and password, and hashed if encryption is enabled. + if(!string.IsNullOrEmpty(password)) + user += password; + +#if !DISABLE_ENCRYPTION && !DISABLE_HASHING + user = ES3Internal.ES3Hash.SHA1Hash(user); +#endif + return user; + } + + protected WWWForm CreateWWWForm() + { + var form = new WWWForm(); + foreach(var kvp in formData) + form.AddField(kvp.Key, kvp.Value); + return form; + } + + /* Checks if an error occurred and sets relevant details, and returns true if an error did occur */ + protected bool HandleError(UnityWebRequest webRequest, bool errorIfDataIsDownloaded) + { + if(IsNetworkError(webRequest)) + { + errorCode = 1; + error = "Error: " + webRequest.error; + } + else if(webRequest.responseCode >= 400) + { + errorCode = webRequest.responseCode; + if(string.IsNullOrEmpty(webRequest.downloadHandler.text)) + error = string.Format("Server returned {0} error with no message", webRequest.responseCode); + else + error = webRequest.downloadHandler.text; + } + else if(errorIfDataIsDownloaded && webRequest.downloadedBytes > 0) + { + errorCode = 2; + error = "Server error: " + webRequest.downloadHandler.text; + } + else + return false; + return true; + } + + protected IEnumerator SendWebRequest(UnityWebRequest webRequest) + { + _webRequest = webRequest; +#if !UNITY_2017_2_OR_NEWER + yield return webRequest.Send(); +#else + yield return webRequest.SendWebRequest(); +#endif + } + + protected virtual void Reset() + { + error = null; + errorCode = 0; + isDone = false; + } + + +#endregion + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs.meta new file mode 100644 index 00000000..c2900419 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Web/ES3WebClass.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 338b6919533e14c37afa52e7b0a91a6d +timeCreated: 1502349814 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers.meta new file mode 100644 index 00000000..e8677216 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f81e45d5acda04835b484a483f4aa7e0 +folderAsset: yes +timeCreated: 1499764821 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs new file mode 100644 index 00000000..1e940925 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs @@ -0,0 +1,121 @@ +using System.Collections; +using System.Collections.Generic; +using System; + +namespace ES3Internal +{ + internal enum ES3SpecialByte : byte + { + Null = 0, + Bool = 1, + Byte = 2, + Sbyte = 3, + Char = 4, + Decimal = 5, + Double = 6, + Float = 7, + Int = 8, + Uint = 9, + Long = 10, + Ulong = 11, + Short = 12, + Ushort = 13, + String = 14, + ByteArray = 15, + Collection = 128, + Dictionary = 129, + CollectionItem = 130, + Object = 254, + Terminator = 255 + } + + internal static class ES3Binary + { + internal const string ObjectTerminator = "."; + + internal static readonly Dictionary IdToType = new Dictionary() + { + { ES3SpecialByte.Null, null }, + { ES3SpecialByte.Bool, typeof(bool)}, + { ES3SpecialByte.Byte, typeof(byte)}, + { ES3SpecialByte.Sbyte, typeof(sbyte)}, + { ES3SpecialByte.Char, typeof(char)}, + { ES3SpecialByte.Decimal, typeof(decimal)}, + { ES3SpecialByte.Double, typeof(double)}, + { ES3SpecialByte.Float, typeof(float)}, + { ES3SpecialByte.Int, typeof(int)}, + { ES3SpecialByte.Uint, typeof(uint)}, + { ES3SpecialByte.Long, typeof(long)}, + { ES3SpecialByte.Ulong, typeof(ulong)}, + { ES3SpecialByte.Short, typeof(short)}, + { ES3SpecialByte.Ushort, typeof(ushort)}, + { ES3SpecialByte.String, typeof(string)}, + { ES3SpecialByte.ByteArray, typeof(byte[])} + }; + + internal static readonly Dictionary TypeToId = new Dictionary() + { + { typeof(bool), ES3SpecialByte.Bool}, + { typeof(byte), ES3SpecialByte.Byte}, + { typeof(sbyte), ES3SpecialByte.Sbyte}, + { typeof(char), ES3SpecialByte.Char}, + { typeof(decimal), ES3SpecialByte.Decimal}, + { typeof(double), ES3SpecialByte.Double}, + { typeof(float), ES3SpecialByte.Float}, + { typeof(int), ES3SpecialByte.Int}, + { typeof(uint), ES3SpecialByte.Uint}, + { typeof(long), ES3SpecialByte.Long}, + { typeof(ulong), ES3SpecialByte.Ulong}, + { typeof(short), ES3SpecialByte.Short}, + { typeof(ushort), ES3SpecialByte.Ushort}, + { typeof(string), ES3SpecialByte.String}, + { typeof(byte[]), ES3SpecialByte.ByteArray} + }; + + internal static ES3SpecialByte TypeToByte(Type type) + { + ES3SpecialByte b; + if (TypeToId.TryGetValue(type, out b)) + return b; + return ES3SpecialByte.Object; + } + + internal static Type ByteToType(ES3SpecialByte b) + { + return ByteToType((byte)b); + } + + internal static Type ByteToType(byte b) + { + Type type; + if (IdToType.TryGetValue((ES3SpecialByte)b, out type)) + return type; + return typeof(object); + } + + internal static bool IsPrimitive(ES3SpecialByte b) + { + switch(b) + { + case ES3SpecialByte.Bool: + case ES3SpecialByte.Byte: + case ES3SpecialByte.Sbyte: + case ES3SpecialByte.Char: + case ES3SpecialByte.Decimal: + case ES3SpecialByte.Double: + case ES3SpecialByte.Float: + case ES3SpecialByte.Int: + case ES3SpecialByte.Uint: + case ES3SpecialByte.Long: + case ES3SpecialByte.Ulong: + case ES3SpecialByte.Short: + case ES3SpecialByte.Ushort: + case ES3SpecialByte.String: + case ES3SpecialByte.ByteArray: + return true; + default: + return false; + } + } + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs.meta new file mode 100644 index 00000000..9019d8b6 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Binary.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9398c7a61f9679e41af5e48cac61f763 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs new file mode 100644 index 00000000..f68079ca --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs @@ -0,0 +1,4 @@ +/* + * BinaryWriter is not implemented. + * See this post for more info: https://moodkie.com/forum/viewtopic.php?p=7478#p7478 + */ diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs.meta new file mode 100644 index 00000000..4b787bfe --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3BinaryWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 890d1774e6bacdc43bf99692dfc5360a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs new file mode 100644 index 00000000..5a3ef493 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs @@ -0,0 +1,157 @@ +using System.Collections.Generic; +using System.Collections; +using System.IO; +using System; +using UnityEngine; +using System.Text; +using System.Globalization; + +namespace ES3Internal +{ + internal class ES3CacheWriter : ES3Writer + { + ES3File es3File; + + internal ES3CacheWriter(ES3Settings settings, bool writeHeaderAndFooter, bool mergeKeys) : base(settings, writeHeaderAndFooter, mergeKeys) + { + es3File = new ES3File(settings); + } + + /* User-facing methods used when writing randomly-accessible Key-Value pairs. */ + #region Write(key, value) Methods + + /// Writes a value to the writer with the given key. + /// The key which uniquely identifies this value. + /// The value we want to write. + public override void Write(string key, object value) + { + es3File.Save(key, (T)value); + } + + internal override void Write(string key, Type type, byte[] value) + { + ES3Debug.LogError("Not implemented"); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public override void Write(Type type, string key, object value) + { + es3File.Save(key, value); + } + + #endregion + + + #region WritePrimitive(value) methods. + + internal override void WritePrimitive(int value) { } + internal override void WritePrimitive(float value) { } + internal override void WritePrimitive(bool value) { } + internal override void WritePrimitive(decimal value) { } + internal override void WritePrimitive(double value) { } + internal override void WritePrimitive(long value) { } + internal override void WritePrimitive(ulong value) { } + internal override void WritePrimitive(uint value) { } + internal override void WritePrimitive(byte value) { } + internal override void WritePrimitive(sbyte value) { } + internal override void WritePrimitive(short value) { } + internal override void WritePrimitive(ushort value) { } + internal override void WritePrimitive(char value) { } + internal override void WritePrimitive(byte[] value) { } + + + internal override void WritePrimitive(string value) + { + } + + internal override void WriteNull() + { + } + + #endregion + + #region Format-specific methods + + private static bool CharacterRequiresEscaping(char c) + { + return false; + } + + private void WriteCommaIfRequired() + { + } + + internal override void WriteRawProperty(string name, byte[] value) + { + } + + internal override void StartWriteFile() + { + } + + internal override void EndWriteFile() + { + } + + internal override void StartWriteProperty(string name) + { + base.StartWriteProperty(name); + } + + internal override void EndWriteProperty(string name) + { + } + + internal override void StartWriteObject(string name) + { + } + + internal override void EndWriteObject(string name) + { + } + + internal override void StartWriteCollection() + { + } + + internal override void EndWriteCollection() + { + } + + internal override void StartWriteCollectionItem(int index) + { + } + + internal override void EndWriteCollectionItem(int index) + { + } + + internal override void StartWriteDictionary() + { + } + + internal override void EndWriteDictionary() + { + } + + internal override void StartWriteDictionaryKey(int index) + { + } + + internal override void EndWriteDictionaryKey(int index) + { + } + + internal override void StartWriteDictionaryValue(int index) + { + } + + internal override void EndWriteDictionaryValue(int index) + { + } + + #endregion + + public override void Dispose(){} + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs.meta new file mode 100644 index 00000000..fe20eeb0 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3CacheWriter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52e4ba456dd1422409a95cdc6bf43f6b +timeCreated: 1499764822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3JSONWriter.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3JSONWriter.cs new file mode 100644 index 00000000..83b15060 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3JSONWriter.cs @@ -0,0 +1,233 @@ +using System.Collections.Generic; +using System.Collections; +using System.IO; +using System; +using UnityEngine; +using System.Text; +using System.Globalization; + +namespace ES3Internal +{ + internal class ES3JSONWriter : ES3Writer + { + internal StreamWriter baseWriter; + + private bool isFirstProperty = true; + + public ES3JSONWriter(Stream stream, ES3Settings settings) : this(stream, settings, true, true){} + + internal ES3JSONWriter(Stream stream, ES3Settings settings, bool writeHeaderAndFooter, bool mergeKeys) : base(settings, writeHeaderAndFooter, mergeKeys) + { + baseWriter = new StreamWriter(stream); + StartWriteFile(); + } + + #region WritePrimitive(value) methods. + + internal override void WritePrimitive(int value) { baseWriter.Write(value); } + internal override void WritePrimitive(float value) { baseWriter.Write(value.ToString("R", CultureInfo.InvariantCulture)); } + internal override void WritePrimitive(bool value) { baseWriter.Write(value ? "true" : "false"); } + internal override void WritePrimitive(decimal value) { baseWriter.Write(value.ToString(CultureInfo.InvariantCulture)); } + internal override void WritePrimitive(double value) { baseWriter.Write(value.ToString("R", CultureInfo.InvariantCulture)); } + internal override void WritePrimitive(long value) { baseWriter.Write(value); } + internal override void WritePrimitive(ulong value) { baseWriter.Write(value); } + internal override void WritePrimitive(uint value) { baseWriter.Write(value); } + internal override void WritePrimitive(byte value) { baseWriter.Write(System.Convert.ToInt32(value)); } + internal override void WritePrimitive(sbyte value) { baseWriter.Write(System.Convert.ToInt32(value)); } + internal override void WritePrimitive(short value) { baseWriter.Write(System.Convert.ToInt32(value)); } + internal override void WritePrimitive(ushort value) { baseWriter.Write(System.Convert.ToInt32(value)); } + internal override void WritePrimitive(char value) { WritePrimitive( value.ToString() ); } + internal override void WritePrimitive(byte[] value) { WritePrimitive( System.Convert.ToBase64String(value) ); } + + + internal override void WritePrimitive(string value) + { + baseWriter.Write("\""); + + // Escape any quotation marks within the string. + for(int i = 0; i keysToDelete = new HashSet(); + + internal bool writeHeaderAndFooter = true; + internal bool overwriteKeys = true; + + protected int serializationDepth = 0; + + #region ES3Writer Abstract Methods + + internal abstract void WriteNull(); + + internal virtual void StartWriteFile() + { + serializationDepth++; + } + + internal virtual void EndWriteFile() + { + serializationDepth--; + } + + internal virtual void StartWriteObject(string name) + { + serializationDepth++; + } + + internal virtual void EndWriteObject(string name) + { + serializationDepth--; + } + + internal virtual void StartWriteProperty(string name) + { + if (name == null) + throw new ArgumentNullException("Key or field name cannot be NULL when saving data."); + ES3Debug.Log(""+name +" (writing property)", null, serializationDepth); + } + + internal virtual void EndWriteProperty(string name) + { + } + + internal virtual void StartWriteCollection() + { + serializationDepth++; + } + + internal virtual void EndWriteCollection() + { + serializationDepth--; + } + + internal abstract void StartWriteCollectionItem(int index); + internal abstract void EndWriteCollectionItem(int index); + + internal abstract void StartWriteDictionary(); + internal abstract void EndWriteDictionary(); + internal abstract void StartWriteDictionaryKey(int index); + internal abstract void EndWriteDictionaryKey(int index); + internal abstract void StartWriteDictionaryValue(int index); + internal abstract void EndWriteDictionaryValue(int index); + + public abstract void Dispose(); + + #endregion + + #region ES3Writer Interface abstract methods + + internal abstract void WriteRawProperty(string name, byte[] bytes); + + internal abstract void WritePrimitive(int value); + internal abstract void WritePrimitive(float value); + internal abstract void WritePrimitive(bool value); + internal abstract void WritePrimitive(decimal value); + internal abstract void WritePrimitive(double value); + internal abstract void WritePrimitive(long value); + internal abstract void WritePrimitive(ulong value); + internal abstract void WritePrimitive(uint value); + internal abstract void WritePrimitive(byte value); + internal abstract void WritePrimitive(sbyte value); + internal abstract void WritePrimitive(short value); + internal abstract void WritePrimitive(ushort value); + internal abstract void WritePrimitive(char value); + internal abstract void WritePrimitive(string value); + internal abstract void WritePrimitive(byte[] value); + + #endregion + + protected ES3Writer(ES3Settings settings, bool writeHeaderAndFooter, bool overwriteKeys) + { + this.settings = settings; + this.writeHeaderAndFooter = writeHeaderAndFooter; + this.overwriteKeys = overwriteKeys; + } + + /* User-facing methods used when writing randomly-accessible Key-Value pairs. */ + #region Write(key, value) Methods + + internal virtual void Write(string key, Type type, byte[] value) + { + StartWriteProperty(key); + StartWriteObject(key); + WriteType(type); + WriteRawProperty("value", value); + EndWriteObject(key); + EndWriteProperty(key); + MarkKeyForDeletion(key); + } + + /// Writes a value to the writer with the given key. + /// The key which uniquely identifies this value. + /// The value we want to write. + public virtual void Write(string key, object value) + { + if(typeof(T) == typeof(object)) + Write(value.GetType(), key, value); + else + Write(typeof(T), key, value); + } + + /// Writes a value to the writer with the given key, using the given type rather than the generic parameter. + /// The key which uniquely identifies this value. + /// The value we want to write. + /// The type we want to use for the header, and to retrieve an ES3Type. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void Write(Type type, string key, object value) + { + StartWriteProperty(key); + StartWriteObject(key); + WriteType(type); + WriteProperty("value", value, ES3TypeMgr.GetOrCreateES3Type(type), settings.referenceMode); + EndWriteObject(key); + EndWriteProperty(key); + MarkKeyForDeletion(key); + } + + #endregion + + #region Write(value) & Write(value, ES3Type) Methods + + /// Writes a value to the writer. Note that this should only be called within an ES3Type. + /// The value we want to write. + /// Whether we want to write UnityEngine.Object fields and properties by reference, by value, or both. + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void Write(object value, ES3.ReferenceMode memberReferenceMode = ES3.ReferenceMode.ByRef) + { + if(value == null){ WriteNull(); return; } + + var type = ES3TypeMgr.GetOrCreateES3Type(value.GetType()); + Write(value, type, memberReferenceMode); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void Write(object value, ES3Type type, ES3.ReferenceMode memberReferenceMode = ES3.ReferenceMode.ByRef) + { + // Note that we have to check UnityEngine.Object types for null by casting it first, otherwise + // it will always return false. + if (value == null || (ES3Reflection.IsAssignableFrom(typeof(UnityEngine.Object), value.GetType()) && value as UnityEngine.Object == null)) + { + WriteNull(); + return; + } + + // Deal with System.Objects + if (type == null || type.type == typeof(object)) + { + var valueType = value.GetType(); + type = ES3TypeMgr.GetOrCreateES3Type(valueType); + + if(type == null) + throw new NotSupportedException("Types of " + valueType + " are not supported."); + + if (!type.isCollection && !type.isDictionary && !type.isPrimitive) + { + StartWriteObject(null); + WriteType(valueType); + + type.Write(value, this); + + EndWriteObject(null); + return; + } + } + + if(type == null) + throw new ArgumentNullException("ES3Type argument cannot be null."); + if(type.isUnsupported) + throw new NotSupportedException("Types of "+type.type+" are not supported."); + + if (type.isPrimitive) + type.Write(value, this); + else if (type.isCollection) + { + StartWriteCollection(); + ((ES3CollectionType)type).Write(value, this, memberReferenceMode); + EndWriteCollection(); + } + else if (type.isDictionary) + { + StartWriteDictionary(); + ((ES3DictionaryType)type).Write(value, this, memberReferenceMode); + EndWriteDictionary(); + } + else + { + if (type.type == typeof(GameObject)) + ((ES3Type_GameObject)type).saveChildren = settings.saveChildren; + + StartWriteObject(null); + + if (type.isES3TypeUnityObject) + ((ES3UnityObjectType)type).WriteObject(value, this, memberReferenceMode); + else + type.Write(value, this); + EndWriteObject(null); + } + } + + internal virtual void WriteRef(UnityEngine.Object obj) + { + var refMgr = ES3ReferenceMgrBase.Current; + if (refMgr == null) + throw new InvalidOperationException("An Easy Save 3 Manager is required to save references. To add one to your scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene"); + + // Get the reference ID, if it exists, and store it. + long id = refMgr.Get(obj); + // If reference ID doesn't exist, create reference. + if (id == -1) + id = refMgr.Add(obj); + WriteProperty(ES3ReferenceMgrBase.referencePropertyName, id.ToString()); + } + + #endregion + + /* Writes a property as a name value pair. */ + #region WriteProperty(name, value) methods + + /// Writes a field or property to the writer. Note that this should only be called within an ES3Type. + /// The name of the field or property. + /// The value we want to write. + public virtual void WriteProperty(string name, object value) + { + WriteProperty(name, value, settings.memberReferenceMode); + } + + /// Writes a field or property to the writer. Note that this should only be called within an ES3Type. + /// The name of the field or property. + /// The value we want to write. + /// Whether we want to write the property by reference, by value, or both. + public virtual void WriteProperty(string name, object value, ES3.ReferenceMode memberReferenceMode) + { + if (SerializationDepthLimitExceeded()) + return; + + StartWriteProperty(name); Write(value, memberReferenceMode); EndWriteProperty(name); + } + + /// Writes a field or property to the writer. Note that this should only be called within an ES3Type. + /// The name of the field or property. + /// The value we want to write. + public virtual void WriteProperty(string name, object value) + { + WriteProperty(name, value, ES3TypeMgr.GetOrCreateES3Type(typeof(T)), settings.memberReferenceMode); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void WriteProperty(string name, object value, ES3Type type) + { + WriteProperty(name, value, type, settings.memberReferenceMode); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void WriteProperty(string name, object value, ES3Type type, ES3.ReferenceMode memberReferenceMode) + { + if (SerializationDepthLimitExceeded()) + return; + + StartWriteProperty(name); + Write(value, type, memberReferenceMode); + EndWriteProperty(name); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void WritePropertyByRef(string name, UnityEngine.Object value) + { + if (SerializationDepthLimitExceeded()) + return; + + StartWriteProperty(name); + if(value == null) + { + WriteNull(); + return; }; + StartWriteObject(name); + WriteRef(value); + EndWriteObject(name); + EndWriteProperty(name); + } + + /// Writes a private property to the writer. Note that this should only be called within an ES3Type. + /// The name of the property. + /// The object containing the property we want to write. + public void WritePrivateProperty(string name, object objectContainingProperty) + { + var property = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); + if(property.IsNull) + throw new MissingMemberException("A private property named "+ name + " does not exist in the type "+objectContainingProperty.GetType()); + WriteProperty(name, property.GetValue(objectContainingProperty), ES3TypeMgr.GetOrCreateES3Type(property.MemberType)); + } + + /// Writes a private field to the writer. Note that this should only be called within an ES3Type. + /// The name of the field. + /// The object containing the property we want to write. + public void WritePrivateField(string name, object objectContainingField) + { + var field = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); + if(field.IsNull) + throw new MissingMemberException("A private field named "+ name + " does not exist in the type "+objectContainingField.GetType()); + WriteProperty(name,field.GetValue(objectContainingField), ES3TypeMgr.GetOrCreateES3Type(field.MemberType)); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void WritePrivateProperty(string name, object objectContainingProperty, ES3Type type) + { + var property = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); + if(property.IsNull) + throw new MissingMemberException("A private property named "+ name + " does not exist in the type "+objectContainingProperty.GetType()); + WriteProperty(name, property.GetValue(objectContainingProperty), type); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void WritePrivateField(string name, object objectContainingField, ES3Type type) + { + var field = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); + if(field.IsNull) + throw new MissingMemberException("A private field named "+ name + " does not exist in the type "+objectContainingField.GetType()); + WriteProperty(name,field.GetValue(objectContainingField), type); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void WritePrivatePropertyByRef(string name, object objectContainingProperty) + { + var property = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); + if(property.IsNull) + throw new MissingMemberException("A private property named "+ name + " does not exist in the type "+objectContainingProperty.GetType()); + WritePropertyByRef(name, (UnityEngine.Object)property.GetValue(objectContainingProperty)); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void WritePrivateFieldByRef(string name, object objectContainingField) + { + var field = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); + if(field.IsNull) + throw new MissingMemberException("A private field named "+ name + " does not exist in the type "+objectContainingField.GetType()); + WritePropertyByRef(name, (UnityEngine.Object)field.GetValue(objectContainingField)); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public void WriteType(Type type) + { + WriteProperty(ES3Type.typeFieldName, ES3Reflection.GetTypeString(type)); + } + + #endregion + + #region Create methods + + /// Creates a new ES3Writer. + /// The relative or absolute path of the file we want to write to. + /// The settings we want to use to override the default settings. + public static ES3Writer Create(string filePath, ES3Settings settings) + { + return Create(new ES3Settings(filePath, settings)); + } + + /// Creates a new ES3Writer. + /// The settings we want to use to override the default settings. + public static ES3Writer Create(ES3Settings settings) + { + return Create(settings, true, true, false); + } + + // Implicit Stream Methods. + internal static ES3Writer Create(ES3Settings settings, bool writeHeaderAndFooter, bool overwriteKeys, bool append) + { + var stream = ES3Stream.CreateStream(settings, (append ? ES3FileMode.Append : ES3FileMode.Write)); + if(stream == null) + return null; + return Create(stream, settings, writeHeaderAndFooter, overwriteKeys); + } + + // Explicit Stream Methods. + + internal static ES3Writer Create(Stream stream, ES3Settings settings, bool writeHeaderAndFooter, bool overwriteKeys) + { + if(stream.GetType() == typeof(MemoryStream)) + { + settings = (ES3Settings)settings.Clone(); + settings.location = ES3.Location.InternalMS; + } + + // Get the baseWriter using the given Stream. + if(settings.format == ES3.Format.JSON) + return new ES3JSONWriter(stream, settings, writeHeaderAndFooter, overwriteKeys); + else + return null; + } + + #endregion + + /* + * Checks whether serialization depth limit has been exceeded + */ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + protected bool SerializationDepthLimitExceeded() + { + if (serializationDepth > settings.serializationDepthLimit) + { + ES3Debug.LogWarning("Serialization depth limit of " + settings.serializationDepthLimit + " has been exceeded, indicating that there may be a circular reference.\nIf this is not a circular reference, you can increase the depth by going to Window > Easy Save 3 > Settings > Advanced Settings > Serialization Depth Limit"); + return true; + } + return false; + } + + /* + * Marks a key for deletion. + * When merging files, keys marked for deletion will not be included. + */ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public virtual void MarkKeyForDeletion(string key) + { + keysToDelete.Add(key); + } + + /* + * Merges the contents of the non-temporary file with this ES3Writer, + * ignoring any keys which are marked for deletion. + */ + protected void Merge() + { + using(var reader = ES3Reader.Create(settings)) + { + if(reader == null) + return; + Merge(reader); + } + } + + /* + * Merges the contents of the ES3Reader with this ES3Writer, + * ignoring any keys which are marked for deletion. + */ + protected void Merge(ES3Reader reader) + { + foreach(KeyValuePair kvp in reader.RawEnumerator) + if(!keysToDelete.Contains(kvp.Key) || kvp.Value.type == null) // Don't add keys whose data is of a type which no longer exists in the project. + Write(kvp.Key, kvp.Value.type.type, kvp.Value.bytes); + } + + /// Stores the contents of the writer and overwrites any existing keys if overwriting is enabled. + public virtual void Save() + { + Save(overwriteKeys); + } + + /// Stores the contents of the writer and overwrites any existing keys if overwriting is enabled. + /// Whether we should overwrite existing keys. + public virtual void Save(bool overwriteKeys) + { + if(overwriteKeys) + Merge(); + EndWriteFile(); + Dispose(); + + // If we're writing to a location which can become corrupted, rename the backup file to the file we want. + // This prevents corrupt data. + if(settings.location == ES3.Location.File || settings.location == ES3.Location.PlayerPrefs) + ES3IO.CommitBackup(settings); + } +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Writer.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Writer.cs.meta new file mode 100644 index 00000000..e0973a9b --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3Writer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 09319508912db4c13bd924c6dc89f661 +timeCreated: 1499764821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs new file mode 100644 index 00000000..4a3721c4 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs @@ -0,0 +1,4 @@ +public class ES3XMLWriter +{ + // Not implemented +} diff --git a/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs.meta b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs.meta new file mode 100644 index 00000000..68316030 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Scripts/Writers/ES3XMLWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bac03a64f52fa94ea3bdcafecad8788 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Web.meta b/Assets/ThirdPlugins/Easy Save 3/Web.meta new file mode 100644 index 00000000..814186ea --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Web.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b6fb14c673b174696ac55b1a7869f3a9 +folderAsset: yes +timeCreated: 1501844154 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php b/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php new file mode 100644 index 00000000..cba4186d --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php @@ -0,0 +1,305 @@ + PDO::ERRMODE_EXCEPTION)); +} +catch(PDOException $e) +{ + Error("Could not connect to database.", $e->getMessage(), 501); +} + +if(!isset($_POST["apiKey"])) +{ + echo "ES3Cloud is functioning correctly."; + exit(); +} + +if($_POST["apiKey"] != $api_key) + Error("Incorrect API Key", "Incorrect API Key", 403); + +// ----- GET FILE ----- +if(isset($_POST["getFile"])) +{ + $stmt = $db->prepare("SELECT $fileDataField FROM $tableName WHERE $filenameField = :filename AND $userField = :user AND $lastUpdatedField > :timestamp LIMIT 1"); + $stmt->bindParam(":filename", $_POST["getFile"]); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $postTimestamp = GetPOSTTimestamp(); + $stmt->bindParam(":timestamp", $postTimestamp); + $stmt->execute(); + if($stmt->rowCount() > 0) + { + $data = $stmt->fetchColumn(); + // Manually set the content length so WWW.progress works. + header($_SERVER["SERVER_PROTOCOL"] . " 200 OK"); + header("Cache-Control: public"); + header("Content-Type: application/octet-stream"); + header("Content-Transfer-Encoding: Binary"); + header("Content-Length:".strlen($data)); + echo $data; + } +} + +// ----- PUT FILE ----- +else if(isset($_POST["putFile"])) +{ + // Get uploaded data. + $filePath = $_FILES["data"]["tmp_name"]; + + // If file doesn't exist or it contains no data, throw an error. + if(!file_exists($filePath) || filesize($filePath) == 0) + Error("Uploaded file does not exist or is empty.", "Uploaded file does not exist or is empty.", 400); + + $fp = fopen($filePath, 'rb'); + + $stmt = $db->prepare("INSERT INTO $tableName ($filenameField, $fileDataField, $userField, $lastUpdatedField) VALUES (:filename, :data, :user, :timestamp) ON DUPLICATE KEY UPDATE $fileDataField = VALUES($fileDataField), $lastUpdatedField = VALUES($lastUpdatedField)"); + $stmt->bindParam(":filename", $_POST["putFile"]); + $stmt->bindParam(":data", $fp, PDO::PARAM_LOB); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $postTimestamp = GetPOSTTimestamp(); + $stmt->bindParam(":timestamp", $postTimestamp); + + $stmt->execute(); +} + +// ----- RENAME FILE ----- +else if(isset($_POST["renameFile"])) +{ + $stmt = $db->prepare("UPDATE $tableName SET $filenameField = :newFilename WHERE $filenameField = :filename AND $userField = :user"); + $stmt->bindParam(":filename", $_POST["renameFile"]); + $stmt->bindParam(":newFilename", $_POST["newFilename"]); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $stmt->execute(); +} + +// ----- DELETE FILE ----- +else if(isset($_POST["deleteFile"])) +{ + + $stmt = $db->prepare("DELETE FROM $tableName WHERE $filenameField = :filename AND $userField = :user"); + $stmt->bindParam(":filename", $_POST["deleteFile"]); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $stmt->execute(); +} + +// ----- GET FILENAMES WITH PATTERN ----- +else if(isset($_POST["getFilenames"]) && isset($_POST["pattern"])) +{ + echo "Here"; + $stmt = $db->prepare("SELECT $filenameField FROM $tableName WHERE $userField = :user AND $filenameField LIKE :pattern"); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $stmt->bindParam(":pattern", $_POST["pattern"]); + $stmt->execute(); + $rows = $stmt->fetchAll(); + foreach($rows as $row) + echo $row[$filenameField] . ";"; +} + +// ----- GET FILENAMES ----- +else if(isset($_POST["getFilenames"])) +{ + $stmt = $db->prepare("SELECT $filenameField FROM $tableName WHERE $userField = :user"); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $stmt->execute(); + $rows = $stmt->fetchAll(); + foreach($rows as $row) + echo $row[$filenameField] . ";"; +} + +// ----- GET TIMESTAMP ----- +else if(isset($_POST["getTimestamp"])) +{ + $stmt = $db->prepare("SELECT $lastUpdatedField FROM $tableName WHERE $filenameField = :filename AND $userField = :user LIMIT 1"); + $stmt->bindParam(":filename", $_POST["getTimestamp"]); + $postUser = GetPOSTUser(); + $stmt->bindParam(":user", $postUser); + $stmt->execute(); + if($stmt->rowCount() > 0) + echo $stmt->fetchColumn(); + else + Error("Could not get timestamp as file does not exist.", "Could not get timestamp as file does not exist.", 400); +} + +else + Error("No valid operation was specified", "No valid operation was specified", 400); + +// Close the connection to the database by nullifying the variable. +$db = null; + +function GetPOSTUser() +{ + return isset($_POST["user"]) ? $_POST["user"] : ""; +} + +function GetPOSTTimestamp() +{ + return isset($_POST["timestamp"]) ? $_POST["timestamp"] : 0; +} + +function Error($headerMsg, $msg, $code) +{ + header($headerMsg, true, $code); + print_r($msg); + if(isset($GLOBALS['db'])) + $GLOBALS['db'] = null; + exit(); +} + +// ------- INSTALL METHODS ------- + +function PreInstall() +{ + echo '
+

ES3 Cloud Installation

+

This will install the ES3 Cloud tables on your MySQL database, and add the required ES3Variables.php file to your server.

+

Please enter your database details below:

+

+

+ Database Host:
+ +
+
+ Database User:
+ +
+
+ Database Password:
+ +
+
+ Database Name:
+ +
+
+ +
+

+
'; +} + +function Install($dbHost, $dbUser, $dbPassword, $dbName, $tableName, $filenameField, $fileDataField, $userField, $lastUpdatedField) +{ + try + { + $db = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => 5)); + + $tableExists = $db->query("SELECT * FROM information_schema.tables WHERE table_schema = '$dbName' AND table_name = '$tableName' LIMIT 1;"); + if($tableExists->rowCount() == 0) + { + + // Create the table if it doesn't already exist. + try + { + $createTableQuery = +"CREATE TABLE IF NOT EXISTS `$tableName` ( +`$filenameField` varchar(200) NOT NULL, +`$fileDataField` longblob NOT NULL, +`$userField` varchar(64) NOT NULL, +`$lastUpdatedField` int(11) unsigned NOT NULL DEFAULT '0', +PRIMARY KEY (`$filenameField`,`$userField`) +) ENGINE=InnoDB COLLATE=utf8_unicode_ci CHARSET=utf8;"; + $db->query($createTableQuery); + } + catch (PDOException $e) + { + echo "

Could not create tables on database. Database threw error:

".$e->getMessage()."

+

To manually install the MySQL tables, please run the following SQL code on your database:

+
$createTableQuery
"; + exit(); + } + } + + + try + { + $apiKey = substr(md5(microtime()),rand(0,26),12); + $phpScript = +""; + + // Check that path is writable or file_put_contents is supported. + if(!function_exists("file_put_contents")) + { + ManuallyInstall($phpScript); + exit(); + } + else + { + file_put_contents("ES3Variables.php", $phpScript); + } + } + catch(Exception $e) + { + ManuallyInstall($phpScript); + exit(); + } + + if(!file_exists("ES3Variables.php")) + { + ManuallyInstall($phpScript); + exit(); + } + + echo + " +
+

Successfully installed ES3Cloud

+

IMPORTANT:
Please take note of your API key below. You will need to use it whenever using the API.

+

Your API key can also be found in the ES3Variables.php file which has just been installed.

+

API Key: $apiKey

+
+ "; + } + catch(PDOException $e) + { + echo "

Database could not be accessed with these details. The database returned the following error:

" . $e->getMessage() . "

"; + PreInstall(); + exit(); + } +} + +function ManuallyInstall($phpScript) +{ + echo "

Couldn't create PHP file on your server. This could be because file_put_contents is not supported on your server, or you do not have permission to write files to this folder on your server.

+

To manually install the PHP file, please create a file named ES3Variables.php in the same directory as your ES3.php file with the following contents:

+
$phpScript
+

After creating this file, installation will be complete.

"; +} + +?> \ No newline at end of file diff --git a/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php.meta b/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php.meta new file mode 100644 index 00000000..da1459d7 --- /dev/null +++ b/Assets/ThirdPlugins/Easy Save 3/Web/ES3Cloud.php.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5b891e253fd1a40e999dd9064b8a0d6f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot.meta b/Assets/ThirdPlugins/StompyRobot.meta new file mode 100644 index 00000000..ddd7828d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f7bac98c735c47498b65b5966524127 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger.meta new file mode 100644 index 00000000..014205e0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 68e2be5603abf954ca61a56c2ef9fcb3 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations.meta new file mode 100644 index 00000000..e4827fc7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 90ce24abd5f7a3a4987f8df26a9b100c +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI.meta new file mode 100644 index 00000000..3188b9b2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 669a18994751c204db332e07a02c6c83 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin.meta new file mode 100644 index 00000000..023ddd14 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: f6fc3d5dd53388a49ab0ce7abc999cc3 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim new file mode 100644 index 00000000..9506e81c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim @@ -0,0 +1,164 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Invalid + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 760 + outSlope: 760 + tangentMode: 10 + - time: .0500000007 + value: 38 + inSlope: -77.285675 + outSlope: -77.285675 + tangentMode: 10 + - time: .166666672 + value: -68.6999969 + inSlope: -146.952332 + outSlope: -146.952332 + tangentMode: 10 + - time: .316666663 + value: 24.3999996 + inSlope: 48.333313 + outSlope: 48.333313 + tangentMode: 10 + - time: .416666657 + value: -28 + inSlope: -122.000015 + outSlope: -122.000015 + tangentMode: 10 + - time: .516666651 + value: 0 + inSlope: 280.000031 + outSlope: 280.000031 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_AnchoredPosition.x + path: + classID: 224 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_AnchoredPosition.y + path: + classID: 224 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1460864421 + script: {fileID: 0} + classID: 224 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 538195251 + script: {fileID: 0} + classID: 224 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .516666651 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 760 + outSlope: 760 + tangentMode: 10 + - time: .0500000007 + value: 38 + inSlope: -77.285675 + outSlope: -77.285675 + tangentMode: 10 + - time: .166666672 + value: -68.6999969 + inSlope: -146.952332 + outSlope: -146.952332 + tangentMode: 10 + - time: .316666663 + value: 24.3999996 + inSlope: 48.333313 + outSlope: 48.333313 + tangentMode: 10 + - time: .416666657 + value: -28 + inSlope: -122.000015 + outSlope: -122.000015 + tangentMode: 10 + - time: .516666651 + value: 0 + inSlope: 280.000031 + outSlope: 280.000031 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_AnchoredPosition.x + path: + classID: 224 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_AnchoredPosition.y + path: + classID: 224 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_Events: [] diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim.meta new file mode 100644 index 00000000..7db6e85a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Invalid.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 298885be62621e042b5946b9c09c039d +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller new file mode 100644 index 00000000..82f7d630 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller @@ -0,0 +1,126 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Pin + serializedVersion: 2 + m_AnimatorParameters: + - m_Name: Invalid + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 3 + m_Name: Base Layer + m_StateMachine: {fileID: 110781490} + m_Mask: {fileID: 0} + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_StateMachineMotionSetIndex: 0 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &110168930 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110264508} + m_DstState: {fileID: 110288774} + m_TransitionDuration: .100000001 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Invalid + m_EventTreshold: 0 + m_ExitTime: .899999976 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110170326 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110288774} + m_DstState: {fileID: 110264508} + m_TransitionDuration: .100000001 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: Invalid + m_EventTreshold: 0 + m_ExitTime: 1 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1102 &110264508 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 0} + m_ParentStateMachine: {fileID: 110781490} + m_Position: {x: 24, y: 12, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110288774 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Invalid + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 298885be62621e042b5946b9c09c039d, type: 2} + m_ParentStateMachine: {fileID: 110781490} + m_Position: {x: 288, y: 12, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1107 &110781490 +StateMachine: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_DefaultState: {fileID: 110264508} + m_States: + - {fileID: 110288774} + - {fileID: 110264508} + m_ChildStateMachine: [] + m_ChildStateMachinePosition: [] + m_OrderedTransitions: + data: + first: {fileID: 110264508} + second: + - {fileID: 110168930} + data: + first: {fileID: 110288774} + second: + - {fileID: 110170326} + data: + first: {fileID: 0} + second: [] + m_MotionSetCount: 1 + m_AnyStatePosition: {x: -96, y: -84, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller.meta new file mode 100644 index 00000000..3d7971c1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Pin.controller.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 35724102027368d4988847df7e923ddc +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller new file mode 100644 index 00000000..363933ad --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Result + serializedVersion: 2 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 3 + m_Name: Base Layer + m_StateMachine: {fileID: 110789792} + m_Mask: {fileID: 0} + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_StateMachineMotionSetIndex: 0 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &110289792 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Invalid + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 298885be62621e042b5946b9c09c039d, type: 2} + m_ParentStateMachine: {fileID: 110789792} + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1107 &110789792 +StateMachine: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_DefaultState: {fileID: 110289792} + m_States: + - {fileID: 110289792} + m_ChildStateMachine: [] + m_ChildStateMachinePosition: [] + m_OrderedTransitions: {} + m_MotionSetCount: 1 + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller.meta new file mode 100644 index 00000000..84e86beb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Pin/Result.controller.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bed23c49fcd255d489e4d56fc45840c5 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger.meta new file mode 100644 index 00000000..2dfb9918 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53b19c72877e74249aedbf338e4d12f1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim new file mode 100644 index 00000000..3164b837 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim @@ -0,0 +1,281 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ErrorPulse + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Text + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Icon + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.25 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.75 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Alpha + path: SR_Text + classID: 225 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Alpha + path: SR_Icon + classID: 225 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 3467184727 + attribute: 2086281974 + script: {fileID: 0} + typeID: 1 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2427880523 + attribute: 2086281974 + script: {fileID: 0} + typeID: 1 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 3467184727 + attribute: 1574349066 + script: {fileID: 0} + typeID: 225 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2427880523 + attribute: 1574349066 + script: {fileID: 0} + typeID: 225 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Text + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Icon + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.25 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.75 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Alpha + path: SR_Text + classID: 225 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 0.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Alpha + path: SR_Icon + classID: 225 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim.meta new file mode 100644 index 00000000..845ae3d0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0cfda343a5ba51947ab58f607f5ca9a5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller new file mode 100644 index 00000000..d1a7ddd3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller @@ -0,0 +1,153 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ErrorPulse + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Display + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107071966271980136} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &1101098509855648160 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Display + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102413107779766724} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101354260903571370 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Display + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102179137546092990} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1102179137546092990 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Showing + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101098509855648160} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 0cfda343a5ba51947ab58f607f5ca9a5, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102413107779766724 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Hidden + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101354260903571370} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: e11d486ec67959544b6425209045f6c7, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107071966271980136 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102413107779766724} + m_Position: {x: 264, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102179137546092990} + m_Position: {x: 504, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102413107779766724} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller.meta new file mode 100644 index 00000000..e3d797cc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/ErrorPulse.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 449919ad070ed5f428b1698571eee16d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim new file mode 100644 index 00000000..fb0a55a0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim @@ -0,0 +1,131 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Hidden + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Text + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Icon + classID: 1 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 3467184727 + attribute: 2086281974 + script: {fileID: 0} + typeID: 1 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2427880523 + attribute: 2086281974 + script: {fileID: 0} + typeID: 1 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Text + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: SR_Icon + classID: 1 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim.meta new file mode 100644 index 00000000..cb0cd94e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Animations/UI/Trigger/Hidden.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e11d486ec67959544b6425209045f6c7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor.meta new file mode 100644 index 00000000..c287574e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 92ae0c944a17e8c4f803140a0bc49a29 +folderAsset: yes +timeCreated: 1441903352 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png new file mode 100644 index 00000000..1ff2a5fe Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png.meta new file mode 100644 index 00000000..24a18664 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Dark.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: a2a19a03702d1e84b92ce38f8b7af009 +timeCreated: 1451840718 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png new file mode 100644 index 00000000..2f0dc295 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png.meta new file mode 100644 index 00000000..ffcb83d6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/BG_Light.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: f7df5e533fb1b044b81e7d0d00386594 +timeCreated: 1451840719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png new file mode 100644 index 00000000..0e7d79d5 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png.meta new file mode 100644 index 00000000..eedb26c3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/DemoSprite.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 7b0a319b449bc9248bcf5e3dc38ca884 +timeCreated: 1451840718 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons.meta new file mode 100644 index 00000000..6b4663c9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c7fd7e484af89a5428ca411ea63f1c35 +folderAsset: yes +timeCreated: 1451840707 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark.meta new file mode 100644 index 00000000..88467c33 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4d23682c543997348af2ea8b5da08d31 +folderAsset: yes +timeCreated: 1451840707 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png new file mode 100644 index 00000000..12920b47 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png.meta new file mode 100644 index 00000000..ec0929a5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/console-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: ec0451a83de031241b08885adca07a2a +timeCreated: 1451840719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png new file mode 100644 index 00000000..ff954744 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png.meta new file mode 100644 index 00000000..a9216977 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/options-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: f82ace81d91bcc2418fc06da36587d32 +timeCreated: 1451840719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png new file mode 100644 index 00000000..16ea0343 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png.meta new file mode 100644 index 00000000..41fc75de --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Dark/profiler-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: a65d8899e293fc449bc3d57710810333 +timeCreated: 1451840718 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light.meta new file mode 100644 index 00000000..251c86df --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 390d5a03531a448489ce6aa8aefdc6e1 +folderAsset: yes +timeCreated: 1451840707 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png new file mode 100644 index 00000000..2836b3f5 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png.meta new file mode 100644 index 00000000..a09f10e8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/console-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: f2c0453342e401d49879e5811e9985b7 +timeCreated: 1451840719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png new file mode 100644 index 00000000..45b6af07 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png.meta new file mode 100644 index 00000000..a2f06984 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/options-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 0a0159476f63b134fbf8474a85bac7ab +timeCreated: 1451840717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png new file mode 100644 index 00000000..7b40727d Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png.meta new file mode 100644 index 00000000..f01dc938 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Icons/Light/profiler-25.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 1e056ec0ed417e84f8129ebc5d3a5631 +timeCreated: 1451840717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png new file mode 100644 index 00000000..40dbb4d2 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png.meta new file mode 100644 index 00000000..2c5683af --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_DarkBG.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 5d748e97260523b408727350980e61d3 +timeCreated: 1451840717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png new file mode 100644 index 00000000..a43d7bde Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png.meta new file mode 100644 index 00000000..f1198f93 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/Logo_LightBG.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 28369deb7b17a7a43921a7a8e74e6229 +timeCreated: 1451840717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png new file mode 100644 index 00000000..8499dc5d Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png.meta new file mode 100644 index 00000000..d353878e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_DarkBG.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: e40803cf998d93748b519c0e3baa56db +timeCreated: 1451840719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png new file mode 100644 index 00000000..0b2d8495 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png.meta new file mode 100644 index 00000000..1803e07e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Editor/WelcomeLogo_LightBG.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 0c97a7a7f0adfd54faf9393ffdd90458 +timeCreated: 1451840717 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt b/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt new file mode 100644 index 00000000..d583f4c7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt @@ -0,0 +1,427 @@ +===================== +SRDebugger - (C) Stompy Robot LTD 2020 +===================== + +Visit https://www.stompyrobot.uk/tools/srdebugger/documentation for more detailed documentation. + +# Getting Started: + +Open StompyRobot/SRDebugger/Scenes/Sample.unity for a simple example scene. + +## Setup + +### Unity 2017 / 2018 / 2019 + +No setup is required. SRDebugger will automatically load at runtime unless disabled in settings. +By default, the trigger to open the debug panel is attached to the top-left of the game view. Triple-tap there to open the panel. (This can be changed in the settings) + +## Configuration + +On the menu bar, click "Window/SRDebugger Settings" to open the settings pane for SRDebugger. You can set up trigger behaviour, pin entry, and more here. + +# Other + +For documentation on other features, including the options tab, bug reporter, profiler, etc, visit the documentation online at https://www.stompyrobot.uk/tools/srdebugger/documentation + +# Restrictions + + - Icons included in this pack must only be used in the SRDebugger panel. If you wish to use the icons outside of the debug panel, consider licensing from icons8.com/buy + - Unauthorised distribution of this library is not permitted. See Unity Asset Store EULA for details. + +# Credits + +- Programming/Design by Simon Moles @ Stompy Robot (simon@stompyrobot.uk, www.stompyrobot.uk) +- Icons provided by Icons8 (www.icons8.com) +- Side-bar background pattern provided by Subtle Patterns (www.subtlepatterns.com) +- Orbitron font provided by the League of Moveable Type (theleagueofmoveabletype.com) (Open Font License 1.1) +- Source Code Pro font provided by Adobe (github.com/adobe-fonts/source-code-pro) (Open Font License 1.1) + +# Change Log + +1.9.1 +---------- + +Fixed: +- No longer auto-initializes when auto-initialization is disabled. +- Improved support for higher levels of 'managed stripping' in AOT compiled platforms (IL2CPP) +- Fix error notifier calling native Unity methods from background thread. +- Fix number increment/decrement issues on non-english language platforms. + +1.9.0 +---------- + +Attention: If upgrading from a previous version, please see upgrade notes below. + +New: +- Added a notification to the trigger whenever an error is added to the console log (disable in settings). + +Changed: +- Converted to asmdef packages. +- Added note to auto-created event system to inform that it is created by SRDebugger and how to disable it. + +Fixed: +- Support Domain Reload in 2019.3 +- Fix settings window display in 2019.3 + + +Upgrade Notes: + +This package now uses assembly definition files (asmdef) to isolate the script assets. +Please import this new version over your existing implementation and overwrite any modified files. + +For more information on assembly definition files, see the Unity docs: +https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html + +The options panel (SROptions) has required some changes to support asmdef, however most user code interacting with SROptions should not require any changes. + +For assistance please contact us at contact@stompyrobot.uk or post on the forums. + +1.8.4 +---------- + +New: +- Support for 2019.3. +- Added option to completely unload the debug panel whenever it is closed. + +Changed: +- Use https for bug reporter on all platforms. + +Fixed: +- Console not clearing correctly after the first time. +- Obsolete API warnings. +- Incorrect layout on options tab when running on Unity 2019.1 + +1.8.2 +---------- + +Fixed: +- Exception during bug report when no logs exist. + +1.8.1 +---------- + +Fixed: +- Fixed warning from using an obsolete Unity API on 2018.2. +- Welcome/Settings screen sizing on high dpi displays. + +1.8.0 +---------- + +Note: Minimum supported Unity version is now 5.6. + +New: +- Profiler support for scriptable render pipelines. + +Changed: +- Adjusted profiler to improve performance. V-Sync delay is now in "Other" category. +- Updated bug reporter to use UnityWebRequest. +- Removed "Prefab" initialization mode because Unity 4 is no longer supported. + - If you had "Prefab" mode enabled then you will be switched to "Automatic" mode. +- Console logs are now gathered from a earlier point in initialization. + +Fixed: +- Time.timeScale set to 0 would break profiler. +- Fix errors when changing UI scale after ending play mode. + +1.7.1 +---------- + +Fixed: +- "Internal Server Error" message when sending a bug report on some locales when using .NET 4.6 + +1.7.0 +---------- + +New: +- Added "UI Scale" setting to Advanced tab in Settings Window (and API via SRDebug.Instance.Settings.UIScale) +- Added "Application Version" to system information. + +Fixed: +- Small numbers in SROptions display correctly. +- Clearing the console a second time wouldn't clear the log messages. + +1.6.2 +---------- + +Fixed: +- Compatibility with Unity 2017.1 + +1.6.1 +---------- + +New: +- Added "Development Builds Only" option to trigger behaviour. + +Fixed: +- Crash caused by a known issue in Unity 5.6.0f3. +- Compile warnings in Unity 5.6.0f3. + +1.6.0 +---------- + +New: +- Cursor is automatically shown when debug panel is opened. (can be disabled in settings) +- Added an API for converting the debug panel into a world object that can be positioned in the scene (useful for VR). See docs for information. + ^ This is an advanced feature that is not officially supported but provided for users who know how to use it. + +Changed: +- Use Rect sprite packing for SRDebugger UI assets to prevent rendering artifacts. + +Fixed: +- OnPropertyChanged in SROptions having no effect. +- Cameras disabled during the frame preventing profiler from recording frames. (Google VR compatibility) + +1.5.1 +---------- + +Fixed: +- Compile on WSA builds. +- Editor resources not being found when using Mad Compile Time Optimizer to move scripts. +- Log messages from other threads not being captured. + +New: +- Added setting to disable automatically generated EventSystem. + +1.5.0 +---------- + +New: +- Console can be filtered/searched. +- Console now has a "Scroll to Bottom" button. +- Option categories can now be pinned/unpinned all at once. +- API for pinning/unpinning options. +- Additional "Option Containers" can be registered with the SRDebug api, enabling your own objects to populate the Options tab. See docs. +- API for adding information to the System tab (which will also be sent with bug reports). + +Changed: +- Compatibility with Unity 5.5 +- Bug reporter autofills email field with last used email address. +- Limited maximum console messages. (Default 1500, configurable in settings window) +- Performance improvements + +Fixed: +- Windows Store builds with .NET Native now work correctly. +- Incorrect behaviour when creating default EventSystem when using manual init. + +1.4.9 +---------- + +Changed: +- Compatibility with Unity 5.4. +- SROptions: Read-only string options now expand to display entire string. + +1.4.8 +---------- + +New: +- Added "SROptions Window" for tweaking SROptions parameters while working in the Unity Editor. (Unity 5 only) + +1.4.7 +---------- + +New: +- Trigger can now be positioned in CenterLeft, CenterRight, BottomCenter, TopCenter positions. +- Options can now be positioned in TopCenter and BottomCenter positions. + +Changes: +- Console now scrolls to the last log entry when first opened. +- Moved "using" statements inside namespace to prevent conflicts with user code. +- Renamed the hierarchy names of all prefabs to include an SR_ prefix to prevent conflicts with user code. + +Fixes: +- Fixed input bug when using Unity 5.3.3p2. +- Allocation per frame when pin entry form is visible has been removed. +- Mono usage profiler correctly reports when not supported on 5.3+ + + +1.4.6 +---------- + +Fixes: +- Editor resources used by SRDebugger are no longer included in non-editor builds. + +Known Issues: + +- On Unity 5.3.0f4, errors are printed when resizing the docked console and profiler. This is a Unity bug and should be fixed in a future Unity update. See http://issuetracker.unity3d.com/issues/layoutrebuilder-errors-when-changing-rect-transform-width-in-layout-element-component for details. + +1.4.5 +---------- + +Changes: +- Added notice about known issue to Welcome window when running Unity 5.3 +- Unity 4.7 is now minimum supported version. + +Fixes: +- Bug reporter signup form continues to the next page correctly after submitting. + +1.4.4 +---------- + +Changes: +- Support for Bug Reporter on WebGL platform. +- Enabled HTTPS for bug reporter on iOS to comply with TLS restrictions. +- Documented pin entry API, and deprecated an obsolete parameter. (See documentation for example of how to use pin entry API) + +Fixes: +- TouchInputModule is now added to default event system on Unity 4, allowing touch input to be recognised by SRDebugger. +- Welcome window no longer causes errors on Unity 4. + +1.4.2 & 1.4.3 +---------- + +Changes: +- Compatibility with Unity 5.3.0. +- Performance improvements when scrolling console log. + +Fixes: +- Profiler no longer stops updating when a camera in the scene is disabled. +- (1.4.3) Fix build on Windows Store platform. + +1.4.1 +---------- + +Fixes: +- Bug reporter tab no longer requests pin entry after taking screenshot when "require pin every time" enabled. +- Compile fixes for Unity 5.2.2 + +1.4.0 +---------- + +New: +- Brand new Settings window with more intuitive layout and tabbed interface. +- Added "Welcome" window that opens on first import to help first-time users. +- Can now customize the docked tools layout from the new settings window. +- Docked console alignment can be adjusted from the API (SRDebug.Instance.DockConsole.Alignment). +- Added new "Double Tap" mode for entry trigger. +- (EXPERIMENTAL) Added PlayMaker actions package (Open bug report sheet, Open/Close debug panel, Dock/Undock Console/Profiler, Enable/Disable trigger, etc). + +Changes: +- Keyboard shortcuts can now have modifier keys set per-shortcut, instead of only for all shortcuts. +- Bug reporter signup form now provides more helpful error messages. + +Fixes: +- Stack trace area no longer jumps to the bottom of the scroll area when selecting a log entry. +- DisplayName attribute now works correctly on methods in SROptions. +- Bug reporter progress bar no longer only fills half-way when submitting bug reports. +- Exception no longer occurs when opening debug panel if you have a custom tab. +- Fixed intertia in scroll views not being enabled when on mobile platforms. + +1.3.0 +---------- + +New: +- Profiler can now be docked. Enable by pressing the "pin" icon on profiler tab or via API (SRDebug.Instance.IsProfilerDocked), or via keyboard shortcuts +- Resize docked profiler by dragging edges +- Added IncrementAttribute for use with SROptions, used to specify how much a number will be incremented/decremented when buttons are pressed +- Can disable specific tabs in SRDebugger settings +- Added "Runtime" and "Display" categories to system tab (this information is also sent with bug reports) +- Support for Unity 5.2 + +Changes: +- Namespace remaining code in SRF library to avoid conflicts. (If you're using any of this code you may need to import SRF namespace in your files) + +Fixes: +- Fixed opacity on docked console not resetting after failed resize drag +- Truncate long log messages to improve performance and prevent UGUI errors + +1.2.1 +---------- + +New: +- Added DisplayName attribute for use with SROptions. + +Changes: +- Read-only properties are now added to options tab (but can't be modified). +- Sort attribute can now be applied to methods. + +Fixes: +- Fixed compile errors when NGUI is imported in the same project. +- Removed excess logging when holding a number button in options tab. + +1.2.0 +---------- + +New: +- Dock console at the top of the screen. (open from the console tab, SRDebug API or keyboard shortcuts) +- Collapse duplicate log entries (enable in settings) +- Bug Report popover. Show bug reporter without granting access to the debug panel. Open via keyboard shortcut or the SRDebug API. +- Added Sort attribute to sort items in options tab. (See SROptions.Test.cs for examples) +- Added SROptions PropertyChanged support. Call OnPropertyChanged() in your setters and pinned options will update to reflect the new value. +- Entry code can now be entered with keyboard. + +Changes: +- Sending screenshot with bug report now supported on web player. + +Fixes: +- Fixed pin entry canvas not using correct UI camera. +- Modified namespaces and naming of internal classes to reduce conflicts with other assets. +- Fixed script updater having to run for Unity 5.1 +- Misc bug fixes + +1.1.2 +---------- + +Changes: +- Bug reporter is now supported on Web Player builds (now uses Unity WWW instead of HttpWebRequest for API calls) +- System Information area now shows IL2CPP status on iOS builds +- Application.platform value is now included with bug reports +- Support for Unity 5.1 + +Fixes: +- Fixed issues with options panel and IL2CPP on iOS +- Unity Cloud Build information now formatted correctly +- Fixed Settings UI issue on Unity 5.1 beta +- Fixed Entry Code setting having no effect +- Fixed keyboard shortcuts bypassing entry code if enabled + +1.1.1 +---------- + +Changes: +- The version of SRF (https://github.com/StompyRobot/SRF) has been changed to the "Lite" version, containing only scripts relevant to SRDebugger. If you want the full SRF library it is available free on GitHub. + +Fixes: +- SRDebugger no longer creates an event system in a scene if one already exists on Unity 5 using Auto-Init. +- Fixed CategoryAttribute being in the wrong namespace when when compiling for Windows 8 platforms. + +1.1.0 +---------- + +New: +- (Unity 5) Can enable "Auto-Init" in the Settings pane to automatically initialize SRDebugger without SRDebugger.Init prefab included in the scene. +- (BETA) Bug Reporter - Users can submit bug reports, with console log and system information included. These will be forwarded to you by email. (Enable in Settings) +- (BETA) Windows Store support +- Added support for Keyboard Shortcuts +- Added Trigger Behaviour option. Switch between "Triple-Tap" and "Tap-And-Hold" methods for opening debug panel +- Added Default Tab option in Settings pane +- Added Layer option to settings panel to choose which layer UI will be on +- Added Debug Camera mode (render debug panel UI to a camera instead of overlay) +- SRDebug.Init() method added for custom initialisation of SRDebugger without SRDebugger.Init prefab +- Event added to SRDebug on panel open/close + +Changes: +- Scroll sensitivity has been improved for desktop platforms + +1.0.2 +---------- + +Fixed: +- Fixed console layout with Unity 4.6.3+ +- Trigger Position setting now checked on init + +1.0.1 +---------- + +New: +- Unity 5.0 Support. +- Added option to Settings pane to require the entry code for every time the panel opens, instead of just the first time. + +Fixed: +- Removed debug message when opening Options tab for first time. +- Fixed conflict with NGUI RealTime class. +- Fixed layout of pinned options when number of items exceeds screen width. + +1.0.0 +---------- + +Initial version. diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt.meta new file mode 100644 index 00000000..40ee21df --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/README.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: dd822d7590660b445be21ef00893e4fe +TextScriptImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources.meta new file mode 100644 index 00000000..3e347214 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: bdb1a46f98f40c444b1d6d7213859ec8 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger.meta new file mode 100644 index 00000000..e36ecf30 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: e3e8160251d4f7b4e809cd284eaf69ac +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI.meta new file mode 100644 index 00000000..1009cfc4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 8eb04d524edafb441b304d319c3fcae3 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs.meta new file mode 100644 index 00000000..6f8a09e9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3c57e1c16bb4f2f48944df7e00d8863e +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab new file mode 100644 index 00000000..d5bcb1c0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab @@ -0,0 +1,764 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &127436 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22427436} + - 222: {fileID: 22227436} + - 114: {fileID: 11427434} + - 114: {fileID: 11427436} + m_Layer: 5 + m_Name: SR_EventBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176364 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22476364} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191472 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491472} + - 222: {fileID: 22291470} + - 114: {fileID: 11491486} + - 114: {fileID: 11491484} + - 114: {fileID: 11491482} + m_Layer: 5 + m_Name: SR_Footer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191480 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491480} + - 222: {fileID: 22291474} + - 114: {fileID: 11491504} + - 114: {fileID: 11491502} + - 114: {fileID: 11491500} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191496 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491496} + - 223: {fileID: 22391466} + - 114: {fileID: 11491536} + - 114: {fileID: 11491534} + - 114: {fileID: 11491532} + - 114: {fileID: 11491530} + - 225: {fileID: 22591466} + - 114: {fileID: 11491528} + - 114: {fileID: 11441472} + - 114: {fileID: 11426452} + m_Layer: 0 + m_Name: BugReportPopover + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191520 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491520} + - 222: {fileID: 22291500} + - 114: {fileID: 11491574} + m_Layer: 0 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191522 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491522} + - 114: {fileID: 11491576} + m_Layer: 0 + m_Name: SR_SheetContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191538 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491538} + - 114: {fileID: 11491606} + - 114: {fileID: 11496518} + m_Layer: 0 + m_Name: SR_Layout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191540 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491540} + - 114: {fileID: 11491610} + - 114: {fileID: 11491608} + - 114: {fileID: 11476364} + m_Layer: 5 + m_Name: SR_ScrollView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11426452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0ad3d8afa9fd64429a249b5bbb19557, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11427434 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11427436 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11441472 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c9a194ca4d3911419f82b2f06d5ef2e, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + CanvasGroup: {fileID: 22591466} + Container: {fileID: 22491522} +--- !u!114 &11476364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22491538} + ReplaceMask: {fileID: 0} + Viewport: {fileID: 22476364} +--- !u!114 &11491482 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191472} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 18 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11491484 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191472} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11491486 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191472} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 6 + m_MaxSize: 18 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .829999983 + m_Text: Powered by SRDebugger +--- !u!114 &11491500 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 18 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11491502 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11491504 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 18 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .829999983 + m_Text: SEND BUG REPORT +--- !u!114 &11491528 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11491530 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1bf029da478aff42a6d6e0ed8e21203, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + StyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} +--- !u!114 &11491532 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11491534 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58bc4004a23c662408dd40e6d01ac936, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _retinaScale: 2 + _thresholdDpi: 250 +--- !u!114 &11491536 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11491574 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: .835294127} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11491576 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11491606 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 20 + m_Bottom: 20 + m_ChildAlignment: 4 + m_Spacing: 15 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11491608 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11491610 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22491538} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: .100000001 + m_Inertia: 0 + m_DecelerationRate: .135000005 + m_ScrollSensitivity: 40 + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11496518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!222 &22227436 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127436} +--- !u!222 &22291470 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191472} +--- !u!222 &22291474 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191480} +--- !u!222 &22291500 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191520} +--- !u!223 &22391466 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 121 +--- !u!224 &22427436 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127436} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22491540} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22476364 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176364} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22491538} + m_Father: {fileID: 22491540} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22491472 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191472} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22491538} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22491480 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22491538} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22491496 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22491520} + - {fileID: 22491540} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22491520 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191520} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22491496} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22491522 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191522} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22491538} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22491538 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22491480} + - {fileID: 22491522} + - {fileID: 22491472} + m_Father: {fileID: 22476364} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22491540 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191540} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22427436} + - {fileID: 22476364} + m_Father: {fileID: 22491496} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22591466 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191496} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 191496} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab.meta new file mode 100644 index 00000000..d8b1d9e4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportPopover.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: b1e14a36132e86c4a86149b6ecbe53f4 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab new file mode 100644 index 00000000..1b97a6e4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab @@ -0,0 +1,2618 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &102518 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402518} + - 222: {fileID: 22202520} + - 114: {fileID: 11402514} + - 114: {fileID: 11402516} + - 114: {fileID: 11402518} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &102520 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402520} + - 222: {fileID: 22202522} + - 114: {fileID: 11402522} + - 114: {fileID: 11413090} + m_Layer: 5 + m_Name: SR_Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &102522 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402522} + - 114: {fileID: 11427898} + m_Layer: 5 + m_Name: SR_LoadingSpinner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106062 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406062} + - 222: {fileID: 22206062} + - 114: {fileID: 11406068} + - 114: {fileID: 11406062} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106066 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406066} + - 114: {fileID: 11485580} + - 114: {fileID: 11406072} + - 114: {fileID: 11485586} + m_Layer: 5 + m_Name: SR_SubmitButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106068 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406068} + - 222: {fileID: 22206066} + - 114: {fileID: 11406074} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106072 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406072} + - 222: {fileID: 22206068} + - 114: {fileID: 11406076} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &127898 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22427898} + - 114: {fileID: 11427900} + m_Layer: 5 + m_Name: SR_Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145868 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22445868} + - 114: {fileID: 11445868} + - 114: {fileID: 11445864} + - 114: {fileID: 11445866} + m_Layer: 5 + m_Name: SR_CancelButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145870 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22445870} + - 114: {fileID: 11445870} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145872 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22445872} + - 222: {fileID: 22245872} + - 114: {fileID: 11445872} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145874 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22445874} + - 222: {fileID: 22245874} + - 114: {fileID: 11445874} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148850 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22448850} + m_Layer: 5 + m_Name: SR_TextContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148852 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22448852} + m_Layer: 5 + m_Name: SR_TextContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185546 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485546} + - 114: {fileID: 11402520} + - 114: {fileID: 11485542} + - 114: {fileID: 11475964} + m_Layer: 5 + m_Name: BugReportSheet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185550 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485550} + - 114: {fileID: 11485516} + - 114: {fileID: 11442356} + m_Layer: 5 + m_Name: SR_Form + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185552 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485552} + - 114: {fileID: 11485518} + - 114: {fileID: 11485544} + m_Layer: 5 + m_Name: SR_Row + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185554 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485554} + - 222: {fileID: 22285568} + - 114: {fileID: 11485520} + - 114: {fileID: 11485524} + - 114: {fileID: 11485546} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185556 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485556} + - 114: {fileID: 11485522} + - 114: {fileID: 11485526} + - 114: {fileID: 11485534} + m_Layer: 5 + m_Name: SR_Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185558 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485558} + - 222: {fileID: 22285570} + - 114: {fileID: 11485528} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185560 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485560} + - 222: {fileID: 22285572} + - 114: {fileID: 11485530} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185562 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485562} + - 222: {fileID: 22285574} + - 114: {fileID: 11485532} + - 114: {fileID: 11485578} + m_Layer: 5 + m_Name: SR_Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185566 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485566} + - 114: {fileID: 11485538} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185568 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485568} + - 114: {fileID: 11485540} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185570 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485570} + - 222: {fileID: 22285576} + - 114: {fileID: 11485552} + - 114: {fileID: 11485576} + m_Layer: 5 + m_Name: SR_Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185572 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485572} + - 222: {fileID: 22285578} + - 114: {fileID: 11485554} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185574 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485574} + - 222: {fileID: 22285580} + - 114: {fileID: 11485556} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185576 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485576} + - 114: {fileID: 11485562} + - 114: {fileID: 11485558} + - 114: {fileID: 11485550} + m_Layer: 5 + m_Name: SR_Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185578 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485578} + - 222: {fileID: 22285582} + - 114: {fileID: 11485564} + - 114: {fileID: 11485560} + - 114: {fileID: 11485548} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185580 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485580} + - 114: {fileID: 11485566} + - 114: {fileID: 11485574} + m_Layer: 5 + m_Name: SR_Row + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185582 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485582} + - 222: {fileID: 22285584} + - 114: {fileID: 11485572} + - 114: {fileID: 11485570} + - 114: {fileID: 11485568} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185584 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485584} + - 114: {fileID: 11406066} + - 114: {fileID: 11485582} + m_Layer: 5 + m_Name: SR_ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185586 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485586} + - 222: {fileID: 22285586} + - 114: {fileID: 11485584} + - 114: {fileID: 11406064} + m_Layer: 5 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485588} + - 222: {fileID: 22285588} + - 114: {fileID: 11485588} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11402514 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Bug reports will be sent to the developer with anonymous debug information + attached. A screenshot of the game will be also be sent with your bug report. + + + Leaving an email address is optional, but will allow the developer to contact + you for additional information if required.' +--- !u!114 &11402516 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11402518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11402520 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63d76b94b1c670b4cbafd57dd8dcd2ff, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ButtonContainer: {fileID: 145870} + ButtonText: {fileID: 11406076} + CancelButton: {fileID: 11445868} + DescriptionField: {fileID: 11485562} + EmailField: {fileID: 11485522} + ProgressBar: {fileID: 11406066} + ResultMessageText: {fileID: 11485572} + SubmitButton: {fileID: 11485580} +--- !u!114 &11402522 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: b69c9e0b4f478f94a8b015db733dc6f7, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11406062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: ScrollBar + IgnoreImage: 0 +--- !u!114 &11406064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Toggle_BG_Active + IgnoreImage: 0 +--- !u!114 &11406066 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + m_FillRect: {fileID: 22485586} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: .187000006 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11406068 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .441176474, g: .441176474, b: .441176474, a: .709803939} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11406072 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 56 + m_PreferredHeight: 35 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11406074 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11406076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SUBMIT +--- !u!114 &11413090 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 44d058d954e809c4fa87cfab328237d7, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + FrameCount: 12 + SpinDuration: .800000012 +--- !u!114 &11427898 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 35 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11427900 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11442356 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 620 + m_PreferredHeight: -1 + m_FlexibleWidth: 0 + m_FlexibleHeight: -1 +--- !u!114 &11445864 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 56 + m_PreferredHeight: 35 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11445866 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11445868 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 11485562} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11406074} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11402520} + m_MethodName: Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11445870 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11445872 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11445874 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: CANCEL +--- !u!114 &11475964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11485516 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11485518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485520 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Email Address +--- !u!114 &11485522 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 11485562} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11485528} + m_TextComponent: {fileID: 11485530} + m_Placeholder: {fileID: 11485532} + m_ContentType: 6 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 7 + m_LineType: 0 + m_HideMobileInput: 1 + m_CharacterValidation: 5 + m_CharacterLimit: 0 + m_EndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChange: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SelectionColor: {r: .65882355, g: .807843149, b: 1, a: .752941191} + m_Text: + m_CaretBlinkRate: 1.70000005 +--- !u!114 &11485524 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11485526 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: 260 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11485528 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11485530 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11485532 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (optional) +--- !u!114 &11485534 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Input + IgnoreImage: 0 +--- !u!114 &11485538 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 10000 + m_FlexibleHeight: -1 +--- !u!114 &11485540 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 10000 + m_FlexibleHeight: -1 +--- !u!114 &11485542 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11485544 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3a5149e46522d84cb8079537220a929, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + ChildForceExpandHeight: 0 + ChildForceExpandWidth: 1 + Spacing: 6 +--- !u!114 &11485546 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485548 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485550 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Input + IgnoreImage: 0 +--- !u!114 &11485552 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Describe the bug, including what you were doing when it happened. +--- !u!114 &11485554 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11485556 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11485558 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: 200 + m_PreferredHeight: 180 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11485560 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11485562 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 11485522} + m_SelectOnDown: {fileID: 11485580} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11485556} + m_TextComponent: {fileID: 11485554} + m_Placeholder: {fileID: 11485552} + m_ContentType: 1 + m_InputType: 1 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 2 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_EndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChange: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SelectionColor: {r: .65882355, g: .807843149, b: 1, a: .752941191} + m_Text: + m_CaretBlinkRate: 1.70000005 +--- !u!114 &11485564 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Description +--- !u!114 &11485566 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485570 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11485572 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Error submitting bug report (Server returned 401 - NotAuthorized) +--- !u!114 &11485574 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 6 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11485576 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11485578 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11485580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 11485562} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11445872} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11402520} + m_MethodName: Submit + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11485582 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 56 + m_PreferredHeight: 35 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485584 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .278431386, g: .278431386, b: .278431386, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11485586 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11485588 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SENDING... +--- !u!222 &22202520 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102518} +--- !u!222 &22202522 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102520} +--- !u!222 &22206062 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106062} +--- !u!222 &22206066 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106068} +--- !u!222 &22206068 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106072} +--- !u!222 &22245872 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145872} +--- !u!222 &22245874 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145874} +--- !u!222 &22285568 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185554} +--- !u!222 &22285570 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185558} +--- !u!222 &22285572 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185560} +--- !u!222 &22285574 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185562} +--- !u!222 &22285576 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185570} +--- !u!222 &22285578 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185572} +--- !u!222 &22285580 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185574} +--- !u!222 &22285582 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185578} +--- !u!222 &22285584 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185582} +--- !u!222 &22285586 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185586} +--- !u!222 &22285588 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185588} +--- !u!224 &22402518 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102518} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485550} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22402520 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102520} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22402522} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 32, y: 32} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22402522 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102522} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .699999988, y: .699999988, z: .699999988} + m_Children: + - {fileID: 22402520} + m_Father: {fileID: 22427898} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 341.509094, y: -17.5} + m_SizeDelta: {x: 35, y: 35} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22406062 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485584} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22406066 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22445872} + - {fileID: 22406072} + m_Father: {fileID: 22445870} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22406068 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22445868} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22406072 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106072} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22406066} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22427898 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485588} + - {fileID: 22402522} + m_Father: {fileID: 22485584} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22445868 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145868} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22406068} + - {fileID: 22445874} + m_Father: {fileID: 22445870} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22445870 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145870} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22445868} + - {fileID: 22406066} + m_Father: {fileID: 22485550} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22445872 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22406066} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22445874 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145874} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22445868} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22448850 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148850} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485560} + m_Father: {fileID: 22485556} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22448852 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148852} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485572} + m_Father: {fileID: 22485576} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485546 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185546} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485566} + - {fileID: 22485550} + - {fileID: 22485568} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22485550 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22402518} + - {fileID: 22485552} + - {fileID: 22485580} + - {fileID: 22485582} + - {fileID: 22445870} + - {fileID: 22485584} + m_Father: {fileID: 22485546} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485552 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485554} + - {fileID: 22485556} + m_Father: {fileID: 22485550} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485554 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185554} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485552} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485556 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185556} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485558} + - {fileID: 22448850} + - {fileID: 22485562} + m_Father: {fileID: 22485552} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485558 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185558} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485556} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485560 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448850} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485562 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185562} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485556} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485566 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485546} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485568 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485546} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485570 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485576} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485572 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185572} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448852} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 2.38418579e-07} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485574 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485576} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485576 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485574} + - {fileID: 22448852} + - {fileID: 22485570} + m_Father: {fileID: 22485580} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485578 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485580} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485580 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185580} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485578} + - {fileID: 22485576} + m_Father: {fileID: 22485550} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485582 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185582} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485550} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485584 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22406062} + - {fileID: 22485586} + - {fileID: 22427898} + m_Father: {fileID: 22485550} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485586 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485584} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485588 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22427898} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 282.509094, y: -17.5} + m_SizeDelta: {x: 83, y: 35} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 185546} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab.meta new file mode 100644 index 00000000..140939ff --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/BugReportSheet.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 307fd4bc23452cc41bdacc036bc9e0b1 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab new file mode 100644 index 00000000..5160177b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab @@ -0,0 +1,3318 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &106254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22406254} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22406254 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 106254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408654} + m_Father: {fileID: 22408668} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &108644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 408644} + - component: {fileID: 11408644} + - component: {fileID: 11483494} + m_Layer: 0 + m_Name: DebugPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &408644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408646} + - {fileID: 22408676} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11408644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64a45d1be7c826148a745e7d38b02161, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Canvas: {fileID: 22308644} + CanvasGroup: {fileID: 22508644} + TabController: {fileID: 11408648} +--- !u!114 &11483494 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!1 &108646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408644} + m_Layer: 5 + m_Name: SR_Tab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408644 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408672} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -20.5} + m_SizeDelta: {x: 0, y: -41} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &108648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408646} + - component: {fileID: 11408646} + - component: {fileID: 11408648} + - component: {fileID: 11401174} + m_Layer: 5 + m_Name: SR__TabController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408646 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408644} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 035be48566f8a3a4285521c6480d83ce, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + TabButtonContainer: {fileID: 22408654} + TabButtonPrefab: {fileID: 11423178, guid: 20aa0923117a8a449bbe649769f6bd16, type: 3} + TabContentsContainer: {fileID: 22408644} + TabHeaderContentContainer: {fileID: 22493820} + TabHeaderText: {fileID: 11408732} +--- !u!114 &11408648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 295aaaf6e216af84e99f15dff7b6fc32, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + AboutTab: {fileID: 11427230, guid: b32f9ca33474ad44999aa3570c7f42ee, type: 3} + TabController: {fileID: 11408646} +--- !u!114 &11401174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108648} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3cc3afaacd56e9b4f9f2b6201ec85267, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _maxMenuWidth: 185 + _peekAmount: 45 + Content: {fileID: 22408662} + Menu: {fileID: 22408682} + OpenButton: {fileID: 11412438} + TabController: {fileID: 11408646} +--- !u!1 &108650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408648} + - component: {fileID: 22208644} + - component: {fileID: 11408652} + - component: {fileID: 11408650} + - component: {fileID: 11408654} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408648 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408682} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &22208644 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108650} + m_CullTransparentMesh: 0 +--- !u!114 &11408652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.3882353, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Border + IgnoreImage: 0 +--- !u!114 &11408654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: 1 + m_MinHeight: -1 + m_PreferredWidth: 2 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!1 &108652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408650} + - component: {fileID: 11408656} + m_Layer: 5 + m_Name: SR_BorderTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408650 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408660} + m_Father: {fileID: 22408672} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -40} + m_SizeDelta: {x: 0, y: 1} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &11408656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408652} + - component: {fileID: 22208646} + - component: {fileID: 11408662} + - component: {fileID: 11408660} + - component: {fileID: 11408658} + m_Layer: 5 + m_Name: SR_BorderTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408652 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408654} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22208646 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108654} + m_CullTransparentMesh: 0 +--- !u!114 &11408662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Border + IgnoreImage: 0 +--- !u!114 &11408658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408654} + - component: {fileID: 11408664} + - component: {fileID: 11408666} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408652} + m_Father: {fileID: 22406254} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &11408664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11408666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &108658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408656} + - component: {fileID: 11408668} + m_Layer: 5 + m_Name: SR_BorderBot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408656 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408690} + m_Father: {fileID: 22408668} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 1} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &11408668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408658} + - component: {fileID: 22208648} + - component: {fileID: 11408672} + - component: {fileID: 11408670} + - component: {fileID: 11412442} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108660} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408674} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22208648 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108660} + m_CullTransparentMesh: 0 +--- !u!114 &11408672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21568628, g: 0.21568628, b: 0.21568628, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Background + IgnoreImage: 0 +--- !u!114 &11412442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408660} + - component: {fileID: 22208650} + - component: {fileID: 11408678} + - component: {fileID: 11408676} + - component: {fileID: 11408674} + m_Layer: 5 + m_Name: SR_BorderTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408650} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -1} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22208650 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108662} + m_CullTransparentMesh: 0 +--- !u!114 &11408678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Border + IgnoreImage: 0 +--- !u!114 &11408674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408662} + - component: {fileID: 11408682} + - component: {fileID: 11408620} + - component: {fileID: 11408680} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408662 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408682} + - {fileID: 22408672} + m_Father: {fileID: 22408676} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11408620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2415a15c0c9eea041863fc6c1a434ede, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Entries: + - Components: + - {fileID: 11401174} + GameObjects: [] + Mode: 1 + ThresholdHeight: 0 + ThresholdWidth: 400 + - Components: + - {fileID: 11408680} + GameObjects: [] + Mode: 0 + ThresholdHeight: 0 + ThresholdWidth: 400 +--- !u!114 &11408680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 395e9c70b6db8df408e038114524cc0b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Elements: + - SizeDefinitions: + - ElementWidth: 95 + ThresholdWidth: 360 + - ElementWidth: 185 + ThresholdWidth: 769 + Target: {fileID: 22408682} +--- !u!1 &108666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408664} + - component: {fileID: 11408684} + - component: {fileID: 11471400} + - component: {fileID: 22246752} + - component: {fileID: 11446752} + m_Layer: 5 + m_Name: SR_Footer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108666} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408694} + m_Father: {fileID: 22408680} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 65 + m_PreferredWidth: -1 + m_PreferredHeight: 65 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11471400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 2 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11446752} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408648} + m_MethodName: ShowAboutTab + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!222 &22246752 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108666} + m_CullTransparentMesh: 0 +--- !u!114 &11446752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &108668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408666} + - component: {fileID: 22208652} + - component: {fileID: 11408686} + - component: {fileID: 11479466} + m_Layer: 5 + m_Name: SR_Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408666 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408684} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -14, y: 27} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22208652 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108668} + m_CullTransparentMesh: 0 +--- !u!114 &11408686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2187241f9bab99244bfd668e9e056e25, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11479466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Logo + IgnoreImage: 0 +--- !u!1 &108670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408668} + - component: {fileID: 11408694} + - component: {fileID: 11408692} + - component: {fileID: 11408690} + - component: {fileID: 22208654} + - component: {fileID: 11408688} + - component: {fileID: 11465250} + - component: {fileID: 11406254} + m_Layer: 5 + m_Name: SR_Tabs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408668 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22406254} + - {fileID: 22471838} + - {fileID: 22408656} + m_Father: {fileID: 22408680} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408694 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22408654} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 40 + m_Viewport: {fileID: 22406254} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11408692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!114 &11408690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &22208654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_CullTransparentMesh: 0 +--- !u!114 &11408688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11465250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11406254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22408654} + ReplaceMask: {fileID: 0} + Viewport: {fileID: 22406254} +--- !u!1 &108674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408672} + - component: {fileID: 11408700} + m_Layer: 5 + m_Name: SR_Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408672 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108674} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408686} + - {fileID: 22408644} + - {fileID: 22408674} + - {fileID: 22408650} + m_Father: {fileID: 22408662} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &11408700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408674} + - component: {fileID: 11412440} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408674 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108676} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408658} + - {fileID: 22412432} + - {fileID: 22417654} + - {fileID: 22408688} + - {fileID: 22493820} + - {fileID: 22417650} + m_Father: {fileID: 22408672} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &11412440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &108678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408676} + - component: {fileID: 22308644} + - component: {fileID: 11408706} + - component: {fileID: 11408704} + - component: {fileID: 11408702} + - component: {fileID: 11408708} + - component: {fileID: 22508644} + - component: {fileID: 11455874} + m_Layer: 5 + m_Name: SR_Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22408662} + m_Father: {fileID: 408644} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &22308644 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 10000 + m_TargetDisplay: 0 +--- !u!114 &11408706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 92 + m_DefaultSpriteDPI: 92 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11408704 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11408702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1bf029da478aff42a6d6e0ed8e21203, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + StyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} +--- !u!114 &11408708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58bc4004a23c662408dd40e6d01ac936, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _retinaScale: 2 + _thresholdDpi: 250 + _disablePixelPerfect: 1 +--- !u!225 &22508644 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &11455874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0ad3d8afa9fd64429a249b5bbb19557, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!1 &108682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408680} + - component: {fileID: 11408716} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408680 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408684} + - {fileID: 22408668} + - {fileID: 22408664} + m_Father: {fileID: 22408682} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &108684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408682} + - component: {fileID: 11408718} + m_Layer: 5 + m_Name: SR_SideBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408682 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108684} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408696} + - {fileID: 22408680} + - {fileID: 22408648} + m_Father: {fileID: 22408662} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &11408718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 60 + m_MinHeight: -1 + m_PreferredWidth: 185 + m_PreferredHeight: -1 + m_FlexibleWidth: 0 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408684} + - component: {fileID: 11408722} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408684 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108686} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408666} + m_Father: {fileID: 22408680} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11408722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408686} + - component: {fileID: 22208660} + - component: {fileID: 11408728} + - component: {fileID: 11408726} + - component: {fileID: 11444470} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408672} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22208660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108688} + m_CullTransparentMesh: 0 +--- !u!114 &11408728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11372549, g: 0.11372549, b: 0.12156863, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Background + IgnoreImage: 0 +--- !u!114 &11444470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a819a08c122d6474a848377ee7ba3192, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + TransparentStyleKey: Content_Background_Transparent +--- !u!1 &108690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408688} + - component: {fileID: 22208662} + - component: {fileID: 11408732} + - component: {fileID: 11408730} + - component: {fileID: 11412432} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408688 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108690} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408674} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &22208662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108690} + m_CullTransparentMesh: 0 +--- !u!114 &11408732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.99607843, g: 0.99607843, b: 0.99607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 18 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 0.83 + m_Text: TAB HEADER TEXT +--- !u!114 &11408730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Text + IgnoreImage: 0 +--- !u!114 &11412432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 18 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408690} + - component: {fileID: 22208664} + - component: {fileID: 11408738} + - component: {fileID: 11408736} + - component: {fileID: 11408734} + m_Layer: 5 + m_Name: SR_BorderBot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408690 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108692} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408656} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 1} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22208664 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108692} + m_CullTransparentMesh: 0 +--- !u!114 &11408738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Border + IgnoreImage: 0 +--- !u!114 &11408734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &108696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408694} + - component: {fileID: 22208668} + - component: {fileID: 11408742} + - component: {fileID: 11408744} + - component: {fileID: 11429740} + m_Layer: 5 + m_Name: SR_Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408694 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108696} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408664} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 51, y: 51} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22208668 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108696} + m_CullTransparentMesh: 0 +--- !u!114 &11408742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 534e3ec14cd78434b8676eec8a7fd9ba, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 64 + m_PreferredHeight: 64 + m_FlexibleWidth: 0 + m_FlexibleHeight: 0 + m_LayoutPriority: 1 +--- !u!114 &11429740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Stompy + IgnoreImage: 0 +--- !u!1 &108698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408696} + - component: {fileID: 22208670} + - component: {fileID: 11408748} + - component: {fileID: 11408746} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108698} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408682} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &22208670 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108698} + m_CullTransparentMesh: 0 +--- !u!114 &11408748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 72f587d74eb73bb4789dd3f6f10b3600, type: 3} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Background + IgnoreImage: 0 +--- !u!1 &112426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22412426} + - component: {fileID: 22212426} + - component: {fileID: 11412428} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22412426 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22412432} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22212426 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112426} + m_CullTransparentMesh: 0 +--- !u!114 &11412428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &112430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22412430} + - component: {fileID: 22212428} + - component: {fileID: 11412436} + - component: {fileID: 11424494} + m_Layer: 5 + m_Name: SR_Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22412430 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112430} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22412432} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22212428 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112430} + m_CullTransparentMesh: 0 +--- !u!114 &11412436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 48ee5588255d30d4e93c3d7627144a7c, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11424494 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Menu + IgnoreImage: 0 +--- !u!1 &112432 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22412432} + - component: {fileID: 11412438} + - component: {fileID: 11412434} + - component: {fileID: 11412426} + m_Layer: 5 + m_Name: SR_MenuButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &22412432 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112432} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22412426} + - {fileID: 22412430} + m_Father: {fileID: 22408674} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20.103659, y: -20} + m_SizeDelta: {x: 40.207317, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11412438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11412428} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11401174} + m_MethodName: Open + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &11412434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 42 + m_PreferredHeight: 42 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11412426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!1 &117650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22417650} + - component: {fileID: 11465410} + - component: {fileID: 11417648} + - component: {fileID: 11417654} + - component: {fileID: 11417644} + m_Layer: 5 + m_Name: SR_CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22417650 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22417656} + - {fileID: 22417652} + m_Father: {fileID: 22408674} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11465410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3fc6d8b69639fdc45a849df5b853c783, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11417652} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408644} + m_MethodName: Close + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _onLongPress: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408644} + m_MethodName: CloseAndDestroy + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + LongPressDuration: 0.9 +--- !u!114 &11417648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 40 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11417654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!114 &11417644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11417652} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408644} + m_MethodName: Close + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &117652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22417652} + - component: {fileID: 22217654} + - component: {fileID: 11417646} + - component: {fileID: 11417656} + m_Layer: 5 + m_Name: SR_Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22417652 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22417650} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22217654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117652} + m_CullTransparentMesh: 0 +--- !u!114 &11417646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 8ccc360b0ed61e54ba5d8fa329ca8988, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11417656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Close + IgnoreImage: 0 +--- !u!1 &117654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22417654} + - component: {fileID: 11417650} + m_Layer: 5 + m_Name: SR_Padding + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22417654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408674} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11417650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 10 + m_MinHeight: -1 + m_PreferredWidth: 10 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &117656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22417656} + - component: {fileID: 22217656} + - component: {fileID: 11417652} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22417656 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22417650} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22217656 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117656} + m_CullTransparentMesh: 0 +--- !u!114 &11417652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &171836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22471836} + - component: {fileID: 22271838} + - component: {fileID: 11471832} + - component: {fileID: 11471834} + - component: {fileID: 11471836} + m_Layer: 5 + m_Name: SR_BorderTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22471836 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171836} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -1} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22271838 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171836} + m_CullTransparentMesh: 0 +--- !u!114 &11471832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11471834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Border + IgnoreImage: 0 +--- !u!114 &11471836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &171838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22471838} + - component: {fileID: 11471838} + m_Layer: 5 + m_Name: SR_BorderTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22471838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22471836} + m_Father: {fileID: 22408668} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 1} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &11471838 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &193820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22493820} + - component: {fileID: 11493820} + - component: {fileID: 11471638} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22493820 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193820} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408674} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11493820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11471638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab.meta new file mode 100644 index 00000000..16e43f11 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DebugPanel.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3484bf178624a77488fdf8a593f2d7a0 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab new file mode 100644 index 00000000..be56f4df --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &174538 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 474508} + m_Layer: 0 + m_Name: DockConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &474508 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 174538} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab.meta new file mode 100644 index 00000000..f0477ff6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/DockConsole.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: e574103baba252a409527f51a20b3a29 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options.meta new file mode 100644 index 00000000..01a044a4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 84bcdd02525430a4ea2342c43b924a76 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab new file mode 100644 index 00000000..db045c8d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab @@ -0,0 +1,547 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &119626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22419626} + - 222: {fileID: 22219628} + - 114: {fileID: 11419624} + - 114: {fileID: 11419622} + - 114: {fileID: 11434580} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &119628 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22419628} + - 222: {fileID: 22219626} + - 114: {fileID: 11419628} + - 114: {fileID: 11419626} + - 114: {fileID: 11470742} + - 114: {fileID: 11470740} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195840 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495840} + - 222: {fileID: 22295842} + - 114: {fileID: 11495832} + - 114: {fileID: 11495830} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195842 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495844} + - 222: {fileID: 22295844} + - 114: {fileID: 11495840} + - 114: {fileID: 11495838} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195844 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495842} + - 114: {fileID: 11495834} + - 114: {fileID: 11495842} + - 114: {fileID: 11495836} + - 114: {fileID: 11495844} + - 114: {fileID: 11488334} + m_Layer: 5 + m_Name: ActionOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11419622 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11419624 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11419626 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11419628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11470742} + toggleTransition: 0 + graphic: {fileID: 11419624} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11434580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11470740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11470742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11488334 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495830 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11495832 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Action Test +--- !u!114 &11495834 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 13 + m_Bottom: 13 + m_ChildAlignment: 3 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11495836 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11495838 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195842} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495840 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195842} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495842 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495840} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495844 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c637c8d0d16d024fa920dda64fb38db, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11419628} + Button: {fileID: 11495842} + Title: {fileID: 11495832} +--- !u!222 &22219626 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} +--- !u!222 &22219628 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119626} +--- !u!222 &22295842 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195840} +--- !u!222 &22295844 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195842} +--- !u!224 &22419626 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119626} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495842} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22419628 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119628} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495842} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495840 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195840} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495842} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495842 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22419626} + - {fileID: 22495844} + - {fileID: 22495840} + - {fileID: 22419628} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495844 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195842} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495842} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 195844} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab.meta new file mode 100644 index 00000000..e3ee8c0e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ActionOption.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 308ca70361d90ed40bcc5c69d973f7ae +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab new file mode 100644 index 00000000..d44d3b1d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab @@ -0,0 +1,694 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &115818 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415818} + - 222: {fileID: 22215818} + - 114: {fileID: 11415814} + - 114: {fileID: 11415816} + - 114: {fileID: 11415818} + m_Layer: 5 + m_Name: SR_SelectionIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132286 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22432286} + - 222: {fileID: 22232288} + - 114: {fileID: 11432282} + - 114: {fileID: 11432284} + - 114: {fileID: 11474626} + - 114: {fileID: 11474628} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185184 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485184} + - 222: {fileID: 22285186} + - 114: {fileID: 11485174} + - 114: {fileID: 11485172} + m_Layer: 5 + m_Name: SR_CheckBack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185186 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485186} + - 222: {fileID: 22285188} + - 114: {fileID: 11485176} + - 114: {fileID: 11485178} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185188 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485188} + - 114: {fileID: 11485180} + - 114: {fileID: 11485182} + - 114: {fileID: 11485184} + - 114: {fileID: 11419250} + - 114: {fileID: 11429362} + m_Layer: 5 + m_Name: BoolOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185190 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485190} + - 222: {fileID: 22285190} + - 114: {fileID: 11485186} + m_Layer: 5 + m_Name: SR_CheckMark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185192 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485192} + - 222: {fileID: 22285192} + - 114: {fileID: 11485192} + - 114: {fileID: 11485190} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11415814 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11415816 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11415818 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11419250 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 645dcae76b625be40b595e4bbc27abb6, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11432282} + Title: {fileID: 11485176} + Toggle: {fileID: 11485182} +--- !u!114 &11429362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11432282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11474626} + toggleTransition: 0 + graphic: {fileID: 11415814} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11432284 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11474626 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11474628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11485172 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 20 + m_PreferredHeight: 20 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485174 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11485176 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Toggle Test +--- !u!114 &11485178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11485180 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 13 + m_Bottom: 13 + m_ChildAlignment: 3 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11485182 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .00999999978 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11485192} + toggleTransition: 0 + graphic: {fileID: 11485186} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11485184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11485186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11485190 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11485192 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22215818 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115818} +--- !u!222 &22232288 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} +--- !u!222 &22285186 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185184} +--- !u!222 &22285188 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185186} +--- !u!222 &22285190 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185190} +--- !u!222 &22285192 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185192} +--- !u!224 &22415818 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115818} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485188} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22432286 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485188} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485184 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185184} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485190} + m_Father: {fileID: 22485188} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485186 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485188} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485188 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22415818} + - {fileID: 22485192} + - {fileID: 22485184} + - {fileID: 22485186} + - {fileID: 22432286} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485190 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485184} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485192 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185192} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485188} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 185188} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab.meta new file mode 100644 index 00000000..f7ef1237 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/BoolOption.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: c00f61f0f69828745b7ef9145737e260 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab new file mode 100644 index 00000000..7b6f0af7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab @@ -0,0 +1,1283 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &133318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433318} + - 114: {fileID: 11433322} + - 114: {fileID: 11433324} + - 114: {fileID: 11463834} + - 114: {fileID: 11450152} + - 114: {fileID: 11436848} + m_Layer: 5 + m_Name: EnumOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433320} + - 114: {fileID: 11433332} + - 114: {fileID: 11433330} + - 222: {fileID: 22233318} + - 114: {fileID: 11433326} + - 114: {fileID: 11426528} + m_Layer: 5 + m_Name: SR_Contents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133324 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433324} + - 114: {fileID: 11463842} + - 114: {fileID: 11463836} + m_Layer: 5 + m_Name: SR_ButtonDown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133326 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433326} + - 222: {fileID: 22233322} + - 114: {fileID: 11433338} + - 114: {fileID: 11433340} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133330 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433330} + - 222: {fileID: 22233326} + - 114: {fileID: 11433344} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133332 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433332} + - 114: {fileID: 11463840} + - 114: {fileID: 11463838} + m_Layer: 5 + m_Name: SR_ButtonUp + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133334 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433334} + - 222: {fileID: 22233328} + - 114: {fileID: 11433350} + - 114: {fileID: 11433352} + - 114: {fileID: 11433348} + - 225: {fileID: 22574564} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133336 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433336} + - 222: {fileID: 22233330} + - 114: {fileID: 11433354} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184448 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22484448} + - 222: {fileID: 22284448} + - 114: {fileID: 11484442} + - 114: {fileID: 11484444} + - 114: {fileID: 11484446} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184450 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22484450} + - 222: {fileID: 22284450} + - 114: {fileID: 11484448} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184452 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22484452} + - 222: {fileID: 22284452} + - 114: {fileID: 11484450} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &199504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22499504} + - 222: {fileID: 22299506} + - 114: {fileID: 11499504} + - 114: {fileID: 11499506} + - 114: {fileID: 11434950} + - 114: {fileID: 11434952} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &199506 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22499506} + - 222: {fileID: 22299504} + - 114: {fileID: 11499508} + - 114: {fileID: 11499510} + - 114: {fileID: 11484452} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11426528 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b9fa4d99839aa940b36addec78cb92f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11433326} + _onSpinDecrement: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11463834} + m_MethodName: GoToPrevious + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: SRF.UI.SRSpinner+SpinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _onSpinIncrement: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11463834} + m_MethodName: GoToNext + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: SRF.UI.SRSpinner+SpinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + DragThreshold: 55 +--- !u!114 &11433322 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11433324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 160 + m_MinHeight: 50 + m_PreferredWidth: -1 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11433326 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11433330 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11433332 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 81 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11433338 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 8 + m_MaxSize: 12 + m_Alignment: 1 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Some Value +--- !u!114 &11433340 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11433344 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133330} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .970588207, g: .970588207, b: .970588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: db8aec58b7ce99443a1c4f5cd4d9e408, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '>' +--- !u!114 &11433348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11433350 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .75999999 + m_Text: Some Enum +--- !u!114 &11433352 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11433354 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11434950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11434952 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11436848 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11450152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32609112f4257a740aa4b920a8556d24, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + CopySource: {fileID: 22433320} + PaddingHeight: 0 + PaddingWidth: 60 +--- !u!114 &11463834 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b7f14311f0b3f442b273192dc8ffe4d, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11499504} + ContentLayoutElement: {fileID: 11433332} + DisableOnReadOnly: + - {fileID: 133332} + - {fileID: 133324} + Spinner: {fileID: 11426528} + Title: {fileID: 11433350} + Value: {fileID: 11433338} +--- !u!114 &11463836 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!114 &11463838 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!114 &11463840 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11433354} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11463834} + m_MethodName: GoToNext + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11463842 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11484448} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11463834} + m_MethodName: GoToPrevious + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11484442 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11484444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11484446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11484448 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11484450 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184452} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .970588207, g: .970588207, b: .970588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: db8aec58b7ce99443a1c4f5cd4d9e408, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: < +--- !u!114 &11484452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11499504 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11434950} + toggleTransition: 0 + graphic: {fileID: 11499508} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11499506 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11499508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11499510 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!222 &22233318 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} +--- !u!222 &22233322 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133326} +--- !u!222 &22233326 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133330} +--- !u!222 &22233328 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} +--- !u!222 &22233330 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133336} +--- !u!222 &22284448 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184448} +--- !u!222 &22284450 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184450} +--- !u!222 &22284452 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184452} +--- !u!222 &22299504 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199506} +--- !u!222 &22299506 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} +--- !u!224 &22433318 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22499506} + - {fileID: 22484448} + - {fileID: 22433320} + - {fileID: 22433324} + - {fileID: 22433332} + - {fileID: 22433334} + - {fileID: 22499504} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22433320 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133320} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22433326} + m_Father: {fileID: 22433318} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -80, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22433324 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22484450} + - {fileID: 22484452} + m_Father: {fileID: 22433318} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: 35, y: -10} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22433326 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433320} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 0, y: -30} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22433330 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133330} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433332} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -4} + m_SizeDelta: {x: 0, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22433332 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133332} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22433336} + - {fileID: 22433330} + m_Father: {fileID: 22433318} + m_RootOrder: 4 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 35, y: -10} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22433334 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433318} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -6} + m_SizeDelta: {x: -10, y: 15} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22433336 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133336} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433332} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22484448 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184448} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433318} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22484450 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433324} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22484452 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433324} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -4} + m_SizeDelta: {x: 0, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22499504 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433318} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: .5} + m_SizeDelta: {x: 0, y: -1} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22499506 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199506} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433318} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22574564 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133334} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 133318} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab.meta new file mode 100644 index 00000000..ac6c264a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/EnumOption.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 4a8c35e6c2782f145a2598c874369a08 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab new file mode 100644 index 00000000..1383889e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab @@ -0,0 +1,1254 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &169282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22469282} + - 222: {fileID: 22269284} + - 114: {fileID: 11469280} + - 114: {fileID: 11469278} + - 114: {fileID: 11483360} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &169284 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22469284} + - 222: {fileID: 22269282} + - 114: {fileID: 11469284} + - 114: {fileID: 11469282} + - 114: {fileID: 11468636} + - 114: {fileID: 11468634} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180050 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480050} + - 222: {fileID: 22280056} + - 114: {fileID: 11480032} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180052 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480052} + - 114: {fileID: 11480036} + - 114: {fileID: 11480042} + - 114: {fileID: 11477008} + - 114: {fileID: 11443222} + - 114: {fileID: 11498028} + m_Layer: 5 + m_Name: NumberOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180054 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480054} + - 222: {fileID: 22280058} + - 114: {fileID: 11480040} + - 114: {fileID: 11480038} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180056 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480056} + - 222: {fileID: 22280060} + - 114: {fileID: 11480046} + - 114: {fileID: 11480044} + - 114: {fileID: 11480054} + - 225: {fileID: 22553020} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180058 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480058} + - 114: {fileID: 11480062} + - 114: {fileID: 11487626} + m_Layer: 5 + m_Name: SR_ButtonDown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180060 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480060} + - 222: {fileID: 22280062} + - 114: {fileID: 11480050} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180064 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480064} + - 114: {fileID: 11480064} + - 114: {fileID: 11487628} + m_Layer: 5 + m_Name: SR_ButtonUp + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180066 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480066} + - 114: {fileID: 11480056} + - 114: {fileID: 11480058} + - 114: {fileID: 11480060} + - 222: {fileID: 22280070} + - 114: {fileID: 11480070} + m_Layer: 5 + m_Name: SR_Contents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183360 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483360} + - 222: {fileID: 22283360} + - 114: {fileID: 11483362} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183362 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483362} + - 222: {fileID: 22283362} + - 114: {fileID: 11483364} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183364 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483364} + - 222: {fileID: 22283364} + - 114: {fileID: 11483370} + - 114: {fileID: 11483368} + - 114: {fileID: 11483366} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11443222 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32609112f4257a740aa4b920a8556d24, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + CopySource: {fileID: 22480054} + PaddingHeight: 10 + PaddingWidth: 70 +--- !u!114 &11468634 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11468636 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11469278 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11469280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11469282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11469284 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11468636} + toggleTransition: 0 + graphic: {fileID: 11469280} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11477008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a6d9f7214a7c5e4b868bfc520d92799, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11469284} + DisableOnReadOnly: + - {fileID: 180058} + - {fileID: 180064} + DownNumberButton: {fileID: 11480062} + NumberSpinner: {fileID: 11480058} + Title: {fileID: 11480046} + UpNumberButton: {fileID: 11480064} +--- !u!114 &11480032 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11480036 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11480038 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11480040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 8 + m_MaxSize: 12 + m_Alignment: 1 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11480042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 160 + m_MinHeight: 50 + m_PreferredWidth: -1 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11480044 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11480046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .75999999 + m_Text: Some Property +--- !u!114 &11480050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .970588207, g: .970588207, b: .970588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: db8aec58b7ce99443a1c4f5cd4d9e408, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '>' +--- !u!114 &11480054 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11480056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11480058 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7e6a39da209c144797f44248b82bfb3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11480070} + m_TextComponent: {fileID: 11480040} + m_Placeholder: {fileID: 0} + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 2 + m_CharacterLimit: 15 + m_EndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChange: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SelectionColor: {r: .65882355, g: .807843149, b: 1, a: .752941191} + m_Text: 76597 + m_CaretBlinkRate: 1.70000005 + DragSensitivity: .00999999978 + MaxValue: 1.7976931348623157e+308 + MinValue: -1.7976931348623157e+308 +--- !u!114 &11480060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11480062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e271d820ea3d50a40bd29c81c23cb2a1, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11483364} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + Amount: -1 + TargetField: {fileID: 11480058} +--- !u!114 &11480064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e271d820ea3d50a40bd29c81c23cb2a1, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11480032} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + Amount: 1 + TargetField: {fileID: 11480058} +--- !u!114 &11480070 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11483360 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11483362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .970588207, g: .970588207, b: .970588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: db8aec58b7ce99443a1c4f5cd4d9e408, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: < +--- !u!114 &11483364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11483366 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11483368 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11483370 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11487626 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!114 &11487628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Button + IgnoreImage: 0 +--- !u!114 &11498028 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!222 &22269282 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} +--- !u!222 &22269284 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169282} +--- !u!222 &22280056 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180050} +--- !u!222 &22280058 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180054} +--- !u!222 &22280060 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} +--- !u!222 &22280062 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180060} +--- !u!222 &22280070 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} +--- !u!222 &22283360 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183360} +--- !u!222 &22283362 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183362} +--- !u!222 &22283364 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183364} +--- !u!224 &22469282 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480052} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22469284 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480052} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22480050 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180050} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480064} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22480052 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180052} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22469282} + - {fileID: 22483364} + - {fileID: 22480066} + - {fileID: 22480058} + - {fileID: 22480064} + - {fileID: 22480056} + - {fileID: 22469284} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22480054 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480066} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 0, y: -30} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22480056 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480052} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -6} + m_SizeDelta: {x: -10, y: 15} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22480058 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180058} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22483362} + - {fileID: 22483360} + m_Father: {fileID: 22480052} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: 35, y: -10} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22480060 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180060} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480064} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -4} + m_SizeDelta: {x: 0, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22480064 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180064} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22480050} + - {fileID: 22480060} + m_Father: {fileID: 22480052} + m_RootOrder: 4 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 35, y: -10} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22480066 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22480054} + m_Father: {fileID: 22480052} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -80, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22483360 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183360} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480058} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -4} + m_SizeDelta: {x: 0, y: -8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22483362 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480058} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22483364 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183364} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22480052} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22553020 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180056} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 180052} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab.meta new file mode 100644 index 00000000..8229e17b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/NumberOption.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 2ac1e31ed7a70544795db2044eb915e1 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab new file mode 100644 index 00000000..97c7f7cb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab @@ -0,0 +1,598 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &167924 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433124} + - 222: {fileID: 22206914} + - 114: {fileID: 11488706} + - 114: {fileID: 11419938} + - 114: {fileID: 11413372} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22410290} + - 222: {fileID: 22213266} + - 114: {fileID: 11445454} + - 114: {fileID: 11423502} + - 114: {fileID: 11449198} + - 114: {fileID: 11414386} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170272 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22497950} + - 222: {fileID: 22249324} + - 114: {fileID: 11428352} + - 114: {fileID: 11439062} + - 225: {fileID: 22516822} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176882 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22499572} + - 222: {fileID: 22243598} + - 114: {fileID: 11429772} + - 114: {fileID: 11474862} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188384 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22405356} + - 222: {fileID: 22238478} + - 114: {fileID: 11494490} + - 114: {fileID: 11446886} + - 114: {fileID: 11450724} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &199282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22478986} + - 114: {fileID: 11435484} + - 114: {fileID: 11430508} + - 114: {fileID: 11451446} + m_Layer: 5 + m_Name: ReadOnlyOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11413372 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11414386 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11419938 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11423502 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11428352 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .74000001 + m_Text: Title +--- !u!114 &11429772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Here Is The Value +--- !u!114 &11430508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41b5dbc85a74ae84dbb6c6685e1151fc, type: 3} + m_Name: + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11445454} + ValueText: {fileID: 11429772} + Title: {fileID: 11428352} +--- !u!114 &11435484 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11439062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11445454 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11449198} + toggleTransition: 0 + graphic: {fileID: 11488706} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11446886 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11449198 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450724 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11451446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11474862 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11488706 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11494490 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22206914 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167924} +--- !u!222 &22213266 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} +--- !u!222 &22238478 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188384} +--- !u!222 &22243598 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176882} +--- !u!222 &22249324 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170272} +--- !u!224 &22405356 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478986} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22410290 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478986} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: .5} + m_SizeDelta: {x: 0, y: -1} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22433124 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478986} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22478986 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22433124} + - {fileID: 22405356} + - {fileID: 22497950} + - {fileID: 22499572} + - {fileID: 22410290} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22497950 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170272} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478986} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22499572 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176882} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478986} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22516822 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170272} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 199282} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab.meta new file mode 100644 index 00000000..898fa70b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/ReadOnlyOption.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 879b44b39edb0fc46897c1a117413e5a +timeCreated: 1466685446 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab new file mode 100644 index 00000000..d059a0f3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab @@ -0,0 +1,717 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &161926 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22461926} + - 222: {fileID: 22261928} + - 114: {fileID: 11461924} + - 114: {fileID: 11461922} + - 114: {fileID: 11440966} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &161928 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22461928} + - 222: {fileID: 22261926} + - 114: {fileID: 11461928} + - 114: {fileID: 11461926} + - 114: {fileID: 11414548} + - 114: {fileID: 11414546} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470318} + - 114: {fileID: 11470312} + - 114: {fileID: 11465720} + - 114: {fileID: 11401942} + m_Layer: 5 + m_Name: StringOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470320} + - 222: {fileID: 22270320} + - 114: {fileID: 11470308} + - 114: {fileID: 11470310} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170322 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470322} + - 222: {fileID: 22270322} + - 114: {fileID: 11470316} + - 114: {fileID: 11470314} + - 225: {fileID: 22587672} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170324 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470324} + - 222: {fileID: 22270324} + - 114: {fileID: 11470318} + - 114: {fileID: 11470322} + - 114: {fileID: 11470326} + m_Layer: 5 + m_Name: SR_InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170326 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470326} + - 222: {fileID: 22270326} + - 114: {fileID: 11470320} + - 114: {fileID: 11470324} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11401942 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11414546 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11414548 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11440966 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11461922 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11461924 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11461926 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11461928 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11414548} + toggleTransition: 0 + graphic: {fileID: 11461924} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11465720 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 019f81638c7cf1f438569f1ca9def175, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + SelectionModeToggle: {fileID: 11461928} + InputField: {fileID: 11470318} + Title: {fileID: 11470316} +--- !u!114 &11470308 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11470310 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11470312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11470314 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11470316 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .74000001 + m_Text: Title +--- !u!114 &11470318 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11470308} + m_TextComponent: {fileID: 11470320} + m_Placeholder: {fileID: 0} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_EndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChange: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SelectionColor: {r: .65882355, g: .807843149, b: 1, a: .752941191} + m_Text: Here Is The Value + m_CaretBlinkRate: 1.70000005 +--- !u!114 &11470320 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11470322 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11470324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11470326 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 160 + m_PreferredHeight: 17 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!222 &22261926 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} +--- !u!222 &22261928 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161926} +--- !u!222 &22270320 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170320} +--- !u!222 &22270322 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170322} +--- !u!222 &22270324 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170324} +--- !u!222 &22270326 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170326} +--- !u!224 &22461926 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161926} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22470318} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22461928 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161928} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22470318} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: .5} + m_SizeDelta: {x: 0, y: -1} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22470318 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22461926} + - {fileID: 22470320} + - {fileID: 22470322} + - {fileID: 22470324} + - {fileID: 22461928} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22470320 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170320} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22470318} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22470322 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170322} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22470318} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22470324 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22470326} + m_Father: {fileID: 22470318} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22470326 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22470324} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22587672 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170322} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 170318} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab.meta new file mode 100644 index 00000000..623d0dc0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Options/StringOption.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bf3001d52880d2342a654b878fdae9d5 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab new file mode 100644 index 00000000..7932ada0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab @@ -0,0 +1,5663 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &120640 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22420640} + - 114: {fileID: 11420640} + - 95: {fileID: 9520640} + m_Layer: 0 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195096 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495096} + - 222: {fileID: 22295096} + - 114: {fileID: 11495100} + - 114: {fileID: 11495098} + - 114: {fileID: 11495096} + m_Layer: 0 + m_Name: SR_Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195098 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495098} + - 222: {fileID: 22295098} + - 114: {fileID: 11495102} + - 114: {fileID: 11495104} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195100 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495100} + - 222: {fileID: 22295100} + - 114: {fileID: 11495106} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195102 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495102} + - 222: {fileID: 22295102} + - 114: {fileID: 11495108} + - 114: {fileID: 11495110} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195104 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495104} + - 222: {fileID: 22295104} + - 114: {fileID: 11495112} + - 114: {fileID: 11495114} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195106 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495106} + - 222: {fileID: 22295106} + - 114: {fileID: 11495116} + - 114: {fileID: 11495118} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195108 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495108} + - 222: {fileID: 22295108} + - 114: {fileID: 11495122} + - 114: {fileID: 11495120} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195110 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495110} + - 222: {fileID: 22295110} + - 114: {fileID: 11495126} + - 114: {fileID: 11495124} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195112 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495112} + - 222: {fileID: 22295112} + - 114: {fileID: 11495128} + - 114: {fileID: 11495130} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195114 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495114} + - 222: {fileID: 22295114} + - 114: {fileID: 11495132} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195116 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495116} + - 223: {fileID: 22395096} + - 114: {fileID: 11495140} + - 114: {fileID: 11495138} + - 114: {fileID: 11495136} + - 114: {fileID: 11495134} + - 114: {fileID: 11495142} + - 225: {fileID: 22595096} + - 114: {fileID: 11498200} + - 114: {fileID: 11447818} + m_Layer: 0 + m_Name: PinEntry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195118 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495118} + - 222: {fileID: 22295116} + - 114: {fileID: 11495144} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195120 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495120} + m_Layer: 0 + m_Name: SR_Cancel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195122 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495122} + - 222: {fileID: 22295118} + - 114: {fileID: 11495146} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195124 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495124} + - 114: {fileID: 11495154} + - 114: {fileID: 11495152} + - 114: {fileID: 11495150} + - 114: {fileID: 11495148} + m_Layer: 0 + m_Name: SR_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195126 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495126} + - 222: {fileID: 22295120} + - 114: {fileID: 11495156} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195128 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495128} + - 222: {fileID: 22295122} + - 114: {fileID: 11495158} + - 114: {fileID: 11495160} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195130 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495130} + - 114: {fileID: 11495164} + - 114: {fileID: 11495162} + m_Layer: 0 + m_Name: SR_3_PinDot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195132 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495132} + - 114: {fileID: 11495168} + - 114: {fileID: 11495166} + m_Layer: 0 + m_Name: SR_Layout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195134 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495134} + - 222: {fileID: 22295124} + - 114: {fileID: 11495170} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195136 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495136} + - 222: {fileID: 22295126} + - 114: {fileID: 11495172} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195138 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495138} + - 114: {fileID: 11495178} + - 114: {fileID: 11495176} + - 114: {fileID: 11495174} + - 114: {fileID: 11495180} + m_Layer: 0 + m_Name: SR_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195140 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495140} + - 114: {fileID: 11495186} + - 114: {fileID: 11495184} + - 114: {fileID: 11495182} + - 114: {fileID: 11495188} + m_Layer: 0 + m_Name: SR_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195142 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495142} + - 222: {fileID: 22295128} + - 114: {fileID: 11495192} + - 114: {fileID: 11495190} + m_Layer: 0 + m_Name: SR_Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195144 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495144} + - 222: {fileID: 22295130} + - 114: {fileID: 11495194} + - 114: {fileID: 11495196} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195146 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495146} + - 222: {fileID: 22295132} + - 114: {fileID: 11495198} + - 114: {fileID: 11495200} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195148 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495148} + - 114: {fileID: 11495208} + - 114: {fileID: 11495206} + - 114: {fileID: 11495204} + - 114: {fileID: 11495202} + m_Layer: 0 + m_Name: SR_9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195150 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495150} + - 222: {fileID: 22295134} + - 114: {fileID: 11495212} + - 114: {fileID: 11495210} + m_Layer: 0 + m_Name: SR_Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195152 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495152} + - 222: {fileID: 22295136} + - 114: {fileID: 11495214} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195154 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495154} + - 222: {fileID: 22295138} + - 114: {fileID: 11495216} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195156 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495156} + - 114: {fileID: 11495224} + - 114: {fileID: 11495222} + - 114: {fileID: 11495220} + - 114: {fileID: 11495218} + m_Layer: 0 + m_Name: SR_8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195158 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495158} + - 222: {fileID: 22295140} + - 114: {fileID: 11495228} + - 114: {fileID: 11495226} + m_Layer: 0 + m_Name: SR_Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195160 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495160} + - 222: {fileID: 22295142} + - 114: {fileID: 11495230} + - 114: {fileID: 11495232} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195162 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495162} + - 222: {fileID: 22295144} + - 114: {fileID: 11495234} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195164 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495164} + - 222: {fileID: 22295146} + - 114: {fileID: 11495236} + - 114: {fileID: 11495238} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195166 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495166} + - 222: {fileID: 22295148} + - 114: {fileID: 11495240} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195168 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495168} + - 114: {fileID: 11495246} + - 114: {fileID: 11495244} + - 114: {fileID: 11495242} + - 114: {fileID: 11495248} + m_Layer: 0 + m_Name: SR_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195170 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495170} + - 222: {fileID: 22295150} + - 114: {fileID: 11495250} + - 114: {fileID: 11495252} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195172 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495172} + - 222: {fileID: 22295152} + - 114: {fileID: 11495254} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195174 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495174} + - 222: {fileID: 22295154} + - 114: {fileID: 11495256} + - 114: {fileID: 11495258} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195176 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495176} + - 114: {fileID: 11495266} + - 114: {fileID: 11495264} + - 114: {fileID: 11495262} + - 114: {fileID: 11495260} + m_Layer: 0 + m_Name: SR_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195178 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495178} + - 222: {fileID: 22295156} + - 114: {fileID: 11495268} + - 114: {fileID: 11495270} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195180 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495180} + - 114: {fileID: 11495274} + m_Layer: 0 + m_Name: SR_Result + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195182 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495182} + - 114: {fileID: 11495276} + m_Layer: 0 + m_Name: SR_NumberGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195184 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495184} + - 222: {fileID: 22295158} + - 114: {fileID: 11495278} + - 114: {fileID: 11495280} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195186 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495186} + - 222: {fileID: 22295160} + - 114: {fileID: 11495282} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195188 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495188} + - 222: {fileID: 22295162} + - 114: {fileID: 11495284} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195190 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495190} + - 114: {fileID: 11495292} + - 114: {fileID: 11495290} + - 114: {fileID: 11495288} + - 114: {fileID: 11495286} + m_Layer: 0 + m_Name: SR_7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195192 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495192} + - 222: {fileID: 22295164} + - 114: {fileID: 11495294} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195194 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495194} + - 222: {fileID: 22295166} + - 114: {fileID: 11495296} + - 114: {fileID: 11495298} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195196 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495196} + - 222: {fileID: 22295168} + - 114: {fileID: 11495300} + - 114: {fileID: 11495302} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195198 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495198} + - 222: {fileID: 22295170} + - 114: {fileID: 11495304} + - 114: {fileID: 11495306} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195200 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495200} + - 222: {fileID: 22295172} + - 114: {fileID: 11495308} + - 114: {fileID: 11495310} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195202 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495202} + - 222: {fileID: 22295174} + - 114: {fileID: 11495312} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195204 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495204} + - 222: {fileID: 22295176} + - 114: {fileID: 11495316} + - 114: {fileID: 11495314} + m_Layer: 0 + m_Name: SR_Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195206 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495206} + - 114: {fileID: 11495324} + - 114: {fileID: 11495322} + - 114: {fileID: 11495320} + - 114: {fileID: 11495318} + m_Layer: 0 + m_Name: SR_6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195208 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495208} + - 222: {fileID: 22295178} + - 114: {fileID: 11495326} + m_Layer: 0 + m_Name: SR_Number + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195210 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495210} + - 114: {fileID: 11495332} + - 114: {fileID: 11495330} + - 114: {fileID: 11495328} + - 114: {fileID: 11495334} + m_Layer: 0 + m_Name: SR_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195212 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495212} + - 114: {fileID: 11495338} + - 114: {fileID: 11495336} + m_Layer: 0 + m_Name: SR_4_PinDot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195214 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495214} + - 222: {fileID: 22295180} + - 114: {fileID: 11495340} + - 114: {fileID: 11495342} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195216 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495216} + - 114: {fileID: 11495346} + - 114: {fileID: 11495344} + m_Layer: 0 + m_Name: SR_2_PinDot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195218 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495218} + m_Layer: 0 + m_Name: SR_Space + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195220 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495220} + - 114: {fileID: 11495348} + - 114: {fileID: 11495350} + m_Layer: 0 + m_Name: SR_1_PinDot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195222 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495222} + - 222: {fileID: 22295182} + - 114: {fileID: 11495352} + m_Layer: 0 + m_Name: SR_Prompt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195224 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495224} + - 222: {fileID: 22295184} + - 114: {fileID: 11495354} + - 114: {fileID: 11495356} + m_Layer: 0 + m_Name: SR_Ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495226} + - 222: {fileID: 22295186} + - 114: {fileID: 11495358} + m_Layer: 0 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195228 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495228} + - 222: {fileID: 22295188} + - 114: {fileID: 11495360} + m_Layer: 0 + m_Name: SR_Letters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195230 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495230} + - 222: {fileID: 22295190} + - 114: {fileID: 11495362} + - 114: {fileID: 11495364} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195232 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22495232} + - 222: {fileID: 22295192} + - 114: {fileID: 11495368} + - 114: {fileID: 11495366} + m_Layer: 0 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!95 &9520640 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120640} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 35724102027368d4988847df7e923ddc, type: 2} + m_CullingMode: 0 + m_UpdateMode: 2 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!114 &11420640 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11447818 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0ad3d8afa9fd64429a249b5bbb19557, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495096 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_CancelButton + IgnoreImage: 0 +--- !u!114 &11495098 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Delete +--- !u!114 &11495100 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .735294104, g: .735294104, b: .735294104, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .533333361, a: 1} + m_DisabledColor: {r: .426470578, g: .426470578, b: .426470578, a: .784313738} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495098} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495102 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495104 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495106 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 5 +--- !u!114 &11495108 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495110 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495112 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495114 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495116 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495118 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495120 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Fill + IgnoreImage: 0 +--- !u!114 &11495122 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: a097b58da8de2bf4cb593d05feca1d98, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495124 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Fill + IgnoreImage: 0 +--- !u!114 &11495126 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: a097b58da8de2bf4cb593d05feca1d98, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495128 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495130 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495132 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: MNO +--- !u!114 &11495134 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1bf029da478aff42a6d6e0ed8e21203, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + StyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} +--- !u!114 &11495136 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11495138 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58bc4004a23c662408dd40e6d01ac936, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _retinaScale: 2 + _thresholdDpi: 250 +--- !u!114 &11495140 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11495142 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac5725a9566ed324c98b66c6cb03c5cf, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Background: {fileID: 11495358} + CanCancel: 1 + CancelButton: {fileID: 11495100} + CancelButtonText: {fileID: 11495098} + CanvasGroup: {fileID: 22595096} + DotAnimator: {fileID: 9520640} + NumberButtons: + - {fileID: 11495266} + - {fileID: 11495246} + - {fileID: 11495186} + - {fileID: 11495332} + - {fileID: 11495178} + - {fileID: 11495154} + - {fileID: 11495324} + - {fileID: 11495292} + - {fileID: 11495224} + - {fileID: 11495208} + NumberDots: + - {fileID: 11495350} + - {fileID: 11495344} + - {fileID: 11495162} + - {fileID: 11495336} + PromptText: {fileID: 11495352} +--- !u!114 &11495144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195118} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: DEF +--- !u!114 &11495146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 9 +--- !u!114 &11495148 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495150 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495230} +--- !u!114 &11495152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495308} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495156 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: GHI +--- !u!114 &11495158 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495160 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495162 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11495368} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &11495164 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 15 + m_PreferredHeight: 15 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495166 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &11495168 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 15 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11495170 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: TUV +--- !u!114 &11495172 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: PQRS +--- !u!114 &11495174 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495304} +--- !u!114 &11495176 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495354} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495180 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495182 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495340} +--- !u!114 &11495184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495158} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495188 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495190 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Ring + IgnoreImage: 0 +--- !u!114 &11495192 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: ca27eb96a4f0c4145a479ad3e29790a2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495194 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495196 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495198 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495200 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495202 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495204 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495102} +--- !u!114 &11495206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495208 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495250} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495210 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Ring + IgnoreImage: 0 +--- !u!114 &11495212 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: ca27eb96a4f0c4145a479ad3e29790a2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495214 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 1 +--- !u!114 &11495216 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 7 +--- !u!114 &11495218 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495220 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495198} +--- !u!114 &11495222 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495224 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495194} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495226 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Ring + IgnoreImage: 0 +--- !u!114 &11495228 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: ca27eb96a4f0c4145a479ad3e29790a2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495230 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495232 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495234 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: WXYZ +--- !u!114 &11495236 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195164} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495238 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195164} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495240 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: ABC +--- !u!114 &11495242 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495236} +--- !u!114 &11495244 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495246 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495256} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495248 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495250 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195170} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495252 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195170} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495254 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1.10000002 + m_Text: 0 +--- !u!114 &11495256 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495258 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495260 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495262 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495116} +--- !u!114 &11495264 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495266 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495108} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495268 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: a097b58da8de2bf4cb593d05feca1d98, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495270 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Fill + IgnoreImage: 0 +--- !u!114 &11495274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 15 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 64, y: 64} + m_Spacing: {x: 16, y: 16} + m_Constraint: 1 + m_ConstraintCount: 3 +--- !u!114 &11495278 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 3 +--- !u!114 &11495284 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 4 +--- !u!114 &11495286 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495288 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495362} +--- !u!114 &11495290 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495292 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495278} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495294 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 8 +--- !u!114 &11495296 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195194} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495298 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195194} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495302 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495304 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495306 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495308 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495310 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 6 +--- !u!114 &11495314 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Ring + IgnoreImage: 0 +--- !u!114 &11495316 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: ca27eb96a4f0c4145a479ad3e29790a2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495318 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495320 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495300} +--- !u!114 &11495322 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495112} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495326 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 2 +--- !u!114 &11495328 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .258823544, g: .388235301, b: .541176498, a: 0} + FlashColor: {r: .536764741, g: .749080837, b: 1, a: .784313738} + Target: {fileID: 11495296} +--- !u!114 &11495330 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Button + IgnoreImage: 0 +--- !u!114 &11495332 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_PressedColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11495128} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11495334 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11495336 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11495126} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &11495338 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 15 + m_PreferredHeight: 15 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495340 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495342 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495344 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11495122} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &11495346 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 15 + m_PreferredHeight: 15 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195220} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 15 + m_PreferredHeight: 15 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11495350 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195220} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11495268} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &11495352 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195222} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Prompt Text Here +--- !u!114 &11495354 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495356 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring + IgnoreImage: 0 +--- !u!114 &11495358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: .835294127} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495360 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .800000012 + m_Text: JKL +--- !u!114 &11495362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11495364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Number_Ring_Fill + IgnoreImage: 0 +--- !u!114 &11495366 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: PinEntry_Dot_Fill + IgnoreImage: 0 +--- !u!114 &11495368 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: a097b58da8de2bf4cb593d05feca1d98, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11498200 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!222 &22295096 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195096} +--- !u!222 &22295098 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195098} +--- !u!222 &22295100 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195100} +--- !u!222 &22295102 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195102} +--- !u!222 &22295104 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195104} +--- !u!222 &22295106 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195106} +--- !u!222 &22295108 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195108} +--- !u!222 &22295110 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195110} +--- !u!222 &22295112 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195112} +--- !u!222 &22295114 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195114} +--- !u!222 &22295116 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195118} +--- !u!222 &22295118 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195122} +--- !u!222 &22295120 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195126} +--- !u!222 &22295122 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195128} +--- !u!222 &22295124 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195134} +--- !u!222 &22295126 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195136} +--- !u!222 &22295128 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195142} +--- !u!222 &22295130 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195144} +--- !u!222 &22295132 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195146} +--- !u!222 &22295134 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195150} +--- !u!222 &22295136 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195152} +--- !u!222 &22295138 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195154} +--- !u!222 &22295140 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195158} +--- !u!222 &22295142 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195160} +--- !u!222 &22295144 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195162} +--- !u!222 &22295146 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195164} +--- !u!222 &22295148 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195166} +--- !u!222 &22295150 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195170} +--- !u!222 &22295152 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195172} +--- !u!222 &22295154 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195174} +--- !u!222 &22295156 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195178} +--- !u!222 &22295158 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195184} +--- !u!222 &22295160 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195186} +--- !u!222 &22295162 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195188} +--- !u!222 &22295164 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195192} +--- !u!222 &22295166 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195194} +--- !u!222 &22295168 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195196} +--- !u!222 &22295170 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195198} +--- !u!222 &22295172 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195200} +--- !u!222 &22295174 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195202} +--- !u!222 &22295176 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195204} +--- !u!222 &22295178 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195208} +--- !u!222 &22295180 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195214} +--- !u!222 &22295182 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195222} +--- !u!222 &22295184 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195224} +--- !u!222 &22295186 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195226} +--- !u!222 &22295188 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195228} +--- !u!222 &22295190 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195230} +--- !u!222 &22295192 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195232} +--- !u!223 &22395096 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 122 +--- !u!224 &22420640 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495220} + - {fileID: 22495216} + - {fileID: 22495130} + - {fileID: 22495212} + m_Father: {fileID: 22495180} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495096 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495120} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495098 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195098} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495148} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495100 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195100} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495124} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495102 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195102} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495176} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495104 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195104} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495206} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495106 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195106} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495176} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495108 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195108} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495216} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495110 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195110} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495212} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495112 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195112} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495210} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495114 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195114} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495206} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495116 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22495226} + - {fileID: 22495132} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22495118 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195118} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495210} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495120 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195120} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495096} + m_Father: {fileID: 22495182} + m_RootOrder: 11 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495122 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495148} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495124 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195124} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495200} + - {fileID: 22495160} + - {fileID: 22495100} + - {fileID: 22495228} + m_Father: {fileID: 22495182} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495126 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195126} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495138} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495128 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195128} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495140} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495130 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495142} + - {fileID: 22495232} + m_Father: {fileID: 22420640} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495132 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495222} + - {fileID: 22495180} + - {fileID: 22495182} + m_Father: {fileID: 22495116} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495134 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195134} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495156} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495136 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495190} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495138 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195138} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495224} + - {fileID: 22495198} + - {fileID: 22495188} + - {fileID: 22495126} + m_Father: {fileID: 22495182} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495140 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195140} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495128} + - {fileID: 22495214} + - {fileID: 22495208} + - {fileID: 22495166} + m_Father: {fileID: 22495182} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495142 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495130} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495144 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195144} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495156} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495146 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195146} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495156} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495148 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495170} + - {fileID: 22495098} + - {fileID: 22495122} + - {fileID: 22495162} + m_Father: {fileID: 22495182} + m_RootOrder: 8 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495150 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195150} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495220} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495152 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195152} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495168} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495154 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495190} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495156 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495144} + - {fileID: 22495146} + - {fileID: 22495192} + - {fileID: 22495134} + m_Father: {fileID: 22495182} + m_RootOrder: 7 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495158 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195158} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495212} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495160 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495124} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495162 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195162} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495148} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495164 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195164} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495168} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495166 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195166} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495140} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495168 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495174} + - {fileID: 22495164} + - {fileID: 22495152} + m_Father: {fileID: 22495182} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495170 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195170} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495148} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495172 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195172} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495176} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495174 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195174} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495168} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495176 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195176} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495102} + - {fileID: 22495106} + - {fileID: 22495172} + m_Father: {fileID: 22495182} + m_RootOrder: 10 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495178 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195178} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495220} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495180 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195180} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22420640} + m_Father: {fileID: 22495132} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495182 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195182} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495168} + - {fileID: 22495140} + - {fileID: 22495210} + - {fileID: 22495138} + - {fileID: 22495124} + - {fileID: 22495206} + - {fileID: 22495190} + - {fileID: 22495156} + - {fileID: 22495148} + - {fileID: 22495218} + - {fileID: 22495176} + - {fileID: 22495120} + m_Father: {fileID: 22495132} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495184 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195184} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495190} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495186 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495210} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495188 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495138} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495190 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495184} + - {fileID: 22495230} + - {fileID: 22495154} + - {fileID: 22495136} + m_Father: {fileID: 22495182} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495192 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195192} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495156} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495194 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195194} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495210} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495196 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195196} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495206} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495198 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195198} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495138} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495200 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195200} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495124} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495202 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195202} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495206} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495204 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195204} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495216} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495206 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495104} + - {fileID: 22495196} + - {fileID: 22495202} + - {fileID: 22495114} + m_Father: {fileID: 22495182} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495208 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195208} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495140} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495210 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195210} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495112} + - {fileID: 22495194} + - {fileID: 22495186} + - {fileID: 22495118} + m_Father: {fileID: 22495182} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495212 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495158} + - {fileID: 22495110} + m_Father: {fileID: 22420640} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495214 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195214} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495140} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495216 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495204} + - {fileID: 22495108} + m_Father: {fileID: 22420640} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495218 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195218} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495182} + m_RootOrder: 9 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495220 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195220} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22495150} + - {fileID: 22495178} + m_Father: {fileID: 22420640} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495222 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195222} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495132} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495224 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195224} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495138} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495226 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495116} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495228 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195228} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495124} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -11} + m_SizeDelta: {x: 0, y: -22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495230 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195230} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495190} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 64} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22495232 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195232} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22495130} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22595096 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195116} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 195116} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab.meta new file mode 100644 index 00000000..67596653 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinEntry.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3234e6770548fe841adb652f4ad4bca6 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab new file mode 100644 index 00000000..55fe607d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab @@ -0,0 +1,6608 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &101212 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22489430} + - 114: {fileID: 11490248} + - 114: {fileID: 11494348} + - 114: {fileID: 11425454} + m_Layer: 5 + m_Name: SR_WarningButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &101666 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22425592} + - 222: {fileID: 22223466} + - 114: {fileID: 11413472} + - 114: {fileID: 11422844} + - 114: {fileID: 11428104} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &102936 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22469196} + - 114: {fileID: 11444830} + - 114: {fileID: 11402242} + - 114: {fileID: 11419732} + m_Layer: 5 + m_Name: SR_InfoButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &103946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22428736} + - 114: {fileID: 11469588} + - 114: {fileID: 11416152} + - 114: {fileID: 11434910} + - 222: {fileID: 22211912} + - 114: {fileID: 11483024} + - 114: {fileID: 11480758} + - 114: {fileID: 11482838} + m_Layer: 5 + m_Name: SR_ConsoleScrollRect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108234 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22405428} + m_Layer: 5 + m_Name: SR_SlidingArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109250 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22438040} + - 222: {fileID: 22290382} + - 114: {fileID: 11402994} + - 114: {fileID: 11493056} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109696 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22445992} + - 222: {fileID: 22273598} + - 114: {fileID: 11437742} + - 114: {fileID: 11467968} + - 114: {fileID: 11455422} + m_Layer: 5 + m_Name: SR_TopLeftHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112328 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22412160} + - 222: {fileID: 22242140} + - 114: {fileID: 11439412} + - 114: {fileID: 11466008} + m_Layer: 5 + m_Name: SR_TopHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &112730 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22412730} + - 222: {fileID: 22212730} + - 114: {fileID: 11412728} + - 114: {fileID: 11412726} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112770 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22462038} + - 222: {fileID: 22278316} + - 114: {fileID: 11488768} + - 114: {fileID: 11406848} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113926 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22414340} + - 222: {fileID: 22217942} + - 114: {fileID: 11477556} + - 114: {fileID: 11434120} + - 114: {fileID: 11492410} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115286 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22456864} + - 222: {fileID: 22288270} + - 114: {fileID: 11487274} + - 114: {fileID: 11402158} + m_Layer: 0 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &116980 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415418} + - 114: {fileID: 11449458} + - 222: {fileID: 22245578} + - 114: {fileID: 11455120} + - 114: {fileID: 11488384} + - 114: {fileID: 11443788} + m_Layer: 5 + m_Name: SR_Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &118288 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400618} + - 222: {fileID: 22288278} + - 114: {fileID: 11420042} + - 114: {fileID: 11475018} + - 114: {fileID: 11411898} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &119998 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22448178} + - 222: {fileID: 22251232} + - 114: {fileID: 11404694} + - 114: {fileID: 11484448} + - 114: {fileID: 11452394} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &120834 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22419886} + - 222: {fileID: 22278436} + - 114: {fileID: 11431444} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &123682 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22423682} + - 114: {fileID: 11423682} + m_Layer: 0 + m_Name: SR_FlowLayout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &124190 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22478500} + - 114: {fileID: 11425054} + - 114: {fileID: 11405394} + m_Layer: 0 + m_Name: SR_VerticalSplitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &124722 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22493742} + - 114: {fileID: 11454498} + - 114: {fileID: 11411766} + - 114: {fileID: 11467782} + m_Layer: 5 + m_Name: SR_ErrorButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22420880} + - 114: {fileID: 11422016} + - 114: {fileID: 11462302} + - 225: {fileID: 22589178} + m_Layer: 0 + m_Name: SR_DockConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &126898 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22498756} + - 114: {fileID: 11478318} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128748 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22487510} + - 114: {fileID: 11460058} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &131058 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485200} + - 222: {fileID: 22246096} + - 114: {fileID: 11415496} + - 114: {fileID: 11464978} + - 114: {fileID: 11402254} + m_Layer: 5 + m_Name: SR_TopRightHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132546 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22422706} + - 222: {fileID: 22267456} + - 114: {fileID: 11495864} + - 114: {fileID: 11488142} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133628 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22427890} + - 222: {fileID: 22257292} + - 114: {fileID: 11431368} + - 114: {fileID: 11429856} + m_Layer: 0 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135378 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452010} + - 225: {fileID: 22541820} + - 114: {fileID: 11411474} + m_Layer: 0 + m_Name: SR_Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &137394 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450732} + - 114: {fileID: 11439460} + m_Layer: 0 + m_Name: SR_TopBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439328} + - 223: {fileID: 22339328} + - 114: {fileID: 11439322} + - 114: {fileID: 11439324} + - 114: {fileID: 11439326} + - 114: {fileID: 11439328} + - 114: {fileID: 11457318} + - 114: {fileID: 11465078} + - 114: {fileID: 11419944} + m_Layer: 0 + m_Name: PinnedUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &142316 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22456182} + - 222: {fileID: 22270178} + - 114: {fileID: 11456790} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &143254 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22427376} + - 222: {fileID: 22290916} + - 114: {fileID: 11404028} + - 114: {fileID: 11452994} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145956 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22463742} + - 222: {fileID: 22292776} + - 114: {fileID: 11478402} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &147648 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22458278} + - 222: {fileID: 22252774} + - 114: {fileID: 11470768} + - 114: {fileID: 11449304} + m_Layer: 5 + m_Name: SR_BottomHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150968 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22420856} + - 222: {fileID: 22254500} + - 114: {fileID: 11434300} + - 114: {fileID: 11429512} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &161632 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22461632} + - 222: {fileID: 22261632} + - 114: {fileID: 11461630} + - 114: {fileID: 11461632} + - 225: {fileID: 22561632} + m_Layer: 0 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162546 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408688} + - 222: {fileID: 22294800} + - 114: {fileID: 11403942} + m_Layer: 5 + m_Name: SR_RightHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162844 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406668} + - 222: {fileID: 22203430} + - 114: {fileID: 11461566} + - 114: {fileID: 11427486} + - 114: {fileID: 11401300} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &163402 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22448952} + - 222: {fileID: 22248730} + - 114: {fileID: 11431552} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164060 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22429112} + - 222: {fileID: 22239910} + - 114: {fileID: 11467266} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164638 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22460106} + - 114: {fileID: 11468894} + - 222: {fileID: 22247900} + - 114: {fileID: 11448874} + - 114: {fileID: 11472410} + - 114: {fileID: 11407420} + m_Layer: 5 + m_Name: SR_Menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166248 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22440056} + - 222: {fileID: 22245800} + - 114: {fileID: 11462048} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168972 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22453596} + - 222: {fileID: 22200286} + - 114: {fileID: 11407714} + - 114: {fileID: 11405820} + - 114: {fileID: 11474212} + m_Layer: 5 + m_Name: SR_BottomRightHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22431974} + - 222: {fileID: 22220090} + - 114: {fileID: 11450434} + - 114: {fileID: 11494414} + - 114: {fileID: 11408564} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171726 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471726} + - 222: {fileID: 22271724} + - 114: {fileID: 11471728} + m_Layer: 5 + m_Name: SR_LeftHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171728 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471728} + - 222: {fileID: 22271726} + - 114: {fileID: 11471730} + - 114: {fileID: 11471732} + - 114: {fileID: 11412730} + m_Layer: 5 + m_Name: SR_BottomLeftHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171730 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471730} + - 222: {fileID: 22271728} + - 114: {fileID: 11471736} + - 114: {fileID: 11471734} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171732 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471732} + - 222: {fileID: 22271730} + - 114: {fileID: 11471738} + m_Layer: 5 + m_Name: SR_BottomHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171734 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471734} + - 114: {fileID: 11468302} + m_Layer: 0 + m_Name: SR_ProfilerContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171736 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471736} + - 225: {fileID: 22571726} + m_Layer: 0 + m_Name: SR_FPSGraphContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &172826 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479180} + - 114: {fileID: 11403470} + - 114: {fileID: 11413032} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &174366 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22459188} + - 222: {fileID: 22248550} + - 114: {fileID: 11406700} + m_Layer: 5 + m_Name: SR_TopHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176948 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22476948} + - 114: {fileID: 11476948} + - 114: {fileID: 11498324} + m_Layer: 0 + m_Name: SR_PinnedOptionsGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178184 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482234} + - 114: {fileID: 11439648} + m_Layer: 0 + m_Name: SR_ProfilerVerticalAlign + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &179416 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22467544} + - 222: {fileID: 22297048} + - 114: {fileID: 11490306} + - 114: {fileID: 11460760} + - 114: {fileID: 11476364} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &181184 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483542} + - 222: {fileID: 22254916} + - 114: {fileID: 11436654} + - 114: {fileID: 11420426} + - 114: {fileID: 11448398} + m_Layer: 5 + m_Name: SR_HandleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182564 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482564} + - 222: {fileID: 22282564} + - 114: {fileID: 11482572} + - 114: {fileID: 11482574} + m_Layer: 5 + m_Name: SR_FPSGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182566 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482568} + - 114: {fileID: 11482576} + m_Layer: 5 + m_Name: SR_AxisLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182568 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482574} + - 222: {fileID: 22282566} + - 114: {fileID: 11482578} + - 114: {fileID: 11482580} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182570 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482572} + - 222: {fileID: 22282568} + - 114: {fileID: 11482582} + - 114: {fileID: 11482584} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182572 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482570} + - 114: {fileID: 11482586} + m_Layer: 5 + m_Name: SR_AxisLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182574 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482578} + - 222: {fileID: 22282570} + - 114: {fileID: 11482588} + - 114: {fileID: 11482590} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182576 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482576} + - 222: {fileID: 22282572} + - 114: {fileID: 11482592} + - 114: {fileID: 11482594} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182578 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482566} + - 114: {fileID: 11482596} + - 225: {fileID: 22571724} + m_Layer: 5 + m_Name: SR_FPSGraphSubRow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182580 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482580} + - 222: {fileID: 22282574} + - 114: {fileID: 11482598} + - 114: {fileID: 11482600} + - 114: {fileID: 11482570} + m_Layer: 5 + m_Name: SR_FPS + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182582 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482582} + - 114: {fileID: 11482602} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182584 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482584} + - 114: {fileID: 11482604} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182586 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482590} + - 222: {fileID: 22282576} + - 114: {fileID: 11482606} + - 114: {fileID: 11482608} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482592} + - 222: {fileID: 22282578} + - 114: {fileID: 11482610} + - 114: {fileID: 11482568} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182590 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482586} + - 114: {fileID: 11482612} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182592 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482594} + - 222: {fileID: 22282580} + - 114: {fileID: 11482614} + - 114: {fileID: 11482616} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182594 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482596} + - 222: {fileID: 22282582} + - 114: {fileID: 11482618} + - 114: {fileID: 11482566} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182596 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482588} + - 114: {fileID: 11482620} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182598 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482598} + - 222: {fileID: 22282584} + - 114: {fileID: 11482622} + - 114: {fileID: 11482624} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182600 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482600} + - 222: {fileID: 22282586} + - 114: {fileID: 11482626} + - 114: {fileID: 11482564} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182602 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482602} + - 114: {fileID: 11461848} + m_Layer: 0 + m_Name: SR_ProfilerGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182604 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22482604} + - 114: {fileID: 11482628} + - 114: {fileID: 11421030} + m_Layer: 0 + m_Name: SR_HorizontalSplitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &186488 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479100} + - 114: {fileID: 11402794} + - 222: {fileID: 22202312} + - 114: {fileID: 11414578} + - 114: {fileID: 11440152} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &186870 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22456556} + - 114: {fileID: 11465300} + - 222: {fileID: 22283300} + - 114: {fileID: 11431508} + - 114: {fileID: 11489468} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194264 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22492950} + - 222: {fileID: 22253090} + - 114: {fileID: 11456794} + m_Layer: 5 + m_Name: SR_Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &196458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22488734} + - 114: {fileID: 11481168} + - 222: {fileID: 22211134} + - 114: {fileID: 11480194} + - 114: {fileID: 11403650} + - 114: {fileID: 11471408} + m_Layer: 5 + m_Name: SR_Clear + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198844 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22417406} + - 114: {fileID: 11423940} + - 114: {fileID: 11446826} + m_Layer: 5 + m_Name: SR_ScrollBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &199772 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22477296} + - 222: {fileID: 22236422} + - 114: {fileID: 11441364} + - 114: {fileID: 11489160} + m_Layer: 0 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11401300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11402158 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Background + IgnoreImage: 0 +--- !u!114 &11402242 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11413472} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: TogglesUpdated + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11402254 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11402794 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11402994 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 2fd39c3920ff82048ad7b8aac693d224, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11403470 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19c408e3f064e184fa5e0d9862ac4d8b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + _selectedItemChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: SRF.UI.Layout.VirtualVerticalLayoutGroup+SelectedItemChangedEvent, + Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + AltRowStyleSheet: {fileID: 11400000, guid: 9e09b8950236048448238f4c0963f3ad, type: 2} + EnableSelection: 0 + ItemPrefab: {fileID: 22400004, guid: 408ed745743f47f46ac11b71f96cf1a4, type: 2} + RowPadding: 2 + RowStyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} + SelectedRowStyleSheet: {fileID: 11400000, guid: d30366e803724014382b48500f16271c, + type: 2} + Spacing: 0 + StickToBottom: 1 +--- !u!114 &11403650 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .278431386, g: .278431386, b: .278431386, a: 0} + FlashColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Target: {fileID: 11431444} +--- !u!114 &11403942 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162546} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11404028 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 159fc50f1c2574d4ea143a010597198a, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11404694 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .278431386, g: .278431386, b: .278431386, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11405394 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 0 +--- !u!114 &11405820 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11406700 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174366} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11406848 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11407420 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!114 &11407714 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11408564 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11411474 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 50 + m_PreferredWidth: -1 + m_PreferredHeight: 200 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11411766 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 0 + graphic: {fileID: 11404694} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: TogglesUpdated + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11411898 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11412726 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11412728 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11412730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11413032 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &11413472 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .278431386, g: .278431386, b: .278431386, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11414578 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .388235301, b: .545098066, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11415496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11416152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22479180} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: .100000001 + m_Inertia: 1 + m_DecelerationRate: .135000005 + m_ScrollSensitivity: 40 + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 11423940} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11419732 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11419944 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0ad3d8afa9fd64429a249b5bbb19557, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11420042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .956862748, g: .760784328, b: .34117648, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11420426 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11411474} + TargetRectTransform: {fileID: 0} +--- !u!114 &11421030 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 +--- !u!114 &11422016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11422844 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11423682 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 123682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3a5149e46522d84cb8079537220a929, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 8 + ChildForceExpandHeight: 1 + ChildForceExpandWidth: 0 + Spacing: 2 +--- !u!114 &11423940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .441176474, g: .441176474, b: .441176474, a: .709803939} + m_HighlightedColor: {r: .889705896, g: .889705896, b: .889705896, a: .811764717} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_DisabledColor: {r: .316176474, g: .316176474, b: .316176474, a: .517647088} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11456794} + m_HandleRect: {fileID: 22492950} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11425054 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11425454 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11427486 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Info_Blob + IgnoreImage: 0 +--- !u!114 &11428104 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11429512 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Trash_Small + IgnoreImage: 0 +--- !u!114 &11429856 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 2 + m_PreferredWidth: -1 + m_PreferredHeight: 2 + m_FlexibleWidth: -1 + m_FlexibleHeight: 0 +--- !u!114 &11431368 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .308823526, g: .308823526, b: .308823526, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11431444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11431508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .388235301, b: .545098066, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11431552 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 65 +--- !u!114 &11434120 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11411474} + TargetRectTransform: {fileID: 0} +--- !u!114 &11434300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 8b93e13a01362424a89df66b813b3403, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11434910 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &11436654 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11437742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439322 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11439324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11439326 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58bc4004a23c662408dd40e6d01ac936, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _retinaScale: 2 + _thresholdDpi: 250 +--- !u!114 &11439328 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1bf029da478aff42a6d6e0ed8e21203, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + StyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} +--- !u!114 &11439412 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .308823526, g: .308823526, b: .308823526, a: .376470596} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439460 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 28 + m_PreferredWidth: -1 + m_PreferredHeight: 28 + m_FlexibleWidth: -1 + m_FlexibleHeight: 0 +--- !u!114 &11439648 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 7 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11440152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11441364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .203921571, g: .203921571, b: .203921571, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11443788 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!114 &11444830 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11446826 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: ScrollBar + IgnoreImage: 0 +--- !u!114 &11448398 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + delegates: + - eventID: 13 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: OnBeginDrag + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 14 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: OnEndDrag + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11448874 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11449304 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Sidebar_Border + IgnoreImage: 0 +--- !u!114 &11449458 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11462048} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: ToggleDropdownVisible + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11450434 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .956862748, g: .356862754, b: .34117648, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11452394 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11452994 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_ToggleDropdown + IgnoreImage: 0 +--- !u!114 &11454498 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11455120 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11455422 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11456790 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11456794 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194264} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: a0d7355cd1bbc6c44b68f572bb8c2722, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11457318 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d5f8248a0899ee48adc84c3fb98627a, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Canvas: {fileID: 22339328} + Container: {fileID: 22423682} + DockConsoleController: {fileID: 11462302} + Options: {fileID: 176948} + OptionsLayoutGroup: {fileID: 11423682} + Profiler: {fileID: 178184} + ProfilerHandleManager: {fileID: 11468302} + ProfilerVerticalLayoutGroup: {fileID: 11439648} +--- !u!114 &11460058 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11460760 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11461566 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .34117648, g: .701960802, b: .956862748, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11461630 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161632} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .0955882072, g: .0955882072, b: .0955882072, a: .870588243} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11461632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161632} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Pinned_Profiler_BG + IgnoreImage: 0 +--- !u!114 &11461848 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 190 + m_MinHeight: 120 + m_PreferredWidth: 250 + m_PreferredHeight: 130 + m_FlexibleWidth: 0 + m_FlexibleHeight: 0 +--- !u!114 &11462048 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11462302 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8181ba76f89dd64a96c1e8c2beccb26, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + BottomHandle: {fileID: 147648} + CanvasGroup: {fileID: 22589178} + Console: {fileID: 11482838} + Dropdown: {fileID: 135378} + DropdownToggleSprite: {fileID: 11404028} + TextErrors: {fileID: 11431552} + TextInfo: {fileID: 11478402} + TextWarnings: {fileID: 11467266} + ToggleErrors: {fileID: 11411766} + ToggleInfo: {fileID: 11402242} + ToggleWarnings: {fileID: 11494348} + TopBar: {fileID: 137394} + TopHandle: {fileID: 112328} +--- !u!114 &11464978 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11465078 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11465300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11466008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Sidebar_Border + IgnoreImage: 0 +--- !u!114 &11467266 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 65 +--- !u!114 &11467782 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11467968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11468302 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4292e93ad30fda64b96c60d4d68b3c0d, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + BottomHandle: {fileID: 171732} + BottomLeftHandle: {fileID: 171728} + BottomRightHandle: {fileID: 168972} + DefaultAlignment: 2 + LeftHandle: {fileID: 171726} + RightHandle: {fileID: 162546} + TopHandle: {fileID: 174366} + TopLeftHandle: {fileID: 109696} + TopRightHandle: {fileID: 131058} +--- !u!114 &11468894 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11456790} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: MenuButtonPressed + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11469588 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 +--- !u!114 &11470768 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .308823526, g: .308823526, b: .308823526, a: .376470596} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11471408 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!114 &11471728 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171726} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11471730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11471732 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11471734 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11471736 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11471738 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171732} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11472410 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .278431386, g: .278431386, b: .278431386, a: 0} + FlashColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Target: {fileID: 11456790} +--- !u!114 &11474212 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 1 + Invert: 1 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11475018 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Warning_Blob + IgnoreImage: 0 +--- !u!114 &11476364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11476948 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 190 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: 1 +--- !u!114 &11477556 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11478318 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11478402 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 65 +--- !u!114 &11480194 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: 0 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11480758 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11481168 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11431444} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: ClearButtonPressed + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11482564 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: .5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &11482566 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: .5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &11482568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: .5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &11482570 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: .5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &11482572 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5812a284a856b743b4f54c6a4637061, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + VerticalAlignment: 1 + FloatingScale: 1 + TargetFpsUseApplication: 0 + DrawAxes: 1 + TargetFps: 60 + Clip: 1 + VerticalPadding: 10 + LineColours: + - {r: .203921571, g: .517647088, b: .635294139, a: 1} + - {r: .4627451, g: .596078455, b: .0274509806, a: 1} + - {r: .592156887, g: .459743083, b: .0274509918, a: 1} +--- !u!114 &11482574 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 160 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11482576 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4694d7052fd506340ba6cad9f8a10f1b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Text: {fileID: 11482578} +--- !u!114 &11482578 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 8 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: .769999981 + m_Text: 33ms (30FPS) +--- !u!114 &11482580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Text + IgnoreImage: 0 +--- !u!114 &11482582 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11482584 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Background + IgnoreImage: 0 +--- !u!114 &11482586 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4694d7052fd506340ba6cad9f8a10f1b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Text: {fileID: 11482588} +--- !u!114 &11482588 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 8 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: .769999981 + m_Text: 17ms (60FPS) +--- !u!114 &11482590 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Text + IgnoreImage: 0 +--- !u!114 &11482592 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11482594 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Background + IgnoreImage: 0 +--- !u!114 &11482596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 6 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11482598 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 10 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'FPS: 45.33' +--- !u!114 &11482600 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85621644eaef06f44835068498590190, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + UpdateFrequency: 1 + _text: {fileID: 11482598} +--- !u!114 &11482602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11482604 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11482606 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .203921571, g: .513725519, b: .631372571, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11482608 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11482610 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 10 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Update +--- !u!114 &11482612 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11482614 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .458823532, g: .592156887, b: .0274509806, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11482616 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11482618 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 10 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Render +--- !u!114 &11482620 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11482622 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .588235319, g: .454901963, b: .0274509806, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11482624 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11482626 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 6 + m_MaxSize: 10 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Other +--- !u!114 &11482628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11482838 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 413376b74a5948a4db9e0a5c9c002724, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _consoleScrollLayoutGroup: {fileID: 11403470} + _consoleScrollRect: {fileID: 11416152} +--- !u!114 &11483024 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11484448 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11487274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .215686277, g: .215686277, b: .215686277, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11488142 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8faed27c04557e24e8aecd35f2b4d9d3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Axis: 0 + Invert: 0 + MaxSize: -1 + TargetLayoutElement: {fileID: 11461848} + TargetRectTransform: {fileID: 0} +--- !u!114 &11488384 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .278431386, g: .278431386, b: .278431386, a: 0} + FlashColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Target: {fileID: 11462048} +--- !u!114 &11488768 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11489160 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Background + IgnoreImage: 0 +--- !u!114 &11489468 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11490248 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11490306 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .278431386, g: .278431386, b: .278431386, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11492410 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + delegates: + - eventID: 13 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: OnBeginDrag + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 14 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: OnEndDrag + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11493056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Menu_Small + IgnoreImage: 0 +--- !u!114 &11494348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 0 + graphic: {fileID: 11490306} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11462302} + m_MethodName: TogglesUpdated + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11494414 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Error_Blob + IgnoreImage: 0 +--- !u!114 &11495864 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11498324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 525a40520606ceb469b7494cb8ddef87, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + CopyMinHeight: 0 + CopyMinWidth: 1 + CopyPreferredHeight: 0 + CopyPreferredWidth: 0 + CopySource: {fileID: 22423682} + PaddingMinHeight: 0 + PaddingMinWidth: 0 + PaddingPreferredHeight: 0 + PaddingPreferredWidth: 0 +--- !u!222 &22200286 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168972} +--- !u!222 &22202312 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186488} +--- !u!222 &22203430 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162844} +--- !u!222 &22211134 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} +--- !u!222 &22211912 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} +--- !u!222 &22212730 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112730} +--- !u!222 &22217942 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113926} +--- !u!222 &22220090 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171092} +--- !u!222 &22223466 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101666} +--- !u!222 &22236422 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199772} +--- !u!222 &22239910 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164060} +--- !u!222 &22242140 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112328} +--- !u!222 &22245578 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} +--- !u!222 &22245800 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166248} +--- !u!222 &22246096 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131058} +--- !u!222 &22247900 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} +--- !u!222 &22248550 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174366} +--- !u!222 &22248730 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163402} +--- !u!222 &22251232 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119998} +--- !u!222 &22252774 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147648} +--- !u!222 &22253090 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194264} +--- !u!222 &22254500 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150968} +--- !u!222 &22254916 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181184} +--- !u!222 &22257292 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133628} +--- !u!222 &22261632 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161632} +--- !u!222 &22267456 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132546} +--- !u!222 &22270178 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142316} +--- !u!222 &22271724 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171726} +--- !u!222 &22271726 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171728} +--- !u!222 &22271728 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171730} +--- !u!222 &22271730 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171732} +--- !u!222 &22273598 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109696} +--- !u!222 &22278316 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112770} +--- !u!222 &22278436 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120834} +--- !u!222 &22282564 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182564} +--- !u!222 &22282566 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182568} +--- !u!222 &22282568 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182570} +--- !u!222 &22282570 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182574} +--- !u!222 &22282572 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} +--- !u!222 &22282574 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182580} +--- !u!222 &22282576 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182586} +--- !u!222 &22282578 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182588} +--- !u!222 &22282580 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182592} +--- !u!222 &22282582 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182594} +--- !u!222 &22282584 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182598} +--- !u!222 &22282586 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} +--- !u!222 &22283300 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186870} +--- !u!222 &22288270 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115286} +--- !u!222 &22288278 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118288} +--- !u!222 &22290382 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109250} +--- !u!222 &22290916 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143254} +--- !u!222 &22292776 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145956} +--- !u!222 &22294800 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162546} +--- !u!222 &22297048 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179416} +--- !u!223 &22339328 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 117 +--- !u!224 &22400618 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118288} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22489430} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: -14} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22405428 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108234} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22492950} + m_Father: {fileID: 22417406} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22406668 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22469196} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: -14} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22408688 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162546} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22422706} + m_Father: {fileID: 22471734} + m_RootOrder: 4 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2, y: 0} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22412160 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22414340} + m_Father: {fileID: 22452010} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 4} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22412730 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471726} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 7, y: 0} + m_SizeDelta: {x: 22, y: -40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22414340 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113926} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22412160} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -6} + m_SizeDelta: {x: -30, y: 24} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22415418 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116980} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22440056} + - {fileID: 22427376} + m_Father: {fileID: 22487510} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 45, y: -14} + m_SizeDelta: {x: 30, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22417406 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22405428} + m_Father: {fileID: 22428736} + m_RootOrder: 1 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -3, y: -2} + m_SizeDelta: {x: 5, y: -4} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22419886 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120834} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488734} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22420856 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488734} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22420880 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450732} + - {fileID: 22427890} + - {fileID: 22452010} + m_Father: {fileID: 22478500} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 568.5, y: -115} + m_SizeDelta: {x: 1137, y: 230} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22422706 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132546} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408688} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7, y: 0} + m_SizeDelta: {x: 22, y: -40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22423682 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 123682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22476948} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 1, y: 0} +--- !u!224 &22425592 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101666} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22469196} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22427376 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22415418} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22427890 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133628} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22420880} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 568.5, y: -28} + m_SizeDelta: {x: 1137, y: 2} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22428736 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103946} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22479180} + - {fileID: 22417406} + m_Father: {fileID: 22452010} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: -4} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22429112 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164060} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22489430} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 28, y: -14} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22431974 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22493742} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: -14} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22438040 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109250} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22460106} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439328 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22478500} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22440056 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166248} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22415418} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22445992 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109696} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471734} + m_RootOrder: 8 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: -10, y: 10} + m_SizeDelta: {x: 44, y: 44} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22448178 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119998} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22493742} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22448952 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163402} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22493742} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 28, y: -14} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450732 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137394} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22456864} + - {fileID: 22487510} + m_Father: {fileID: 22420880} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 568.5, y: 0} + m_SizeDelta: {x: 1137, y: 28} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22452010 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135378} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22477296} + - {fileID: 22428736} + - {fileID: 22412160} + - {fileID: 22458278} + m_Father: {fileID: 22420880} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 568.5, y: -30} + m_SizeDelta: {x: 1137, y: 200} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22453596 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471734} + m_RootOrder: 9 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 44, y: 44} + m_Pivot: {x: 1, y: 0} +--- !u!224 &22456182 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142316} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22460106} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22456556 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186870} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22487510} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1047.5, y: -14} + m_SizeDelta: {x: 1, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22456864 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450732} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22458278 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22483542} + m_Father: {fileID: 22452010} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 4} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22459188 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174366} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22462038} + m_Father: {fileID: 22471734} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 2} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22460106 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22456182} + - {fileID: 22438040} + m_Father: {fileID: 22487510} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: -14} + m_SizeDelta: {x: 30, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22461632 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161632} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471734} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22462038 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459188} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -7} + m_SizeDelta: {x: -40, y: 22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22463742 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145956} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22469196} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 28, y: -14} + m_SizeDelta: {x: 16, y: 16} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22467544 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22489430} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22469196 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22425592} + - {fileID: 22406668} + - {fileID: 22463742} + m_Father: {fileID: 22487510} + m_RootOrder: 8 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1115, y: -14} + m_SizeDelta: {x: 44, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22471726 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171726} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22412730} + m_Father: {fileID: 22471734} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2, y: 0} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22471728 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471734} + m_RootOrder: 10 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -10, y: 34} + m_SizeDelta: {x: 44, y: 44} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22471730 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471732} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 7} + m_SizeDelta: {x: -40, y: 22} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22471732 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22471730} + m_Father: {fileID: 22471734} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 2} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22471734 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22461632} + - {fileID: 22471736} + - {fileID: 22482566} + - {fileID: 22459188} + - {fileID: 22408688} + - {fileID: 22471732} + - {fileID: 22471726} + - {fileID: 22485200} + - {fileID: 22445992} + - {fileID: 22453596} + - {fileID: 22471728} + m_Father: {fileID: 22482602} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22471736 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171736} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482564} + m_Father: {fileID: 22471734} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 14} + m_SizeDelta: {x: 0, y: -14} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22476948 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176948} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22423682} + m_Father: {fileID: 22482604} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22477296 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 199772} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22452010} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22478500 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22420880} + - {fileID: 22482604} + m_Father: {fileID: 22439328} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22479100 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22487510} + m_RootOrder: 7 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1092.5, y: -14} + m_SizeDelta: {x: 1, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22479180 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172826} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22428736} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22482234 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178184} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482602} + m_Father: {fileID: 22482604} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -684} + m_SizeDelta: {x: 250, y: 684} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22482564 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182564} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482568} + - {fileID: 22482570} + m_Father: {fileID: 22471736} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482566 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482580} + - {fileID: 22482582} + - {fileID: 22482584} + - {fileID: 22482586} + - {fileID: 22482588} + m_Father: {fileID: 22471734} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 12} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22482568 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482572} + - {fileID: 22482574} + m_Father: {fileID: 22482564} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 60, y: 140} + m_SizeDelta: {x: 100, y: 14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482570 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182572} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482576} + - {fileID: 22482578} + m_Father: {fileID: 22482564} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 60, y: 70} + m_SizeDelta: {x: 100, y: 14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482572 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482568} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482574 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482568} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482576 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482570} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482578 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482570} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482580 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182580} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482566} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 34.5, y: -6} + m_SizeDelta: {x: 61, y: 12} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482582 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182582} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482566} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 78.5, y: -6} + m_SizeDelta: {x: 15, y: 12} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482584 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482590} + - {fileID: 22482592} + m_Father: {fileID: 22482566} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 117, y: -6} + m_SizeDelta: {x: 50, y: 12} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482586 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482594} + - {fileID: 22482596} + m_Father: {fileID: 22482566} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 173.5, y: -6} + m_SizeDelta: {x: 51, y: 12} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482588 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182596} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482598} + - {fileID: 22482600} + m_Father: {fileID: 22482566} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 225.5, y: -6} + m_SizeDelta: {x: 41, y: 12} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482590 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482584} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -6} + m_SizeDelta: {x: 6, y: 6} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22482592 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482584} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 30, y: -6} + m_SizeDelta: {x: 40, y: 10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482594 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482586} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -6} + m_SizeDelta: {x: 6, y: 6} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22482596 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182594} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482586} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 30.5, y: -6} + m_SizeDelta: {x: 41, y: 10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482598 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182598} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482588} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -6} + m_SizeDelta: {x: 6, y: 6} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22482600 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22482588} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25.5, y: -6} + m_SizeDelta: {x: 31, y: 10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22482602 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182602} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22471734} + m_Father: {fileID: 22482234} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -554} + m_SizeDelta: {x: 250, y: 130} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22482604 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182604} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482234} + - {fileID: 22476948} + m_Father: {fileID: 22478500} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22483542 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181184} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22458278} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: 6.5} + m_SizeDelta: {x: -30, y: 23} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22485200 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131058} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22471734} + m_RootOrder: 7 + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: 10} + m_SizeDelta: {x: 44, y: 44} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22487510 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22460106} + - {fileID: 22415418} + - {fileID: 22498756} + - {fileID: 22488734} + - {fileID: 22493742} + - {fileID: 22456556} + - {fileID: 22489430} + - {fileID: 22479100} + - {fileID: 22469196} + m_Father: {fileID: 22450732} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22488734 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22419886} + - {fileID: 22420856} + m_Father: {fileID: 22487510} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 988, y: -14} + m_SizeDelta: {x: 30, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22489430 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22467544} + - {fileID: 22400618} + - {fileID: 22429112} + m_Father: {fileID: 22487510} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1070, y: -14} + m_SizeDelta: {x: 44, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22492950 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194264} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22405428} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22493742 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 124722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22448178} + - {fileID: 22431974} + - {fileID: 22448952} + m_Father: {fileID: 22487510} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1025, y: -14} + m_SizeDelta: {x: 44, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22498756 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22487510} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 516.5, y: -14} + m_SizeDelta: {x: 913, y: 28} + m_Pivot: {x: .5, y: .5} +--- !u!225 &22541820 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135378} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!225 &22561632 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161632} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!225 &22571724 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182578} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!225 &22571726 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171736} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!225 &22589178 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125588} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 139328} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab.meta new file mode 100644 index 00000000..b6e0018e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/PinnedUI.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bb4f9efb6ebc3b84cae1ddbccbd53c6f +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs.meta new file mode 100644 index 00000000..5c1a95fb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: a444307f4f3153549b8707288eacd2ad +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab new file mode 100644 index 00000000..185a6aff --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab @@ -0,0 +1,366 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104824 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22404824} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &136154 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22436154} + - 114: {fileID: 11436152} + - 114: {fileID: 11436154} + m_Layer: 5 + m_Name: SR_Contents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177966 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22477966} + - 114: {fileID: 11477966} + - 114: {fileID: 11432154} + - 114: {fileID: 11436144} + - 222: {fileID: 22236154} + - 114: {fileID: 11436146} + - 114: {fileID: 11436148} + - 114: {fileID: 11436150} + - 114: {fileID: 11433910} + - 114: {fileID: 11404824} + m_Layer: 5 + m_Name: BugReporter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194016 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22494016} + - 222: {fileID: 22294016} + - 114: {fileID: 11494014} + - 114: {fileID: 11494016} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11404824 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22436154} + ReplaceMask: {fileID: 0} + Viewport: {fileID: 22404824} +--- !u!114 &11432154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6739582ce86516749a398ff57c5ca282, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + BugReportSheetPrefab: {fileID: 11402520, guid: 307fd4bc23452cc41bdacc036bc9e0b1, + type: 2} + Container: {fileID: 22436154} +--- !u!114 &11433910 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11436144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22436154} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: .100000001 + m_Inertia: 1 + m_DecelerationRate: .135000005 + m_ScrollSensitivity: 40 + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11436146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11436148 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &11436150 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11436152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 136154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11436154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 136154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &11477966 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 0} + Icon: {fileID: 0} + IconExtraContent: {fileID: 0} + IconStyleKey: Icon_BugReport + SortIndex: 3 + TabButton: {fileID: 0} + _title: Report Bug + _longTitle: + _key: BugReporter +--- !u!114 &11494014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .192156866, g: .192156866, b: .192156866, a: .588235319} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11494016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Background + IgnoreImage: 0 +--- !u!222 &22236154 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} +--- !u!222 &22294016 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194016} +--- !u!224 &22404824 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104824} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22436154} + m_Father: {fileID: 22477966} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22436154 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 136154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22404824} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22477966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22494016} + - {fileID: 22404824} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22494016 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22477966} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 1.52587891e-05, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 177966} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab.meta new file mode 100644 index 00000000..45216466 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/BugReporter.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: c3059d02b0eb1694bb1ed7bf533a17c3 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab new file mode 100644 index 00000000..443f0468 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab @@ -0,0 +1,5090 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410798} + - component: {fileID: 22298436} + - component: {fileID: 11492158} + - component: {fileID: 11472852} + - component: {fileID: 11463696} + - component: {fileID: 11453756} + m_Layer: 5 + m_Name: SR_InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410798 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22432852} + - {fileID: 22452406} + m_Father: {fileID: 22440298} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22298436 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_CullTransparentMesh: 0 +--- !u!114 &11492158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 100 + m_MinHeight: -1 + m_PreferredWidth: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11472852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11463696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_HighlightedColor: {r: 0.32352942, g: 0.32352942, b: 0.32352942, a: 1} + m_PressedColor: {r: 0.1544118, g: 0.1544118, b: 0.1544118, a: 1} + m_SelectedColor: {r: 0.32352942, g: 0.32352942, b: 0.32352942, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11472852} + m_TextComponent: {fileID: 11454088} + m_Placeholder: {fileID: 11427420} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 1.7 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &11453756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!1 &100592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22438490} + - component: {fileID: 22204734} + - component: {fileID: 11476870} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22438490 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22426876} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22204734 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100592} + m_CullTransparentMesh: 0 +--- !u!114 &11476870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &101516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22452700} + - component: {fileID: 22238548} + - component: {fileID: 11480576} + - component: {fileID: 11453702} + m_Layer: 5 + m_Name: SR_Selected + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22452700 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101516} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408510} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22238548 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101516} + m_CullTransparentMesh: 0 +--- !u!114 &11480576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101516} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.39607844, g: 0.39607844, b: 0.39607844, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11453702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101516} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Toggle_Selected + IgnoreImage: 0 +--- !u!1 &101838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22432852} + - component: {fileID: 22227136} + - component: {fileID: 11427420} + - component: {fileID: 11472910} + m_Layer: 5 + m_Name: SR_Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22432852 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410798} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 1, y: -1} + m_SizeDelta: {x: -10, y: -6} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22227136 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101838} + m_CullTransparentMesh: 0 +--- !u!114 &11427420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7372549, g: 0.7372549, b: 0.7372549, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11472910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!1 &104814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22433366} + - component: {fileID: 11467654} + m_Layer: 5 + m_Name: SR_Layout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22433366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 104814} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22440298} + - {fileID: 22478054} + - {fileID: 22478042} + - {fileID: 22427762} + m_Father: {fileID: 22478080} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11467654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 104814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &126462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408510} + - component: {fileID: 22248722} + - component: {fileID: 11488564} + - component: {fileID: 11488996} + - component: {fileID: 11487910} + - component: {fileID: 11405328} + m_Layer: 5 + m_Name: SR_PinButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408510 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22460446} + - {fileID: 22452700} + - {fileID: 22489498} + m_Father: {fileID: 22476720} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22248722 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_CullTransparentMesh: 0 +--- !u!114 &11488564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11443714} + toggleTransition: 0 + graphic: {fileID: 11480576} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 +--- !u!114 &11488996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 42 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11487910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 0} + FlashColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + Target: {fileID: 11443714} +--- !u!114 &11405328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!1 &127168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22427168} + - component: {fileID: 11427164} + - component: {fileID: 11427166} + - component: {fileID: 22227168} + - component: {fileID: 11427168} + - component: {fileID: 11471008} + m_Layer: 5 + m_Name: SR_ScrollView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22427168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22437168} + m_Father: {fileID: 22427762} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -6, y: -6} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11427164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22437168} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 0 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 40 + m_Viewport: {fileID: 0} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11427166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &22227168 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_CullTransparentMesh: 0 +--- !u!114 &11427168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11471008 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!1 &127762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22427762} + - component: {fileID: 11427770} + m_Layer: 5 + m_Name: SR_StackTrace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22427762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22427168} + m_Father: {fileID: 22433366} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &11427770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 130 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &129610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22426876} + - component: {fileID: 11441364} + - component: {fileID: 11466856} + - component: {fileID: 22521914} + - component: {fileID: 11498400} + m_Layer: 5 + m_Name: SR_ScrollToBottomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22426876 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22438490} + - {fileID: 22451462} + m_Father: {fileID: 22478054} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -16, y: 8} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 1, y: 0} +--- !u!114 &11441364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_HighlightedColor: {r: 0.32352942, g: 0.32352942, b: 0.32352942, a: 1} + m_PressedColor: {r: 0.1544118, g: 0.1544118, b: 0.1544118, a: 1} + m_SelectedColor: {r: 0.32352942, g: 0.32352942, b: 0.32352942, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11476870} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11498400} + m_MethodName: Trigger + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &11466856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!225 &22521914 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129610} + m_Enabled: 1 + m_Alpha: 0 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!114 &11498400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 35107bb7a2a89b54bbb85ea8ff193788, type: 3} + m_Name: + m_EditorClassIdentifier: + _scrollRect: {fileID: 11478032} + _canvasGroup: {fileID: 22521914} +--- !u!1 &137168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22437168} + - component: {fileID: 22237168} + - component: {fileID: 11437168} + - component: {fileID: 11415358} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22437168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22427168} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &22237168 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137168} + m_CullTransparentMesh: 0 +--- !u!114 &11437168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Stack Trace Message + + Stack Trace Stack Goes Here () + + One Two Three()' +--- !u!114 &11415358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!1 &137528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22437528} + - component: {fileID: 22237528} + - component: {fileID: 11437538} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22437528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485888} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22237528 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137528} + m_CullTransparentMesh: 0 +--- !u!114 &11437538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &137530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22437530} + - component: {fileID: 22237530} + - component: {fileID: 11437542} + - component: {fileID: 11431084} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22437530 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137530} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22485888} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22237530 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137530} + m_CullTransparentMesh: 0 +--- !u!114 &11437542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a8d613b67f373cd4285c6d5b0a7f163c, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11431084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Trash + IgnoreImage: 0 +--- !u!1 &146656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446656} + - component: {fileID: 22246656} + - component: {fileID: 11446656} + - component: {fileID: 11446658} + - component: {fileID: 11446660} + - component: {fileID: 11446662} + m_Layer: 5 + m_Name: SR_FilterButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446656 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22446658} + - {fileID: 22446660} + - {fileID: 22446662} + m_Father: {fileID: 22476720} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22246656 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_CullTransparentMesh: 0 +--- !u!114 &11446656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11446664} + toggleTransition: 0 + graphic: {fileID: 11446666} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 +--- !u!114 &11446658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 42 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11446660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 0} + FlashColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + Target: {fileID: 11446664} +--- !u!114 &11446662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!1 &146658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446658} + - component: {fileID: 22246658} + - component: {fileID: 11446664} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22446656} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22246658 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146658} + m_CullTransparentMesh: 0 +--- !u!114 &11446664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &146660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446660} + - component: {fileID: 22246660} + - component: {fileID: 11446666} + - component: {fileID: 11446668} + m_Layer: 5 + m_Name: SR_Selected + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146660} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22446656} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22246660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146660} + m_CullTransparentMesh: 0 +--- !u!114 &11446666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.39607844, g: 0.39607844, b: 0.39607844, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11446668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Toggle_Selected + IgnoreImage: 0 +--- !u!1 &146662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446662} + - component: {fileID: 22246662} + - component: {fileID: 11446670} + - component: {fileID: 11446672} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446662 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22446656} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22246662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146662} + m_CullTransparentMesh: 0 +--- !u!114 &11446670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2ccea1a2a1be59649956a168449bdb9f, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11446672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Filter + IgnoreImage: 0 +--- !u!1 &146918 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446918} + - component: {fileID: 11446908} + - component: {fileID: 11446906} + m_Layer: 5 + m_Name: SR_ScrollBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446918 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146918} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22455130} + m_Father: {fileID: 22478054} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -3, y: -2} + m_SizeDelta: {x: 5, y: -4} + m_Pivot: {x: 1, y: 1} +--- !u!114 &11446908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.44117647, g: 0.44117647, b: 0.44117647, a: 0.70980394} + m_HighlightedColor: {r: 0.8897059, g: 0.8897059, b: 0.8897059, a: 0.8117647} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_SelectedColor: {r: 0.8897059, g: 0.8897059, b: 0.8897059, a: 0.8117647} + m_DisabledColor: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 0.5176471} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11446912} + m_HandleRect: {fileID: 22446920} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11446906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: ScrollBar + IgnoreImage: 0 +--- !u!1 &146920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22446920} + - component: {fileID: 22246920} + - component: {fileID: 11446912} + m_Layer: 5 + m_Name: SR_Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22446920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22455130} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22246920 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146920} + m_CullTransparentMesh: 0 +--- !u!114 &11446912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 146920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a0d7355cd1bbc6c44b68f572bb8c2722, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &148864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22415208} + - component: {fileID: 11484412} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22415208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22440298} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11484412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1000 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &150592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22452406} + - component: {fileID: 22238622} + - component: {fileID: 11454088} + - component: {fileID: 11458864} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22452406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410798} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -8, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22238622 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150592} + m_CullTransparentMesh: 0 +--- !u!114 &11454088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &11458864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!1 &155130 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22455130} + m_Layer: 5 + m_Name: SR_SlidingArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22455130 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22446920} + m_Father: {fileID: 22446918} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &162782 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22489498} + - component: {fileID: 22202010} + - component: {fileID: 11430440} + - component: {fileID: 11490346} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22489498 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162782} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408510} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22202010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162782} + m_CullTransparentMesh: 0 +--- !u!114 &11430440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162782} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 23dfb5d7fc5a2fb4f9a5fc00f697147f, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11490346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162782} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Pin + IgnoreImage: 0 +--- !u!1 &170996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22460446} + - component: {fileID: 22219862} + - component: {fileID: 11443714} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22460446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170996} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408510} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22219862 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170996} + m_CullTransparentMesh: 0 +--- !u!114 &11443714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &171244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22488620} + - component: {fileID: 22266180} + - component: {fileID: 11453236} + - component: {fileID: 11470498} + - component: {fileID: 11432596} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22488620 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171244} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22440298} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22266180 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171244} + m_CullTransparentMesh: 0 +--- !u!114 &11453236 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: db8aec58b7ce99443a1c4f5cd4d9e408, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 0.9 + m_Text: FILTER +--- !u!114 &11470498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11432596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 60 + m_MinHeight: -1 + m_PreferredWidth: 60 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &176276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22452822} + - component: {fileID: 11444834} + - component: {fileID: 11403348} + - component: {fileID: 11458228} + - component: {fileID: 22260908} + m_Layer: 5 + m_Name: SR_BorderBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22452822 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22440298} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11444834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11403348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Sidebar_Border + IgnoreImage: 0 +--- !u!114 &11458228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30882353, g: 0.30882353, b: 0.30882353, a: 0.3764706} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &22260908 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176276} + m_CullTransparentMesh: 0 +--- !u!1 &176720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22476720} + - component: {fileID: 11444310} + m_Layer: 5 + m_Name: SR_ConsoleHeaderContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22476720 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408510} + - {fileID: 22446656} + - {fileID: 22485888} + - {fileID: 22478068} + - {fileID: 22478052} + - {fileID: 22478050} + - {fileID: 22478044} + - {fileID: 22478060} + m_Father: {fileID: 22476722} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 242.1, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11444310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &176722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22476722} + - component: {fileID: 11476720} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22476722 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22476720} + m_Father: {fileID: 22478080} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 498, y: 90} + m_SizeDelta: {x: 986, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11476720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &177216 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22440298} + - component: {fileID: 11475930} + - component: {fileID: 11486240} + m_Layer: 5 + m_Name: SR_Filter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22440298 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 177216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22467298} + - {fileID: 22452822} + - {fileID: 22415208} + - {fileID: 22488620} + - {fileID: 22410798} + m_Father: {fileID: 22433366} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11475930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 177216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_ChildAlignment: 0 + m_Spacing: 4 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11486240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 177216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 36 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478040} + - component: {fileID: 22278054} + - component: {fileID: 11477990} + - component: {fileID: 11477992} + - component: {fileID: 11477994} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478040 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478068} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &22278054 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178040} + m_CullTransparentMesh: 0 +--- !u!114 &11477990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.95686275, g: 0.35686275, b: 0.34117648, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11477992 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Error_Blob + IgnoreImage: 0 +--- !u!114 &11477994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478042} + - component: {fileID: 22278056} + - component: {fileID: 11477996} + - component: {fileID: 11477998} + - component: {fileID: 11427762} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478042 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22433366} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278056 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178042} + m_CullTransparentMesh: 0 +--- !u!114 &11477996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.3882353, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11477998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Border + IgnoreImage: 0 +--- !u!114 &11427762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178044 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478044} + - component: {fileID: 11478000} + - component: {fileID: 22278058} + - component: {fileID: 11478002} + - component: {fileID: 11478004} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178044} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22476720} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11478000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178044} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &22278058 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178044} + m_CullTransparentMesh: 0 +--- !u!114 &11478002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178044} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.3882353, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178044} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!1 &178046 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478046} + - component: {fileID: 22278060} + - component: {fileID: 11478006} + - component: {fileID: 11478008} + - component: {fileID: 11478010} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478046 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178046} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478050} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &22278060 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178046} + m_CullTransparentMesh: 0 +--- !u!114 &11478006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.95686275, g: 0.7607843, b: 0.34117648, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478008 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Warning_Blob + IgnoreImage: 0 +--- !u!114 &11478010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478048} + - component: {fileID: 11478014} + - component: {fileID: 11478012} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478048 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178048} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478054} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &11478014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19c408e3f064e184fa5e0d9862ac4d8b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + _selectedItemChanged: + m_PersistentCalls: + m_Calls: [] + AltRowStyleSheet: {fileID: 11400000, guid: 9e09b8950236048448238f4c0963f3ad, type: 2} + EnableSelection: 1 + ItemPrefab: {fileID: 22400004, guid: 408ed745743f47f46ac11b71f96cf1a4, type: 3} + RowPadding: 2 + RowStyleSheet: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} + SelectedRowStyleSheet: {fileID: 11400000, guid: d30366e803724014382b48500f16271c, + type: 2} + Spacing: 0 + StickToBottom: 1 +--- !u!114 &11478012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &178050 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478050} + - component: {fileID: 11478018} + - component: {fileID: 11469048} + - component: {fileID: 11490224} + m_Layer: 5 + m_Name: SR_WarningButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478050 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178050} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22478064} + - {fileID: 22478046} + - {fileID: 22478072} + m_Father: {fileID: 22476720} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11478018 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11469048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 0 + graphic: {fileID: 11478048} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!114 &11490224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478052} + - component: {fileID: 11478020} + - component: {fileID: 22278062} + - component: {fileID: 11478022} + - component: {fileID: 11478024} + m_Layer: 5 + m_Name: SR_Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178052} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22476720} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11478020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &22278062 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178052} + m_CullTransparentMesh: 0 +--- !u!114 &11478022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25882354, g: 0.3882353, b: 0.54509807, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!1 &178054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478054} + - component: {fileID: 11478030} + - component: {fileID: 11478032} + - component: {fileID: 11478026} + - component: {fileID: 22278064} + - component: {fileID: 11478028} + - component: {fileID: 11427766} + - component: {fileID: 11430688} + m_Layer: 5 + m_Name: SR_ConsoleScrollRect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478054 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22478048} + - {fileID: 22446918} + - {fileID: 22426876} + m_Father: {fileID: 22433366} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &11478030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 400.55 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1e+11 + m_LayoutPriority: 1 +--- !u!114 &11478032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22478048} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 40 + m_Viewport: {fileID: 0} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 11446908} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11478026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &22278064 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_CullTransparentMesh: 0 +--- !u!114 &11478028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11427766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!114 &11430688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!1 &178056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478056} + - component: {fileID: 22278066} + - component: {fileID: 11478034} + - component: {fileID: 11478036} + - component: {fileID: 11478038} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478056 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478060} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &22278066 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178056} + m_CullTransparentMesh: 0 +--- !u!114 &11478034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.34117648, g: 0.7019608, b: 0.95686275, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Info_Blob + IgnoreImage: 0 +--- !u!114 &11478038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478058} + - component: {fileID: 22278068} + - component: {fileID: 11478040} + - component: {fileID: 11478042} + - component: {fileID: 11437532} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178058} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478068} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278068 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178058} + m_CullTransparentMesh: 0 +--- !u!114 &11478040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11437532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!1 &178060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478060} + - component: {fileID: 11478046} + - component: {fileID: 11469050} + - component: {fileID: 11490226} + m_Layer: 5 + m_Name: SR_InfoButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478060 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178060} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22478078} + - {fileID: 22478056} + - {fileID: 22478066} + m_Father: {fileID: 22476720} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11478046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11469050 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 1 + graphic: {fileID: 11478070} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!114 &11490226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478064} + - component: {fileID: 22278070} + - component: {fileID: 11478048} + - component: {fileID: 11478050} + - component: {fileID: 11437530} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478064 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178064} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478050} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278070 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178064} + m_CullTransparentMesh: 0 +--- !u!114 &11478048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478050 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11437530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!1 &178066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478066} + - component: {fileID: 22278072} + - component: {fileID: 11478052} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478060} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278072 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178066} + m_CullTransparentMesh: 0 +--- !u!114 &11478052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 65 +--- !u!1 &178068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478068} + - component: {fileID: 11478056} + - component: {fileID: 11409842} + - component: {fileID: 11490222} + m_Layer: 5 + m_Name: SR_ErrorButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478068 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22478058} + - {fileID: 22478040} + - {fileID: 22478076} + m_Father: {fileID: 22476720} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11478056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11409842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 0 + graphic: {fileID: 11478040} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!114 &11490222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 42 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478070} + - component: {fileID: 22278074} + - component: {fileID: 11478058} + - component: {fileID: 11478060} + - component: {fileID: 11427774} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478080} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278074 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178070} + m_CullTransparentMesh: 0 +--- !u!114 &11478058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19215687, g: 0.19215687, b: 0.19215687, a: 0.47058824} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!114 &11427774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &178072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478072} + - component: {fileID: 22278076} + - component: {fileID: 11478062} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478072 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178072} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478050} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278076 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178072} + m_CullTransparentMesh: 0 +--- !u!114 &11478062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 65 +--- !u!1 &178076 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478076} + - component: {fileID: 22278080} + - component: {fileID: 11478068} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478068} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278080 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178076} + m_CullTransparentMesh: 0 +--- !u!114 &11478068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 65 +--- !u!1 &178078 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478078} + - component: {fileID: 22278082} + - component: {fileID: 11478070} + - component: {fileID: 11478072} + - component: {fileID: 11437528} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478078 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478060} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278082 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178078} + m_CullTransparentMesh: 0 +--- !u!114 &11478070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11478072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11437528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!1 &178080 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478080} + - component: {fileID: 22356352} + - component: {fileID: 11422670} + - component: {fileID: 11450822} + - component: {fileID: 11472642} + - component: {fileID: 11402778} + - component: {fileID: 11455072} + m_Layer: 5 + m_Name: Console + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22476722} + - {fileID: 22478070} + - {fileID: 22433366} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!223 &22356352 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 1 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 10001 + m_TargetDisplay: 0 +--- !u!114 &11422670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 22476720} + Icon: {fileID: 21300000, guid: b07075cb163d9b8489a1ee90ce068409, type: 3} + IconExtraContent: {fileID: 22473736, guid: 38622dccbe5c7c84782cd2c695aa3521, type: 3} + IconStyleKey: Icon_Console + SortIndex: 2 + TabButton: {fileID: 0} + _title: Console + _longTitle: + _key: Console +--- !u!114 &11450822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b54f4d46edbb634985db4a2fa4ada2f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ConsoleLogControl: {fileID: 11472642} + PinToggle: {fileID: 11488564} + StackTraceScrollRect: {fileID: 11427164} + StackTraceText: {fileID: 11437168} + ToggleErrors: {fileID: 11409842} + ToggleErrorsText: {fileID: 11478068} + ToggleInfo: {fileID: 11469050} + ToggleInfoText: {fileID: 11478052} + ToggleWarnings: {fileID: 11469048} + ToggleWarningsText: {fileID: 11478062} + FilterToggle: {fileID: 11446656} + FilterField: {fileID: 11463696} + FilterBarContainer: {fileID: 177216} +--- !u!114 &11472642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 413376b74a5948a4db9e0a5c9c002724, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _consoleScrollLayoutGroup: {fileID: 11478014} + _consoleScrollRect: {fileID: 11478032} +--- !u!114 &11402778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11455072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &185888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22485888} + - component: {fileID: 11437544} + - component: {fileID: 22237532} + - component: {fileID: 11485888} + - component: {fileID: 11437534} + - component: {fileID: 11452924} + m_Layer: 5 + m_Name: SR_Clear + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22485888 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22437528} + - {fileID: 22437530} + m_Father: {fileID: 22476720} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11437544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11437538} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11450822} + m_MethodName: Clear + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!222 &22237532 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_CullTransparentMesh: 0 +--- !u!114 &11485888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 40 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11437534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 0} + FlashColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + Target: {fileID: 11437538} +--- !u!114 &11452924 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!1 &193112 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22451462} + - component: {fileID: 22269864} + - component: {fileID: 11415088} + - component: {fileID: 11458746} + m_Layer: 5 + m_Name: SR_Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22451462 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193112} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22426876} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22269864 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193112} + m_CullTransparentMesh: 0 +--- !u!114 &11415088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8088235, g: 0.8088235, b: 0.8088235, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 3422278a31f39bc4cab9304b78a09d41, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11458746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Icon_ScrollToBottom + IgnoreImage: 0 +--- !u!1 &197336 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22467298} + - component: {fileID: 11477230} + - component: {fileID: 11440292} + - component: {fileID: 11449058} + - component: {fileID: 22228058} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22467298 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197336} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22440298} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11477230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11440292 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Console_Entry_BG + IgnoreImage: 0 +--- !u!114 &11449058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.17254902, g: 0.17254902, b: 0.17254902, a: 0.78431374} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &22228058 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197336} + m_CullTransparentMesh: 0 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab.meta new file mode 100644 index 00000000..b4e872bc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Console.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: abd74791d32aafa4c9ca4f20145cd14c +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab new file mode 100644 index 00000000..e1000f4f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab @@ -0,0 +1,1328 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &108298 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22408298} + - component: {fileID: 22208298} + - component: {fileID: 11408296} + - component: {fileID: 11408298} + m_Layer: 5 + m_Name: SR_ScrollBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22408298 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108298} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22462196} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22208298 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108298} + m_CullTransparentMesh: 0 +--- !u!114 &11408296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108298} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11408298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 108298} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &111724 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22411724} + - component: {fileID: 22211724} + - component: {fileID: 11411726} + - component: {fileID: 11411724} + m_Layer: 5 + m_Name: SR_PinPromptText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22411724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111724} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22462196} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 0, y: 14} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &22211724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111724} + m_CullTransparentMesh: 0 +--- !u!114 &11411726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Select options to show in-game +--- !u!114 &11411724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!1 &132312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22432312} + - component: {fileID: 22241110} + - component: {fileID: 11441110} + - component: {fileID: 11402696} + m_Layer: 5 + m_Name: SR_NoOptionsText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22432312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22462196} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -40} + m_SizeDelta: {x: 0, y: -40} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &22241110 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132312} + m_CullTransparentMesh: 0 +--- !u!114 &11441110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'No options found in SROptions. + + + View ReadMe for information. + +' +--- !u!114 &11402696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!1 &141110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22441110} + - component: {fileID: 11432312} + m_Layer: 5 + m_Name: SR_PinPromptSpacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22441110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141110} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22483206} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &11432312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 14 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &154476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454476} + m_Layer: 5 + m_Name: SR_OptionsHeaderContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154476} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22454482} + m_Father: {fileID: 22454486} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &154478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454478} + - component: {fileID: 22254482} + - component: {fileID: 11454466} + - component: {fileID: 11454468} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454478 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154478} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22454484} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22254482 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154478} + m_CullTransparentMesh: 0 +--- !u!114 &11454466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 23dfb5d7fc5a2fb4f9a5fc00f697147f, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11454468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Pin + IgnoreImage: 0 +--- !u!1 &154480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454480} + - component: {fileID: 22254484} + - component: {fileID: 11454470} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454480 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22454484} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22254484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154480} + m_CullTransparentMesh: 0 +--- !u!114 &11454470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &154482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454482} + - component: {fileID: 11454474} + - component: {fileID: 11454472} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22454484} + m_Father: {fileID: 22454476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &11454474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 2 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11454472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!1 &154484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454484} + - component: {fileID: 22254486} + - component: {fileID: 11454484} + - component: {fileID: 11454478} + - component: {fileID: 11454476} + - component: {fileID: 11454480} + m_Layer: 5 + m_Name: SR_PinButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454484 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22454480} + - {fileID: 22454488} + - {fileID: 22454478} + m_Father: {fileID: 22454482} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22254486 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_CullTransparentMesh: 0 +--- !u!114 &11454484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 0} + m_HighlightedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_PressedColor: {r: 0.15294118, g: 0.15294118, b: 0.15294118, a: 1} + m_SelectedColor: {r: 0.3254902, g: 0.3254902, b: 0.3254902, a: 1} + m_DisabledColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11454470} + toggleTransition: 0 + graphic: {fileID: 11454486} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 +--- !u!114 &11454478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 42 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11454476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 0} + FlashColor: {r: 0.2784314, g: 0.2784314, b: 0.2784314, a: 1} + Target: {fileID: 11454470} +--- !u!114 &11454480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!1 &154486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454486} + - component: {fileID: 11454482} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454486 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154486} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22454476} + m_Father: {fileID: 22462196} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 498, y: 90} + m_SizeDelta: {x: 986, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11454482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &154488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22454488} + - component: {fileID: 22254488} + - component: {fileID: 11454486} + - component: {fileID: 11454488} + m_Layer: 5 + m_Name: SR_Selected + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22454488 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22454484} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22254488 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154488} + m_CullTransparentMesh: 0 +--- !u!114 &11454486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.39607844, g: 0.39607844, b: 0.39607844, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11454488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Toggle_Selected + IgnoreImage: 0 +--- !u!1 &165182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22462196} + - component: {fileID: 11497858} + - component: {fileID: 11472860} + - component: {fileID: 11418870} + m_Layer: 5 + m_Name: SR_OptionsContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22462196 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165182} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22454486} + - {fileID: 22408298} + - {fileID: 22481580} + - {fileID: 22411724} + - {fileID: 22432312} + m_Father: {fileID: 22483208} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11497858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22483206} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 40 + m_Viewport: {fileID: 22481580} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11472860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11418870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22483206} + ReplaceMask: {fileID: 11401290} + Viewport: {fileID: 22481580} +--- !u!1 &181580 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22481580} + - component: {fileID: 11401290} + - component: {fileID: 22222196} + - component: {fileID: 11419234} + - component: {fileID: 2686704270446029647} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22481580 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181580} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22483206} + m_Father: {fileID: 22462196} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11401290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &22222196 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181580} + m_CullTransparentMesh: 0 +--- !u!114 &11419234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2686704270446029647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &183206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22483206} + - component: {fileID: 11483204} + - component: {fileID: 11483202} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22483206 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22441110} + m_Father: {fileID: 22481580} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &11483204 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &11483202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &183208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22483208} + - component: {fileID: 11483208} + - component: {fileID: 11474390} + - component: {fileID: 11442136} + - component: {fileID: 22373044} + - component: {fileID: 11405790} + m_Layer: 5 + m_Name: Options + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22483208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22462196} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11483208 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 22454476} + Icon: {fileID: 21300000, guid: 76eac9450dc776147b628586aac2b0d0, type: 3} + IconExtraContent: {fileID: 0} + IconStyleKey: Icon_Options + SortIndex: 4 + TabButton: {fileID: 0} + _title: Options + _longTitle: + _key: Options +--- !u!114 &11474390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 977db337f5942e64aa7b62fc1ca01e28, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ActionControlPrefab: {fileID: 11495844, guid: 308ca70361d90ed40bcc5c69d973f7ae, + type: 3} + CategoryGroupPrefab: {fileID: 11456202, guid: d866070c81c4ea749b60d2854567cea1, + type: 3} + ContentContainer: {fileID: 22483206} + NoOptionsNotice: {fileID: 132312} + PinButton: {fileID: 11454484} + PinPromptSpacer: {fileID: 141110} + PinPromptText: {fileID: 111724} +--- !u!114 &11442136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!223 &22373044 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 1 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 10001 + m_TargetDisplay: 0 +--- !u!114 &11405790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab.meta new file mode 100644 index 00000000..a043ebad --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Options.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: f38fe2ab9831b6c4c9c90aef8dabcb69 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab new file mode 100644 index 00000000..9d6f9708 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab @@ -0,0 +1,4682 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &105598 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22405598} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408742} + - 114: {fileID: 11408746} + m_Layer: 5 + m_Name: SR_AxisLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108744 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408744} + - 222: {fileID: 22208744} + - 114: {fileID: 11408738} + - 114: {fileID: 11408740} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108746 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408746} + - 222: {fileID: 22208746} + - 114: {fileID: 11408742} + - 114: {fileID: 11408744} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109962 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409962} + - 114: {fileID: 11409954} + - 114: {fileID: 11472964} + m_Layer: 5 + m_Name: SR_ProfileEnableCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &109964 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409964} + - 222: {fileID: 22209966} + - 114: {fileID: 11409952} + - 114: {fileID: 11409956} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109966 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409968} + - 114: {fileID: 11409964} + - 114: {fileID: 11409958} + - 114: {fileID: 11409966} + - 114: {fileID: 11471370} + m_Layer: 5 + m_Name: SR_Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109968 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409966} + - 222: {fileID: 22209968} + - 114: {fileID: 11409960} + - 114: {fileID: 11409962} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109970 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409970} + - 222: {fileID: 22209970} + - 114: {fileID: 11409968} + - 114: {fileID: 11409970} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111958 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22411958} + - 114: {fileID: 11411962} + m_Layer: 5 + m_Name: SR_AxisLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111960 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22411960} + - 222: {fileID: 22211960} + - 114: {fileID: 11411954} + - 114: {fileID: 11411956} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111962 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22411962} + - 222: {fileID: 22211962} + - 114: {fileID: 11411958} + - 114: {fileID: 11411960} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115936 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415936} + - 114: {fileID: 11415952} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115938 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415938} + - 222: {fileID: 22215934} + - 114: {fileID: 11415954} + - 114: {fileID: 11415934} + m_Layer: 5 + m_Name: SR_MaxValueText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115940 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415940} + - 222: {fileID: 22215936} + - 114: {fileID: 11415962} + - 114: {fileID: 11415932} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115942 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415942} + - 222: {fileID: 22215938} + - 114: {fileID: 11415966} + - 114: {fileID: 11415964} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115944 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415944} + - 222: {fileID: 22215940} + - 114: {fileID: 11415970} + - 114: {fileID: 11415968} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415946} + - 114: {fileID: 11415976} + - 114: {fileID: 11415974} + - 114: {fileID: 11415972} + - 114: {fileID: 11415978} + m_Layer: 5 + m_Name: SR_Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &138210 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22438210} + - 222: {fileID: 22238210} + - 114: {fileID: 11438206} + - 114: {fileID: 11438208} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139728 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439728} + - 222: {fileID: 22239728} + - 114: {fileID: 11439732} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139730 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439730} + - 222: {fileID: 22239730} + - 114: {fileID: 11439734} + - 114: {fileID: 11439728} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139732 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439732} + - 114: {fileID: 11439730} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139734 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439734} + - 114: {fileID: 11439740} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139736 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439736} + - 222: {fileID: 22239732} + - 114: {fileID: 11439736} + - 114: {fileID: 11439742} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139738 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439738} + - 222: {fileID: 22239734} + - 114: {fileID: 11439738} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139740 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439740} + - 222: {fileID: 22239736} + - 114: {fileID: 11439748} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439742} + - 222: {fileID: 22239738} + - 114: {fileID: 11439750} + - 114: {fileID: 11439744} + m_Layer: 5 + m_Name: SR_Colour + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139744 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439744} + - 114: {fileID: 11439746} + m_Layer: 5 + m_Name: SR_LegendItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139746 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439746} + - 114: {fileID: 11439752} + m_Layer: 5 + m_Name: SR_FPSGraphSubRow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139748 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439748} + - 222: {fileID: 22239740} + - 114: {fileID: 11439756} + - 114: {fileID: 11415958} + m_Layer: 5 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139750 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439750} + m_Layer: 5 + m_Name: SR_Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139752 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439752} + - 222: {fileID: 22239742} + - 114: {fileID: 11439758} + - 114: {fileID: 11415960} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139754 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439754} + - 114: {fileID: 11439754} + - 114: {fileID: 11415956} + m_Layer: 5 + m_Name: SR_Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139758 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22439758} + - 114: {fileID: 11439762} + m_Layer: 5 + m_Name: SR_FlowLayout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150230 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450230} + - 222: {fileID: 22250228} + - 114: {fileID: 11450242} + - 114: {fileID: 11450240} + m_Layer: 5 + m_Name: SR_Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150232 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450232} + - 222: {fileID: 22250230} + - 114: {fileID: 11450246} + - 114: {fileID: 11450244} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150234 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450234} + - 222: {fileID: 22250232} + - 114: {fileID: 11450248} + - 114: {fileID: 11450250} + m_Layer: 5 + m_Name: SR_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150236 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450236} + - 114: {fileID: 11450252} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150238 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450238} + - 114: {fileID: 11450254} + - 114: {fileID: 11450256} + m_Layer: 5 + m_Name: SR_Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150240 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450240} + - 222: {fileID: 22250234} + - 114: {fileID: 11450260} + - 114: {fileID: 11450258} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150242 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450242} + - 222: {fileID: 22250236} + - 114: {fileID: 11450264} + - 114: {fileID: 11450262} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150244 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450244} + - 114: {fileID: 11450266} + - 114: {fileID: 11450226} + - 114: {fileID: 11476962} + m_Layer: 5 + m_Name: SR_MemoryBlock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150246 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450246} + - 222: {fileID: 22250238} + - 114: {fileID: 11450268} + - 114: {fileID: 11450270} + m_Layer: 5 + m_Name: SR_MaxValueText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150248 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450248} + - 222: {fileID: 22250240} + - 114: {fileID: 11450274} + - 114: {fileID: 11450272} + m_Layer: 5 + m_Name: SR_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150250 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450250} + - 114: {fileID: 11450282} + - 114: {fileID: 11450280} + - 114: {fileID: 11450278} + - 114: {fileID: 11450276} + m_Layer: 5 + m_Name: SR_Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150252 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450252} + m_Layer: 5 + m_Name: SR_Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152454 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452454} + - 222: {fileID: 22252460} + - 114: {fileID: 11452444} + - 114: {fileID: 11452442} + m_Layer: 5 + m_Name: SR_Selected + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152456 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452458} + - 222: {fileID: 22252462} + - 114: {fileID: 11452446} + - 114: {fileID: 11452452} + - 114: {fileID: 11452454} + - 114: {fileID: 11452450} + m_Layer: 5 + m_Name: SR_PinButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452460} + - 114: {fileID: 11452456} + - 114: {fileID: 11452458} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152460 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452462} + - 222: {fileID: 22252464} + - 114: {fileID: 11452460} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152462 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452464} + - 222: {fileID: 22252466} + - 114: {fileID: 11452464} + - 114: {fileID: 11452462} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152464 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452466} + m_Layer: 5 + m_Name: SR_ProfilerHeaderContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152466 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22452456} + - 114: {fileID: 11452448} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159566 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22459566} + - 222: {fileID: 22259566} + - 114: {fileID: 11459568} + - 114: {fileID: 11459566} + m_Layer: 5 + m_Name: SR_FPSGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &172966 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22472966} + - 222: {fileID: 22272966} + - 114: {fileID: 11472974} + - 114: {fileID: 11472968} + - 114: {fileID: 11438210} + m_Layer: 5 + m_Name: SR_NotSupportedMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &172968 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22472968} + - 114: {fileID: 11472970} + - 114: {fileID: 11415930} + - 114: {fileID: 11476964} + m_Layer: 5 + m_Name: SR_MonoBlock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177856 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22477856} + - 222: {fileID: 22277856} + - 114: {fileID: 11477858} + - 114: {fileID: 11477856} + m_Layer: 5 + m_Name: SR_FPS + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177858 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22477858} + - 114: {fileID: 11477860} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198780 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22498780} + - 114: {fileID: 11498772} + - 114: {fileID: 11498770} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198786 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22498786} + - 114: {fileID: 11452466} + - 114: {fileID: 11498782} + - 114: {fileID: 11498780} + - 114: {fileID: 11440382} + - 114: {fileID: 11488446} + - 114: {fileID: 11405598} + m_Layer: 5 + m_Name: Profiler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198788 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22498788} + - 222: {fileID: 22298788} + - 114: {fileID: 11498788} + - 114: {fileID: 11498786} + - 114: {fileID: 11498784} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11405598 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22498780} + ReplaceMask: {fileID: 0} + Viewport: {fileID: 22405598} +--- !u!114 &11408738 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11408740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Background + IgnoreImage: 0 +--- !u!114 &11408742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 8 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 17ms (60FPS) +--- !u!114 &11408744 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Text + IgnoreImage: 0 +--- !u!114 &11408746 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4694d7052fd506340ba6cad9f8a10f1b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Text: {fileID: 11408742} +--- !u!114 &11409952 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Unity profiler is currently disabled. Enable to show more information. +--- !u!114 &11409954 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11409956 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Text + IgnoreImage: 0 +--- !u!114 &11409958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11409960} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11450226} + m_MethodName: TriggerCleanup + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11409960 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11409962 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11409964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 13 + m_Bottom: 13 + m_ChildAlignment: 4 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11409966 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11409968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109970} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: GC Collect +--- !u!114 &11409970 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109970} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11411954 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11411956 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Background + IgnoreImage: 0 +--- !u!114 &11411958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 677c9fb41b6c7e14199885b0b31740ee, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 8 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 33ms (30FPS) +--- !u!114 &11411960 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Axis_Text + IgnoreImage: 0 +--- !u!114 &11411962 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111958} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4694d7052fd506340ba6cad9f8a10f1b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Text: {fileID: 11411958} +--- !u!114 &11415930 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9fff10238b625f545b2d88c80d4cf9d4, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + CurrentUsedText: {fileID: 11450246} + NotSupportedMessage: {fileID: 172966} + Slider: {fileID: 11439754} + TotalAllocatedText: {fileID: 11415954} +--- !u!114 &11415932 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11415934 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11415952 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 7 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11415954 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Heap Size: --
MB' +--- !u!114 &11415956 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11415958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Memory_FG + IgnoreImage: 0 +--- !u!114 &11415960 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Memory_BG + IgnoreImage: 0 +--- !u!114 &11415962 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 15
MB +--- !u!114 &11415964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11415966 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11415968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11415970 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enable +--- !u!114 &11415972 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11415974 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11415966} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11472964} + m_MethodName: ToggleProfiler + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11415976 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 13 + m_Bottom: 13 + m_ChildAlignment: 3 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11415978 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 80 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11438206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .845588207, g: .845588207, b: .845588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Mono Memory Usage +--- !u!114 &11438208 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Header + IgnoreImage: 0 +--- !u!114 &11438210 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11439728 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11439730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11439732 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Other +--- !u!114 &11439734 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .588235319, g: .454901963, b: .0274509806, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439736 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .458823532, g: .592156887, b: .0274509806, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439738 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Render +--- !u!114 &11439740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11439742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11439744 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 6 + m_PreferredHeight: 6 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11439746 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11439748 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Update +--- !u!114 &11439750 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .203921571, g: .513725519, b: .631372571, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439752 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 6 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11439754 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + m_FillRect: {fileID: 22439748} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: .444000006 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11439756 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .580882311, g: .580882311, b: .580882311, a: 1} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439758 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .264705896, g: .264705896, b: .264705896, a: 1} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11439762 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3a5149e46522d84cb8079537220a929, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + ChildForceExpandHeight: 0 + ChildForceExpandWidth: 1 + Spacing: 0 +--- !u!114 &11440382 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11450226 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 445cb6d0a347a0542a38dd652e9ba01b, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + CurrentUsedText: {fileID: 11415962} + Slider: {fileID: 11450254} + TotalAllocatedText: {fileID: 11450268} +--- !u!114 &11450240 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Memory_FG + IgnoreImage: 0 +--- !u!114 &11450242 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .580882311, g: .580882311, b: .580882311, a: 1} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450244 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11450246 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --
MB +--- !u!114 &11450248 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .264705896, g: .264705896, b: .264705896, a: 1} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450250 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Profiler_Memory_BG + IgnoreImage: 0 +--- !u!114 &11450252 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11450254 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + m_FillRect: {fileID: 22450230} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: .444000006 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11450256 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11450258 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Header + IgnoreImage: 0 +--- !u!114 &11450260 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .845588207, g: .845588207, b: .845588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Memory Usage +--- !u!114 &11450262 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11450264 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450266 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 8 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11450268 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Heap Size: 30
MB' +--- !u!114 &11450270 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11450272 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Name + IgnoreImage: 0 +--- !u!114 &11450274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Clean +--- !u!114 &11450276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 80 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11450278 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11450280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_HighlightedColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + m_PressedColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11450264} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11415930} + m_MethodName: TriggerCollection + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11450282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 13 + m_Bottom: 13 + m_ChildAlignment: 4 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11452442 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Toggle_Selected + IgnoreImage: 0 +--- !u!114 &11452444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11452446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11452460} + toggleTransition: 0 + graphic: {fileID: 11452444} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &11452448 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11452450 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!114 &11452452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 42 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11452454 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .278431386, g: .278431386, b: .278431386, a: 0} + FlashColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Target: {fileID: 11452460} +--- !u!114 &11452456 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 2 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11452458 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &11452460 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11452462 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Pin + IgnoreImage: 0 +--- !u!114 &11452464 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 23dfb5d7fc5a2fb4f9a5fc00f697147f, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11452466 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f26b5a0018be8444fb0a18037b471f65, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + PinToggle: {fileID: 11452446} +--- !u!114 &11459566 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 160 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11459568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5812a284a856b743b4f54c6a4637061, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + VerticalAlignment: 1 + FloatingScale: 1 + TargetFpsUseApplication: 0 + DrawAxes: 1 + TargetFps: 60 + Clip: 1 + VerticalPadding: 10 + LineColours: + - {r: .203921571, g: .517647088, b: .635294139, a: 1} + - {r: .4627451, g: .596078455, b: .0274509806, a: 1} + - {r: .592156887, g: .459743083, b: .0274509918, a: 1} +--- !u!114 &11471370 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 80 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11472964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 04ad714fc337b334687c4aedb49873e9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ButtonText: {fileID: 11415970} + EnableButton: {fileID: 11415974} + Text: {fileID: 11409952} +--- !u!114 &11472968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Header + IgnoreImage: 0 +--- !u!114 &11472970 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 8 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11472974 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .845588207, g: .845588207, b: .845588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Current usage is not supported for this build. +--- !u!114 &11476962 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 260 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11476964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 260 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11477856 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177856} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85621644eaef06f44835068498590190, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + UpdateFrequency: 1 + _text: {fileID: 11477858} +--- !u!114 &11477858 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177856} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 4e46f78eb6d69074d9b4fe427bb2f1a2, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'FPS: 45.33' +--- !u!114 &11477860 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11488446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11498770 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &11498772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11498780 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22498780} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: .100000001 + m_Inertia: 1 + m_DecelerationRate: .135000005 + m_ScrollSensitivity: 40 + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11498782 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 22452466} + Icon: {fileID: 21300000, guid: 4ea5932536416924bab8eb9b5bab3874, type: 3} + IconExtraContent: {fileID: 0} + IconStyleKey: Icon_Profiler + SortIndex: 5 + TabButton: {fileID: 0} + _title: Profiler + _longTitle: Profiler + _key: Profiler +--- !u!114 &11498784 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Background + IgnoreImage: 0 +--- !u!114 &11498786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11498788 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .192156866, g: .192156866, b: .192156866, a: .588235319} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22208744 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108744} +--- !u!222 &22208746 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108746} +--- !u!222 &22209966 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109964} +--- !u!222 &22209968 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109968} +--- !u!222 &22209970 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109970} +--- !u!222 &22211960 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111960} +--- !u!222 &22211962 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111962} +--- !u!222 &22215934 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115938} +--- !u!222 &22215936 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115940} +--- !u!222 &22215938 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115942} +--- !u!222 &22215940 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115944} +--- !u!222 &22238210 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138210} +--- !u!222 &22239728 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139728} +--- !u!222 &22239730 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139730} +--- !u!222 &22239732 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139736} +--- !u!222 &22239734 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139738} +--- !u!222 &22239736 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139740} +--- !u!222 &22239738 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139742} +--- !u!222 &22239740 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139748} +--- !u!222 &22239742 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139752} +--- !u!222 &22250228 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150230} +--- !u!222 &22250230 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150232} +--- !u!222 &22250232 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150234} +--- !u!222 &22250234 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150240} +--- !u!222 &22250236 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150242} +--- !u!222 &22250238 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150246} +--- !u!222 &22250240 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150248} +--- !u!222 &22252460 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152454} +--- !u!222 &22252462 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} +--- !u!222 &22252464 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152460} +--- !u!222 &22252466 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152462} +--- !u!222 &22259566 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159566} +--- !u!222 &22272966 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172966} +--- !u!222 &22277856 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177856} +--- !u!222 &22298788 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198788} +--- !u!224 &22405598 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105598} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22498780} + m_Father: {fileID: 22498786} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22408742 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22408744} + - {fileID: 22408746} + m_Father: {fileID: 22459566} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 60, y: 70} + m_SizeDelta: {x: 100, y: 14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22408744 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408742} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22408746 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108746} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22408742} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409962 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109962} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409964} + - {fileID: 22415946} + m_Father: {fileID: 22498780} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 454, y: -200} + m_SizeDelta: {x: 908, y: 40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409964 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109964} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409962} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 412, y: -20} + m_SizeDelta: {x: 535, y: 40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409968} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409968 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409966} + - {fileID: 22450248} + m_Father: {fileID: 22415936} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409970 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450250} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22411958 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111958} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22411960} + - {fileID: 22411962} + m_Father: {fileID: 22459566} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 60, y: 140} + m_SizeDelta: {x: 100, y: 14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22411960 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111960} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22411958} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22411962 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111962} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22411958} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22415936 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409968} + m_Father: {fileID: 22450244} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22415938 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439754} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -10.0000124, y: 12} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22415940 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450230} + m_RootOrder: 0 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: -3} + m_SizeDelta: {x: 100, y: 12} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22415942 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22415946} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22415944 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22415946} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 42, y: -20} + m_SizeDelta: {x: 54, y: 14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22415946 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115946} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22415942} + - {fileID: 22415944} + m_Father: {fileID: 22409962} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 721.5, y: -20} + m_SizeDelta: {x: 84, y: 40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22438210 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138210} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22472968} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439728 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439732} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439730 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439732} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22439732 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439730} + - {fileID: 22439728} + m_Father: {fileID: 22439746} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439734 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439736} + - {fileID: 22439738} + m_Father: {fileID: 22439746} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439736 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139736} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439734} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22439738 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139738} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439734} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439740 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139740} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439744} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439742 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439744} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22439744 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439742} + - {fileID: 22439740} + m_Father: {fileID: 22439746} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439746 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139746} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22477856} + - {fileID: 22477858} + - {fileID: 22439744} + - {fileID: 22439734} + - {fileID: 22439732} + m_Father: {fileID: 22498780} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439748 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450232} + m_Father: {fileID: 22450252} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439750 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450230} + m_Father: {fileID: 22450238} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439752 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139752} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450238} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439754 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139754} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450234} + - {fileID: 22415938} + - {fileID: 22450252} + m_Father: {fileID: 22472968} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22439758 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139758} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22472968} + - {fileID: 22450244} + m_Father: {fileID: 22498780} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450230 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150230} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22415940} + m_Father: {fileID: 22439750} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450232 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150232} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439748} + m_RootOrder: 0 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: -3} + m_SizeDelta: {x: 100, y: 12} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22450234 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150234} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439754} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450236 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150236} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450250} + m_Father: {fileID: 22472968} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450238 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150238} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439752} + - {fileID: 22450246} + - {fileID: 22439750} + m_Father: {fileID: 22450244} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450240 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150240} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450244} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450242 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150242} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450250} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450244 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150244} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450240} + - {fileID: 22450238} + - {fileID: 22415936} + m_Father: {fileID: 22439758} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450246 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150246} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22450238} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -10, y: 12} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22450248 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150248} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409968} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450250 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150250} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22450242} + - {fileID: 22409970} + m_Father: {fileID: 22450236} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22450252 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439748} + m_Father: {fileID: 22439754} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -28} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452454 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22452458} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452456 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152466} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452466} + m_Father: {fileID: 22498786} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 498, y: 90} + m_SizeDelta: {x: 986, y: 40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452458 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152456} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452462} + - {fileID: 22452454} + - {fileID: 22452464} + m_Father: {fileID: 22452460} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452460 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452458} + m_Father: {fileID: 22452466} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22452462 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152460} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22452458} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452464 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152462} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22452458} + m_RootOrder: 2 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22452466 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152464} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452460} + m_Father: {fileID: 22452456} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22459566 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22411958} + - {fileID: 22408742} + m_Father: {fileID: 22498780} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22472966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22472968} + m_RootOrder: 2 + m_AnchorMin: {x: .5, y: 1} + m_AnchorMax: {x: .5, y: 1} + m_AnchoredPosition: {x: 0, y: -73} + m_SizeDelta: {x: 404, y: 10} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22472968 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22438210} + - {fileID: 22439754} + - {fileID: 22472966} + - {fileID: 22450236} + m_Father: {fileID: 22439758} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22477856 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177856} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439746} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22477858 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177858} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22439746} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22498780 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22459566} + - {fileID: 22439746} + - {fileID: 22409962} + - {fileID: 22439758} + m_Father: {fileID: 22405598} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22498786 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198786} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452456} + - {fileID: 22498788} + - {fileID: 22405598} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22498788 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198788} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22498786} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 198786} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab.meta new file mode 100644 index 00000000..12539170 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/Profiler.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: c8c5aa399662c664f81eda4f07e56ad2 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab new file mode 100644 index 00000000..e1dad998 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab @@ -0,0 +1,1101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &101882 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22428750} + - 114: {fileID: 11440158} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108188 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408188} + m_Layer: 5 + m_Name: SR_Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109448 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409448} + - 114: {fileID: 11409442} + - 114: {fileID: 11409440} + m_Layer: 5 + m_Name: SR_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109450 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409450} + - 114: {fileID: 11409444} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109452 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409452} + m_Layer: 5 + m_Name: SR_SystemHeaderContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109454 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409454} + - 222: {fileID: 22209454} + - 114: {fileID: 11409448} + - 114: {fileID: 11409446} + m_Layer: 5 + m_Name: SR_Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109456 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409456} + - 222: {fileID: 22209456} + - 114: {fileID: 11409450} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409458} + - 114: {fileID: 11409458} + - 222: {fileID: 22209458} + - 114: {fileID: 11409456} + - 114: {fileID: 11409454} + - 114: {fileID: 11409452} + m_Layer: 5 + m_Name: SR_Refresh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112936 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22496842} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132084 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22432084} + - 222: {fileID: 22232084} + - 114: {fileID: 11432084} + - 114: {fileID: 11432082} + m_Layer: 5 + m_Name: SR_ScrollBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &154276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22454276} + - 222: {fileID: 22254276} + - 114: {fileID: 11454276} + - 114: {fileID: 11454274} + - 114: {fileID: 11454272} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180920 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22443092} + - 222: {fileID: 22293874} + - 114: {fileID: 11498084} + - 114: {fileID: 11460484} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188654 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22488654} + - 114: {fileID: 11488612} + - 114: {fileID: 11488614} + - 114: {fileID: 11493252} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188656 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22488656} + - 114: {fileID: 11488616} + m_Layer: 5 + m_Name: SR_Flow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188666 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22488666} + - 114: {fileID: 11431096} + - 114: {fileID: 11488634} + - 114: {fileID: 11411704} + - 114: {fileID: 11403006} + - 114: {fileID: 11437146} + - 114: {fileID: 11465918} + m_Layer: 5 + m_Name: System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11403006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f0ff44b792ef2042856036000e22450, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11409440 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &11409442 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 2 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11409444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11409446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Icon_Refresh + IgnoreImage: 0 +--- !u!114 &11409448 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 9662640d4260c9a4d926c7de03e6609e, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11409450 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11409452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Tab_Header_Button + IgnoreImage: 0 +--- !u!114 &11409454 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: .150000006 + DefaultColor: {r: .278431386, g: .278431386, b: .278431386, a: 0} + FlashColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Target: {fileID: 11409450} +--- !u!114 &11409456 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 40 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11409458 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11409450} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11411704} + m_MethodName: Refresh + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11411704 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b6cf74d4a6343648bbe857301cf1bc8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + InfoBlockPrefab: {fileID: 11419538, guid: 54dcbf94ddefe604898e059992c2f974, type: 2} + LayoutContainer: {fileID: 22488656} +--- !u!114 &11431096 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 22409452} + Icon: {fileID: 21300000, guid: 4ea5932536416924bab8eb9b5bab3874, type: 3} + IconExtraContent: {fileID: 0} + IconStyleKey: Icon_System + SortIndex: 0 + TabButton: {fileID: 0} + _title: System + _longTitle: System Information + _key: SystemInformation +--- !u!114 &11432082 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11432084 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11437146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11440158 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1e+07 +--- !u!114 &11454272 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Background + IgnoreImage: 0 +--- !u!114 &11454274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11454276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .192156866, g: .192156866, b: .192156866, a: .588235319} + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11460484 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: + m_EditorClassIdentifier: + _styleKey: Text_Dim + IgnoreImage: 0 +--- !u!114 &11465918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8340b6e7293114da3d567338dc8e9f, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 22488654} + ReplaceMask: {fileID: 0} + Viewport: {fileID: 22408188} +--- !u!114 &11488612 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 3 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11488614 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &11488616 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3a5149e46522d84cb8079537220a929, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + ChildForceExpandHeight: 1 + ChildForceExpandWidth: 1 + Spacing: 0 +--- !u!114 &11488634 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Content: {fileID: 22488654} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: .100000001 + m_Inertia: 1 + m_DecelerationRate: .135000005 + m_ScrollSensitivity: 40 + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11493252 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 65f264d1c98f61c4f9143ddeb0e74ff5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + CopySource: {fileID: 22408188} + PaddingHeight: 0 + PaddingWidth: 0 + SetPreferredSize: 0 + SetMinimumSize: 1 +--- !u!114 &11498084 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .737254918, g: .737254918, b: .737254918, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SRDebugger (C) Stompy Robot LTD - Icons by Icons8 (www.icons8.com) +--- !u!222 &22209454 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109454} +--- !u!222 &22209456 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109456} +--- !u!222 &22209458 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} +--- !u!222 &22232084 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132084} +--- !u!222 &22254276 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154276} +--- !u!222 &22293874 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180920} +--- !u!224 &22408188 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22488654} + m_Father: {fileID: 22488666} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409448 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109448} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409458} + m_Father: {fileID: 22409452} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22409450 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409452} + m_Father: {fileID: 22488666} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 498, y: 90} + m_SizeDelta: {x: 986, y: 40} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409452 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409448} + m_Father: {fileID: 22409450} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409454 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409458} + m_RootOrder: 1 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409456 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109456} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409458} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409458 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409456} + - {fileID: 22409454} + m_Father: {fileID: 22409448} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22428750 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101882} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488654} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22432084 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132084} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488654} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22443092 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488654} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22454276 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488666} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22488654 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22432084} + - {fileID: 22488656} + - {fileID: 22428750} + - {fileID: 22443092} + - {fileID: 22496842} + m_Father: {fileID: 22408188} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22488656 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488654} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22488666 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188666} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409450} + - {fileID: 22454276} + - {fileID: 22408188} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22496842 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22488654} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 188666} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab.meta new file mode 100644 index 00000000..668cf62b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Tabs/System.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: b375b5741c9234f4c8e08b2f4c81e15d +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab new file mode 100644 index 00000000..47f21617 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab @@ -0,0 +1,717 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &132616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22432616} + - component: {fileID: 22232616} + - component: {fileID: 11432612} + - component: {fileID: 11448470} + - component: {fileID: 11432614} + m_Layer: 5 + m_Name: SR_TapButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22432616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132616} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478442} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &22232616 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132616} + m_CullTransparentMesh: 0 +--- !u!114 &11432612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11448470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: abc57d317f579f2459ba7317f386ecf3, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 0} + m_HighlightedColor: {r: 1, g: 1, b: 1, a: 0.1254902} + m_PressedColor: {r: 1, g: 1, b: 1, a: 0.21176471} + m_SelectedColor: {r: 1, g: 1, b: 1, a: 0.1254902} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: 0 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11432612} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + RequiredTapCount: 3 + ResetTime: 0.5 +--- !u!114 &11432614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 1, g: 1, b: 1, a: 0} + FlashColor: {r: 1, g: 1, b: 1, a: 0.18431373} + Target: {fileID: 11432612} +--- !u!1 &148474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22448474} + - component: {fileID: 22348476} + - component: {fileID: 11448468} + - component: {fileID: 11448466} + - component: {fileID: 11448476} + - component: {fileID: 11452012} + - component: {fileID: 11439714} + m_Layer: 5 + m_Name: Trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22448474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22478442} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &22348476 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: -1229733857 + m_SortingOrder: 9999 + m_TargetDisplay: 0 +--- !u!114 &11448468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11448466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_UiScaleMode: 2 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 0 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11448476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e511950015658d545aa9d10a45550b11, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Canvas: {fileID: 22348476} + TapHoldButton: {fileID: 11432616} + TriggerTransform: {fileID: 22478442} + ErrorNotifier: {fileID: 114515333832246520} + TripleTapButton: {fileID: 11448470} +--- !u!114 &11452012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11439714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0ad3d8afa9fd64429a249b5bbb19557, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!1 &148476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22448476} + - component: {fileID: 22248476} + - component: {fileID: 11448472} + - component: {fileID: 11432616} + - component: {fileID: 11448474} + m_Layer: 5 + m_Name: SR_HoldButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22448476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148476} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22478442} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &22248476 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148476} + m_CullTransparentMesh: 0 +--- !u!114 &11448472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11432616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3fc6d8b69639fdc45a849df5b853c783, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11448472} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + _onLongPress: + m_PersistentCalls: + m_Calls: [] + LongPressDuration: 0.9 +--- !u!114 &11448474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95878e800ddd366418edfb56a22f9d56, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + DecayTime: 0.15 + DefaultColor: {r: 1, g: 1, b: 1, a: 0} + FlashColor: {r: 1, g: 1, b: 1, a: 0.18431373} + Target: {fileID: 11448472} +--- !u!1 &178442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478442} + m_Layer: 5 + m_Name: SR_ButtonContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478442 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178442} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22432616} + - {fileID: 22448476} + - {fileID: 224305022694552296} + m_Father: {fileID: 22448474} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2, y: 2} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1467285441891278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224305022694552296} + - component: {fileID: 114515333832246520} + - component: {fileID: 225275743592272854} + - component: {fileID: 95883243777122286} + m_Layer: 5 + m_Name: SR_ErrorWarning + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224305022694552296 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467285441891278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224890845635152030} + - {fileID: 224484456698580340} + m_Father: {fileID: 22478442} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114515333832246520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467285441891278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc845b8723c64841aa76e259d4a0b6c4, type: 3} + m_Name: + m_EditorClassIdentifier: + _animator: {fileID: 95883243777122286} +--- !u!225 &225275743592272854 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467285441891278} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!95 &95883243777122286 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467285441891278} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 449919ad070ed5f428b1698571eee16d, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &1892602544821206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224890845635152030} + - component: {fileID: 222230469614032946} + - component: {fileID: 114330398108791650} + - component: {fileID: 225511023925428452} + m_Layer: 5 + m_Name: SR_Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224890845635152030 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892602544821206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224305022694552296} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222230469614032946 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892602544821206} + m_CullTransparentMesh: 0 +--- !u!114 &114330398108791650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892602544821206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.95686275, g: 0.35686275, b: 0.34117648, a: 0.703} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &225511023925428452 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892602544821206} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1 &1943162144476130 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224484456698580340} + - component: {fileID: 222256551303749844} + - component: {fileID: 114762634538722336} + - component: {fileID: 225873368204709294} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224484456698580340 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943162144476130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224305022694552296} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.1, y: 0.1} + m_AnchorMax: {x: 0.9, y: 0.9} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222256551303749844 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943162144476130} + m_CullTransparentMesh: 0 +--- !u!114 &114762634538722336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943162144476130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: fa4a3dea13d28344a8bcc77a1a7e2fcf, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &225873368204709294 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943162144476130} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab.meta new file mode 100644 index 00000000..6609e2d3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Resources/SRDebugger/UI/Prefabs/Trigger.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3024365d197ebaa4abedb991801f0b79 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes.meta new file mode 100644 index 00000000..e40c08b9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 4ab5876a3d87bb247a630f0d8e0a7c4a +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity new file mode 100644 index 00000000..5237c882 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity @@ -0,0 +1,401 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientLight: {r: .200000003, g: .200000003, b: .200000003, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 0} + m_ObjectHideFlags: 0 +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + m_LightProbes: {fileID: 0} + m_Lightmaps: [] + m_LightmapsMode: 1 + m_BakedColorSpace: 0 + m_UseDualLightmapsInForward: 0 + m_LightmapEditorSettings: + m_Resolution: 50 + m_LastUsedResolution: 0 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_BounceBoost: 1 + m_BounceIntensity: 1 + m_SkyLightColor: {r: .860000014, g: .930000007, b: 1, a: 1} + m_SkyLightIntensity: 0 + m_Quality: 0 + m_Bounces: 1 + m_FinalGatherRays: 1000 + m_FinalGatherContrastThreshold: .0500000007 + m_FinalGatherGradientThreshold: 0 + m_FinalGatherInterpolationPoints: 15 + m_AOAmount: 0 + m_AOMaxDistance: .100000001 + m_AOContrast: 1 + m_LODSurfaceMappingDistance: 1 + m_Padding: 0 + m_TextureCompression: 0 + m_LockAtlas: 0 +--- !u!196 &5 +NavMeshSettings: + m_ObjectHideFlags: 0 + m_BuildSettings: + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + widthInaccuracy: 16.666666 + heightInaccuracy: 10 + tileSizeHint: 0 + m_NavMesh: {fileID: 0} +--- !u!1 &385144051 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 385144052} + - 223: {fileID: 385144055} + - 114: {fileID: 385144054} + - 114: {fileID: 385144053} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &385144052 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385144051} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1922097723} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &385144053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385144051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &385144054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385144051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 2 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &385144055 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385144051} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 1982386887} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!1001 &1684546026 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 323169e9766db69459a435e10f3feed0, type: 2} + m_RootGameObject: {fileID: 2098515793} + m_IsPrefabParent: 0 + m_IsExploded: 1 +--- !u!1 &1922097720 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1922097723} + - 222: {fileID: 1922097722} + - 114: {fileID: 1922097721} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1922097721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922097720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Triple tap top-left corner to open debug panel +--- !u!222 &1922097722 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922097720} +--- !u!224 &1922097723 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922097720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 385144052} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -40, y: -40} + m_Pivot: {x: .5, y: .5} +--- !u!1 &1982386883 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1982386888} + - 20: {fileID: 1982386887} + - 92: {fileID: 1982386886} + - 124: {fileID: 1982386885} + - 81: {fileID: 1982386884} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1982386884 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1982386883} + m_Enabled: 1 +--- !u!124 &1982386885 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1982386883} + m_Enabled: 1 +--- !u!92 &1982386886 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1982386883} + m_Enabled: 1 +--- !u!20 &1982386887 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1982386883} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .147058845, g: .146074474, b: .140570953, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!4 &1982386888 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1982386883} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &2098515793 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 190014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + m_PrefabInternal: {fileID: 1684546026} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2098515795} + - 114: {fileID: 2098515794} + m_Layer: 0 + m_Name: SRDebugger.Init + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2098515794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11490014, guid: 323169e9766db69459a435e10f3feed0, + type: 2} + m_PrefabInternal: {fileID: 1684546026} + m_GameObject: {fileID: 2098515793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 66edd3610b01cce48aed05383fd196e5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &2098515795 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 490014, guid: 323169e9766db69459a435e10f3feed0, type: 2} + m_PrefabInternal: {fileID: 1684546026} + m_GameObject: {fileID: 2098515793} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity.meta new file mode 100644 index 00000000..2dfcf8b2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scenes/Sample.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 6cad2a7016eb0bf488b0c408d7071055 +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts.meta new file mode 100644 index 00000000..ffe2e159 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 0dcae4b4193e6a844b0a70c88003f0c6 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs new file mode 100644 index 00000000..54767f8b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs @@ -0,0 +1,38 @@ +using SRDebugger.Services; +using SRF.Service; + +namespace SRDebugger +{ + using UnityEngine; + + public static class AutoInitialize + { + /// + /// Initialize the console service before the scene has loaded to catch more of the initialization log. + /// + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + public static void OnLoadBeforeScene() + { + // Populate service manager with types from SRDebugger assembly (asmdef) + SRServiceManager.RegisterAssembly(); + + if (Settings.Instance.IsEnabled) + { + // Initialize console if it hasn't already initialized. + SRServiceManager.GetService(); + } + } + + /// + /// Initialize SRDebugger after the scene has loaded. + /// + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] + public static void OnLoad() + { + if (Settings.Instance.IsEnabled) + { + SRDebug.Init(); + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs.meta new file mode 100644 index 00000000..6e7d7658 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/AutoInitialize.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d7261eeb6c603844ba967b14c0895ec8 +timeCreated: 1426170121 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor.meta new file mode 100644 index 00000000..d328a5fc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3b75fb5ec74e4fa4ca7d8472defae919 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs new file mode 100644 index 00000000..55e967ce --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Cache; +using System.Text; +using SRDebugger.Internal; +using SRF; +using UnityEngine; + +namespace SRDebugger.Editor +{ + public static class ApiSignup + { + public delegate void ApiSignupResultCallback(bool success, string apiKey, string email, string error); + + public static void SignUp(string email, string invoiceNo, ApiSignupResultCallback resultCallback) + { + var requestData = new Hashtable(); + requestData["emailAddress"] = email; + requestData["transactionNumber"] = invoiceNo; + + try + { + var request = SendRequest(SRDebugApi.EndPoint + "/user/create", requestData, WebRequestMethods.Http.Post); + + string result; + + var didSucceed = SRDebugApiUtil.ReadResponse(request, out result); + + if (didSucceed) + { + var jsonTable = (Dictionary) Json.Deserialize(result); + + resultCallback(true, (string) jsonTable["apiKey"], (string) jsonTable["emailAddress"], null); + } + else + { + resultCallback(false, null, null, SRDebugApiUtil.ParseErrorResponse(result)); + } + } + catch (Exception e) + { + Debug.LogException(e); + resultCallback(false, null, null, "Internal Error (" + e.Message + ")"); + } + } + + public static string Verify(string apiKey) + { + var request = SendRequest(SRDebugApi.EndPoint + "/user/test", null, apiKey: apiKey); + + string result; + + SRDebugApiUtil.ReadResponse(request, out result); + + return result; + } + + private static HttpWebRequest SendRequest(string endpoint, Hashtable data, + string method = WebRequestMethods.Http.Get, string apiKey = null) + { + var request = (HttpWebRequest) WebRequest.Create(endpoint); + request.Timeout = 15000; + request.Method = method; + + request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.BypassCache); + + request.ContentType = "application/json"; + request.Accept = "application/json"; + + if (!string.IsNullOrEmpty(apiKey)) + { + request.Headers.Add("X-ApiKey", apiKey); + } + + request.KeepAlive = false; + + if (data != null) + { + var requestJson = Json.Serialize(data); + + using (var requestStream = request.GetRequestStream()) + { + using (var writer = new StreamWriter(requestStream, Encoding.UTF8)) + { + writer.Write(requestJson); + } + } + } + + return request; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs.meta new file mode 100644 index 00000000..c764157c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignup.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c678ba20e05678942905f13f1f42c8e1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs new file mode 100644 index 00000000..83d20d98 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs @@ -0,0 +1,43 @@ +using SRDebugger.Internal.Editor; +using UnityEditor; +using UnityEngine; + +namespace SRDebugger.Editor +{ + public class ApiSignupTermsWindow : EditorWindow + { + public static void Open() + { + GetWindowWithRect(new Rect(0, 0, 430, 345), true, "SRDebugger - Bug Reporter TOS", + true); + } + + private void OnGUI() + { + GUILayout.Label("Terms and Conditions", SRDebugEditorUtil.Styles.HeaderLabel); + + GUILayout.Label( + "The Bug Reporter service is provided free of charge to owners of SRDebugger. One valid license key of SRDebugger allows one account to be registered. You must not share your API key with another party. Stompy Robot LTD reserves the right to terminate your bug reporter account if your API key is shared with another party.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "Stompy Robot LTD reserves the right to cancel the bug report service at any time without notice.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "By signing up for the Bug Reporter service you grant Stompy Robot LTD permission to gather non-identifying information from users when submitting reports. You attest that your users are aware of the data collection and give their consent.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "THE SERVICE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Close")) + { + Close(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs.meta new file mode 100644 index 00000000..86253686 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ApiSignupWindow.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58b4c2d8acab3b747a2a90abd77b1132 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs new file mode 100644 index 00000000..4e951f00 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using SRDebugger.Internal.Editor; +using SRF; +using UnityEngine; +using UnityEditor; +#pragma warning disable 162 + +namespace SRDebugger.Editor +{ + [InitializeOnLoad] + static class Migrations + { + static Migrations() + { + RunMigrations(); + } + + private const bool EnableLog = false; + + public class Migration + { + public readonly string Id; + public readonly string[] ObsoleteFiles; + + public Migration(string id, string[] obsoleteFiles) + { + Id = id; + ObsoleteFiles = obsoleteFiles; + } + } + + public static List AvailableMigrations = new List() + { + new Migration("DeleteOldEditorResources", new[] + { + "Editor/Resources/SRDebugger/BG_Dark.png", + "Editor/Resources/SRDebugger/BG_Light.png", + "Editor/Resources/SRDebugger/DemoSprite.png", + "Editor/Resources/SRDebugger/Logo_DarkBG.png", + "Editor/Resources/SRDebugger/Logo_LightBG.png", + "Editor/Resources/SRDebugger/WelcomeLogo_DarkBG.png", + "Editor/Resources/SRDebugger/WelcomeLogo_LightBG.png", + "Editor/Resources/SRDebugger/Icons/Dark/console-25.png", + "Editor/Resources/SRDebugger/Icons/Dark/options-25.png", + "Editor/Resources/SRDebugger/Icons/Dark/profiler-25.png", + "Editor/Resources/SRDebugger/Icons/Light/console-25.png", + "Editor/Resources/SRDebugger/Icons/Light/options-25.png", + "Editor/Resources/SRDebugger/Icons/Light/profiler-25.png", + }) + }; + + public static void RunMigrations(bool forceRun = false) + { + if(EnableLog) + Debug.Log("[SRDebugger] Running Migrations..."); + + foreach (var m in AvailableMigrations) + { + var key = GetProjectPrefsKey(m.Id); + + if (!forceRun && EditorPrefs.GetBool(key, false)) + { + continue; + } + + EditorPrefs.SetBool(key, true); + RunMigration(m); + } + } + + public static void RunMigration(Migration migration) + { + if (EnableLog) + Debug.Log("Running Migration: " + migration.Id); + + var assetPaths = AssetDatabase.GetAllAssetPaths(); + var root = new DirectoryInfo(SRDebugEditorUtil.GetRootPath()); + + if(EnableLog) + Debug.Log("Using Root Path: " + root.FullName); + + var obsoleteAssets = migration.ObsoleteFiles.Select(p => root + "/" + p).ToList(); + var deleteQueue = assetPaths.Where(assetPath => obsoleteAssets.Contains(assetPath)).ToList(); + + if (deleteQueue.Count == 0) + return; + + var message = "The following files used by a previous version of SRDebugger are obsolete and can be safely deleted: \n\n" + + deleteQueue.Aggregate((s1, s2) => s1 + "\n" + s2); + + Debug.Log(message); + + message += "\n\nIt is recommended to delete these files."; + + if (EditorUtility.DisplayDialog("SRDebugger Migration Assistant", + message, "Delete Now", "Ignore")) + { + foreach (var s in deleteQueue) + { + Debug.Log("[SRDebugger] Deleting Asset {0}".Fmt(s)); + + if (!AssetDatabase.DeleteAsset(s)) + { + Debug.LogWarning("[SRDebugger] Error deleting asset {0}".Fmt(s)); + } + } + + Debug.Log("[SRDebugger] Migration Complete"); + } + else + { + EditorUtility.DisplayDialog("SRDebugger Migration Assitant", + "You can run this migration check again via the \"Run Migrations\" button in the advanced tab of the SRDebugger settings window.", "OK"); + } + } + + private static string GetProjectPrefsKey(string key) + { + return "SRDebugger_Migration_" + Application.dataPath + "_" + key; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs.meta new file mode 100644 index 00000000..e98fd8b4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/Migrations.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4b80f539792faff4187cbd7fb1113d67 +timeCreated: 1451840376 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs new file mode 100644 index 00000000..d56e403c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs @@ -0,0 +1,15 @@ +using SRDebugger.Internal; +using SRDebugger.Profiler; +using UnityEditor; + +namespace SRDebugger.Editor +{ + [CustomEditor(typeof (ProfilerCameraListener))] + public class ProfilerCameraListenerEditor : UnityEditor.Editor + { + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox(SRDebugStrings.Current.ProfilerCameraListenerHelp, MessageType.Info, true); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs.meta new file mode 100644 index 00000000..b6ce4b26 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/ProfilerCameraListenerEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c38092124e5b1114d9f037f64769dc5f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs new file mode 100644 index 00000000..441f8462 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs @@ -0,0 +1,389 @@ +using System.ComponentModel; + +namespace SRDebugger.Editor +{ + using System; + using System.Collections.Generic; + using System.Linq; + using Internal; + using SRF; + using UI.Controls.Data; + using UnityEngine; + using UnityEditor; + + public class SROptionsWindow : EditorWindow + { + [MenuItem(SRDebugPaths.SROptionsMenuItemPath)] + public static void Open() + { + var window = GetWindow(false, "SROptions", true); + window.minSize = new Vector2(100, 100); + window.Show(); + } + + [Serializable] + private class CategoryState + { + public string Name; + public bool IsOpen; + } + + [SerializeField] + private List _categoryStates = new List(); + + private Dictionary> _typeLookup; + + private Dictionary> _options; + + private Vector2 _scrollPosition; + private bool _queueRefresh; + + [NonSerialized] private GUIStyle _divider; + [NonSerialized] private GUIStyle _foldout; + + public void OnInspectorUpdate() + { + if (EditorApplication.isPlaying && _options == null) + { + Populate(); + _queueRefresh = true; + } + else if (!EditorApplication.isPlaying && _options != null) + { + _options = null; + _queueRefresh = true; + } + + if (_queueRefresh) + { + Repaint(); + } + + _queueRefresh = false; + } + + void PopulateTypeLookup() + { + _typeLookup = new Dictionary>() + { + {typeof(int), OnGUI_Int}, + {typeof(float), OnGUI_Float}, + {typeof(double), OnGUI_Double}, + {typeof(string), OnGUI_String}, + {typeof(bool), OnGUI_Boolean }, + {typeof(uint), OnGUI_AnyInteger}, + {typeof(ushort), OnGUI_AnyInteger}, + {typeof(short), OnGUI_AnyInteger}, + {typeof(sbyte), OnGUI_AnyInteger}, + {typeof(byte), OnGUI_AnyInteger}, + {typeof(long), OnGUI_AnyInteger}, + }; + } + + void Populate() + { + if (_typeLookup == null) + { + PopulateTypeLookup(); + } + + _options = new Dictionary>(); + + foreach (var option in Service.Options.Options) + { + List list; + + if (!_options.TryGetValue(option.Category, out list)) + { + list = new List(); + _options[option.Category] = list; + } + + list.Add(option); + } + + foreach (var kv in _options) + { + kv.Value.Sort((d1, d2) => d1.SortPriority.CompareTo(d2.SortPriority)); + } + + Service.Options.OptionsValueUpdated += OptionsOnOptionsValueUpdated; + } + + private void OptionsOnOptionsValueUpdated(object sender, PropertyChangedEventArgs e) + { + _queueRefresh = true; + } + + + void OnGUI() + { + EditorGUILayout.Space(); + + if (!EditorApplication.isPlayingOrWillChangePlaymode || _options == null) + { + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Label("SROptions can only be edited in play-mode."); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + return; + } + + if (_divider == null) + { + _divider = new GUIStyle(GUI.skin.box); + _divider.stretchWidth = true; + _divider.fixedHeight = 2; + } + + if (_foldout == null) + { + _foldout = new GUIStyle(EditorStyles.foldout); + _foldout.fontStyle = FontStyle.Bold; + } + + _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); + + foreach (var kv in _options) + { + var state = _categoryStates.FirstOrDefault(p => p.Name == kv.Key); + + if (state == null) + { + state = new CategoryState() + { + Name = kv.Key, + IsOpen = true + }; + _categoryStates.Add(state); + } + + state.IsOpen = EditorGUILayout.Foldout(state.IsOpen, kv.Key, _foldout); + + if (!state.IsOpen) + continue; + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + OnGUI_Category(kv.Value); + EditorGUILayout.Space(); + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.EndScrollView(); + } + + void OnGUI_Category(List options) + { + for (var i = 0; i < options.Count; i++) + { + var op = options[i]; + + if (op.Property != null) + { + OnGUI_Property(op); + } else if (op.Method != null) + { + OnGUI_Method(op); + } + } + } + + void OnGUI_Method(OptionDefinition op) + { + if (GUILayout.Button(op.Name)) + { + op.Method.Invoke(null); + } + } + + void OnGUI_Property(OptionDefinition op) + { + Action method; + + if (op.Property.PropertyType.IsEnum) + { + method = OnGUI_Enum; + } + else if (!_typeLookup.TryGetValue(op.Property.PropertyType, out method)) + { + OnGUI_Unsupported(op); + return; + } + + if (!op.Property.CanWrite) + { + EditorGUI.BeginDisabledGroup(true); + } + + method(op); + + if (!op.Property.CanWrite) + { + EditorGUI.EndDisabledGroup(); + } + } + + void OnGUI_String(OptionDefinition op) + { + EditorGUI.BeginChangeCheck(); + var newValue = EditorGUILayout.TextField(op.Name, (string) op.Property.GetValue()); + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Boolean(OptionDefinition op) + { + EditorGUI.BeginChangeCheck(); + var newValue = EditorGUILayout.Toggle(op.Name, (bool) op.Property.GetValue()); + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Enum(OptionDefinition op) + { + EditorGUI.BeginChangeCheck(); + var newValue = EditorGUILayout.EnumPopup(op.Name, (Enum)op.Property.GetValue()); + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Int(OptionDefinition op) + { + var range = op.Property.GetAttribute(); + + int newValue; + + EditorGUI.BeginChangeCheck(); + + if (range != null) + { + newValue = EditorGUILayout.IntSlider(op.Name, (int)op.Property.GetValue(), (int)range.Min, (int)range.Max); + } + else + { + newValue = EditorGUILayout.IntField(op.Name, (int) op.Property.GetValue()); + } + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Float(OptionDefinition op) + { + var range = op.Property.GetAttribute(); + + float newValue; + + EditorGUI.BeginChangeCheck(); + + if (range != null) + { + newValue = EditorGUILayout.Slider(op.Name, (float)op.Property.GetValue(), (float)range.Min, (float)range.Max); + } + else + { + newValue = EditorGUILayout.FloatField(op.Name, (float) op.Property.GetValue()); + } + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Double(OptionDefinition op) + { + var range = op.Property.GetAttribute(); + + double newValue; + + EditorGUI.BeginChangeCheck(); + + if (range != null && range.Min > float.MinValue && range.Max < float.MaxValue) + { + newValue = EditorGUILayout.Slider(op.Name, (float)op.Property.GetValue(), (float)range.Min, (float)range.Max); + } + else + { + newValue = EditorGUILayout.DoubleField(op.Name, (double) op.Property.GetValue()); + + if (range != null) + { + if (newValue > range.Max) + { + newValue = range.Max; + } else if (newValue < range.Min) + { + newValue = range.Min; + } + } + } + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + + void OnGUI_AnyInteger(OptionDefinition op) + { + NumberControl.ValueRange range; + + if (!NumberControl.ValueRanges.TryGetValue(op.Property.PropertyType, out range)) + { + Debug.LogError("Unknown integer type: " + op.Property.PropertyType); + return; + } + + var userRange = op.Property.GetAttribute(); + + EditorGUI.BeginChangeCheck(); + + var oldValue = (long)Convert.ChangeType(op.Property.GetValue(), typeof(long)); + var newValue = EditorGUILayout.LongField(op.Name, oldValue); + + if (newValue > range.MaxValue) + { + newValue = (long)range.MaxValue; + } else if (newValue < range.MinValue) + { + newValue = (long)range.MinValue; + } + + if (userRange != null) + { + if (newValue > userRange.Max) + { + newValue = (long)userRange.Max; + } else if (newValue < userRange.Min) + { + newValue = (long) userRange.Min; + } + } + + if (EditorGUI.EndChangeCheck()) + { + op.Property.SetValue(Convert.ChangeType(newValue, op.Property.PropertyType)); + } + } + + void OnGUI_Unsupported(OptionDefinition op) + { + EditorGUILayout.PrefixLabel(op.Name); + EditorGUILayout.LabelField("Unsupported Type: {0}".Fmt(op.Property.PropertyType)); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs.meta new file mode 100644 index 00000000..ae6eac01 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SROptionsWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c10ec5c3e9f1e404ba655cbc07340b94 +timeCreated: 1465649914 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs new file mode 100644 index 00000000..e6e989b8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs @@ -0,0 +1,49 @@ +using SRDebugger.Internal.Editor; +using UnityEditor; +using UnityEngine; + +namespace SRDebugger.Editor +{ + [CustomEditor(typeof (Settings))] + public class SettingsEditor : UnityEditor.Editor + { + private bool _override; + + public override void OnInspectorGUI() + { + SRDebugEditorUtil.DrawLogo(SRDebugEditorUtil.GetLogo()); + + GUILayout.Label( + "This asset contains the runtime settings used by SRDebugger. It is recommended that this asset be edited only via the SRDebugger Settings window.", + EditorStyles.wordWrappedLabel); + + EditorGUILayout.Separator(); + + if (GUILayout.Button("Open SRDebugger Settings Window")) + { + SRDebuggerSettingsWindow.Open(); + } + + if (!_override) + { + if (GUILayout.Button("Override Warning")) + { + _override = true; + } + } + else + { + GUILayout.Label( + "You have been warned...", + EditorStyles.wordWrappedLabel); + } + + EditorGUILayout.Separator(); + + if (_override) + { + base.OnInspectorGUI(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs.meta new file mode 100644 index 00000000..45f991dc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6304f38f53dfcc44f9265410f0f14050 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs new file mode 100644 index 00000000..365d7f6d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs @@ -0,0 +1,869 @@ +namespace SRDebugger.Editor +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Globalization; + using System.Linq; + using SRDebugger.Internal; + using SRDebugger.Internal.Editor; + using SRF; + using UnityEditor; + using UnityEditorInternal; + using UnityEngine; + + public class SRDebuggerSettingsWindow : EditorWindow + { + private enum ProfilerAlignment + { + TopLeft = 0, + TopRight = 1, + BottomLeft = 2, + BottomRight = 3 + } + + private enum OptionsAlignment + { + TopLeft = 0, + TopRight = 1, + BottomLeft = 2, + BottomRight = 3, + TopCenter = 6, + BottomCenter = 7 + } + + private string _currentEntryCode; + private bool _enableTabChange = true; + private Tabs _selectedTab; + private bool _showBugReportSignupForm; + private string[] _tabs = Enum.GetNames(typeof (Tabs)).Select(s => s.Replace('_', ' ')).ToArray(); + + [MenuItem("SRDebugger/OpenSetting")] + public static void OpenSettting() + { + Open(); + } + + [MenuItem(SRDebugPaths.SettingsMenuItemPath)] + public static void Open() + { + GetWindowWithRect(new Rect(0, 0, 449, 520), true, "SRDebugger - Settings", true); + } + + private void OnEnable() + { + _currentEntryCode = GetEntryCodeString(); + + if (string.IsNullOrEmpty(Settings.Instance.ApiKey)) + { + _showBugReportSignupForm = true; + } + } + + private void OnGUI() + { + // Draw header area + SRDebugEditorUtil.BeginDrawBackground(); + SRDebugEditorUtil.DrawLogo(SRDebugEditorUtil.GetLogo()); + SRDebugEditorUtil.EndDrawBackground(); + + // Draw header/content divider + EditorGUILayout.BeginVertical(SRDebugEditorUtil.Styles.SettingsHeaderBoxStyle); + EditorGUILayout.EndVertical(); + + // Draw tab buttons + var rect = EditorGUILayout.BeginVertical(GUI.skin.box); + + --rect.width; + var height = 18; + + EditorGUI.BeginChangeCheck(); + EditorGUI.BeginDisabledGroup(!_enableTabChange); + + for (var i = 0; i < _tabs.Length; ++i) + { + var xStart = Mathf.RoundToInt(i*rect.width/_tabs.Length); + var xEnd = Mathf.RoundToInt((i + 1)*rect.width/_tabs.Length); + + var pos = new Rect(rect.x + xStart, rect.y, xEnd - xStart, height); + + if (GUI.Toggle(pos, (int) _selectedTab == i, new GUIContent(_tabs[i]), EditorStyles.toolbarButton)) + { + _selectedTab = (Tabs) i; + } + } + + GUILayoutUtility.GetRect(10f, height); + + EditorGUI.EndDisabledGroup(); + + if (EditorGUI.EndChangeCheck()) + { + _scrollPosition = Vector2.zero; + GUIUtility.keyboardControl = 0; + } + + // Draw selected tab + + switch (_selectedTab) + { + case Tabs.General: + DrawTabGeneral(); + break; + + case Tabs.Layout: + DrawTabLayout(); + break; + + case Tabs.Bug_Reporter: + DrawTabBugReporter(); + break; + + case Tabs.Shortcuts: + DrawTabShortcuts(); + break; + + case Tabs.Advanced: + DrawTabAdvanced(); + break; + } + + EditorGUILayout.EndVertical(); + + // Display rating prompt and link buttons + + EditorGUILayout.LabelField(SRDebugStrings.Current.SettingsRateBoxContents, EditorStyles.miniLabel); + + SRDebugEditorUtil.DrawFooterLayout(position.width); + + if (GUI.changed) + { + EditorUtility.SetDirty(Settings.Instance); + } + } + + private enum Tabs + { + General, + Layout, + Bug_Reporter, + Shortcuts, + Advanced + } + + #region Tabs + + private void DrawTabGeneral() + { + GUILayout.Label("Loading", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + if (GUILayout.Toggle(!Settings.Instance.IsEnabled, "Disabled", SRDebugEditorUtil.Styles.RadioButton)) + { + Settings.Instance.IsEnabled = false; + } + + GUILayout.Label("Do not load SRDebugger until a manual call to SRDebug.Init().", + SRDebugEditorUtil.Styles.RadioButtonDescription); + + var msg = "Automatic (recommended)"; + + if (GUILayout.Toggle(Settings.Instance.IsEnabled, msg, + SRDebugEditorUtil.Styles.RadioButton)) + { + Settings.Instance.IsEnabled = true; + } + + GUILayout.Label("SRDebugger loads automatically when your game starts.", + SRDebugEditorUtil.Styles.RadioButtonDescription); + + EditorGUILayout.EndVertical(); + + GUILayout.Label("Panel Access", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + EditorGUILayout.HelpBox("Configure trigger location in the layout tab.", MessageType.None, true); + + Settings.Instance.EnableTrigger = + (Settings.TriggerEnableModes) + EditorGUILayout.EnumPopup(new GUIContent("Trigger Mode"), + Settings.Instance.EnableTrigger); + + EditorGUI.BeginDisabledGroup(Settings.Instance.EnableTrigger == Settings.TriggerEnableModes.Off); + + Settings.Instance.TriggerBehaviour = + (Settings.TriggerBehaviours) + EditorGUILayout.EnumPopup(new GUIContent("Trigger Behaviour"), + Settings.Instance.TriggerBehaviour); + + Settings.Instance.ErrorNotification = + EditorGUILayout.Toggle( + new GUIContent("Error Notification", + "Display a notification on the panel trigger when an error is printed to the log."), + Settings.Instance.ErrorNotification); + + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.Space(); + + Settings.Instance.DefaultTab = + (DefaultTabs) + EditorGUILayout.EnumPopup( + new GUIContent("Default Tab", SRDebugStrings.Current.SettingsDefaultTabTooltip), + Settings.Instance.DefaultTab); + + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + + Settings.Instance.RequireCode = EditorGUILayout.Toggle(new GUIContent("Require Entry Code"), + Settings.Instance.RequireCode); + + EditorGUI.BeginDisabledGroup(!Settings.Instance.RequireCode); + + Settings.Instance.RequireEntryCodeEveryTime = EditorGUILayout.Toggle(new GUIContent("...Every Time", "Require the user to enter the PIN every time they access the debug panel."), + Settings.Instance.RequireEntryCodeEveryTime); + + EditorGUILayout.EndHorizontal(); + + var newCode = EditorGUILayout.TextField("Entry Code", _currentEntryCode); + + if (newCode != _currentEntryCode) + { + // Strip out alpha numeric chars + newCode = new string(newCode.Where(char.IsDigit).ToArray()); + + // Max length = 4 + newCode = newCode.Substring(0, Mathf.Min(4, newCode.Length)); + + if (newCode.Length == 4) + { + UpdateEntryCode(newCode); + } + } + + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.Space(); + + Settings.Instance.AutomaticallyShowCursor = + EditorGUILayout.Toggle( + new GUIContent("Show Cursor", + "Automatically set the cursor to visible when the debug panel is opened, and revert when closed."), + Settings.Instance.AutomaticallyShowCursor); + + + + // Expand content area to fit all available space + GUILayout.FlexibleSpace(); + } + + private void DrawTabLayout() + { + GUILayout.Label("Pinned Tool Positions", SRDebugEditorUtil.Styles.HeaderLabel); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + var rect = GUILayoutUtility.GetRect(360, 210); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + SRDebugEditorUtil.DrawLayoutPreview(rect); + + EditorGUILayout.BeginHorizontal(); + + { + EditorGUILayout.BeginVertical(); + + GUILayout.Label("Console", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.ConsoleAlignment = + (ConsoleAlignment) EditorGUILayout.EnumPopup(Settings.Instance.ConsoleAlignment); + + EditorGUILayout.EndVertical(); + } + + { + EditorGUI.BeginDisabledGroup(Settings.Instance.EnableTrigger == Settings.TriggerEnableModes.Off); + + EditorGUILayout.BeginVertical(); + + GUILayout.Label("Entry Trigger", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.TriggerPosition = + (PinAlignment) EditorGUILayout.EnumPopup(Settings.Instance.TriggerPosition); + + EditorGUILayout.EndVertical(); + + EditorGUI.EndDisabledGroup(); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + + { + EditorGUILayout.BeginVertical(); + + GUILayout.Label("Profiler", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.ProfilerAlignment = + (PinAlignment) EditorGUILayout.EnumPopup((ProfilerAlignment)Settings.Instance.ProfilerAlignment); + + EditorGUILayout.EndVertical(); + } + + { + EditorGUILayout.BeginVertical(); + + GUILayout.Label("Options", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.OptionsAlignment = + (PinAlignment) EditorGUILayout.EnumPopup((OptionsAlignment)Settings.Instance.OptionsAlignment); + + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.EndHorizontal(); + + // Expand content area to fit all available space + GUILayout.FlexibleSpace(); + } + + private bool _enableButton; + + private void DrawTabBugReporter() + { + if (_showBugReportSignupForm) + { + DrawBugReportSignupForm(); + return; + } + + GUILayout.Label("Bug Reporter", SRDebugEditorUtil.Styles.HeaderLabel); + + EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(Settings.Instance.ApiKey)); + + Settings.Instance.EnableBugReporter = EditorGUILayout.Toggle("Enable Bug Reporter", + Settings.Instance.EnableBugReporter); + + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.BeginHorizontal(); + + Settings.Instance.ApiKey = EditorGUILayout.TextField("API Key", Settings.Instance.ApiKey); + + if (GUILayout.Button("Verify", GUILayout.ExpandWidth(false))) + { + EditorUtility.DisplayDialog("Verify API Key", ApiSignup.Verify(Settings.Instance.ApiKey), "OK"); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + GUILayout.Label( + "If you need to change your account email address, or have any other questions or concerns, please email us at contact@stompyrobot.uk.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.FlexibleSpace(); + + if (!string.IsNullOrEmpty(Settings.Instance.ApiKey)) + { + GUILayout.Label("Reset", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + GUILayout.Label("Click the button below to clear the API key and show the signup form.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + EditorGUILayout.BeginHorizontal(); + + _enableButton = EditorGUILayout.Toggle("Enable Button", _enableButton, GUILayout.ExpandWidth(false)); + + EditorGUI.BeginDisabledGroup(!_enableButton); + + if (GUILayout.Button("Reset")) + { + Settings.Instance.ApiKey = null; + Settings.Instance.EnableBugReporter = false; + _enableButton = false; + _showBugReportSignupForm = true; + } + + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + } + else + { + if (GUILayout.Button("Show Signup Form")) + { + _showBugReportSignupForm = true; + } + } + } + + private string _invoiceNumber; + private string _emailAddress; + private bool _agreeLegal; + private string _errorMessage; + + private void DrawBugReportSignupForm() + { + var isWeb = false; + +#if UNITY_WEBPLAYER + EditorGUILayout.HelpBox("Signup form is not available when build target is Web Player.", MessageType.Error); + isWeb = true; +#endif + + EditorGUI.BeginDisabledGroup(isWeb || !_enableTabChange); + + GUILayout.Label("Signup Form", SRDebugEditorUtil.Styles.HeaderLabel); + GUILayout.Label( + "SRDebugger requires a free API key to enable the bug reporter system. This form will acquire one for you.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + if ( + SRDebugEditorUtil.ClickableLabel( + "Already got an API key? Click here
.".Fmt(SRDebugEditorUtil.Styles.LinkColour), + SRDebugEditorUtil.Styles.RichTextLabel)) + { + _showBugReportSignupForm = false; + Repaint(); + } + + EditorGUILayout.Space(); + + GUILayout.Label("Invoice/Order Number", EditorStyles.boldLabel); + + GUILayout.Label( + "Enter the order number from your Asset Store purchase email.", + EditorStyles.miniLabel); + + _invoiceNumber = EditorGUILayout.TextField(_invoiceNumber); + + EditorGUILayout.Space(); + + GUILayout.Label("Email Address", EditorStyles.boldLabel); + + GUILayout.Label( + "Provide an email address where the bug reports should be sent.", + EditorStyles.miniLabel); + + _emailAddress = EditorGUILayout.TextField(_emailAddress); + + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + + if (SRDebugEditorUtil.ClickableLabel( + "I agree to the terms and conditions
.".Fmt(SRDebugEditorUtil.Styles.LinkColour), + SRDebugEditorUtil.Styles.RichTextLabel)) + { + ApiSignupTermsWindow.Open(); + } + + _agreeLegal = EditorGUILayout.Toggle(_agreeLegal); + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + var isEnabled = !string.IsNullOrEmpty(_invoiceNumber) && !string.IsNullOrEmpty(_emailAddress) && _agreeLegal; + EditorGUI.BeginDisabledGroup(!isEnabled); + + if (GUILayout.Button("Submit")) + { + _errorMessage = null; + _enableTabChange = false; + + EditorApplication.delayCall += () => + { + ApiSignup.SignUp(_emailAddress, _invoiceNumber, OnSignupResult); + Repaint(); + }; + } + + EditorGUI.EndDisabledGroup(); + + if (!string.IsNullOrEmpty(_errorMessage)) + { + EditorGUILayout.HelpBox(_errorMessage, MessageType.Error, true); + } + + GUILayout.FlexibleSpace(); + + GUILayout.Label("Having trouble? Please email contact@stompyrobot.uk for assistance.", + EditorStyles.miniLabel); + + EditorGUI.EndDisabledGroup(); + } + + private void OnSignupResult(bool didSucceed, string apiKey, string email, string error) + { + _enableTabChange = true; + _selectedTab = Tabs.Bug_Reporter; + + if (!didSucceed) + { + _errorMessage = error; + return; + } + + Settings.Instance.ApiKey = apiKey; + Settings.Instance.EnableBugReporter = true; + + EditorUtility.DisplayDialog("SRDebugger API", + "API key has been created successfully. An email has been sent to your email address ({0}) with a verification link. You must verify your email before you can receive any bug reports." + .Fmt(email), "OK"); + + _showBugReportSignupForm = false; + } + + private ReorderableList _keyboardShortcutList; + private Vector2 _scrollPosition; + + private void DrawTabShortcuts() + { + if (_keyboardShortcutList == null) + { + _keyboardShortcutList = new ReorderableList((IList) Settings.Instance.KeyboardShortcuts, + typeof (Settings.KeyboardShortcut), false, true, true, true); + _keyboardShortcutList.drawHeaderCallback = DrawKeyboardListHeaderCallback; + _keyboardShortcutList.drawElementCallback = DrawKeyboardListItemCallback; + _keyboardShortcutList.onAddCallback += OnAddKeyboardListCallback; + _keyboardShortcutList.onRemoveCallback += OnRemoveKeyboardListCallback; + } + + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + + Settings.Instance.EnableKeyboardShortcuts = EditorGUILayout.Toggle( + new GUIContent("Enable", SRDebugStrings.Current.SettingsKeyboardShortcutsTooltip), + Settings.Instance.EnableKeyboardShortcuts); + + EditorGUI.BeginDisabledGroup(!Settings.Instance.EnableKeyboardShortcuts); + + Settings.Instance.KeyboardEscapeClose = + EditorGUILayout.Toggle( + new GUIContent("Close on Esc", SRDebugStrings.Current.SettingsCloseOnEscapeTooltip), + Settings.Instance.KeyboardEscapeClose); + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + + var dupe = DetectDuplicateKeyboardShortcuts(); + + if (dupe != null) + { + var shortcut = ""; + + if (dupe.Control) + { + shortcut += "Ctrl"; + } + + if (dupe.Shift) + { + if (shortcut.Length > 0) + { + shortcut += "-"; + } + + shortcut += "Shift"; + } + + if (dupe.Alt) + { + if (shortcut.Length > 0) + { + shortcut += "-"; + } + + shortcut += "Alt"; + } + + if (shortcut.Length > 0) + { + shortcut += "-"; + } + + shortcut += dupe.Key; + + EditorGUILayout.HelpBox( + "Duplicate shortcut ({0}). Only one shortcut per key is supported.".Fmt(shortcut), + MessageType.Warning); + } + + _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, false, false, + GUILayout.Width(position.width - 11)); + + EditorGUILayout.BeginVertical(GUILayout.Width(position.width - 30)); + + _keyboardShortcutList.DoLayoutList(); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndScrollView(); + + EditorGUI.EndDisabledGroup(); + } + + private void DrawTabAdvanced() + { + _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, false, true); + + GUILayout.Label("Console", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.CollapseDuplicateLogEntries = + EditorGUILayout.Toggle( + new GUIContent("Collapse Log Entries", "Collapse duplicate log entries into single log."), + Settings.Instance.CollapseDuplicateLogEntries); + + Settings.Instance.RichTextInConsole = + EditorGUILayout.Toggle( + new GUIContent("Rich Text in Console", "Parse rich text tags in console log entries."), + Settings.Instance.RichTextInConsole); + + Settings.Instance.MaximumConsoleEntries = + EditorGUILayout.IntSlider( + new GUIContent("Max Console Entries", + "The maximum size of the console buffer. Higher values may cause performance issues on slower devices."), + Settings.Instance.MaximumConsoleEntries, 100, 6000); + + EditorGUILayout.Separator(); + GUILayout.Label("Display", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.EnableBackgroundTransparency = + EditorGUILayout.Toggle(new GUIContent("Transparent Background"), + Settings.Instance.EnableBackgroundTransparency); + + EditorGUILayout.BeginHorizontal(); + + EditorGUILayout.PrefixLabel(new GUIContent("Layer", "The layer the debug panel UI will be drawn to")); + + Settings.Instance.DebugLayer = EditorGUILayout.LayerField(Settings.Instance.DebugLayer); + + EditorGUILayout.EndHorizontal(); + + Settings.Instance.UseDebugCamera = + EditorGUILayout.Toggle( + new GUIContent("Use Debug Camera", SRDebugStrings.Current.SettingsDebugCameraTooltip), + Settings.Instance.UseDebugCamera); + + EditorGUI.BeginDisabledGroup(!Settings.Instance.UseDebugCamera); + + Settings.Instance.DebugCameraDepth = EditorGUILayout.Slider(new GUIContent("Debug Camera Depth"), + Settings.Instance.DebugCameraDepth, -100, 100); + + EditorGUI.EndDisabledGroup(); + + Settings.Instance.UIScale = + EditorGUILayout.Slider(new GUIContent("UI Scale"), Settings.Instance.UIScale, 1f, 3f); + + EditorGUILayout.Separator(); + GUILayout.Label("Enabled Tabs", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + GUILayout.Label(SRDebugStrings.Current.SettingsEnabledTabsDescription, EditorStyles.wordWrappedLabel); + EditorGUILayout.Space(); + + var disabledTabs = Settings.Instance.DisabledTabs.ToList(); + + var tabNames = Enum.GetNames(typeof (DefaultTabs)); + var tabValues = Enum.GetValues(typeof (DefaultTabs)); + + EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); + + var changed = false; + for (var i = 0; i < tabNames.Length; i++) + { + var tabName = tabNames[i]; + var tabValue = (DefaultTabs) (tabValues.GetValue(i)); + + if (tabName == "BugReporter") + { + continue; + } + + if (tabName == "SystemInformation") + { + tabName = "System Information"; + } + + EditorGUILayout.BeginHorizontal(); + + var isEnabled = !disabledTabs.Contains(tabValue); + + var isNowEnabled = EditorGUILayout.ToggleLeft(tabName, isEnabled, + SRDebugEditorUtil.Styles.LeftToggleButton); + + if (isEnabled && !isNowEnabled) + { + disabledTabs.Add(tabValue); + changed = true; + } + else if (!isEnabled && isNowEnabled) + { + disabledTabs.Remove(tabValue); + changed = true; + } + + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.EndVertical(); + + if (changed) + { + Settings.Instance.DisabledTabs = disabledTabs; + } + + GUILayout.Label("Other", SRDebugEditorUtil.Styles.InspectorHeaderStyle); + + Settings.Instance.EnableEventSystemGeneration = + EditorGUILayout.Toggle( + new GUIContent("Automatic Event System", "Automatically create a UGUI EventSystem if none is found in the scene."), + Settings.Instance.EnableEventSystemGeneration); + + Settings.Instance.UnloadOnClose = + EditorGUILayout.Toggle( + new GUIContent("Unload When Closed", "Unload the debug panel from the scene when it is closed."), + Settings.Instance.UnloadOnClose); + + EditorGUILayout.HelpBox( + "The panel loads again automatically when opened. You can always unload the panel by holding down the close button.", + MessageType.Info); + + EditorGUILayout.Separator(); + + if (GUILayout.Button("Run Migrations")) + { + Migrations.RunMigrations(true); + } + + EditorGUILayout.EndScrollView(); + } + + #endregion + + #region Entry Code Utility + + private string GetEntryCodeString() + { + var entryCode = Settings.Instance.EntryCode; + + if (entryCode.Count == 0) + { + Settings.Instance.EntryCode = new[] {0, 0, 0, 0}; + } + + var code = ""; + + for (var i = 0; i < entryCode.Count; i++) + { + code += entryCode[i]; + } + + return code; + } + + private void UpdateEntryCode(string str) + { + var newCode = new List(); + + for (var i = 0; i < str.Length; i++) + { + newCode.Add(int.Parse(str[i].ToString(), NumberStyles.Integer)); + } + + Settings.Instance.EntryCode = newCode; + _currentEntryCode = GetEntryCodeString(); + } + + #endregion + + #region Keyboard Shortcut Utility + + private Settings.KeyboardShortcut DetectDuplicateKeyboardShortcuts() + { + var s = Settings.Instance.KeyboardShortcuts; + + return + s.FirstOrDefault( + shortcut => + s.Any( + p => + p != shortcut && p.Shift == shortcut.Shift && p.Control == shortcut.Control && + p.Alt == shortcut.Alt && + p.Key == shortcut.Key)); + } + + private void DrawKeyboardListHeaderCallback(Rect rect) + { + EditorGUI.LabelField(rect, "Keyboard Shortcuts"); + } + + private void DrawKeyboardListItemCallback(Rect rect, int index, bool isActive, bool isFocused) + { + var item = Settings.Instance.KeyboardShortcuts[index]; + + rect.y += 2; + + var buttonWidth = 40; + var padding = 5; + + item.Control = GUI.Toggle(new Rect(rect.x, rect.y, buttonWidth, EditorGUIUtility.singleLineHeight), + item.Control, + "Ctrl", "Button"); + rect.x += buttonWidth + padding; + rect.width -= buttonWidth + padding; + + item.Alt = GUI.Toggle(new Rect(rect.x, rect.y, buttonWidth, EditorGUIUtility.singleLineHeight), item.Alt, + "Alt", + "Button"); + rect.x += buttonWidth + padding; + rect.width -= buttonWidth + padding; + + item.Shift = GUI.Toggle(new Rect(rect.x, rect.y, buttonWidth, EditorGUIUtility.singleLineHeight), item.Shift, + "Shift", + "Button"); + rect.x += buttonWidth + padding; + rect.width -= buttonWidth + padding; + + item.Key = + (KeyCode) EditorGUI.EnumPopup(new Rect(rect.x, rect.y, 80, EditorGUIUtility.singleLineHeight), item.Key); + + rect.x += 80 + padding; + rect.width -= 80 + padding; + + item.Action = + (Settings.ShortcutActions) + EditorGUI.EnumPopup(new Rect(rect.x, rect.y, rect.width - 4, EditorGUIUtility.singleLineHeight), + item.Action); + } + + private void OnAddKeyboardListCallback(ReorderableList list) + { + var shortcuts = Settings.Instance.KeyboardShortcuts.ToList(); + shortcuts.Add(new Settings.KeyboardShortcut()); + + Settings.Instance.KeyboardShortcuts = shortcuts; + list.list = (IList) Settings.Instance.KeyboardShortcuts; + } + + private void OnRemoveKeyboardListCallback(ReorderableList list) + { + var shortcuts = Settings.Instance.KeyboardShortcuts.ToList(); + shortcuts.RemoveAt(list.index); + + Settings.Instance.KeyboardShortcuts = shortcuts; + list.list = (IList) Settings.Instance.KeyboardShortcuts; + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs.meta new file mode 100644 index 00000000..23058d0d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/SettingsWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a6cf957f3eda7b429dd0eae2cfbb40c +timeCreated: 1441902550 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef new file mode 100644 index 00000000..4c892673 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef @@ -0,0 +1,11 @@ +{ + "name": "StompyRobot.SRDebugger.Editor", + "references": [ + "StompyRobot.SRDebugger", + "StompyRobot.SRF" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef.meta new file mode 100644 index 00000000..6ccbaf8f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/StompyRobot.SRDebugger.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 07ab30a82c1032d45ad726f7216628e8 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs new file mode 100644 index 00000000..4656796b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs @@ -0,0 +1,208 @@ +using System; +using SRDebugger.Internal; +using SRDebugger.Internal.Editor; +using SRF; +using UnityEditor; +using UnityEngine; + +namespace SRDebugger.Editor +{ + [InitializeOnLoad] + public class WelcomeWindow : EditorWindow + { + private const string WelcomeWindowPlayerPrefsKey = "SRDEBUGGER_WELCOME_SHOWN_VERSION"; + private Texture2D _demoSprite; + private Vector2 _scrollPosition; + + static WelcomeWindow() + { + EditorApplication.update += OpenUpdate; + } + + private static void OpenUpdate() + { + if (ShouldOpen()) + { + Open(); + } + + EditorApplication.update -= OpenUpdate; + } + + [MenuItem(SRDebugPaths.WelcomeItemPath)] + public static void Open() + { + GetWindowWithRect(new Rect(0, 0, 449, 500), true, "SRDebugger - Welcome", true); + } + + public static bool ShouldOpen() + { + var hasKey = EditorPrefs.HasKey(WelcomeWindowPlayerPrefsKey); + + if (!hasKey) + { + return true; + } + + var value = EditorPrefs.GetString(WelcomeWindowPlayerPrefsKey); + + if (value != SRDebug.Version) + { + return true; + } + + return false; + } + + private void OnEnable() + { + EditorPrefs.SetString(WelcomeWindowPlayerPrefsKey, SRDebug.Version); + } + + private void OnGUI() + { + // Draw header area + SRDebugEditorUtil.BeginDrawBackground(); + SRDebugEditorUtil.DrawLogo(SRDebugEditorUtil.GetWelcomeLogo()); + SRDebugEditorUtil.EndDrawBackground(); + + // Draw header/content divider + EditorGUILayout.BeginVertical(SRDebugEditorUtil.Styles.SettingsHeaderBoxStyle); + EditorGUILayout.EndVertical(); + + _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); + + GUILayout.Label("Welcome", SRDebugEditorUtil.Styles.HeaderLabel); + + GUILayout.Label( + "Thank you for purchasing SRDebugger, your support is very much appreciated and we hope you find it useful for your project. " + + "This window contains a quick guide to get to help get you started with SRDebugger.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + if (SRDebugEditorUtil.ClickableLabel( + "Note: For more detailed information click here
to visit the online documentation." + .Fmt(SRDebugEditorUtil.Styles.LinkColour), + SRDebugEditorUtil.Styles.ParagraphLabel)) + { + Application.OpenURL(SRDebugStrings.Current.SettingsDocumentationUrl); + } + +#if UNITY_5_3_0 || UNITY_5_3_1 || UNITY_5_3_2 + EditorGUILayout.HelpBox( + "On Unity versions prior to 5.3.3 there is a bug causing errors to be printed to the console when using the docked tools. Please upgrade to at least Unity 5.3.3 to prevent this bug.", + MessageType.Warning, true); +#endif + GUILayout.Label("Quick Start", SRDebugEditorUtil.Styles.HeaderLabel); +#if UNITY_5 || UNITY_5_3_OR_NEWER + + GUILayout.Label( + "Now that you have imported the package, you should find the trigger available in the top-left of your game window when in play mode. " + + "Triple-clicking this trigger will bring up the debug panel. The trigger is hidden until clicked.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "By default, SRDebugger loads automatically when your game starts. " + + "You can change this behaviour from the SRDebugger Settings window.", + SRDebugEditorUtil.Styles.ParagraphLabel); + +#else + + GUILayout.Label( + "Drag the SRDebugger.Init prefab into the first scene of your game. " + + "Once initialised, SRDebugger will be available even after loading new scenes. We recommend adding the SRDebugger.Init prefab to the first scene " + + "of your game so that the debug panel is available in all subsequent scenes.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "Once the prefab is in your scene, you should find the trigger available in the top-left of your game window when in play mode. " + + "Triple-clicking this trigger will bring up the debug panel. The trigger is hidden until clicked.", + SRDebugEditorUtil.Styles.ParagraphLabel); + +#endif + + DrawVideo(); + + EditorGUILayout.Space(); + + GUILayout.Label("Customization", SRDebugEditorUtil.Styles.HeaderLabel); + + if (SRDebugEditorUtil.ClickableLabel( + "Many features of SRDebugger can be configured from the SRDebugger Settings
window." + .Fmt( + SRDebugEditorUtil.Styles.LinkColour), SRDebugEditorUtil.Styles.ParagraphLabel)) + { + SRDebuggerSettingsWindow.Open(); + } + + GUILayout.Label( + "From the settings window you can configure loading behaviour, trigger position, docked tools layout, and more. " + + "You can enable the bug reporter service by using the sign-up form to get a free API key.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label("What Next?", SRDebugEditorUtil.Styles.HeaderLabel); + + if (SRDebugEditorUtil.ClickableLabel( + "For more detailed information about SRDebugger's features or details about the Options Tab and script API, check the online documentation
." + .Fmt(SRDebugEditorUtil.Styles.LinkColour), SRDebugEditorUtil.Styles.ParagraphLabel)) + { + Application.OpenURL(SRDebugStrings.Current.SettingsDocumentationUrl); + } + + GUILayout.Label( + "Thanks again for purchasing SRDebugger. " + + "If you find it useful please consider leaving a rating or review on the Asset Store page to help us spread the word. ", + SRDebugEditorUtil.Styles.ParagraphLabel); + + GUILayout.Label( + "If you have any questions or concerns please do not hesitate to get in touch with us via email or the Unity forums.", + SRDebugEditorUtil.Styles.ParagraphLabel); + + SRDebugEditorUtil.DrawFooterLayout(position.width - 15); + + EditorGUILayout.EndScrollView(); + + Repaint(); + } + + private void DrawVideo() + { + if (_demoSprite == null) + { + _demoSprite = SRDebugEditorUtil.LoadResource("Editor/DemoSprite.png"); + } + + if (_demoSprite == null) + return; + + var frameWidth = 400; + var frameHeight = 300; + var framePadding = 0; + var extraFramesStart = 5; + var extraFramesEnd = 20; + var totalFrames = 29; + var fps = 16f; + + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + + var rect = GUILayoutUtility.GetRect(400*0.75f, 300*0.75f, GUILayout.ExpandHeight(false), + GUILayout.ExpandWidth(false)); + + var frame = ((int) (EditorApplication.timeSinceStartup*fps))% + (totalFrames + extraFramesStart + extraFramesEnd); + frame -= extraFramesStart; + + var actualFrame = Mathf.Clamp(frame, 0, totalFrames); + + SRDebugEditorUtil.RenderGif(rect, _demoSprite, actualFrame, frameWidth, frameHeight, 5, framePadding, + framePadding); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs.meta new file mode 100644 index 00000000..9180b724 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Editor/WelcomeWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1e35f7047e81c2247ae9a5bfd682e156 +timeCreated: 1442417928 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal.meta new file mode 100644 index 00000000..167faa2b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 719f45e4748815645b1df26fc728ed66 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs new file mode 100644 index 00000000..7bb987ba --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs @@ -0,0 +1,16 @@ +namespace SRDebugger.Internal +{ + public static class SRDebugApi + { + +#if !UNITY_EDITOR + public const string Protocol = "https://"; +#else + public const string Protocol = "http://"; +#endif + + public const string EndPoint = Protocol + "srdebugger.stompyrobot.uk"; + + public const string BugReportEndPoint = EndPoint + "/report/submit"; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs.meta new file mode 100644 index 00000000..fb000b63 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Api.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a0f930eb7b829c40a5ba3024eed594d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs new file mode 100644 index 00000000..452d3f09 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs @@ -0,0 +1,96 @@ +namespace SRDebugger.Internal +{ + using System.Collections.Generic; + using System.IO; + using System.Net; + using SRF; + + public static class SRDebugApiUtil + { + public static string ParseErrorException(WebException ex) + { + if (ex.Response == null) + { + return ex.Message; + } + + try + { + var response = ReadResponseStream(ex.Response); + + return ParseErrorResponse(response); + } + catch + { + return ex.Message; + } + } + + public static string ParseErrorResponse(string response, string fallback = "Unexpected Response") + { + try + { + var jsonTable = (Dictionary) Json.Deserialize(response); + + var error = ""; + + error += jsonTable["errorMessage"]; + + object value; + + if (jsonTable.TryGetValue("errors", out value) && value is IList) + { + var errors = value as IList; + + foreach (var e in errors) + { + error += "\n"; + error += e; + } + } + + return error; + } + catch + { + if (response.Contains("")) + { + return fallback; + } + + return response; + } + } + +#if UNITY_EDITOR || (!NETFX_CORE && !UNITY_WINRT) + + public static bool ReadResponse(HttpWebRequest request, out string result) + { + try + { + var response = request.GetResponse(); + result = ReadResponseStream(response); + + return true; + } + catch (WebException e) + { + result = ParseErrorException(e); + return false; + } + } + +#endif + + public static string ReadResponseStream(WebResponse stream) + { + using (var responseSteam = stream.GetResponseStream()) + { + using (var streamReader = new StreamReader(responseSteam)) + { + return streamReader.ReadToEnd(); + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs.meta new file mode 100644 index 00000000..a6e3ab40 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/ApiUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f41e06622aa4979458cf59f1a355095a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs new file mode 100644 index 00000000..0886d22f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs @@ -0,0 +1,205 @@ + +using System.IO; +using System.Text; +using UnityEngine.Networking; + +#if NETFX_CORE +using UnityEngine.Windows; +#endif + +namespace SRDebugger.Internal +{ + using System; + using System.Collections; + using System.Collections.Generic; + using Services; + using SRF; + using UnityEngine; + + public class BugReportApi + { + private readonly string _apiKey; + private readonly BugReport _bugReport; + private bool _isBusy; + + private UnityWebRequest _webRequest; + + public BugReportApi(BugReport report, string apiKey) + { + _bugReport = report; + _apiKey = apiKey; + } + + public bool IsComplete { get; private set; } + public bool WasSuccessful { get; private set; } + public string ErrorMessage { get; private set; } + + public float Progress + { + get + { + if (_webRequest == null) + { + return 0; + } + + return Mathf.Clamp01(_webRequest.uploadProgress); + } + } + + public IEnumerator Submit() + { + //Debug.Log("[BugReportApi] Submit()"); + + if (_isBusy) + { + throw new InvalidOperationException("BugReportApi is already sending a bug report"); + } + + // Reset state + _isBusy = true; + ErrorMessage = ""; + IsComplete = false; + WasSuccessful = false; + _webRequest = null; + + string json; + byte[] jsonBytes; + + try + { + json = BuildJsonRequest(_bugReport); + jsonBytes = Encoding.UTF8.GetBytes(json); + } + catch (Exception e) + { + ErrorMessage = "Error building bug report."; + Debug.LogError(e); + SetCompletionState(false); + yield break; + } + + try + { + const string jsonContentType = "application/json"; + + _webRequest = new UnityWebRequest(SRDebugApi.BugReportEndPoint, UnityWebRequest.kHttpVerbPOST, + new DownloadHandlerBuffer(), new UploadHandlerRaw(jsonBytes) + { + contentType = jsonContentType + }); + + _webRequest.SetRequestHeader("Accept", jsonContentType); + _webRequest.SetRequestHeader("X-ApiKey", _apiKey); + } + catch (Exception e) + { + ErrorMessage = "Error building bug report request."; + Debug.LogError(e); + + if (_webRequest != null) + { + _webRequest.Dispose(); + } + + SetCompletionState(false); + } + + if (_webRequest == null) + { + SetCompletionState(false); + yield break; + } + +#if !UNITY_2017_2_OR_NEWER + yield return _webRequest.Send(); +#else + yield return _webRequest.SendWebRequest(); +#endif + +#if !UNITY_2017_1_OR_NEWER + if(_webRequest.isError) +#else + if (_webRequest.isNetworkError) +#endif + { + ErrorMessage = "Request Error: " + _webRequest.error; + SetCompletionState(false); + _webRequest.Dispose(); + yield break; + } + + long responseCode = _webRequest.responseCode; + var responseJson = _webRequest.downloadHandler.text; + + _webRequest.Dispose(); + + if (responseCode != 200) + { + ErrorMessage = "Server: " + SRDebugApiUtil.ParseErrorResponse(responseJson, "Unknown response from server"); + SetCompletionState(false); + yield break; + } + + SetCompletionState(true); + } + + private void SetCompletionState(bool wasSuccessful) + { + _bugReport.ScreenshotData = null; + WasSuccessful = wasSuccessful; + IsComplete = true; + _isBusy = false; + + if (!wasSuccessful) + { + Debug.LogError("Bug Reporter Error: " + ErrorMessage); + } + } + + private static string BuildJsonRequest(BugReport report) + { + var ht = new Hashtable(); + + ht.Add("userEmail", report.Email); + ht.Add("userDescription", report.UserDescription); + + ht.Add("console", CreateConsoleDump()); + ht.Add("systemInformation", report.SystemInformation); + + if (report.ScreenshotData != null) + { + ht.Add("screenshot", Convert.ToBase64String(report.ScreenshotData)); + } + + var json = Json.Serialize(ht); + + return json; + } + + private static IList> CreateConsoleDump() + { + var list = new List>(); + + var consoleLog = Service.Console.AllEntries; + + foreach (var consoleEntry in consoleLog) + { + var entry = new List(); + + entry.Add(consoleEntry.LogType.ToString()); + entry.Add(consoleEntry.Message); + entry.Add(consoleEntry.StackTrace); + + if (consoleEntry.Count > 1) + { + entry.Add(consoleEntry.Count.ToString()); + } + + list.Add(entry); + } + + return list; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs.meta new file mode 100644 index 00000000..0fc80858 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportApi.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfdfb4c8f27446b4d8aa88d3980f4c50 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs new file mode 100644 index 00000000..5caf9aea --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs @@ -0,0 +1,29 @@ +namespace SRDebugger.Internal +{ + using System.Collections; + using UnityEngine; + + public class BugReportScreenshotUtil + { + public static byte[] ScreenshotData; + + public static IEnumerator ScreenshotCaptureCo() + { + if (ScreenshotData != null) + { + Debug.LogWarning("[SRDebugger] Warning, overriding existing screenshot data."); + } + + yield return new WaitForEndOfFrame(); + + var tex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); + + tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0); + tex.Apply(); + + ScreenshotData = tex.EncodeToPNG(); + + Object.Destroy(tex); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs.meta new file mode 100644 index 00000000..6e0de2e8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/BugReportScreenshotUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52ead462624dc0c4d80e12ce55109a26 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs new file mode 100644 index 00000000..4d3e5b01 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs @@ -0,0 +1,378 @@ + /* + ---------------------------------------------------------------------------- + "THE BEER-WARE LICENSE" (Revision 42): + Joao Portela wrote this file. As long as you retain this notice you + can do whatever you want with this stuff. If we meet some day, and you think + this stuff is worth it, you can buy me a beer in return. + Joao Portela + -------------------------------------------------------------------------- + * https://github.com/joaoportela/CircullarBuffer-CSharp +*/ + +namespace SRDebugger +{ + using System; + using System.Collections; + using System.Collections.Generic; + + public interface IReadOnlyList : IEnumerable + { + int Count { get; } + + T this[int index] { get; } + } + + /// + /// Circular buffer. + /// When writting to a full buffer: + /// PushBack -> removes this[0] / Front() + /// PushFront -> removes this[Size-1] / Back() + /// this implementation is inspired by + /// http://www.boost.org/doc/libs/1_53_0/libs/circular_buffer/doc/circular_buffer.html + /// because I liked their interface. + /// + public class CircularBuffer : IEnumerable, IReadOnlyList + { + private readonly T[] _buffer; + + /// + /// The _end. Index after the last element in the buffer. + /// + private int _end; + + /// + /// The _size. Buffer size. + /// + private int _count; + + /// + /// The _start. Index of the first element in buffer. + /// + private int _start; + + public CircularBuffer(int capacity) + : this(capacity, new T[] {}) {} + + /// + /// Initializes a new instance of the class. + /// + /// + /// Buffer capacity. Must be positive. + /// + /// + /// Items to fill buffer with. Items length must be less than capacity. + /// Sugestion: use Skip(x).Take(y).ToArray() to build this argument from + /// any enumerable. + /// + public CircularBuffer(int capacity, T[] items) + { + if (capacity < 1) + { + throw new ArgumentException( + "Circular buffer cannot have negative or zero capacity.", "capacity"); + } + if (items == null) + { + throw new ArgumentNullException("items"); + } + if (items.Length > capacity) + { + throw new ArgumentException( + "Too many items to fit circular buffer", "items"); + } + + _buffer = new T[capacity]; + + Array.Copy(items, _buffer, items.Length); + _count = items.Length; + + _start = 0; + _end = _count == capacity ? 0 : _count; + } + + /// + /// Maximum capacity of the buffer. Elements pushed into the buffer after + /// maximum capacity is reached (IsFull = true), will remove an element. + /// + public int Capacity + { + get { return _buffer.Length; } + } + + public bool IsFull + { + get { return Count == Capacity; } + } + + public bool IsEmpty + { + get { return Count == 0; } + } + + /// + /// Current buffer size (the number of elements that the buffer has). + /// + public int Count + { + get { return _count; } + } + + public T this[int index] + { + get + { + if (IsEmpty) + { + throw new IndexOutOfRangeException(string.Format("Cannot access index {0}. Buffer is empty", index)); + } + if (index >= _count) + { + throw new IndexOutOfRangeException(string.Format("Cannot access index {0}. Buffer size is {1}", + index, _count)); + } + var actualIndex = InternalIndex(index); + return _buffer[actualIndex]; + } + set + { + if (IsEmpty) + { + throw new IndexOutOfRangeException(string.Format("Cannot access index {0}. Buffer is empty", index)); + } + if (index >= _count) + { + throw new IndexOutOfRangeException(string.Format("Cannot access index {0}. Buffer size is {1}", + index, _count)); + } + var actualIndex = InternalIndex(index); + _buffer[actualIndex] = value; + } + } + + public void Clear() + { + _count = 0; + _start = 0; + _end = 0; + } + + #region IEnumerable implementation + + public IEnumerator GetEnumerator() + { + var segments = new ArraySegment[2] {ArrayOne(), ArrayTwo()}; + foreach (var segment in segments) + { + for (var i = 0; i < segment.Count; i++) + { + yield return segment.Array[segment.Offset + i]; + } + } + } + + #endregion + + #region IEnumerable implementation + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + #endregion + + #region IList implementation + + + + #endregion + + /// + /// Element at the front of the buffer - this[0]. + /// + /// The value of the element of type T at the front of the buffer. + public T Front() + { + ThrowIfEmpty(); + return _buffer[_start]; + } + + /// + /// Element at the back of the buffer - this[Size - 1]. + /// + /// The value of the element of type T at the back of the buffer. + public T Back() + { + ThrowIfEmpty(); + return _buffer[(_end != 0 ? _end : _count) - 1]; + } + + /// + /// Pushes a new element to the back of the buffer. Back()/this[Size-1] + /// will now return this element. + /// When the buffer is full, the element at Front()/this[0] will be + /// popped to allow for this new element to fit. + /// + /// Item to push to the back of the buffer + public void PushBack(T item) + { + if (IsFull) + { + _buffer[_end] = item; + Increment(ref _end); + _start = _end; + } + else + { + _buffer[_end] = item; + Increment(ref _end); + ++_count; + } + } + + /// + /// Pushes a new element to the front of the buffer. Front()/this[0] + /// will now return this element. + /// When the buffer is full, the element at Back()/this[Size-1] will be + /// popped to allow for this new element to fit. + /// + /// Item to push to the front of the buffer + public void PushFront(T item) + { + if (IsFull) + { + Decrement(ref _start); + _end = _start; + _buffer[_start] = item; + } + else + { + Decrement(ref _start); + _buffer[_start] = item; + ++_count; + } + } + + /// + /// Removes the element at the back of the buffer. Decreassing the + /// Buffer size by 1. + /// + public void PopBack() + { + ThrowIfEmpty("Cannot take elements from an empty buffer."); + Decrement(ref _end); + _buffer[_end] = default(T); + --_count; + } + + /// + /// Removes the element at the front of the buffer. Decreassing the + /// Buffer size by 1. + /// + public void PopFront() + { + ThrowIfEmpty("Cannot take elements from an empty buffer."); + _buffer[_start] = default(T); + Increment(ref _start); + --_count; + } + + /// + /// Copies the buffer contents to an array, acording to the logical + /// contents of the buffer (i.e. independent of the internal + /// order/contents) + /// + /// A new array with a copy of the buffer contents. + public T[] ToArray() + { + var newArray = new T[Count]; + var newArrayOffset = 0; + var segments = new ArraySegment[2] {ArrayOne(), ArrayTwo()}; + foreach (var segment in segments) + { + Array.Copy(segment.Array, segment.Offset, newArray, newArrayOffset, segment.Count); + newArrayOffset += segment.Count; + } + return newArray; + } + + private void ThrowIfEmpty(string message = "Cannot access an empty buffer.") + { + if (IsEmpty) + { + throw new InvalidOperationException(message); + } + } + + /// + /// Increments the provided index variable by one, wrapping + /// around if necessary. + /// + /// + private void Increment(ref int index) + { + if (++index == Capacity) + { + index = 0; + } + } + + /// + /// Decrements the provided index variable by one, wrapping + /// around if necessary. + /// + /// + private void Decrement(ref int index) + { + if (index == 0) + { + index = Capacity; + } + index--; + } + + /// + /// Converts the index in the argument to an index in _buffer + /// + /// + /// The transformed index. + /// + /// + /// External index. + /// + private int InternalIndex(int index) + { + return _start + (index < (Capacity - _start) ? index : index - Capacity); + } + + // doing ArrayOne and ArrayTwo methods returning ArraySegment as seen here: + // http://www.boost.org/doc/libs/1_37_0/libs/circular_buffer/doc/circular_buffer.html#classboost_1_1circular__buffer_1957cccdcb0c4ef7d80a34a990065818d + // http://www.boost.org/doc/libs/1_37_0/libs/circular_buffer/doc/circular_buffer.html#classboost_1_1circular__buffer_1f5081a54afbc2dfc1a7fb20329df7d5b + // should help a lot with the code. + + #region Array items easy access. + + // The array is composed by at most two non-contiguous segments, + // the next two methods allow easy access to those. + + private ArraySegment ArrayOne() + { + if (_start <= _end) + { + return new ArraySegment(_buffer, _start, _end - _start); + } + return new ArraySegment(_buffer, _start, _buffer.Length - _start); + } + + private ArraySegment ArrayTwo() + { + if (_start < _end) + { + return new ArraySegment(_buffer, _end, 0); + } + return new ArraySegment(_buffer, 0, _end); + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs.meta new file mode 100644 index 00000000..25ece337 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/CircularBuffer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39fd981a95abcb647a9c6ecd52007e71 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs new file mode 100644 index 00000000..646e9560 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs @@ -0,0 +1,517 @@ +#if UNITY_EDITOR + +namespace SRDebugger.Internal.Editor +{ + using System; + using System.IO; + using UnityEditor; + using UnityEngine; + + public static class SRDebugEditorUtil + { + // Path to this file from the root path + private const string TestPath = "SRDebugger/README.txt"; + private static GUIStyle _bgStyle; + private static Texture2D _logoTexture; + private static Texture2D _welcomeLogoTexture; + private static Texture2D _bgTexture; + private static GUIStyle _middleAlign; + + public static string GetRootPath() + { + // Find assets that match this file name + var potentialAssets = AssetDatabase.FindAssets("README"); + + foreach (var potentialAsset in potentialAssets) + { + var path = AssetDatabase.GUIDToAssetPath(potentialAsset); + + if (path.Contains(TestPath)) + { + var rootPath = Path.GetDirectoryName(path); + return rootPath; + } + } + + throw new Exception("Unable to find SRDebugger root path"); + } + + public static T LoadResource(string path) where T : UnityEngine.Object + { + var p = GetRootPath() + "/" + path; + //Debug.Log("[SRDebugger] Loading " + p); + var asset = AssetDatabase.LoadAssetAtPath(p, typeof (T)); + return asset as T; + } + + public static Texture2D GetLogo() + { + if (_logoTexture != null) + { + return _logoTexture; + } + + return + _logoTexture = + LoadResource("Editor/Logo_" + (EditorGUIUtility.isProSkin ? "DarkBG" : "LightBG") + + ".png"); + } + + public static Texture2D GetWelcomeLogo() + { + if (_welcomeLogoTexture != null) + { + return _welcomeLogoTexture; + } + + return + _welcomeLogoTexture = + LoadResource("Editor/WelcomeLogo_" + + (EditorGUIUtility.isProSkin ? "DarkBG" : "LightBG") + ".png"); + } + + public static Texture2D GetBackground() + { + if (_bgTexture != null) + { + return _bgTexture; + } + + return + _bgTexture = + LoadResource("Editor/BG_" + (EditorGUIUtility.isProSkin ? "Dark" : "Light") + ".png"); + } + + public static void DrawLogo(Texture2D logo) + { + if (logo == null) + { + Debug.LogError("Error loading SRDebugger logo"); + return; + } + + var rect = EditorGUILayout.BeginVertical(); + + GUILayout.Space(15); + + EditorGUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + + GUI.DrawTexture( + GUILayoutUtility.GetRect(logo.width, logo.width, logo.height, logo.height, GUILayout.ExpandHeight(false), + GUILayout.ExpandWidth(false)), + logo); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndHorizontal(); + + GUILayout.Space(15); + + EditorGUILayout.EndVertical(); + + var size = EditorStyles.miniLabel.CalcSize(new GUIContent(SRDebug.Version)); + GUI.Label(new Rect(rect.xMax - size.x, rect.yMax - size.y, size.x, size.y), SRDebug.Version, + EditorStyles.miniLabel); + } + + public static bool DrawInspectorFoldout(bool isVisible, string content) + { + isVisible = EditorGUILayout.Foldout(isVisible, content, Styles.InspectorHeaderFoldoutStyle); + + EditorGUILayout.Separator(); + + return isVisible; + } + + public static void BeginDrawBackground() + { + if (_bgStyle == null) + { + _bgStyle = new GUIStyle(); + _bgStyle.margin = _bgStyle.padding = new RectOffset(0, 0, 0, 0); + } + + var rect = EditorGUILayout.BeginVertical(_bgStyle); + + DrawTextureTiled(rect, GetBackground()); + } + + public static void EndDrawBackground() + { + EditorGUILayout.EndVertical(); + } + + public static void DrawTextureTiled(Rect rect, Texture2D tex) + { + GUI.BeginGroup(rect); + + var tilesX = Mathf.Max(1, Mathf.CeilToInt(rect.width/tex.width)); + var tilesY = Mathf.Max(1, Mathf.CeilToInt(rect.height/tex.height)); + + for (var x = 0; x < tilesX; x++) + { + for (var y = 0; y < tilesY; y++) + { + var pos = new Rect(x*tex.width, y*tex.height, tex.width, tex.height); + pos.x += rect.x; + pos.y += rect.y; + + GUI.DrawTexture(pos, tex, ScaleMode.ScaleAndCrop); + } + } + + GUI.EndGroup(); + } + + public static bool ClickableLabel(string text, GUIStyle style) + { + var rect = EditorGUILayout.BeginVertical(Styles.NoPaddingNoMargin); + + GUILayout.Label(text, style); + + EditorGUILayout.EndVertical(); + + if (Event.current.type == EventType.MouseUp && rect.Contains(Event.current.mousePosition)) + { + return true; + } + + return false; + } + + public static void DrawLayoutPreview(Rect rect) + { + const int profilerWidth = 120; + const int profilerHeight = 70; + const int optionsWidth = 150; + const int optionsHeight = 36; + + if (_middleAlign == null) + { + _middleAlign = new GUIStyle(EditorStyles.helpBox); + _middleAlign.alignment = TextAnchor.MiddleCenter; + } + + var iconPath = "Editor/Icons/" + (EditorGUIUtility.isProSkin ? "Light" : "Dark"); + + const float consoleHeight = 90; + + GUI.Box(rect, "", EditorStyles.helpBox); + + var consoleAlignment = Settings.Instance.ConsoleAlignment; + + var consoleRect = new Rect(rect.x, + consoleAlignment == ConsoleAlignment.Top ? rect.y : rect.yMax - consoleHeight, rect.width, + consoleHeight); + + GUI.Box(consoleRect, new GUIContent(LoadResource(iconPath + "/console-25.png"), "Console"), + _middleAlign); + + var workRect = rect; + + if (consoleAlignment == ConsoleAlignment.Top) + { + workRect.yMin += consoleHeight; + } + else + { + workRect.yMax -= consoleHeight; + } + + var opAlignment = Settings.Instance.OptionsAlignment; + var proAlignment = Settings.Instance.ProfilerAlignment; + + GUI.Box(GetAlignedRect(profilerWidth, profilerHeight, proAlignment, workRect), + new GUIContent(LoadResource(iconPath + "/profiler-25.png"), "Profiler"), _middleAlign); + + var optionsRect = workRect; + + if ((opAlignment == PinAlignment.TopCenter && proAlignment == PinAlignment.TopLeft) || (opAlignment == PinAlignment.BottomCenter && proAlignment == PinAlignment.BottomLeft)) + { + optionsRect.x += profilerWidth; + optionsRect.width -= profilerWidth; + } else if ((opAlignment == PinAlignment.TopCenter && proAlignment == PinAlignment.TopRight) || + opAlignment == PinAlignment.BottomCenter && proAlignment == PinAlignment.BottomRight) + { + optionsRect.width -= profilerWidth; + } + + GUI.Box(GetAlignedRect(optionsWidth, optionsHeight, opAlignment, optionsRect), + new GUIContent(LoadResource(iconPath + "/options-25.png"), "Pinned Options"), _middleAlign); + + if (Settings.Instance.EnableTrigger != Settings.TriggerEnableModes.Off) + { + GUI.Box(GetAlignedRect(25, 25, Settings.Instance.TriggerPosition, rect), + new GUIContent("", "Entry Trigger"), + _middleAlign); + } + } + + private static Rect GetAlignedRect(int width, int height, PinAlignment alignment, Rect workRect) + { + var rect = new Rect(0, 0, width, height); + + if (alignment == PinAlignment.BottomLeft || alignment == PinAlignment.BottomRight || alignment == PinAlignment.BottomCenter) + { + rect.position = new Vector2(0, workRect.height - rect.height); + } else if (alignment == PinAlignment.CenterLeft || alignment == PinAlignment.CenterRight) + { + rect.position = new Vector2(0, workRect.height/2 - rect.height/2); + } + + if (alignment == PinAlignment.TopRight || alignment == PinAlignment.BottomRight || alignment == PinAlignment.CenterRight) + { + rect.position += new Vector2(workRect.width - rect.width, 0); + } else if (alignment == PinAlignment.TopCenter || alignment == PinAlignment.BottomCenter) + { + rect.position += new Vector2(workRect.width/2 - rect.width/2, 0); + } + + rect.position += workRect.position; + + return rect; + } + + public static void RenderGif(Rect pos, Texture2D map, int frameNo, int frameWidth, int frameHeight, int perLine, + int paddingX = 0, int paddingY = 0) + { + var x = frameNo%perLine; + var y = Mathf.FloorToInt((float) frameNo/perLine); + + var xCoord = x*(frameWidth + paddingX); + var yCoord = (y + 1)*(frameHeight + paddingY); + + var texCoords = new Rect( + xCoord/(float) map.width, + (map.height - yCoord)/(float) map.height, + (frameWidth)/(float) map.width, + (frameHeight)/(float) map.height); + + GUI.DrawTextureWithTexCoords(pos, map, texCoords); + + //Debug.Log(texCoords); + //Debug.Log("x: " + x + ", y: " + y); + } + + public static void DrawFooterLayout(float width) + { + EditorGUILayout.BeginHorizontal(); + + var margin = (EditorStyles.miniButton.padding.left)/2f; + width = width - margin*2; + + if (GUILayout.Button("Web Site", GUILayout.Width(width/2f - margin))) + { + Application.OpenURL(SRDebugStrings.Current.SettingsWebSiteUrl); + } + + if (GUILayout.Button("Asset Store Page", GUILayout.Width(width/2f - margin))) + { + Application.OpenURL(SRDebugStrings.Current.SettingsAssetStoreUrl); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Documentation", GUILayout.Width(width/2f - margin))) + { + Application.OpenURL(SRDebugStrings.Current.SettingsDocumentationUrl); + } + + if (GUILayout.Button("Support", GUILayout.Width(width/2f - margin))) + { + Application.OpenURL( + SRDebugStrings.Current.SettingsSupportUrl); + } + + EditorGUILayout.EndHorizontal(); + } + + public static class Styles + { + private static GUIStyle _inspectorHeaderStyle; + private static GUIStyle _inspectorHeaderFoldoutStyle; + private static GUIStyle _settingsHeaderBoxStyle; + private static GUIStyle _headerLabel; + private static GUIStyle _paragraphLabel; + private static GUIStyle _radioButtonDescription; + private static GUIStyle _radioButton; + private static GUIStyle _leftToggleButton; + private static GUIStyle _noPaddingNoMargin; + private static GUIStyle _richTextLabel; + + public static string LinkColour + { + get + { + if (EditorGUIUtility.isProSkin) + { + return "#7C8CB9"; + } + + return "#0032E6"; + } + } + + public static GUIStyle InspectorHeaderStyle + { + get + { + if (_inspectorHeaderStyle == null) + { + _inspectorHeaderStyle = new GUIStyle(EditorStyles.boldLabel); + _inspectorHeaderStyle.fontSize = 12; + } + + return _inspectorHeaderStyle; + } + } + + public static GUIStyle InspectorHeaderFoldoutStyle + { + get + { + if (_inspectorHeaderFoldoutStyle == null) + { + _inspectorHeaderFoldoutStyle = new GUIStyle(EditorStyles.foldout); + _inspectorHeaderFoldoutStyle.fontSize = 12; + _inspectorHeaderFoldoutStyle.fontStyle = FontStyle.Bold; + } + + return _inspectorHeaderFoldoutStyle; + } + } + + public static GUIStyle SettingsHeaderBoxStyle + { + get + { + if (_settingsHeaderBoxStyle == null) + { + _settingsHeaderBoxStyle = new GUIStyle("OL Title"); + _settingsHeaderBoxStyle.padding = new RectOffset(0, 0, 0, 0); + _settingsHeaderBoxStyle.margin = new RectOffset(0, 0, 0, 0); + _settingsHeaderBoxStyle.clipping = TextClipping.Clip; + _settingsHeaderBoxStyle.overflow = new RectOffset(0, 0, 0, 0); + //_settingsHeaderBoxStyle.border = new RectOffset(1, 1, 1, 1); + _settingsHeaderBoxStyle.fixedHeight = 0.5f; + } + + return _settingsHeaderBoxStyle; + } + } + + public static GUIStyle HeaderLabel + { + get + { + if (_headerLabel == null) + { + _headerLabel = new GUIStyle(EditorStyles.largeLabel); + _headerLabel.fontSize = 18; + _headerLabel.fontStyle = FontStyle.Normal; + _headerLabel.margin = new RectOffset(5, 5, 5, 5); + } + + return _headerLabel; + } + } + + public static GUIStyle ParagraphLabel + { + get + { + if (_paragraphLabel == null) + { + _paragraphLabel = new GUIStyle(EditorStyles.label); + _paragraphLabel.margin = new RectOffset(5, 5, 5, 5); + _paragraphLabel.wordWrap = true; + _paragraphLabel.richText = true; + } + + return _paragraphLabel; + } + } + + public static GUIStyle LeftToggleButton + { + get + { + if (_leftToggleButton == null) + { + _leftToggleButton = new GUIStyle(EditorStyles.label); + _leftToggleButton.contentOffset = new Vector2(_leftToggleButton.contentOffset.x + 5, + _leftToggleButton.contentOffset.y); + } + + return _leftToggleButton; + } + } + + public static GUIStyle RadioButton + { + get + { + if (_radioButton == null) + { + _radioButton = new GUIStyle(EditorStyles.radioButton); + _radioButton.contentOffset = new Vector2(_radioButton.contentOffset.x + 5, + _radioButton.contentOffset.y); + } + + return _radioButton; + } + } + + public static GUIStyle RadioButtonDescription + { + get + { + if (_radioButtonDescription == null) + { + _radioButtonDescription = new GUIStyle(ParagraphLabel); + _radioButtonDescription.padding.left = (int) RadioButton.contentOffset.x + + RadioButton.padding.left; + } + + return _radioButtonDescription; + } + } + + public static GUIStyle NoPaddingNoMargin + { + get + { + if (_noPaddingNoMargin == null) + { + _noPaddingNoMargin = new GUIStyle(); + _noPaddingNoMargin.margin = new RectOffset(0, 0, 0, 0); + _noPaddingNoMargin.padding = new RectOffset(0, 0, 0, 0); + } + + return _noPaddingNoMargin; + } + } + + public static GUIStyle RichTextLabel + { + get + { + if (_richTextLabel == null) + { + _richTextLabel = new GUIStyle(EditorStyles.label); + _richTextLabel.richText = true; + _richTextLabel.margin = new RectOffset(2, 2, 0, 0); + } + + return _richTextLabel; + } + } + } + } +} + +#endif diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs.meta new file mode 100644 index 00000000..700f7ca9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/EditorUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f809cd2d9d5ae074cbecca0ab4d472b6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs new file mode 100644 index 00000000..a90fb2ba --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using SRF.Service; + +namespace SRDebugger.Internal +{ + /// + /// Workaround for the debug panel not being initialized on startup. + /// SROptions needs to register itself but not cause auto-initialization. + /// This class buffers requests to register contains until there is a handler in place to deal with them. + /// Once the handler is in place, all buffered requests are passed in and future requests invoke the handler directly. + /// + [Service(typeof(InternalOptionsRegistry))] + public sealed class InternalOptionsRegistry + { + private List _registeredContainers = new List(); + private Action _handler; + + public void AddOptionContainer(object obj) + { + if (_handler != null) + { + _handler(obj); + return; + } + + _registeredContainers.Add(obj); + } + + public void SetHandler(Action action) + { + _handler = action; + + foreach (object o in _registeredContainers) + { + _handler(o); + } + + _registeredContainers = null; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs.meta new file mode 100644 index 00000000..5109aacc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/InternalOptionsRegistry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12f482545d1833a4e823d79898cb46ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs new file mode 100644 index 00000000..0426a732 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs @@ -0,0 +1,109 @@ +namespace SRDebugger.Internal +{ + using System; + using System.Collections.Generic; + using System.Linq; + using SRF; + using UI.Controls; + using UI.Controls.Data; + using UnityEngine; + using Object = UnityEngine.Object; + + public static class OptionControlFactory + { + private static IList _dataControlPrefabs; + private static ActionControl _actionControlPrefab; + + /// + /// Create a control from an OptionDefinition, optionally providing to remove + /// the category name from the start of the control. + /// + /// + /// + /// + public static OptionsControlBase CreateControl(OptionDefinition from, string categoryPrefix = null) + { + if (_dataControlPrefabs == null) + { + _dataControlPrefabs = Resources.LoadAll(SRDebugPaths.DataControlsResourcesPath); + } + + if (_actionControlPrefab == null) + { + _actionControlPrefab = + Resources.LoadAll(SRDebugPaths.DataControlsResourcesPath).FirstOrDefault(); + } + + if (_actionControlPrefab == null) + { + Debug.LogError("[SRDebugger.Options] Cannot find ActionControl prefab."); + } + + if (from.Property != null) + { + return CreateDataControl(from, categoryPrefix); + } + + if (from.Method != null) + { + return CreateActionControl(from, categoryPrefix); + } + + throw new Exception("OptionDefinition did not contain property or method."); + } + + private static ActionControl CreateActionControl(OptionDefinition from, string categoryPrefix = null) + { + var control = SRInstantiate.Instantiate(_actionControlPrefab); + + if (control == null) + { + Debug.LogWarning("[SRDebugger.OptionsTab] Error creating action control from prefab"); + return null; + } + + control.SetMethod(from.Name, from.Method); + control.Option = from; + + return control; + } + + private static DataBoundControl CreateDataControl(OptionDefinition from, string categoryPrefix = null) + { + var prefab = _dataControlPrefabs.FirstOrDefault(p => p.CanBind(@from.Property.PropertyType, !from.Property.CanWrite)); + + if (prefab == null) + { + Debug.LogWarning( + "[SRDebugger.OptionsTab] Can't find data control for type {0}".Fmt(from.Property.PropertyType)); + return null; + } + + var instance = SRInstantiate.Instantiate(prefab); + + try + { + var n = from.Name; + + // Remove category name from the start of the property name + if (!string.IsNullOrEmpty(categoryPrefix) && n.StartsWith(categoryPrefix)) + { + n = n.Substring(categoryPrefix.Length); + } + + instance.Bind(n, from.Property); + instance.Option = from; + } + catch (Exception e) + { + Debug.LogError("[SRDebugger.Options] Error binding to property {0}".Fmt(from.Name)); + Debug.LogException(e); + + Object.Destroy(instance); + instance = null; + } + + return instance; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs.meta new file mode 100644 index 00000000..11fdbd43 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionControlFactory.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d6e807b7446052409d51e03ab38cfae +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs new file mode 100644 index 00000000..d7508b3a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs @@ -0,0 +1,30 @@ +namespace SRDebugger.Internal +{ + public class OptionDefinition + { + private OptionDefinition(string name, string category, int sortPriority) + { + Name = name; + Category = category; + SortPriority = sortPriority; + } + + public OptionDefinition(string name, string category, int sortPriority, SRF.Helpers.MethodReference method) + : this(name, category, sortPriority) + { + Method = method; + } + + public OptionDefinition(string name, string category, int sortPriority, SRF.Helpers.PropertyReference property) + : this(name, category, sortPriority) + { + Property = property; + } + + public string Name { get; private set; } + public string Category { get; private set; } + public int SortPriority { get; private set; } + public SRF.Helpers.MethodReference Method { get; private set; } + public SRF.Helpers.PropertyReference Property { get; private set; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs.meta new file mode 100644 index 00000000..38de70fa --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/OptionDefinition.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6fb9bd71eceb4145a013bb7fe025c01 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs new file mode 100644 index 00000000..a39c0c46 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs @@ -0,0 +1,18 @@ +namespace SRDebugger.Internal +{ + public static class SRDebugPaths + { + public const string DataControlsResourcesPath = "SRDebugger/UI/Prefabs/Options"; + public const string TriggerPrefabPath = "SRDebugger/UI/Prefabs/Trigger"; + public const string DebugPanelPrefabPath = "SRDebugger/UI/Prefabs/DebugPanel"; + public const string PinnedUIPrefabPath = "SRDebugger/UI/Prefabs/PinnedUI"; + public const string DockConsolePrefabPath = "SRDebugger/UI/Prefabs/DockConsole"; + public const string PinEntryPrefabPath = "SRDebugger/UI/Prefabs/PinEntry"; + public const string BugReportPopoverPath = "SRDebugger/UI/Prefabs/BugReportPopover"; + public const string BugReportSheetPath = "SRDebugger/UI/Prefabs/BugReportSheet"; + public const string SettingsMenuItemPath = "Window/SRDebugger/Settings Window"; + public const string WelcomeItemPath = "Window/SRDebugger/Welcome Guide"; + public const string SROptionsMenuItemPath = "Window/SRDebugger/SROptions Window"; + public const string EditorLogoPath = "UI/Sprites/Default/Logo.psd"; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs.meta new file mode 100644 index 00000000..fab38341 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Paths.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 487af04ceed59b6409168c2d466c2f73 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs new file mode 100644 index 00000000..a0f63637 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs @@ -0,0 +1,107 @@ +namespace SRDebugger.Internal +{ + using Services; + using SRF.Service; + + public static class Service + { + private static IConsoleService _consoleService; + private static IDebugPanelService _debugPanelService; + private static IDebugTriggerService _debugTriggerService; + private static IPinnedUIService _pinnedUiService; + private static IDebugCameraService _debugCameraService; + private static IOptionsService _optionsService; + private static IDockConsoleService _dockConsoleService; + + public static IConsoleService Console + { + get + { + if (_consoleService == null) + { + _consoleService = SRServiceManager.GetService(); + } + + return _consoleService; + } + } + + public static IDockConsoleService DockConsole + { + get + { + if (_dockConsoleService == null) + { + _dockConsoleService = SRServiceManager.GetService(); + } + + return _dockConsoleService; + } + } + + public static IDebugPanelService Panel + { + get + { + if (_debugPanelService == null) + { + _debugPanelService = SRServiceManager.GetService(); + } + + return _debugPanelService; + } + } + + public static IDebugTriggerService Trigger + { + get + { + if (_debugTriggerService == null) + { + _debugTriggerService = SRServiceManager.GetService(); + } + + return _debugTriggerService; + } + } + + public static IPinnedUIService PinnedUI + { + get + { + if (_pinnedUiService == null) + { + _pinnedUiService = SRServiceManager.GetService(); + } + + return _pinnedUiService; + } + } + + public static IDebugCameraService DebugCamera + { + get + { + if (_debugCameraService == null) + { + _debugCameraService = SRServiceManager.GetService(); + } + + return _debugCameraService; + } + } + + public static IOptionsService Options + { + get + { + if (_optionsService == null) + { + _optionsService = SRServiceManager.GetService(); + } + + return _optionsService; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs.meta new file mode 100644 index 00000000..d5636090 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Service.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe213cfca7e22e844abfd16c258dd08e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs new file mode 100644 index 00000000..7a50a2d8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs @@ -0,0 +1,64 @@ +namespace SRDebugger.Internal +{ + public class SRDebugStrings + { + public static readonly SRDebugStrings Current = new SRDebugStrings(); + public readonly string Console_MessageTruncated = "-- Message Truncated --"; + public readonly string Console_NoStackTrace = "-- No Stack Trace Available --"; + public readonly string PinEntryPrompt = "Enter code to open debug panel"; + + public readonly string Profiler_DisableProfilerInfo = + "Unity profiler is currently enabled. Disable to improve performance."; + + public readonly string Profiler_EnableProfilerInfo = + "Unity profiler is currently disabled. Enable to show more information."; + + public readonly string Profiler_NoProInfo = + "Unity profiler is currently disabled. Unity Pro is required to enable it."; + + public readonly string Profiler_NotSupported = "Unity profiler is not supported in this build."; + + public readonly string ProfilerCameraListenerHelp = + "This behaviour is attached by the SRDebugger profiler to calculate render times."; + +#if UNITY_EDITOR + + public readonly string SettingsIsEnabledTooltip = + "If false, SRDebugger.Init prefab will not load SRDebugger. Manual calls to SRDebug.Instance.ShowDebugPanel() will still work."; + + public readonly string SettingsAutoLoadTooltip = + "Automatically load SRDebugger when the game loads, even if SRDebugger.Init prefab is not present."; + + public readonly string SettingsDefaultTabTooltip = + "Visible tab when panel is first opened."; + + public readonly string SettingsKeyboardShortcutsTooltip = + "Enable Keyboard Shortcuts"; + + public readonly string SettingsCloseOnEscapeTooltip = + "Close debug panel when Escape is pressed."; + + public readonly string SettingsKeyboardModifersTooltip = + "Modifier keys that must be held for keyboard shortcuts to execute."; + + public readonly string SettingsDebugCameraTooltip = + "UI will render to a camera instead of overlaying the entire scene."; + + public readonly string SettingsRateBoxContents = + "If you like SRDebugger, please consider leaving a rating on the Asset Store."; + + public readonly string SettingsWebSiteUrl = "https://www.stompyrobot.uk/tools/srdebugger"; + + public readonly string SettingsAssetStoreUrl = "https://www.assetstore.unity3d.com/en/#!/content/27688"; + + public readonly string SettingsDocumentationUrl = "https://www.stompyrobot.uk/tools/srdebugger/documentation"; + + public readonly string SettingsSupportUrl = + "http://forum.unity3d.com/threads/srdebugger-debug-and-tweak-your-game-while-on-device-released.296403/"; + + public readonly string SettingsEnabledTabsDescription = + "Deselect any tabs that you do not wish to be available in the debug panel."; + +#endif + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs.meta new file mode 100644 index 00000000..9267ac64 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Strings.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34bc872e688c2eb4ca1794728e6ff4fd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs new file mode 100644 index 00000000..90900c8c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs @@ -0,0 +1,180 @@ +namespace SRDebugger.Internal +{ + using System.Collections.Generic; + using System.ComponentModel; + using System.Reflection; + using SRF.Helpers; + using UnityEngine; + using UnityEngine.EventSystems; + + public static class SRDebuggerUtil + { + public static bool IsMobilePlatform + { + get + { + if (Application.isMobilePlatform) + { + return true; + } + + switch (Application.platform) + { +#if UNITY_5 || UNITY_5_3_OR_NEWER + case RuntimePlatform.WSAPlayerARM: + case RuntimePlatform.WSAPlayerX64: + case RuntimePlatform.WSAPlayerX86: +#else + case RuntimePlatform.MetroPlayerARM: + case RuntimePlatform.MetroPlayerX64: + case RuntimePlatform.MetroPlayerX86: +#endif + return true; + + default: + return false; + } + } + } + + /// + /// If no event system exists, create one + /// + /// True if the event system was created as a result of this call + public static bool EnsureEventSystemExists() + { + if (!Settings.Instance.EnableEventSystemGeneration) + { + return false; + } + + if (EventSystem.current != null) + { + return false; + } + + var e = Object.FindObjectOfType(); + + // Check if EventSystem is in the scene but not registered yet + if (e != null && e.gameObject.activeSelf && e.enabled) + { + return false; + } + + Debug.LogWarning("[SRDebugger] No EventSystem found in scene - creating a default one. Disable this behaviour in Window -> SRDebugger -> Settings Window -> Advanced)"); + + CreateDefaultEventSystem(); + return true; + } + + public static void CreateDefaultEventSystem() + { + var go = new GameObject("EventSystem (Created by SRDebugger, disable in Window -> SRDebugger -> Settings Window -> Advanced)"); + go.AddComponent(); + go.AddComponent(); + } + + /// + /// Scan for valid options and return a collection of them. + /// + /// + /// + public static ICollection ScanForOptions(object obj) + { + var options = new List(); + +#if NETFX_CORE + var members = obj.GetType().GetTypeInfo().DeclaredMembers; +#else + + var members = + obj.GetType().GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | + BindingFlags.SetProperty | BindingFlags.InvokeMethod); + +#endif + + foreach (var memberInfo in members) + { + // Find user-specified category name from attribute + var categoryAttribute = SRReflection.GetAttribute(memberInfo); + var category = categoryAttribute == null ? "Default" : categoryAttribute.Category; + + // Find user-specified sorting priority from attribute + var sortAttribute = SRReflection.GetAttribute(memberInfo); + var sortPriority = sortAttribute == null ? 0 : sortAttribute.SortPriority; + + // Find user-specified display name from attribute + var nameAttribute = SRReflection.GetAttribute(memberInfo); + var name = nameAttribute == null ? memberInfo.Name : nameAttribute.DisplayName; + + if (memberInfo is PropertyInfo) + { + var propertyInfo = memberInfo as PropertyInfo; + + // Only allow properties with public read/write +#if NETFX_CORE + if(propertyInfo.GetMethod == null) + continue; + + // Ignore static members + if (propertyInfo.GetMethod.IsStatic) + continue; +#else + if (propertyInfo.GetGetMethod() == null) + { + continue; + } + + // Ignore static members + if ((propertyInfo.GetGetMethod().Attributes & MethodAttributes.Static) != 0) + { + continue; + } +#endif + + options.Add(new OptionDefinition(name, category, sortPriority, + new SRF.Helpers.PropertyReference(obj, propertyInfo))); + } + else if (memberInfo is MethodInfo) + { + var methodInfo = memberInfo as MethodInfo; + + if (methodInfo.IsStatic) + { + continue; + } + + // Skip methods with parameters or non-void return type + if (methodInfo.ReturnType != typeof (void) || methodInfo.GetParameters().Length > 0) + { + continue; + } + + options.Add(new OptionDefinition(name, category, sortPriority, + new SRF.Helpers.MethodReference(obj, methodInfo))); + } + } + + return options; + } + + public static string GetNumberString(int value, int max, string exceedsMaxString) + { + if (value >= max) + { + return exceedsMaxString; + } + + return value.ToString(); + } + + public static void ConfigureCanvas(Canvas canvas) + { + if (Settings.Instance.UseDebugCamera) + { + canvas.worldCamera = Service.DebugCamera.Camera; + canvas.renderMode = RenderMode.ScreenSpaceCamera; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs.meta new file mode 100644 index 00000000..cd939848 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Internal/Util.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e0f09d4b116f524381461f865525607 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler.meta new file mode 100644 index 00000000..05374257 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: bca87b44250eab3469ec77e0848afc2e +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs new file mode 100644 index 00000000..3f971005 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs @@ -0,0 +1,74 @@ +namespace SRDebugger.Profiler +{ + using System; + using System.Diagnostics; + using UnityEngine; + + [RequireComponent(typeof (Camera))] + public class ProfilerCameraListener : MonoBehaviour + { + private Camera _camera; + private Stopwatch _stopwatch; + public Action RenderDurationCallback; + + protected Stopwatch Stopwatch + { + get + { + if (_stopwatch == null) + { + _stopwatch = new Stopwatch(); + } + + return _stopwatch; + } + } + + public Camera Camera + { + get + { + if (_camera == null) + { + _camera = GetComponent(); + } + + return _camera; + } + } + + private void OnPreCull() + { + UnityEngine.Debug.Log("OnPreCull"); + + if (!isActiveAndEnabled) + { + return; + } + + Stopwatch.Start(); + } + + private void OnPostRender() + { + UnityEngine.Debug.Log("OnPostRender"); + if (!isActiveAndEnabled) + { + return; + } + + var renderTime = _stopwatch.Elapsed.TotalSeconds; + + Stopwatch.Stop(); + Stopwatch.Reset(); + + if (RenderDurationCallback == null) + { + Destroy(this); + return; + } + + RenderDurationCallback(this, renderTime); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs.meta new file mode 100644 index 00000000..72373ef3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerCameraListener.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3172283e0204f3e47968b9f791c5a2df +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs new file mode 100644 index 00000000..eddbc565 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs @@ -0,0 +1,22 @@ +namespace SRDebugger.Profiler +{ + using System; + using UnityEngine; + + /// + /// The profiler has a separate monobehaviour to listen for LateUpdate, and is placed + /// at the end of the script execution order. + /// + public class ProfilerLateUpdateListener : MonoBehaviour + { + public Action OnLateUpdate; + + private void LateUpdate() + { + if (OnLateUpdate != null) + { + OnLateUpdate(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs.meta new file mode 100644 index 00000000..6d3fd5ac --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerLateUpdateListener.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 21048b348f7dc284ab97209ec32253c4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 32001 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs new file mode 100644 index 00000000..a570d7f8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs @@ -0,0 +1,128 @@ +namespace SRDebugger.Profiler +{ + using System.Diagnostics; + using Services; + using SRF; + using SRF.Service; + using UnityEngine; + + public class ProfilerServiceImpl : SRServiceBase, IProfilerService + { + public float AverageFrameTime { get; private set; } + public float LastFrameTime { get; private set; } + + public CircularBuffer FrameBuffer + { + get { return _frameBuffer; } + } + + private const int FrameBufferSize = 400; + + private readonly CircularBuffer + _frameBuffer = new CircularBuffer(FrameBufferSize); + + private ProfilerLateUpdateListener _lateUpdateListener; + + private readonly Stopwatch _stopwatch = new Stopwatch(); + + // Time between first Update() and last LateUpdate(). + private double _updateDuration; + + // Time that first camera rendered. + private double _renderStartTime; + + // Time between first camera prerender and last camera postrender. + private double _renderDuration; + + private int _camerasThisFrame; + + protected override void Awake() + { + base.Awake(); + _lateUpdateListener = gameObject.AddComponent(); + _lateUpdateListener.OnLateUpdate = OnLateUpdate; + + CachedGameObject.hideFlags = HideFlags.NotEditable; + CachedTransform.SetParent(Hierarchy.Get("SRDebugger"), true); + + Camera.onPreRender += OnCameraPreRender; + Camera.onPostRender += OnCameraPostRender; + } + + protected override void Update() + { + base.Update(); + + _camerasThisFrame = 0; + + EndFrame(); + + // Set the frame time for the last frame + if (FrameBuffer.Count > 0) + { + var frame = FrameBuffer.Back(); + frame.FrameTime = Time.unscaledDeltaTime; + FrameBuffer[FrameBuffer.Count - 1] = frame; + } + + LastFrameTime = Time.unscaledDeltaTime; + + var frameCount = Mathf.Min(20, FrameBuffer.Count); + + var f = 0d; + for (var i = 0; i < frameCount; i++) + { + f += FrameBuffer[FrameBuffer.Count - 1 - i].FrameTime; + } + + AverageFrameTime = (float) f / frameCount; + + _stopwatch.Start(); + } + + protected void PushFrame(double totalTime, double updateTime, double renderTime) + { + //UnityEngine.Debug.Log("Frame: u: {0} r: {1}".Fmt(updateTime, renderTime)); + + _frameBuffer.PushBack(new ProfilerFrame + { + OtherTime = totalTime - updateTime - renderTime, + UpdateTime = updateTime, + RenderTime = renderTime + }); + } + + private void OnLateUpdate() + { + _updateDuration = _stopwatch.Elapsed.TotalSeconds; + } + + private void OnCameraPreRender(Camera cam) + { + if (_camerasThisFrame == 0) + { + _renderStartTime = _stopwatch.Elapsed.TotalSeconds; + } + + _camerasThisFrame++; + } + + private void OnCameraPostRender(Camera cam) + { + _renderDuration = _stopwatch.Elapsed.TotalSeconds - _renderStartTime; + } + + private void EndFrame() + { + if (_stopwatch.IsRunning) + { + PushFrame(_stopwatch.Elapsed.TotalSeconds, _updateDuration, _renderDuration); + + _stopwatch.Reset(); + _stopwatch.Start(); + } + + _updateDuration = _renderDuration = 0; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs.meta new file mode 100644 index 00000000..42ad7960 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/ProfilerServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff0319556f3fbc341b877ff4b1ff94ba +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -32000 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs new file mode 100644 index 00000000..0dcedbea --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs @@ -0,0 +1,137 @@ +#if UNITY_2018_1_OR_NEWER + +namespace SRDebugger.Profiler +{ + using System.Collections; + using System.Diagnostics; + using SRDebugger.Services; + using SRF; + using SRF.Service; + using UnityEngine; +#if UNITY_2019_3_OR_NEWER + using UnityEngine.Rendering; +#else + using UnityEngine.Experimental.Rendering; +#endif + + public class SRPProfilerService : SRServiceBase, IProfilerService + { + public float AverageFrameTime { get; private set; } + public float LastFrameTime { get; private set; } + + public CircularBuffer FrameBuffer + { + get { return _frameBuffer; } + } + + private const int FrameBufferSize = 400; + private readonly CircularBuffer _frameBuffer = new CircularBuffer(FrameBufferSize); + + private ProfilerLateUpdateListener _lateUpdateListener; + + // Time between first Update() and last LateUpdate() + private double _updateDuration; + + // Time that render pipeline starts + private double _renderStartTime; + + // Time between scripted render pipeline starts + EndOfFrame + private double _renderDuration; + + private readonly Stopwatch _stopwatch = new Stopwatch(); + + protected override void Awake() + { + base.Awake(); + _lateUpdateListener = gameObject.AddComponent(); + _lateUpdateListener.OnLateUpdate = OnLateUpdate; + + CachedGameObject.hideFlags = HideFlags.NotEditable; + CachedTransform.SetParent(Hierarchy.Get("SRDebugger"), true); + +#if UNITY_2019_3_OR_NEWER + RenderPipelineManager.beginFrameRendering += RenderPipelineOnBeginFrameRendering; +#else + RenderPipeline.beginFrameRendering += RenderPipelineOnBeginFrameRendering; +#endif + + StartCoroutine(EndOfFrameCoroutine()); + } + + protected override void Update() + { + base.Update(); + + EndFrame(); + + // Set the frame time for the last frame + if (FrameBuffer.Count > 0) + { + var frame = FrameBuffer.Back(); + frame.FrameTime = Time.unscaledDeltaTime; + FrameBuffer[FrameBuffer.Count - 1] = frame; + } + + LastFrameTime = Time.unscaledDeltaTime; + + var frameCount = Mathf.Min(20, FrameBuffer.Count); + + var f = 0d; + for (var i = 0; i < frameCount; i++) + { + f += FrameBuffer[FrameBuffer.Count - 1 - i].FrameTime; + } + + AverageFrameTime = (float)f / frameCount; + + _stopwatch.Start(); + } + + IEnumerator EndOfFrameCoroutine() + { + while (true) + { + yield return new WaitForEndOfFrame(); + _renderDuration = _stopwatch.Elapsed.TotalSeconds - _renderStartTime; + } + } + + protected void PushFrame(double totalTime, double updateTime, double renderTime) + { + _frameBuffer.PushBack(new ProfilerFrame + { + OtherTime = totalTime - updateTime - renderTime, + UpdateTime = updateTime, + RenderTime = renderTime + }); + } + + private void OnLateUpdate() + { + _updateDuration = _stopwatch.Elapsed.TotalSeconds; + } + +#if UNITY_2019_3_OR_NEWER + private void RenderPipelineOnBeginFrameRendering(ScriptableRenderContext context, Camera[] cameras) +#else + private void RenderPipelineOnBeginFrameRendering(Camera[] obj) +#endif + { + _renderStartTime = _stopwatch.Elapsed.TotalSeconds; + } + + private void EndFrame() + { + if (_stopwatch.IsRunning) + { + PushFrame(_stopwatch.Elapsed.TotalSeconds, _updateDuration, _renderDuration); + + _stopwatch.Reset(); + _stopwatch.Start(); + } + + _updateDuration = _renderDuration = 0; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs.meta new file mode 100644 index 00000000..f2dfe1f9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Profiler/SRPProfilerService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f6b60357b55b3a438c0f79ba2be864c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs new file mode 100644 index 00000000..2ec9fe6a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs @@ -0,0 +1,22 @@ +using SRDebugger.Services; +using SRDebugger.Services.Implementation; +using SRF.Service; + +public static class SRDebug +{ + public const string Version = SRDebugger.VersionInfo.Version; + + public static IDebugService Instance + { + get { return SRServiceManager.GetService(); } + } + + public static void Init() + { + // Initialize console if it hasn't already initialized. + SRServiceManager.GetService(); + + // Load the debug service + SRServiceManager.GetService(); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs.meta new file mode 100644 index 00000000..d2d21228 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebug.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 469b426fd7f6b90459d78fc3a5b1360b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs new file mode 100644 index 00000000..72a62d39 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs @@ -0,0 +1,37 @@ +using System; + +namespace SRDebugger +{ + using SRF; + using UnityEngine; + + /// + /// Add this component somewhere in your scene to automatically load SRDebugger when the scene is loaded. + /// By default, SRDebugger will defer loading any UI except the corner-trigger until the user requests it. + /// It is recommended to add this to the very first scene in your game. This will ensure the console log + /// will hold useful information about your game initialization. + /// + [AddComponentMenu("")] + [Obsolete("No longer required, use Automatic initialization mode or call SRDebug.Init() manually.")] + public class SRDebuggerInit : SRMonoBehaviourEx + { + protected override void Awake() + { + base.Awake(); + + if (!Settings.Instance.IsEnabled) + { + return; + } + + SRDebug.Init(); + } + + protected override void Start() + { + base.Start(); + + Destroy(CachedGameObject); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs.meta new file mode 100644 index 00000000..5731a3b2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SRDebuggerInit.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66edd3610b01cce48aed05383fd196e5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31999 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs new file mode 100644 index 00000000..4d194145 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs @@ -0,0 +1,39 @@ +using System; + +namespace SRDebugger +{ + [AttributeUsage(AttributeTargets.Property)] + public class NumberRangeAttribute : Attribute + { + public readonly double Max; + public readonly double Min; + + public NumberRangeAttribute(double min, double max) + { + Min = min; + Max = max; + } + } + + [AttributeUsage(AttributeTargets.Property)] + public class IncrementAttribute : Attribute + { + public readonly double Increment; + + public IncrementAttribute(double increment) + { + Increment = increment; + } + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] + public class SortAttribute : Attribute + { + public readonly int SortPriority; + + public SortAttribute(int priority) + { + SortPriority = priority; + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs.meta new file mode 100644 index 00000000..c455943a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Attributes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07d851b2833fe2d418d42519e51fac5f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs new file mode 100644 index 00000000..b6bfd84f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs @@ -0,0 +1,4 @@ +/* + * This file has been moved to StoryRobot/SROptions/SROptions.Test.cs + * This empty file is left here to ensure it is properly overwritten when importing a new version of the package over an old version. + */ \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs.meta new file mode 100644 index 00000000..c0443084 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.Test.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f7d209d96c186e488b96fa4cd40c808 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs new file mode 100644 index 00000000..7394939b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs @@ -0,0 +1,4 @@ +/* + * This file has been moved to StoryRobot/SROptions/SROptions.cs + * This empty file is left here to ensure it is properly overwritten when importing a new version of the package over an old version. + */ \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs.meta new file mode 100644 index 00000000..648ea326 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/SROptions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93395ab8f46722d4eb96829e8d652a66 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services.meta new file mode 100644 index 00000000..d6019cfe --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: d056f36651c5f924abf693d27338ded5 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs new file mode 100644 index 00000000..6d8e8f03 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs @@ -0,0 +1,31 @@ +namespace SRDebugger.Services +{ + using System.Collections.Generic; + + public class BugReport + { + public List ConsoleLog; + public string Email; + public byte[] ScreenshotData; + public Dictionary> SystemInformation; + public string UserDescription; + } + + public delegate void BugReportCompleteCallback(bool didSucceed, string errorMessage); + + public delegate void BugReportProgressCallback(float progress); + + public interface IBugReportService + { + /// + /// Submit a bug report to the SRDebugger API. + /// completeHandler can be invoked any time after the method is called + /// (even before the method has returned in case of internet reachability failure). + /// + /// Bug report to send + /// Delegate to call once bug report is submitted successfully + /// Optionally provide a callback for when progress % is known + void SendBugReport(BugReport report, BugReportCompleteCallback completeHandler, + BugReportProgressCallback progressCallback = null); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs.meta new file mode 100644 index 00000000..22faf4bf --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IBugReportService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fea92fa06a1807f40a783c5e315e79cf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs new file mode 100644 index 00000000..272b46f3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs @@ -0,0 +1,110 @@ +namespace SRDebugger.Services +{ + using UnityEngine; + + public delegate void ConsoleUpdatedEventHandler(IConsoleService console); + + public interface IConsoleService + { + int ErrorCount { get; } + int WarningCount { get; } + int InfoCount { get; } + + /// + /// List of ConsoleEntry objects since the last clear. + /// + IReadOnlyList Entries { get; } + + /// + /// List of all ConsoleEntry objects, regardless of clear. + /// + IReadOnlyList AllEntries { get; } + + event ConsoleUpdatedEventHandler Updated; + + event ConsoleUpdatedEventHandler Error; + + void Clear(); + } + + public class ConsoleEntry + { + private const int MessagePreviewLength = 180; + private const int StackTracePreviewLength = 120; + private string _messagePreview; + private string _stackTracePreview; + + /// + /// Number of times this log entry has occured (if collapsing is enabled) + /// + public int Count = 1; + + public LogType LogType; + public string Message; + public string StackTrace; + public ConsoleEntry() {} + + public ConsoleEntry(ConsoleEntry other) + { + Message = other.Message; + StackTrace = other.StackTrace; + LogType = other.LogType; + Count = other.Count; + } + + public string MessagePreview + { + get + { + if (_messagePreview != null) + { + return _messagePreview; + } + if (string.IsNullOrEmpty(Message)) + { + return ""; + } + + _messagePreview = Message.Split('\n')[0]; + _messagePreview = _messagePreview.Substring(0, Mathf.Min(_messagePreview.Length, MessagePreviewLength)); + + return _messagePreview; + } + } + + public string StackTracePreview + { + get + { + if (_stackTracePreview != null) + { + return _stackTracePreview; + } + if (string.IsNullOrEmpty(StackTrace)) + { + return ""; + } + + _stackTracePreview = StackTrace.Split('\n')[0]; + _stackTracePreview = _stackTracePreview.Substring(0, + Mathf.Min(_stackTracePreview.Length, StackTracePreviewLength)); + + return _stackTracePreview; + } + } + + public bool Matches(ConsoleEntry other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return string.Equals(Message, other.Message) && string.Equals(StackTrace, other.StackTrace) && + LogType == other.LogType; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs.meta new file mode 100644 index 00000000..809f6dfe --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IConsoleService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60ae196448d0a9549859c96c7ed8b974 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs new file mode 100644 index 00000000..aa752103 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs @@ -0,0 +1,9 @@ +namespace SRDebugger.Services +{ + using UnityEngine; + + public interface IDebugCameraService + { + Camera Camera { get; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs.meta new file mode 100644 index 00000000..9f391cb1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugCameraService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be2986b8bcb479048bcb9c2a3d8a4858 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs new file mode 100644 index 00000000..66d9a24c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs @@ -0,0 +1,35 @@ +namespace SRDebugger.Services +{ + using System; + + public interface IDebugPanelService + { + /// + /// Is the debug panel currently loaded into the scene + /// + bool IsLoaded { get; } + + /// + /// Get or set whether the debug pane should be visible + /// + bool IsVisible { get; set; } + + /// + /// Currently active tab (if available in DefaultTabs, otherwise null) + /// + DefaultTabs? ActiveTab { get; } + + event Action VisibilityChanged; + + /// + /// Force the debug panel to unload from the scene + /// + void Unload(); + + /// + /// Open the given tab + /// + /// + void OpenTab(DefaultTabs tab); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs.meta new file mode 100644 index 00000000..d4822ff8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugPanelService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a54c100bc481624fbcf017674046a9e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs new file mode 100644 index 00000000..ab64fe1a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs @@ -0,0 +1,138 @@ +using UnityEngine; + +namespace SRDebugger +{ + public delegate void VisibilityChangedDelegate(bool isVisible); + + public delegate void ActionCompleteCallback(bool success); + + public delegate void PinnedUiCanvasCreated(RectTransform canvasTransform); +} + +namespace SRDebugger.Services +{ + using UnityEngine; + + public interface IDebugService + { + /// + /// Current settings being used by the debugger + /// + Settings Settings { get; } + + /// + /// True if the debug panel is currently being shown + /// + bool IsDebugPanelVisible { get; } + + /// + /// True if the trigger is currently enabled + /// + bool IsTriggerEnabled { get; set; } + + IDockConsoleService DockConsole { get; } + + bool IsProfilerDocked { get; set; } + + /// + /// Add to the system information tab. See for how to create + /// an info instance. + /// + /// The entry to be added. + /// The category the entry should be added to. + void AddSystemInfo(InfoEntry entry, string category = "Default"); + + /// + /// Show the debug panel + /// + /// + /// If true and entry code is enabled in settings, the user will be prompted for a passcode + /// before opening the panel. + /// + void ShowDebugPanel(bool requireEntryCode = true); + + /// + /// Show the debug panel and open a certain tab + /// + /// Tab that will appear when the debug panel is opened + /// + /// If true and entry code is enabled in settings, the user will be prompted for a passcode + /// before opening the panel. + /// + void ShowDebugPanel(DefaultTabs tab, bool requireEntryCode = true); + + /// + /// Hide the debug panel + /// + void HideDebugPanel(); + + /// + /// Hide the debug panel, then remove it from the scene to save memory. + /// + void DestroyDebugPanel(); + + /// + /// Add all an objects compatible properties and methods to the options panel. + /// NOTE: It is not recommended to use this on a MonoBehaviour, it should be used on a standard + /// class made specifically for use as a settings object. + /// + /// The object to add. + void AddOptionContainer(object container); + + /// + /// Remove all properties and methods that the added to the options panel. + /// + /// The container to remove. + void RemoveOptionContainer(object container); + + /// + /// Pin all options in a category. + /// + /// + void PinAllOptions(string category); + + /// + /// Unpin all options in a category. + /// + /// + void UnpinAllOptions(string category); + + void PinOption(string name); + + void UnpinOption(string name); + + /// + /// Clear all pinned options. + /// + void ClearPinnedOptions(); + + /// + /// Open a bug report sheet. + /// + /// Callback to invoke once the bug report is completed or cancelled. Null to ignore. + /// + /// Take a screenshot before opening the report sheet (otherwise a screenshot will be taken as + /// the report is sent) + /// + /// Initial content of the bug report description + void ShowBugReportSheet(ActionCompleteCallback onComplete = null, bool takeScreenshot = true, + string descriptionContent = null); + + /// + /// Event invoked whenever the debug panel opens or closes + /// + event VisibilityChangedDelegate PanelVisibilityChanged; + + event PinnedUiCanvasCreated PinnedUiCanvasCreated; + + /// + /// ADVANCED FEATURE. This will convert the debug panel to a world space object and return the RectTransform. + /// This can be used to position the SRDebugger panel somewhere in your scene. + /// This feature is for advanced users online who know what they are doing. Only limited support will be provided + /// for this method. + /// The debug panel will be made visible if it is not already. + /// + /// The debug panel RectTransform. + RectTransform EnableWorldSpaceMode(); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs.meta new file mode 100644 index 00000000..5e7c0242 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9deb724ea27b7f340bb83516c160e016 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs new file mode 100644 index 00000000..53453c45 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs @@ -0,0 +1,8 @@ +namespace SRDebugger.Services +{ + public interface IDebugTriggerService + { + bool IsEnabled { get; set; } + PinAlignment Position { get; set; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs.meta new file mode 100644 index 00000000..b041c288 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDebugTriggerService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aab9371145e3e744a923637a1f6fb194 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs new file mode 100644 index 00000000..c3ffe00b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs @@ -0,0 +1,9 @@ +namespace SRDebugger.Services +{ + public interface IDockConsoleService + { + bool IsVisible { get; set; } + bool IsExpanded { get; set; } + ConsoleAlignment Alignment { get; set; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs.meta new file mode 100644 index 00000000..7ca6f3c3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IDockConsoleService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 401f9008bb9263b478aa472c6e818fa3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs new file mode 100644 index 00000000..9e88b605 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs @@ -0,0 +1,39 @@ +namespace SRDebugger.Services +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using Internal; + + public interface IOptionsService + { + /// + /// Invoked when the collection changes. + /// + event EventHandler OptionsUpdated; + + /// + /// Invoked when the value of an option has been updated. + /// + event EventHandler OptionsValueUpdated; + + ICollection Options { get; } + + /// + /// Scan for options add them to the Options collection + /// + /// Object to scan for options + [Obsolete("Use IOptionsService.AddContainer instead.")] + void Scan(object obj); + + /// + /// Scan for options and add them to the Options collection. + /// + void AddContainer(object obj); + + /// + /// Remove any options from the container. + /// + void RemoveContainer(object obj); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs.meta new file mode 100644 index 00000000..2e0259f2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IOptionsService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33988643b054b86429b4c5f0a1c2308b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs new file mode 100644 index 00000000..eac62d5f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs @@ -0,0 +1,26 @@ +namespace SRDebugger.Services +{ + using System; + using System.Collections.Generic; + + public delegate void PinEntryCompleteCallback(bool validPinEntered); + + public interface IPinEntryService + { + bool IsShowingKeypad { get; } + + /// + /// Show the pin entry form. + /// + /// List of digits 0-9, length 4. + /// Message to display to the user on the form. + /// Callback to invoke when the pin entry is complete or cancelled. + /// True to allow the user to cancel the form. + void ShowPinEntry(IList requiredPin, string message, PinEntryCompleteCallback callback, + bool allowCancel = true); + + [Obsolete("blockInput param is deprecated (and ignored), please use overload without it.")] + void ShowPinEntry(IList requiredPin, string message, PinEntryCompleteCallback callback, bool blockInput, + bool allowCancel); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs.meta new file mode 100644 index 00000000..f7345a3c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinEntryService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 585f26678af38c7498c861763c1890fa +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs new file mode 100644 index 00000000..67f126f4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace SRDebugger.Services +{ + using System; + using Internal; + + public interface IPinnedUIService + { + event Action OptionPinStateChanged; + event Action OptionsCanvasCreated; + + bool IsProfilerPinned { get; set; } + void Pin(OptionDefinition option, int order = -1); + void Unpin(OptionDefinition option); + void UnpinAll(); + bool HasPinned(OptionDefinition option); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs.meta new file mode 100644 index 00000000..4cebd234 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IPinnedOptionsService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d38ebee13954f8b40ba8b4c26e3efe90 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs new file mode 100644 index 00000000..2db41122 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs @@ -0,0 +1,42 @@ + +namespace SRDebugger.Services +{ + using System; + using Profiler; + using SRF.Service; +#if UNITY_2018_1_OR_NEWER + using UnityEngine.Rendering; + using UnityEngine.Experimental.Rendering; +#endif + + public static class ProfilerServiceSelector + { + [ServiceSelector(typeof(IProfilerService))] + public static Type GetProfilerServiceType() + { +#if UNITY_2018_1_OR_NEWER + if(GraphicsSettings.renderPipelineAsset != null) + { + return typeof(SRPProfilerService); + } +#endif + + return typeof(ProfilerServiceImpl); + } + } + + public struct ProfilerFrame + { + public double FrameTime; + public double OtherTime; + public double RenderTime; + public double UpdateTime; + } + + public interface IProfilerService + { + float AverageFrameTime { get; } + float LastFrameTime { get; } + CircularBuffer FrameBuffer { get; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs.meta new file mode 100644 index 00000000..bf25901c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/IProfilerService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7d95917d24be3c48b2afae03dad1abf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs new file mode 100644 index 00000000..a7eb2e7d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs @@ -0,0 +1,98 @@ +namespace SRDebugger +{ + using System; + using Services; + using SRF; + + public sealed class InfoEntry + { + public string Title { get; set; } + + public object Value + { + get + { + try + { + return _valueGetter(); + } + catch (Exception e) + { + return "Error ({0})".Fmt(e.GetType().Name); + } + } + } + + public bool IsPrivate { get; private set; } + + private Func _valueGetter; + + /// + /// Create an instance with a getter function for the value. + /// + /// Name to display to the user. + /// Getter method to acquire the latest value. + /// If true, will be excluded from the bug reporter system. + /// The created object. + public static InfoEntry Create(string name, Func getter, bool isPrivate = false) + { + return new InfoEntry + { + Title = name, + _valueGetter = getter, + IsPrivate = isPrivate + }; + } + + /// + /// Create an instance with a fixed value. + /// + /// Name to display to the user. + /// The value of the entry. + /// If true, will be excluded from the bug reporter system. + /// The created object. + public static InfoEntry Create(string name, object value, bool isPrivate = false) + { + return new InfoEntry + { + Title = name, + _valueGetter = () => value, + IsPrivate = isPrivate + }; + } + } +} + +namespace SRDebugger.Services +{ + using System.Collections.Generic; + + public interface ISystemInformationService + { + /// + /// Get an IEnumerable with the available data categories for this system + /// + IEnumerable GetCategories(); + + /// + /// Get a list of information for a category + /// + /// Category name to fetch (get a list of these from GetCategories()) + /// + IList GetInfo(string category); + + /// + /// Add a piece of system information. + /// + /// + /// + void Add(InfoEntry info, string category = "Default"); + + /// + /// Generate a report from all available system data (useful for sending with bug reports) + /// + /// Set to true to include identifying private information (usually you don't want this) + /// The generated report + Dictionary> CreateReport(bool includePrivate = false); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs.meta new file mode 100644 index 00000000..678e0200 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ISystemInformationService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfaf3e98a7641224c96169cc4280c372 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation.meta new file mode 100644 index 00000000..22030612 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 164788c4a834b1b4fa28ac46c5def034 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs new file mode 100644 index 00000000..ff91993c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs @@ -0,0 +1,117 @@ + +#if NETFX_CORE +using System.Threading.Tasks; +#endif + +namespace SRDebugger.Services.Implementation +{ + using System; + using Internal; + using SRF; + using SRF.Service; + using UnityEngine; + + [Service(typeof (IBugReportService))] + public class BugReportApiService : SRServiceBase, IBugReportService + { + public const float Timeout = 12f; + private BugReportCompleteCallback _completeCallback; + private string _errorMessage; + private bool _isBusy; + private float _previousProgress; + private BugReportProgressCallback _progressCallback; + private BugReportApi _reportApi; + + public void SendBugReport(BugReport report, BugReportCompleteCallback completeHandler, + BugReportProgressCallback progressCallback = null) + { + if (report == null) + { + throw new ArgumentNullException("report"); + } + + if (completeHandler == null) + { + throw new ArgumentNullException("completeHandler"); + } + + if (_isBusy) + { + completeHandler(false, "BugReportApiService is already sending a bug report"); + return; + } + + if (Application.internetReachability == NetworkReachability.NotReachable) + { + completeHandler(false, "No Internet Connection"); + return; + } + + _errorMessage = ""; + enabled = true; + + _isBusy = true; + + _completeCallback = completeHandler; + _progressCallback = progressCallback; + + _reportApi = new BugReportApi(report, Settings.Instance.ApiKey); + + StartCoroutine(_reportApi.Submit()); + } + + protected override void Awake() + { + base.Awake(); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger")); + } + + private void OnProgress(float progress) + { + if (_progressCallback != null) + { + _progressCallback(progress); + } + } + + private void OnComplete() + { + _isBusy = false; + + enabled = false; + + _completeCallback(_reportApi.WasSuccessful, + string.IsNullOrEmpty(_reportApi.ErrorMessage) ? _errorMessage : _reportApi.ErrorMessage); + + _completeCallback = null; + } + + protected override void Update() + { + base.Update(); + + if (!_isBusy) + { + return; + } + + if (_reportApi == null) + { + _isBusy = false; + } + + if (_reportApi.IsComplete) + { + OnComplete(); + return; + } + + if (_previousProgress != _reportApi.Progress) + { + OnProgress(_reportApi.Progress); + _previousProgress = _reportApi.Progress; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs.meta new file mode 100644 index 00000000..acb599b2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportApiService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f0a70f9ea64595459ec202791f9954a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs new file mode 100644 index 00000000..f59ce78e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs @@ -0,0 +1,167 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using System.Collections; + using Internal; + using SRF; + using SRF.Service; + using UI.Other; + using UnityEngine; + + [Service(typeof (BugReportPopoverService))] + public class BugReportPopoverService : SRServiceBase + { + private BugReportCompleteCallback _callback; + private bool _isVisible; + private BugReportPopoverRoot _popover; + private BugReportSheetController _sheet; + + public bool IsShowingPopover + { + get { return _isVisible; } + } + + public void ShowBugReporter(BugReportCompleteCallback callback, bool takeScreenshotFirst = true, + string descriptionText = null) + { + if (_isVisible) + { + throw new InvalidOperationException("Bug report popover is already visible."); + } + + if (_popover == null) + { + Load(); + } + + if (_popover == null) + { + Debug.LogWarning("[SRDebugger] Bug report popover failed loading, executing callback with fail result"); + callback(false, "Resource load failed"); + return; + } + + _callback = callback; + + _isVisible = true; + SRDebuggerUtil.EnsureEventSystemExists(); + + StartCoroutine(OpenCo(takeScreenshotFirst, descriptionText)); + } + + private IEnumerator OpenCo(bool takeScreenshot, string descriptionText) + { + if (takeScreenshot) + { + // Wait for screenshot to be captured + yield return StartCoroutine(BugReportScreenshotUtil.ScreenshotCaptureCo()); + } + _popover.CachedGameObject.SetActive(true); + + yield return new WaitForEndOfFrame(); + + if (!string.IsNullOrEmpty(descriptionText)) + { + _sheet.DescriptionField.text = descriptionText; + } + } + + private void SubmitComplete(bool didSucceed, string errorMessage) + { + OnComplete(didSucceed, errorMessage, false); + } + + private void CancelPressed() + { + OnComplete(false, "User Cancelled", true); + } + + private void OnComplete(bool success, string errorMessage, bool close) + { + if (!_isVisible) + { + Debug.LogWarning("[SRDebugger] Received callback at unexpected time. ???"); + return; + } + + if (!success && !close) + { + return; + } + + _isVisible = false; + + // Destroy it all so it doesn't linger in the scene using memory + _popover.gameObject.SetActive(false); + Destroy(_popover.gameObject); + + _popover = null; + _sheet = null; + + BugReportScreenshotUtil.ScreenshotData = null; + + _callback(success, errorMessage); + } + + private void TakingScreenshot() + { + if (!IsShowingPopover) + { + Debug.LogWarning("[SRDebugger] Received callback at unexpected time. ???"); + return; + } + + _popover.CanvasGroup.alpha = 0f; + } + + private void ScreenshotComplete() + { + if (!IsShowingPopover) + { + Debug.LogWarning("[SRDebugger] Received callback at unexpected time. ???"); + return; + } + + _popover.CanvasGroup.alpha = 1f; + } + + protected override void Awake() + { + base.Awake(); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger")); + } + + private void Load() + { + var popoverPrefab = Resources.Load(SRDebugPaths.BugReportPopoverPath); + var sheetPrefab = Resources.Load(SRDebugPaths.BugReportSheetPath); + + if (popoverPrefab == null) + { + Debug.LogError("[SRDebugger] Unable to load bug report popover prefab"); + return; + } + + if (sheetPrefab == null) + { + Debug.LogError("[SRDebugger] Unable to load bug report sheet prefab"); + return; + } + + _popover = SRInstantiate.Instantiate(popoverPrefab); + _popover.CachedTransform.SetParent(CachedTransform, false); + + _sheet = SRInstantiate.Instantiate(sheetPrefab); + _sheet.CachedTransform.SetParent(_popover.Container, false); + + _sheet.SubmitComplete = SubmitComplete; + _sheet.CancelPressed = CancelPressed; + + _sheet.TakingScreenshot = TakingScreenshot; + _sheet.ScreenshotComplete = ScreenshotComplete; + + _popover.CachedGameObject.SetActive(false); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs.meta new file mode 100644 index 00000000..68f47264 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/BugReportPopoverService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80565ccf143b6fc40aafeb9c7d23aeef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs new file mode 100644 index 00000000..1f3039f0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs @@ -0,0 +1,32 @@ +namespace SRDebugger.Services.Implementation +{ + using SRF; + using SRF.Service; + using UnityEngine; + + [Service(typeof (IDebugCameraService))] + public class DebugCameraServiceImpl : IDebugCameraService + { + private Camera _debugCamera; + + public DebugCameraServiceImpl() + { + if (Settings.Instance.UseDebugCamera) + { + _debugCamera = new GameObject("SRDebugCamera").AddComponent(); + + _debugCamera.cullingMask = 1 << Settings.Instance.DebugLayer; + _debugCamera.depth = Settings.Instance.DebugCameraDepth; + + _debugCamera.clearFlags = CameraClearFlags.Depth; + + _debugCamera.transform.SetParent(Hierarchy.Get("SRDebugger")); + } + } + + public Camera Camera + { + get { return _debugCamera; } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs.meta new file mode 100644 index 00000000..cb128be8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugCameraServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07b63666d1ce0074a8e9be3dae9d39a3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs new file mode 100644 index 00000000..e93441ce --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs @@ -0,0 +1,153 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using Internal; + using SRF; + using SRF.Service; + using UI; + using UnityEngine; + + [Service(typeof (IDebugPanelService))] + public class DebugPanelServiceImpl : ScriptableObject, IDebugPanelService + { + private DebugPanelRoot _debugPanelRootObject; + public event Action VisibilityChanged; + + private bool _isVisible; + + private bool? _cursorWasVisible; + + private CursorLockMode? _cursorLockMode; + + + public DebugPanelRoot RootObject + { + get { return _debugPanelRootObject; } + } + + public bool IsLoaded + { + get { return _debugPanelRootObject != null; } + } + + public bool IsVisible + { + get { return IsLoaded && _isVisible; } + set + { + if (_isVisible == value) + { + return; + } + + if (value) + { + if (!IsLoaded) + { + Load(); + } + + SRDebuggerUtil.EnsureEventSystemExists(); + + _debugPanelRootObject.CanvasGroup.alpha = 1.0f; + _debugPanelRootObject.CanvasGroup.interactable = true; + _debugPanelRootObject.CanvasGroup.blocksRaycasts = true; + _cursorWasVisible = Cursor.visible; + _cursorLockMode = Cursor.lockState; + + if (Settings.Instance.AutomaticallyShowCursor) + { + Cursor.visible = true; + Cursor.lockState = CursorLockMode.None; + } + } + else + { + if (IsLoaded) + { + _debugPanelRootObject.CanvasGroup.alpha = 0.0f; + _debugPanelRootObject.CanvasGroup.interactable = false; + _debugPanelRootObject.CanvasGroup.blocksRaycasts = false; + } + + if (_cursorWasVisible.HasValue) + { + Cursor.visible = _cursorWasVisible.Value; + _cursorWasVisible = null; + } + + if (_cursorLockMode.HasValue) + { + Cursor.lockState = _cursorLockMode.Value; + _cursorLockMode = null; + } + } + + _isVisible = value; + + if (VisibilityChanged != null) + { + VisibilityChanged(this, _isVisible); + } + } + } + + public DefaultTabs? ActiveTab + { + get + { + if (_debugPanelRootObject == null) + { + return null; + } + + return _debugPanelRootObject.TabController.ActiveTab; + } + } + + public void OpenTab(DefaultTabs tab) + { + if (!IsVisible) + { + IsVisible = true; + } + + _debugPanelRootObject.TabController.OpenTab(tab); + } + + public void Unload() + { + if (_debugPanelRootObject == null) + { + return; + } + + IsVisible = false; + + _debugPanelRootObject.CachedGameObject.SetActive(false); + Destroy(_debugPanelRootObject.CachedGameObject); + + _debugPanelRootObject = null; + } + + private void Load() + { + var prefab = Resources.Load(SRDebugPaths.DebugPanelPrefabPath); + + if (prefab == null) + { + Debug.LogError("[SRDebugger] Error loading debug panel prefab"); + return; + } + + _debugPanelRootObject = SRInstantiate.Instantiate(prefab); + _debugPanelRootObject.name = "Panel"; + + DontDestroyOnLoad(_debugPanelRootObject); + + _debugPanelRootObject.CachedTransform.SetParent(Hierarchy.Get("SRDebugger"), true); + + SRDebuggerUtil.EnsureEventSystemExists(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs.meta new file mode 100644 index 00000000..f5f0cefb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugPanelServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3395027a4a5c704439ebf91760920165 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs new file mode 100644 index 00000000..fd213708 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs @@ -0,0 +1,191 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using Internal; + using SRF; + using SRF.Service; + using UI.Other; + using UnityEngine; + + [Service(typeof (IDebugTriggerService))] + public class DebugTriggerImpl : SRServiceBase, IDebugTriggerService + { + private PinAlignment _position; + private TriggerRoot _trigger; + private IConsoleService _consoleService; + public bool IsEnabled + { + get { return _trigger != null && _trigger.CachedGameObject.activeSelf; } + set + { + // Create trigger if it does not yet exist + if (value && _trigger == null) + { + CreateTrigger(); + } + + if (_trigger != null) + { + _trigger.CachedGameObject.SetActive(value); + } + } + } + public PinAlignment Position + { + get { return _position; } + set + { + if (_trigger != null) + { + SetTriggerPosition(_trigger.TriggerTransform, value); + } + + _position = value; + } + } + protected override void Awake() + { + base.Awake(); + DontDestroyOnLoad(CachedGameObject); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger"), true); + + name = "Trigger"; + } + + private void OnError(IConsoleService console) + { + if (_trigger != null) + { + _trigger.ErrorNotifier.ShowErrorWarning(); + } + } + + private void CreateTrigger() + { + var prefab = Resources.Load(SRDebugPaths.TriggerPrefabPath); + + if (prefab == null) + { + Debug.LogError("[SRDebugger] Error loading trigger prefab"); + return; + } + + _trigger = SRInstantiate.Instantiate(prefab); + _trigger.CachedTransform.SetParent(CachedTransform, true); + + SetTriggerPosition(_trigger.TriggerTransform, _position); + + switch (Settings.Instance.TriggerBehaviour) + { + case Settings.TriggerBehaviours.TripleTap: + { + _trigger.TripleTapButton.onClick.AddListener(OnTriggerButtonClick); + _trigger.TapHoldButton.gameObject.SetActive(false); + + break; + } + + case Settings.TriggerBehaviours.TapAndHold: + { + _trigger.TapHoldButton.onLongPress.AddListener(OnTriggerButtonClick); + _trigger.TripleTapButton.gameObject.SetActive(false); + + break; + } + + case Settings.TriggerBehaviours.DoubleTap: + { + _trigger.TripleTapButton.RequiredTapCount = 2; + _trigger.TripleTapButton.onClick.AddListener(OnTriggerButtonClick); + _trigger.TapHoldButton.gameObject.SetActive(false); + + break; + } + + default: + throw new Exception("Unhandled TriggerBehaviour"); + } + + SRDebuggerUtil.EnsureEventSystemExists(); + + UnityEngine.SceneManagement.SceneManager.activeSceneChanged += OnActiveSceneChanged; + + if (Settings.Instance.ErrorNotification) + { + _consoleService = SRServiceManager.GetService(); + _consoleService.Error += OnError; + } + } + protected override void OnDestroy() + { + UnityEngine.SceneManagement.SceneManager.activeSceneChanged -= OnActiveSceneChanged; + + if (_consoleService != null) + { + _consoleService.Error -= OnError; + } + + base.OnDestroy(); + } + private static void OnActiveSceneChanged(UnityEngine.SceneManagement.Scene s1, UnityEngine.SceneManagement.Scene s2) + { + SRDebuggerUtil.EnsureEventSystemExists(); + } + + private void OnTriggerButtonClick() + { + if (_trigger.ErrorNotifier.IsVisible) + { + // Open into console if there is an error. + SRDebug.Instance.ShowDebugPanel(DefaultTabs.Console); + } + else + { + SRDebug.Instance.ShowDebugPanel(); + } + } + + private static void SetTriggerPosition(RectTransform t, PinAlignment position) + { + var pivotX = 0f; + var pivotY = 0f; + + var posX = 0f; + var posY = 0f; + + if (position == PinAlignment.TopLeft || position == PinAlignment.TopRight || position == PinAlignment.TopCenter) + { + pivotY = 1f; + posY = 1f; + } + else if (position == PinAlignment.BottomLeft || position == PinAlignment.BottomRight || position == PinAlignment.BottomCenter) + { + pivotY = 0f; + posY = 0f; + } else if (position == PinAlignment.CenterLeft || position == PinAlignment.CenterRight) + { + pivotY = 0.5f; + posY = 0.5f; + } + + if (position == PinAlignment.TopLeft || position == PinAlignment.BottomLeft || position == PinAlignment.CenterLeft) + { + pivotX = 0f; + posX = 0f; + } + else if (position == PinAlignment.TopRight || position == PinAlignment.BottomRight || position == PinAlignment.CenterRight) + { + pivotX = 1f; + posX = 1f; + } else if (position == PinAlignment.TopCenter || position == PinAlignment.BottomCenter) + { + pivotX = 0.5f; + posX = 0.5f; + } + + t.pivot = new Vector2(pivotX, pivotY); + t.anchorMax = t.anchorMin = new Vector2(posX, posY); + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs.meta new file mode 100644 index 00000000..db61d5d5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DebugTriggerImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cbf8bc5e9eb92448bc12690ebd84a02 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs new file mode 100644 index 00000000..fb94335d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs @@ -0,0 +1,148 @@ +namespace SRDebugger.Services.Implementation +{ + using Internal; + using SRF.Service; + using UI.Other; + using UnityEngine; + + [Service(typeof (IDockConsoleService))] + public class DockConsoleServiceImpl : IDockConsoleService + { + private ConsoleAlignment _alignment; + private DockConsoleController _consoleRoot; + private bool _didSuspendTrigger; + private bool _isExpanded = true; + private bool _isVisible; + + public DockConsoleServiceImpl() + { + _alignment = Settings.Instance.ConsoleAlignment; + } + + public bool IsVisible + { + get { return _isVisible; } + + set + { + if (value == _isVisible) + { + return; + } + + _isVisible = value; + + if (_consoleRoot == null && value) + { + Load(); + } + else + { + _consoleRoot.CachedGameObject.SetActive(value); + } + + CheckTrigger(); + } + } + + public bool IsExpanded + { + get { return _isExpanded; } + + set + { + if (value == _isExpanded) + { + return; + } + + _isExpanded = value; + + if (_consoleRoot == null && value) + { + Load(); + } + else + { + _consoleRoot.SetDropdownVisibility(value); + } + + CheckTrigger(); + } + } + + public ConsoleAlignment Alignment + { + get { return _alignment; } + set + { + _alignment = value; + + if (_consoleRoot != null) + { + _consoleRoot.SetAlignmentMode(value); + } + + CheckTrigger(); + } + } + + private void Load() + { + var dockService = SRServiceManager.GetService(); + + if (dockService == null) + { + Debug.LogError("[DockConsoleService] PinnedUIService not found"); + return; + } + + var pinService = dockService as PinnedUIServiceImpl; + + if (pinService == null) + { + Debug.LogError("[DockConsoleService] Expected IPinnedUIService to be PinnedUIServiceImpl"); + return; + } + + _consoleRoot = pinService.DockConsoleController; + + _consoleRoot.SetDropdownVisibility(_isExpanded); + _consoleRoot.IsVisible = _isVisible; + _consoleRoot.SetAlignmentMode(_alignment); + + CheckTrigger(); + } + + private void CheckTrigger() + { + ConsoleAlignment? triggerAlignment = null; + var pinAlignment = Service.Trigger.Position; + + if (pinAlignment == PinAlignment.TopLeft || + pinAlignment == PinAlignment.TopRight || pinAlignment == PinAlignment.TopCenter) + { + triggerAlignment = ConsoleAlignment.Top; + } else if (pinAlignment == PinAlignment.BottomLeft || + pinAlignment == PinAlignment.BottomRight || + pinAlignment == PinAlignment.BottomCenter) + { + triggerAlignment = ConsoleAlignment.Bottom; + } + + var shouldHide = triggerAlignment.HasValue && IsVisible && Alignment == triggerAlignment.Value; + + // Show trigger if we have hidden it, and we no longer need to hide it. + if (_didSuspendTrigger && !shouldHide) + { + Service.Trigger.IsEnabled = true; + _didSuspendTrigger = false; + } + else if (Service.Trigger.IsEnabled && shouldHide) + { + Service.Trigger.IsEnabled = false; + _didSuspendTrigger = true; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs.meta new file mode 100644 index 00000000..af0074b8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/DockConsoleServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 456e72e9efa4586489f625dc79f1c54d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs new file mode 100644 index 00000000..22cf283b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs @@ -0,0 +1,162 @@ +namespace SRDebugger.Services.Implementation +{ + using System.Collections.Generic; + using Internal; + using SRF; + using SRF.Service; + using UnityEngine; + + [Service(typeof (KeyboardShortcutListenerService))] + public class KeyboardShortcutListenerService : SRServiceBase + { + private List _shortcuts; + + protected override void Awake() + { + base.Awake(); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger")); + + _shortcuts = new List(Settings.Instance.KeyboardShortcuts); + } + + private void ToggleTab(DefaultTabs t) + { + var activeTab = Service.Panel.ActiveTab; + + if (Service.Panel.IsVisible && activeTab.HasValue && activeTab.Value == t) + { + SRDebug.Instance.HideDebugPanel(); + } + else + { + SRDebug.Instance.ShowDebugPanel(t); + } + } + + private void ExecuteShortcut(Settings.KeyboardShortcut shortcut) + { + switch (shortcut.Action) + { + case Settings.ShortcutActions.OpenSystemInfoTab: + + ToggleTab(DefaultTabs.SystemInformation); + + break; + + case Settings.ShortcutActions.OpenConsoleTab: + + ToggleTab(DefaultTabs.Console); + + break; + + case Settings.ShortcutActions.OpenOptionsTab: + + ToggleTab(DefaultTabs.Options); + + break; + + case Settings.ShortcutActions.OpenProfilerTab: + + ToggleTab(DefaultTabs.Profiler); + + break; + + case Settings.ShortcutActions.OpenBugReporterTab: + + ToggleTab(DefaultTabs.BugReporter); + + break; + + case Settings.ShortcutActions.ClosePanel: + + SRDebug.Instance.HideDebugPanel(); + + break; + + case Settings.ShortcutActions.OpenPanel: + + SRDebug.Instance.ShowDebugPanel(); + + break; + + case Settings.ShortcutActions.TogglePanel: + + if (SRDebug.Instance.IsDebugPanelVisible) + { + SRDebug.Instance.HideDebugPanel(); + } + else + { + SRDebug.Instance.ShowDebugPanel(); + } + + break; + + case Settings.ShortcutActions.ShowBugReportPopover: + + SRDebug.Instance.ShowBugReportSheet(); + + break; + + case Settings.ShortcutActions.ToggleDockedConsole: + + SRDebug.Instance.DockConsole.IsVisible = !SRDebug.Instance.DockConsole.IsVisible; + + break; + + case Settings.ShortcutActions.ToggleDockedProfiler: + + SRDebug.Instance.IsProfilerDocked = !SRDebug.Instance.IsProfilerDocked; + + break; + + default: + + Debug.LogWarning("[SRDebugger] Unhandled keyboard shortcut: " + shortcut.Action); + + break; + } + } + + protected override void Update() + { + base.Update(); + + if (Settings.Instance.KeyboardEscapeClose && Input.GetKeyDown(KeyCode.Escape) && Service.Panel.IsVisible) + { + SRDebug.Instance.HideDebugPanel(); + } + + var ctrl = Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl); + var alt = Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt); + var shift = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift); + + for (var i = 0; i < _shortcuts.Count; i++) + { + var s = _shortcuts[i]; + + if (s.Control && !ctrl) + { + continue; + } + + if (s.Shift && !shift) + { + continue; + } + + if (s.Alt && !alt) + { + continue; + } + + if (Input.GetKeyDown(s.Key)) + { + ExecuteShortcut(s); + break; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs.meta new file mode 100644 index 00000000..7d9193a0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/KeyboardShortcutListenerService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cad04a63089e6e844969aa944ba22fdd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs new file mode 100644 index 00000000..9ddef3dd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs @@ -0,0 +1,97 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.ComponentModel; + using Internal; + using SRF.Service; + + [Service(typeof (IOptionsService))] + public class OptionsServiceImpl : IOptionsService + { + public event EventHandler OptionsUpdated; + public event EventHandler OptionsValueUpdated; + + public ICollection Options + { + get { return _optionsReadonly; } + } + + private readonly Dictionary> _optionContainerLookup = new Dictionary>(); + private readonly List _options = new List(); + private readonly IList _optionsReadonly; + + public OptionsServiceImpl() + { + _optionsReadonly = new ReadOnlyCollection(_options); + } + + public void Scan(object obj) + { + AddContainer(obj); + } + + public void AddContainer(object obj) + { + if (_optionContainerLookup.ContainsKey(obj)) + { + throw new Exception("An object should only be added once."); + } + + var options = SRDebuggerUtil.ScanForOptions(obj); + _optionContainerLookup.Add(obj, options); + + if (options.Count > 0) + { + _options.AddRange(options); + OnOptionsUpdated(); + + var changed = obj as INotifyPropertyChanged; + if (changed != null) + { + changed.PropertyChanged += OnPropertyChanged; + } + } + } + + public void RemoveContainer(object obj) + { + if (!_optionContainerLookup.ContainsKey(obj)) + { + return; + } + + var list = _optionContainerLookup[obj]; + _optionContainerLookup.Remove(obj); + foreach (var op in list) + { + _options.Remove(op); + } + + var changed = obj as INotifyPropertyChanged; + if (changed != null) + { + changed.PropertyChanged -= OnPropertyChanged; + } + + OnOptionsUpdated(); + } + + private void OnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) + { + if (OptionsValueUpdated != null) + { + OptionsValueUpdated(this, propertyChangedEventArgs); + } + } + + private void OnOptionsUpdated() + { + if (OptionsUpdated != null) + { + OptionsUpdated(this, EventArgs.Empty); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs.meta new file mode 100644 index 00000000..9abebb9b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/OptionsServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1614fef8faa5954d8bda6699bed3fdb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs new file mode 100644 index 00000000..e9ffa29b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs @@ -0,0 +1,137 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using System.Collections.Generic; + using System.Linq; + using Internal; + using SRF; + using SRF.Service; + using UI.Controls; + using UnityEngine; + + [Service(typeof (IPinEntryService))] + public class PinEntryServiceImpl : SRServiceBase, IPinEntryService + { + private PinEntryCompleteCallback _callback; + private bool _isVisible; + private PinEntryControl _pinControl; + private List _requiredPin = new List(4); + + public bool IsShowingKeypad + { + get { return _isVisible; } + } + + public void ShowPinEntry(IList requiredPin, string message, PinEntryCompleteCallback callback, + bool allowCancel = true) + { + if (_isVisible) + { + throw new InvalidOperationException("Pin entry is already in progress"); + } + + VerifyPin(requiredPin); + + if (_pinControl == null) + { + Load(); + } + + if (_pinControl == null) + { + Debug.LogWarning("[PinEntry] Pin entry failed loading, executing callback with fail result"); + callback(false); + return; + } + + _pinControl.Clear(); + _pinControl.PromptText.text = message; + + _pinControl.CanCancel = allowCancel; + + _callback = callback; + + _requiredPin.Clear(); + _requiredPin.AddRange(requiredPin); + + _pinControl.Show(); + + _isVisible = true; + + SRDebuggerUtil.EnsureEventSystemExists(); + } + + [Obsolete] + public void ShowPinEntry(IList requiredPin, string message, PinEntryCompleteCallback callback, + bool blockInput, + bool allowCancel) + { + ShowPinEntry(requiredPin, message, callback, allowCancel); + } + + protected override void Awake() + { + base.Awake(); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger")); + } + + private void Load() + { + var prefab = Resources.Load(SRDebugPaths.PinEntryPrefabPath); + + if (prefab == null) + { + Debug.LogError("[PinEntry] Unable to load pin entry prefab"); + return; + } + + _pinControl = SRInstantiate.Instantiate(prefab); + _pinControl.CachedTransform.SetParent(CachedTransform, false); + + _pinControl.Hide(); + + _pinControl.Complete += PinControlOnComplete; + } + + private void PinControlOnComplete(IList result, bool didCancel) + { + var isValid = _requiredPin.SequenceEqual(result); + + if (!didCancel && !isValid) + { + _pinControl.Clear(); + _pinControl.PlayInvalidCodeAnimation(); + + return; + } + + _isVisible = false; + _pinControl.Hide(); + + if (didCancel) + { + _callback(false); + return; + } + + _callback(isValid); + } + + private void VerifyPin(IList pin) + { + if (pin.Count != 4) + { + throw new ArgumentException("Pin list must have 4 elements"); + } + + for (var i = 0; i < pin.Count; i++) + { + if (pin[i] < 0 || pin[i] > 9) + { + throw new ArgumentException("Pin numbers must be >= 0 && <= 9"); + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs.meta new file mode 100644 index 00000000..89d2244c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinEntryServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43bd0242747ae6042a436f1ff85403d4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs new file mode 100644 index 00000000..324da856 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs @@ -0,0 +1,277 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using System.Linq; + using Internal; + using SRF; + using SRF.Service; + using UI.Controls; + using UI.Other; + using UnityEngine; + + [Service(typeof (IPinnedUIService))] + public class PinnedUIServiceImpl : SRServiceBase, IPinnedUIService + { + private readonly List _controlList = new List(); + + private readonly Dictionary _pinnedObjects = + new Dictionary(); + + private bool _queueRefresh; + private PinnedUIRoot _uiRoot; + + public DockConsoleController DockConsoleController + { + get + { + if (_uiRoot == null) + { + Load(); + } + return _uiRoot.DockConsoleController; + } + } + + public event Action OptionPinStateChanged; + public event Action OptionsCanvasCreated; + + public bool IsProfilerPinned + { + get + { + if (_uiRoot == null) + { + return false; + } + return _uiRoot.Profiler.activeSelf; + } + set + { + if (_uiRoot == null) + { + Load(); + } + _uiRoot.Profiler.SetActive(value); + } + } + + public void Pin(OptionDefinition obj, int order = -1) + { + if (_uiRoot == null) + { + Load(); + } + + if (_pinnedObjects.ContainsKey(obj)) + { + return; + } + + var control = OptionControlFactory.CreateControl(obj); + + control.CachedTransform.SetParent(_uiRoot.Container, false); + + if (order >= 0) + { + control.CachedTransform.SetSiblingIndex(order); + } + + _pinnedObjects.Add(obj, control); + _controlList.Add(control); + + OnPinnedStateChanged(obj, true); + } + + public void Unpin(OptionDefinition obj) + { + if (!_pinnedObjects.ContainsKey(obj)) + { + return; + } + + var control = _pinnedObjects[obj]; + + _pinnedObjects.Remove(obj); + _controlList.Remove(control); + + Destroy(control.CachedGameObject); + + OnPinnedStateChanged(obj, false); + } + + private void OnPinnedStateChanged(OptionDefinition option, bool isPinned) + { + if (OptionPinStateChanged != null) + { + OptionPinStateChanged(option, isPinned); + } + } + + public void UnpinAll() + { + foreach (var op in _pinnedObjects) + { + Destroy(op.Value.CachedGameObject); + } + + _pinnedObjects.Clear(); + _controlList.Clear(); + } + + public bool HasPinned(OptionDefinition option) + { + return _pinnedObjects.ContainsKey(option); + } + + protected override void Awake() + { + base.Awake(); + + CachedTransform.SetParent(Hierarchy.Get("SRDebugger")); + } + + private void Load() + { + var prefab = Resources.Load(SRDebugPaths.PinnedUIPrefabPath); + + if (prefab == null) + { + Debug.LogError("[SRDebugger.PinnedUI] Error loading ui prefab"); + return; + } + + var instance = SRInstantiate.Instantiate(prefab); + instance.CachedTransform.SetParent(CachedTransform, false); + + _uiRoot = instance; + UpdateAnchors(); + SRDebug.Instance.PanelVisibilityChanged += OnDebugPanelVisibilityChanged; + + Service.Options.OptionsUpdated += OnOptionsUpdated; + Service.Options.OptionsValueUpdated += OptionsOnPropertyChanged; + + if (OptionsCanvasCreated != null) + { + OptionsCanvasCreated(_uiRoot.Canvas.GetComponent()); + } + } + + private void UpdateAnchors() + { + // Setup alignment of Profiler/Options splitter + switch (Settings.Instance.ProfilerAlignment) + { + case PinAlignment.BottomLeft: + case PinAlignment.TopLeft: + case PinAlignment.CenterLeft: + _uiRoot.Profiler.transform.SetSiblingIndex(0); + break; + + case PinAlignment.BottomRight: + case PinAlignment.TopRight: + case PinAlignment.CenterRight: + _uiRoot.Profiler.transform.SetSiblingIndex(1); + break; + } + + // Setup alignment of Profiler vertical layout group + switch (Settings.Instance.ProfilerAlignment) + { + case PinAlignment.TopRight: + case PinAlignment.TopLeft: + _uiRoot.ProfilerVerticalLayoutGroup.childAlignment = TextAnchor.UpperCenter; + break; + + case PinAlignment.BottomRight: + case PinAlignment.BottomLeft: + _uiRoot.ProfilerVerticalLayoutGroup.childAlignment = TextAnchor.LowerCenter; + break; + + case PinAlignment.CenterLeft: + case PinAlignment.CenterRight: + _uiRoot.ProfilerVerticalLayoutGroup.childAlignment = TextAnchor.MiddleCenter; + break; + } + + _uiRoot.ProfilerHandleManager.SetAlignment(Settings.Instance.ProfilerAlignment); + + // Setup alignment of options flow layout group + switch (Settings.Instance.OptionsAlignment) + { + case PinAlignment.BottomLeft: // OptionsBottomLeft + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.LowerLeft; + break; + case PinAlignment.TopLeft: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.UpperLeft; + break; + case PinAlignment.BottomRight: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.LowerRight; + break; + case PinAlignment.TopRight: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.UpperRight; + break; + case PinAlignment.BottomCenter: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.LowerCenter; + break; + case PinAlignment.TopCenter: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.UpperCenter; + break; + case PinAlignment.CenterLeft: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.MiddleLeft; + break; + case PinAlignment.CenterRight: + _uiRoot.OptionsLayoutGroup.childAlignment = TextAnchor.MiddleRight; + break; + } + } + + protected override void Update() + { + base.Update(); + + if (_queueRefresh) + { + _queueRefresh = false; + Refresh(); + } + } + + private void OnOptionsUpdated(object sender, EventArgs eventArgs) + { + // Check for removed options. + var pinned = _pinnedObjects.Keys.ToList(); + + foreach (var op in pinned) + { + if (!Service.Options.Options.Contains(op)) + { + Unpin(op); + } + } + } + + private void OptionsOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) + { + _queueRefresh = true; + } + + private void OnDebugPanelVisibilityChanged(bool isVisible) + { + // Refresh bindings when debug panel is no longer visible + if (!isVisible) + { + _queueRefresh = true; + } + } + + private void Refresh() + { + for (var i = 0; i < _controlList.Count; i++) + { + _controlList[i].Refresh(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs.meta new file mode 100644 index 00000000..48aa8f3b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/PinnedUIServiceImpl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba911226d6eee2441ba45b76f81a1d62 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs new file mode 100644 index 00000000..cc989c55 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs @@ -0,0 +1,317 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using Internal; + using SRF; + using SRF.Service; + using UnityEngine; + using Object = UnityEngine.Object; + using SRF.UI; + using UnityEngine.UI; + + [Service(typeof (IDebugService))] + public class SRDebugService : IDebugService + { + public IDockConsoleService DockConsole + { + get { return Service.DockConsole; } + } + + public event VisibilityChangedDelegate PanelVisibilityChanged; + public event PinnedUiCanvasCreated PinnedUiCanvasCreated; + + private readonly IDebugPanelService _debugPanelService; + private readonly IDebugTriggerService _debugTrigger; + private readonly ISystemInformationService _informationService; + private readonly IOptionsService _optionsService; + private readonly IPinnedUIService _pinnedUiService; + + private bool _entryCodeEnabled; + private bool _hasAuthorised; + private DefaultTabs? _queuedTab; + private RectTransform _worldSpaceTransform; + + public SRDebugService() + { + SRServiceManager.RegisterService(this); + + // Load profiler + SRServiceManager.GetService(); + + // Setup trigger service + _debugTrigger = SRServiceManager.GetService(); + + _informationService = SRServiceManager.GetService(); + + _pinnedUiService = SRServiceManager.GetService(); + _pinnedUiService.OptionsCanvasCreated += transform => + { + if (PinnedUiCanvasCreated == null) return; + try + { + PinnedUiCanvasCreated(transform); + } + catch(Exception e) + { + Debug.LogException(e); + } + }; + + _optionsService = SRServiceManager.GetService(); + + // Create debug panel service (this does not actually load any UI resources until opened) + _debugPanelService = SRServiceManager.GetService(); + + // Subscribe to visibility changes to provide API-facing event for panel open/close + _debugPanelService.VisibilityChanged += DebugPanelServiceOnVisibilityChanged; + + _debugTrigger.IsEnabled = Settings.EnableTrigger == Settings.TriggerEnableModes.Enabled || + Settings.EnableTrigger == Settings.TriggerEnableModes.MobileOnly && Application.isMobilePlatform || + Settings.EnableTrigger == Settings.TriggerEnableModes.DevelopmentBuildsOnly && Debug.isDebugBuild; + + _debugTrigger.Position = Settings.TriggerPosition; + + if (Settings.EnableKeyboardShortcuts) + { + SRServiceManager.GetService(); + } + + _entryCodeEnabled = Settings.Instance.RequireCode && Settings.Instance.EntryCode.Count == 4; + + if (Settings.Instance.RequireCode && !_entryCodeEnabled) + { + Debug.LogError("[SRDebugger] RequireCode is enabled, but pin is not 4 digits"); + } + + // Ensure that root object cannot be destroyed on scene loads + var srDebuggerParent = Hierarchy.Get("SRDebugger"); + Object.DontDestroyOnLoad(srDebuggerParent.gameObject); + + // Add any options containers that were created on init + var internalRegistry = SRServiceManager.GetService(); + internalRegistry.SetHandler(_optionsService.AddContainer); + } + + public Settings Settings + { + get { return Settings.Instance; } + } + + public bool IsDebugPanelVisible + { + get { return _debugPanelService.IsVisible; } + } + + public bool IsTriggerEnabled + { + get { return _debugTrigger.IsEnabled; } + set { _debugTrigger.IsEnabled = value; } + } + + public bool IsProfilerDocked + { + get { return Service.PinnedUI.IsProfilerPinned; } + set { Service.PinnedUI.IsProfilerPinned = value; } + } + + public void AddSystemInfo(InfoEntry entry, string category = "Default") + { + _informationService.Add(entry, category); + } + + public void ShowDebugPanel(bool requireEntryCode = true) + { + if (requireEntryCode && _entryCodeEnabled && !_hasAuthorised) + { + PromptEntryCode(); + return; + } + + _debugPanelService.IsVisible = true; + } + + public void ShowDebugPanel(DefaultTabs tab, bool requireEntryCode = true) + { + if (requireEntryCode && _entryCodeEnabled && !_hasAuthorised) + { + _queuedTab = tab; + PromptEntryCode(); + return; + } + + _debugPanelService.IsVisible = true; + _debugPanelService.OpenTab(tab); + } + + public void HideDebugPanel() + { + _debugPanelService.IsVisible = false; + } + + public void DestroyDebugPanel() + { + _debugPanelService.IsVisible = false; + _debugPanelService.Unload(); + } + + #region Options + + public void AddOptionContainer(object container) + { + _optionsService.AddContainer(container); + } + + public void RemoveOptionContainer(object container) + { + _optionsService.RemoveContainer(container); + } + + public void PinAllOptions(string category) + { + foreach (var op in _optionsService.Options) + { + if (op.Category == category) + { + _pinnedUiService.Pin(op); + } + } + } + + public void UnpinAllOptions(string category) + { + foreach (var op in _optionsService.Options) + { + if (op.Category == category) + { + _pinnedUiService.Unpin(op); + } + } + } + + public void PinOption(string name) + { + foreach (var op in _optionsService.Options) + { + if (op.Name == name) + { + _pinnedUiService.Pin(op); + } + } + } + + public void UnpinOption(string name) + { + foreach (var op in _optionsService.Options) + { + if (op.Name == name) + { + _pinnedUiService.Unpin(op); + } + } + } + + public void ClearPinnedOptions() + { + _pinnedUiService.UnpinAll(); + } + + #endregion + + #region Bug Reporter + + public void ShowBugReportSheet(ActionCompleteCallback onComplete = null, bool takeScreenshot = true, + string descriptionContent = null) + { + var popoverService = SRServiceManager.GetService(); + + if (popoverService.IsShowingPopover) + { + return; + } + + popoverService.ShowBugReporter((succeed, message) => + { + if (onComplete != null) + { + onComplete(succeed); + } + }, takeScreenshot, descriptionContent); + } + + #endregion + + private void DebugPanelServiceOnVisibilityChanged(IDebugPanelService debugPanelService, bool b) + { + if (PanelVisibilityChanged == null) + { + return; + } + + try + { + PanelVisibilityChanged(b); + } + catch (Exception e) + { + Debug.LogError("[SRDebugger] Event target threw exception (IDebugService.PanelVisiblityChanged)"); + Debug.LogException(e); + } + } + + private void PromptEntryCode() + { + SRServiceManager.GetService() + .ShowPinEntry(Settings.Instance.EntryCode, SRDebugStrings.Current.PinEntryPrompt, + entered => + { + if (entered) + { + if (!Settings.Instance.RequireEntryCodeEveryTime) + { + _hasAuthorised = true; + } + + if (_queuedTab.HasValue) + { + var t = _queuedTab.Value; + + _queuedTab = null; + ShowDebugPanel(t, false); + } + else + { + ShowDebugPanel(false); + } + } + + _queuedTab = null; + }); + } + + public RectTransform EnableWorldSpaceMode() + { + if (_worldSpaceTransform != null) + { + return _worldSpaceTransform; + } + + if (Settings.Instance.UseDebugCamera) + { + throw new InvalidOperationException("UseDebugCamera cannot be enabled at the same time as EnableWorldSpaceMode."); + } + + _debugPanelService.IsVisible = true; + + var root = ((DebugPanelServiceImpl) _debugPanelService).RootObject; + root.Canvas.gameObject.RemoveComponentIfExists(); + root.Canvas.gameObject.RemoveComponentIfExists(); + root.Canvas.renderMode = RenderMode.WorldSpace; + + var rectTransform = root.Canvas.GetComponent(); + rectTransform.sizeDelta = new Vector2(1024, 768); + rectTransform.position = Vector3.zero; + + return _worldSpaceTransform = rectTransform; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs.meta new file mode 100644 index 00000000..6ea9c68a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SRDebugService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa53ffe51d3a35545b9277a06967b48a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs new file mode 100644 index 00000000..b3db6ff2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs @@ -0,0 +1,179 @@ +namespace SRDebugger.Services.Implementation +{ + using SRF.Service; + using UnityEngine; + + [Service(typeof (IConsoleService))] + public class StandardConsoleService : IConsoleService + { + private readonly bool _collapseEnabled; + private bool _hasCleared; + + private readonly CircularBuffer _allConsoleEntries; + private CircularBuffer _consoleEntries; + private readonly object _threadLock = new object(); + + public StandardConsoleService() + { + Application.logMessageReceivedThreaded += UnityLogCallback; + + SRServiceManager.RegisterService(this); + _collapseEnabled = Settings.Instance.CollapseDuplicateLogEntries; + _allConsoleEntries = new CircularBuffer(Settings.Instance.MaximumConsoleEntries); + } + + public int ErrorCount { get; private set; } + public int WarningCount { get; private set; } + public int InfoCount { get; private set; } + + public event ConsoleUpdatedEventHandler Updated; + public event ConsoleUpdatedEventHandler Error; + + public IReadOnlyList Entries + { + get + { + if (!_hasCleared) + { + return _allConsoleEntries; + } + + return _consoleEntries; + } + } + + public IReadOnlyList AllEntries + { + get { return _allConsoleEntries; } + } + + public void Clear() + { + lock (_threadLock) + { + _hasCleared = true; + + if (_consoleEntries == null) + { + _consoleEntries = new CircularBuffer(Settings.Instance.MaximumConsoleEntries); + } + else + { + _consoleEntries.Clear(); + } + + ErrorCount = WarningCount = InfoCount = 0; + } + + OnUpdated(); + } + + protected void OnEntryAdded(ConsoleEntry entry) + { + if (_hasCleared) + { + // Decrement counters if adding this entry will push another + // entry from the buffer. + if (_consoleEntries.IsFull) + { + AdjustCounter(_consoleEntries.Front().LogType, -1); + _consoleEntries.PopFront(); + } + + _consoleEntries.PushBack(entry); + } + else + { + if (_allConsoleEntries.IsFull) + { + AdjustCounter(_allConsoleEntries.Front().LogType, -1); + _allConsoleEntries.PopFront(); + } + } + + _allConsoleEntries.PushBack(entry); + OnUpdated(); + } + + protected void OnEntryDuplicated(ConsoleEntry entry) + { + entry.Count++; + OnUpdated(); + + // If has cleared, add this entry again for the current list + if (_hasCleared && _consoleEntries.Count == 0) + { + OnEntryAdded(new ConsoleEntry(entry) {Count = 1}); + } + } + + private void OnUpdated() + { + if (Updated != null) + { + try + { + Updated(this); + } + catch {} + } + } + + private void UnityLogCallback(string condition, string stackTrace, LogType type) + { + //if (condition.StartsWith("[SRConsole]")) + // return; + + lock (_threadLock) + { + var prevMessage = _collapseEnabled && _allConsoleEntries.Count > 0 + ? _allConsoleEntries[_allConsoleEntries.Count - 1] + : null; + + AdjustCounter(type, 1); + + if (prevMessage != null && prevMessage.LogType == type && prevMessage.Message == condition && + prevMessage.StackTrace == stackTrace) + { + OnEntryDuplicated(prevMessage); + } + else + { + var newEntry = new ConsoleEntry + { + LogType = type, + StackTrace = stackTrace, + Message = condition + }; + + OnEntryAdded(newEntry); + } + } + } + + private void AdjustCounter(LogType type, int amount) + { + switch (type) + { + case LogType.Assert: + case LogType.Error: + case LogType.Exception: + ErrorCount += amount; + + if (Error != null) + { + Error.Invoke(this); + } + break; + + case LogType.Warning: + WarningCount += amount; + break; + + case LogType.Log: + InfoCount += amount; + break; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs.meta new file mode 100644 index 00000000..a5d47d88 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/StandardConsoleService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4ff166e8452e1c468f1d0490738b02f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs new file mode 100644 index 00000000..d540bec9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs @@ -0,0 +1,244 @@ +namespace SRDebugger.Services.Implementation +{ + using System; + using System.Collections.Generic; + using System.Linq; + using SRF; + using SRF.Service; + using UnityEngine; + + /// + /// Reports system specifications and environment information. Information that can + /// be used to identify a user is marked as private, and won't be included in any generated + /// reports. + /// + [Service(typeof(ISystemInformationService))] + public class StandardSystemInformationService : ISystemInformationService + { + private readonly Dictionary> _info = new Dictionary>(); + + public StandardSystemInformationService() + { + CreateDefaultSet(); + } + + public IEnumerable GetCategories() + { + return _info.Keys; + } + + public IList GetInfo(string category) + { + IList list; + + if (!_info.TryGetValue(category, out list)) + { + Debug.LogError("[SystemInformationService] Category not found: {0}".Fmt(category)); + return new InfoEntry[0]; + } + + return list; + } + + public void Add(InfoEntry info, string category = "Default") + { + IList list; + + if (!_info.TryGetValue(category, out list)) + { + list = new List(); + _info.Add(category, list); + } + + if (list.Any(p => p.Title == info.Title)) + { + throw new ArgumentException("An InfoEntry object with the same title already exists in that category.", "info"); + } + + list.Add(info); + } + + public Dictionary> CreateReport(bool includePrivate = false) + { + var dict = new Dictionary>(); + + foreach (var keyValuePair in _info) + { + var category = new Dictionary(); + + foreach (var systemInfo in keyValuePair.Value) + { + if (systemInfo.IsPrivate && !includePrivate) + { + continue; + } + + category.Add(systemInfo.Title, systemInfo.Value); + } + + dict.Add(keyValuePair.Key, category); + } + + return dict; + } + + private void CreateDefaultSet() + { + _info.Add("System", new[] + { + InfoEntry.Create("Operating System", UnityEngine.SystemInfo.operatingSystem), + InfoEntry.Create("Device Name", UnityEngine.SystemInfo.deviceName, true), + InfoEntry.Create("Device Type", UnityEngine.SystemInfo.deviceType), + InfoEntry.Create("Device Model", UnityEngine.SystemInfo.deviceModel), + InfoEntry.Create("CPU Type", UnityEngine.SystemInfo.processorType), + InfoEntry.Create("CPU Count", UnityEngine.SystemInfo.processorCount), + InfoEntry.Create("System Memory", SRFileUtil.GetBytesReadable(((long) UnityEngine.SystemInfo.systemMemorySize)*1024*1024)) + //Info.Create("Process Name", () => Process.GetCurrentProcess().ProcessName) + }); + + +#if ENABLE_IL2CPP + const string IL2CPP = "Yes"; +#else + const string IL2CPP = "No"; +#endif + + _info.Add("Unity", new[] + { + InfoEntry.Create("Version", Application.unityVersion), + InfoEntry.Create("Debug", Debug.isDebugBuild), + InfoEntry.Create("Unity Pro", Application.HasProLicense()), + InfoEntry.Create("Genuine", + "{0} ({1})".Fmt(Application.genuine ? "Yes" : "No", + Application.genuineCheckAvailable ? "Trusted" : "Untrusted")), + InfoEntry.Create("System Language", Application.systemLanguage), + InfoEntry.Create("Platform", Application.platform), + InfoEntry.Create("IL2CPP", IL2CPP), + InfoEntry.Create("Application Version", Application.version), + InfoEntry.Create("SRDebugger Version", SRDebug.Version), + }); + + _info.Add("Display", new[] + { + InfoEntry.Create("Resolution", () => Screen.width + "x" + Screen.height), + InfoEntry.Create("DPI", () => Screen.dpi), + InfoEntry.Create("Fullscreen", () => Screen.fullScreen), + InfoEntry.Create("Orientation", () => Screen.orientation) + }); + + _info.Add("Runtime", new[] + { + InfoEntry.Create("Play Time", () => Time.unscaledTime), + InfoEntry.Create("Level Play Time", () => Time.timeSinceLevelLoad), +#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + InfoEntry.Create("Current Level", () => Application.loadedLevelName), +#else + InfoEntry.Create("Current Level", () => + { + var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); + return "{0} (Index: {1})".Fmt(activeScene.name, activeScene.buildIndex); + }), +#endif + InfoEntry.Create("Quality Level", + () => + QualitySettings.names[QualitySettings.GetQualityLevel()] + " (" + + QualitySettings.GetQualityLevel() + ")") + }); + + // Check for cloud build manifest + var cloudBuildManifest = (TextAsset)Resources.Load("UnityCloudBuildManifest.json"); + var manifestDict = cloudBuildManifest != null + ? Json.Deserialize(cloudBuildManifest.text) as Dictionary + : null; + + if (manifestDict != null) + { + var manifestList = new List(manifestDict.Count); + + foreach (var kvp in manifestDict) + { + if (kvp.Value == null) + { + continue; + } + + var value = kvp.Value.ToString(); + manifestList.Add(InfoEntry.Create(GetCloudManifestPrettyName(kvp.Key), value)); + } + + _info.Add("Build", manifestList); + } + + _info.Add("Features", new[] + { + InfoEntry.Create("Location", UnityEngine.SystemInfo.supportsLocationService), + InfoEntry.Create("Accelerometer", UnityEngine.SystemInfo.supportsAccelerometer), + InfoEntry.Create("Gyroscope", UnityEngine.SystemInfo.supportsGyroscope), + InfoEntry.Create("Vibration", UnityEngine.SystemInfo.supportsVibration) + }); + +#if UNITY_IOS + + _info.Add("iOS", new[] { + +#if UNITY_5 || UNITY_5_3_OR_NEWER + InfoEntry.Create("Generation", UnityEngine.iOS.Device.generation), + InfoEntry.Create("Ad Tracking", UnityEngine.iOS.Device.advertisingTrackingEnabled), +#else + InfoEntry.Create("Generation", iPhone.generation), + InfoEntry.Create("Ad Tracking", iPhone.advertisingTrackingEnabled), +#endif + }); + +#endif +#pragma warning disable 618 + _info.Add("Graphics", new[] + { + InfoEntry.Create("Device Name", UnityEngine.SystemInfo.graphicsDeviceName), + InfoEntry.Create("Device Vendor", UnityEngine.SystemInfo.graphicsDeviceVendor), + InfoEntry.Create("Device Version", UnityEngine.SystemInfo.graphicsDeviceVersion), + InfoEntry.Create("Max Tex Size", UnityEngine.SystemInfo.maxTextureSize), +#if !UNITY_5 && !UNITY_5_3_OR_NEWER + InfoEntry.Create("Fill Rate", + SystemInfo.graphicsPixelFillrate > 0 ? "{0}mpix/s".Fmt(SystemInfo.graphicsPixelFillrate) : "Unknown"), +#endif + InfoEntry.Create("NPOT Support", UnityEngine.SystemInfo.npotSupport), + InfoEntry.Create("Render Textures", + "{0} ({1})".Fmt(UnityEngine.SystemInfo.supportsRenderTextures ? "Yes" : "No", + UnityEngine.SystemInfo.supportedRenderTargetCount)), + InfoEntry.Create("3D Textures", UnityEngine.SystemInfo.supports3DTextures), + InfoEntry.Create("Compute Shaders", UnityEngine.SystemInfo.supportsComputeShaders), +#if !UNITY_5 && !UNITY_5_3_OR_NEWER + InfoEntry.Create("Vertex Programs", SystemInfo.supportsVertexPrograms), +#endif + InfoEntry.Create("Image Effects", UnityEngine.SystemInfo.supportsImageEffects), + InfoEntry.Create("Cubemaps", UnityEngine.SystemInfo.supportsRenderToCubemap), + InfoEntry.Create("Shadows", UnityEngine.SystemInfo.supportsShadows), + InfoEntry.Create("Stencil", UnityEngine.SystemInfo.supportsStencil), + InfoEntry.Create("Sparse Textures", UnityEngine.SystemInfo.supportsSparseTextures) + }); +#pragma warning restore 618 + } + + private static string GetCloudManifestPrettyName(string name) + { + switch (name) + { + case "scmCommitId": + return "Commit"; + + case "scmBranch": + return "Branch"; + + case "cloudBuildTargetName": + return "Build Target"; + + case "buildStartTime": + return "Build Date"; + } + + // Return name with first letter capitalised + return name.Substring(0, 1).ToUpper() + name.Substring(1); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs.meta new file mode 100644 index 00000000..3044cd32 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/Implementation/SystemInformationService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 605ec79db587f5345b0a0b989487631e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs new file mode 100644 index 00000000..af0744ae --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs @@ -0,0 +1 @@ + diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs.meta new file mode 100644 index 00000000..e35f3761 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Services/ServiceSelectors.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 201175bddf2810a48bf7e4ca1e0ab782 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs new file mode 100644 index 00000000..027b185f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs @@ -0,0 +1,671 @@ +using System.ComponentModel; + +namespace SRDebugger +{ + using System; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.IO; + using System.Linq; + using SRF; + using UnityEngine; +#if UNITY_EDITOR + using UnityEditor; +#endif + +#pragma warning disable 0649 + + public enum DefaultTabs + { + SystemInformation = 0, + Options = 1, + Console = 2, + Profiler = 3, + BugReporter = 4 + } + + public enum PinAlignment + { + TopLeft = 0, + TopRight = 1, + BottomLeft = 2, + BottomRight = 3, + CenterLeft = 4, + CenterRight = 5, + TopCenter = 6, + BottomCenter = 7 + } + + public enum ConsoleAlignment + { + Top, + Bottom + } + + public class Settings : ScriptableObject + { + public enum ShortcutActions + { + None = 0, + + OpenSystemInfoTab = 1, + OpenConsoleTab = 2, + OpenOptionsTab = 3, + OpenProfilerTab = 4, + OpenBugReporterTab = 5, + + ClosePanel = 6, + OpenPanel = 7, + TogglePanel = 8, + + ShowBugReportPopover = 9, + ToggleDockedConsole = 10, + ToggleDockedProfiler = 11 + } + + public enum TriggerBehaviours + { + TripleTap, + TapAndHold, + DoubleTap + } + + public enum TriggerEnableModes + { + Enabled, + MobileOnly, + Off, + DevelopmentBuildsOnly + } + + private const string ResourcesPath = "/usr/Resources/SRDebugger"; + private const string ResourcesName = "Settings"; + private static Settings _instance; + + public static Settings Instance + { + get + { + if (_instance == null) + { + _instance = GetOrCreateInstance(); + } + + if (_instance._keyboardShortcuts != null && _instance._keyboardShortcuts.Length > 0) + { + _instance.UpgradeKeyboardShortcuts(); + } + + return _instance; + } + } + + private static KeyboardShortcut[] GetDefaultKeyboardShortcuts() + { + return new[] + { + new KeyboardShortcut + { + Control = true, + Shift = true, + Key = KeyCode.F1, + Action = ShortcutActions.OpenSystemInfoTab + }, + new KeyboardShortcut + { + Control = true, + Shift = true, + Key = KeyCode.F2, + Action = ShortcutActions.OpenConsoleTab + }, + new KeyboardShortcut + { + Control = true, + Shift = true, + Key = KeyCode.F3, + Action = ShortcutActions.OpenOptionsTab + }, + new KeyboardShortcut + { + Control = true, + Shift = true, + Key = KeyCode.F4, + Action = ShortcutActions.OpenProfilerTab + } + }; + } + + private void UpgradeKeyboardShortcuts() + { + Debug.Log("[SRDebugger] Upgrading Settings format"); + + var newShortcuts = new List(); + + for (var i = 0; i < _keyboardShortcuts.Length; i++) + { + var s = _keyboardShortcuts[i]; + + newShortcuts.Add(new KeyboardShortcut + { + Action = s.Action, + Key = s.Key, + Alt = _keyboardModifierAlt, + Shift = _keyboardModifierShift, + Control = _keyboardModifierControl + }); + } + + _keyboardShortcuts = new KeyboardShortcut[0]; + _newKeyboardShortcuts = newShortcuts.ToArray(); + +#if UNITY_EDITOR + EditorUtility.SetDirty(this); +#endif + } + + [Serializable] + public sealed class KeyboardShortcut + { + [SerializeField] public ShortcutActions Action; + + [SerializeField] public bool Alt; + + [SerializeField] public bool Control; + + [SerializeField] public KeyCode Key; + + [SerializeField] public bool Shift; + } + + public event PropertyChangedEventHandler PropertyChanged; + + #region Settings + + public bool IsEnabled + { + get { return _isEnabled; } +#if UNITY_EDITOR + set { _isEnabled = value; } +#endif + } + + public DefaultTabs DefaultTab + { + get { return _defaultTab; } +#if UNITY_EDITOR + set { _defaultTab = value; } +#endif + } + + /// + /// Enable the triple-tap button. + /// + public TriggerEnableModes EnableTrigger + { + get { return _triggerEnableMode; } +#if UNITY_EDITOR + set { _triggerEnableMode = value; } +#endif + } + + /// + /// Enable the triple-tap button. + /// + public TriggerBehaviours TriggerBehaviour + { + get { return _triggerBehaviour; } +#if UNITY_EDITOR + set { _triggerBehaviour = value; } +#endif + } + + /// + /// Enable a notification when a new error is logged. + /// + public bool ErrorNotification + { + get { return _errorNotification; } +#if UNITY_EDITOR + set { _errorNotification = value; } +#endif + } + + public bool EnableKeyboardShortcuts + { + get { return _enableKeyboardShortcuts; } +#if UNITY_EDITOR + set { _enableKeyboardShortcuts = value; } +#endif + } + + public IList KeyboardShortcuts + { + get { return _newKeyboardShortcuts; } +#if UNITY_EDITOR + set { _newKeyboardShortcuts = value.ToArray(); } +#endif + } + + public bool KeyboardEscapeClose + { + get { return _keyboardEscapeClose; } +#if UNITY_EDITOR + set { _keyboardEscapeClose = value; } +#endif + } + + public bool EnableBackgroundTransparency + { + get { return _enableBackgroundTransparency; } +#if UNITY_EDITOR + set { _enableBackgroundTransparency = value; } +#endif + } + + public bool RequireCode + { + get { return _requireEntryCode; } +#if UNITY_EDITOR + set { _requireEntryCode = value; } +#endif + } + + public bool RequireEntryCodeEveryTime + { + get { return _requireEntryCodeEveryTime; } +#if UNITY_EDITOR + set { _requireEntryCodeEveryTime = value; } +#endif + } + + public IList EntryCode + { + get { return new ReadOnlyCollection(_entryCode); } + set + { + if (value.Count != 4) + { + throw new Exception("Entry code must be length 4"); + } + if (value.Any(p => p > 9 || p < 0)) + { + throw new Exception("All digits in entry code must be >= 0 and <= 9"); + } + + _entryCode = value.ToArray(); + } + } + + public bool UseDebugCamera + { + get { return _useDebugCamera; } +#if UNITY_EDITOR + set { _useDebugCamera = value; } +#endif + } + + public int DebugLayer + { + get { return _debugLayer; } +#if UNITY_EDITOR + set { _debugLayer = value; } +#endif + } + + public float DebugCameraDepth + { + get { return _debugCameraDepth; } +#if UNITY_EDITOR + set { _debugCameraDepth = value; } +#endif + } + + public bool CollapseDuplicateLogEntries + { + get { return _collapseDuplicateLogEntries; } +#if UNITY_EDITOR + set { _collapseDuplicateLogEntries = value; } +#endif + } + + public bool RichTextInConsole + { + get { return _richTextInConsole; } +#if UNITY_EDITOR + set { _richTextInConsole = value; } +#endif + } + + public string ApiKey + { + get { return _apiKey; } +#if UNITY_EDITOR + set + { + _apiKey = value; + EditorUtility.SetDirty(this); + } +#endif + } + + public bool EnableBugReporter + { + get { return _enableBugReporter; } +#if UNITY_EDITOR + set { _enableBugReporter = value; } +#endif + } + + public IList DisabledTabs + { + get { return _disabledTabs; } +#if UNITY_EDITOR + set { _disabledTabs = value.ToArray(); } +#endif + } + + /// + /// Position for the triple-tap button + /// + public PinAlignment TriggerPosition + { + get { return _triggerPosition; } +#if UNITY_EDITOR + set + { + var prevValue = _triggerPosition; + _triggerPosition = value; + if (OptionsAlignment == value) + { + OptionsAlignment = prevValue; + } + if (ProfilerAlignment == value) + { + ProfilerAlignment = prevValue; + } + } +#endif + } + + public PinAlignment ProfilerAlignment + { + get { return _profilerAlignment; } +#if UNITY_EDITOR + set + { + // Profiler only supports corners + if (value == PinAlignment.CenterRight || value == PinAlignment.CenterLeft || + value == PinAlignment.TopCenter || value == PinAlignment.BottomCenter) + { + // Prefer bottom left + if (TriggerPosition != PinAlignment.BottomLeft && OptionsAlignment != PinAlignment.BottomLeft) + { + _profilerAlignment = PinAlignment.BottomLeft; + return; + } + + // Find next available opening + for (var i = 0; i < 4; i++) + { + var pin = (PinAlignment) i; + if (_triggerPosition == pin || _optionsAlignment == pin) + continue; + + _profilerAlignment = pin; + return; + } + + _profilerAlignment = PinAlignment.BottomLeft; + return; + } + + var prevValue = _profilerAlignment; + _profilerAlignment = value; + + if (TriggerPosition == value) + { + TriggerPosition = prevValue; + } + if (OptionsAlignment == value) + { + OptionsAlignment = prevValue; + } + } +#endif + } + + public PinAlignment OptionsAlignment + { + get { return _optionsAlignment; } +#if UNITY_EDITOR + set + { + // Options doesn't support CenterRight and CenterLeft + if (value == PinAlignment.CenterRight || value == PinAlignment.CenterLeft) + { + // Prefer bottom right + if (TriggerPosition != PinAlignment.BottomRight && ProfilerAlignment != PinAlignment.BottomRight) + { + _optionsAlignment = PinAlignment.BottomRight; + return; + } + for (var i = 0; i < 4; i++) + { + var pin = (PinAlignment) i; + if (_triggerPosition == pin || _profilerAlignment == pin) + continue; + + _optionsAlignment = pin; + return; + } + + _optionsAlignment = PinAlignment.BottomRight; + return; + } + + var prevValue = _optionsAlignment; + _optionsAlignment = value; + + if (TriggerPosition == value) + { + TriggerPosition = prevValue; + } + + if (ProfilerAlignment == value) + { + ProfilerAlignment = prevValue; + } + } +#endif + } + + public ConsoleAlignment ConsoleAlignment + { + get { return _consoleAlignment; } + set { _consoleAlignment = value; } + } + + public int MaximumConsoleEntries + { + get { return _maximumConsoleEntries; } + set { _maximumConsoleEntries = value; } + } + + public bool EnableEventSystemGeneration + { + get { return _enableEventSystemCreation; } + set { _enableEventSystemCreation = value; } + } + + public bool AutomaticallyShowCursor + { + get { return _automaticShowCursor; } +#if UNITY_EDITOR + set { _automaticShowCursor = value; } +#endif + } + + public float UIScale + { + get { return _uiScale; } + set + { + if (value == _uiScale) return; + _uiScale = value; + OnPropertyChanged("UIScale"); + } + } + + public bool UnloadOnClose + { + get { return _unloadOnClose; } +#if UNITY_EDITOR + set + { + _unloadOnClose = value; + } +#endif + } + + #endregion + + #region Serialization + + [SerializeField] private bool _isEnabled = true; + + [SerializeField] private DefaultTabs _defaultTab = DefaultTabs.SystemInformation; + + [SerializeField] private TriggerEnableModes _triggerEnableMode = TriggerEnableModes.Enabled; + + [SerializeField] private TriggerBehaviours _triggerBehaviour = TriggerBehaviours.TripleTap; + + [SerializeField] private bool _errorNotification = true; + + [SerializeField] private bool _enableKeyboardShortcuts = true; + + // Legacy keyboard shortcuts, should be upgraded + [SerializeField] private KeyboardShortcut[] _keyboardShortcuts; + + // New keyboard shortcut array, containing upgraded shortcuts + [SerializeField] private KeyboardShortcut[] _newKeyboardShortcuts = GetDefaultKeyboardShortcuts(); + + [SerializeField] private bool _keyboardModifierControl = true; + + [SerializeField] private bool _keyboardModifierAlt = false; + + [SerializeField] private bool _keyboardModifierShift = true; + + [SerializeField] private bool _keyboardEscapeClose = true; + + [SerializeField] private bool _enableBackgroundTransparency = true; + + [SerializeField] private bool _collapseDuplicateLogEntries = true; + + [SerializeField] private bool _richTextInConsole = true; + + [SerializeField] private bool _requireEntryCode; + + [SerializeField] private bool _requireEntryCodeEveryTime; + + [SerializeField] private int[] _entryCode = {0, 0, 0, 0}; + + [SerializeField] private bool _useDebugCamera; + + [SerializeField] private int _debugLayer = 5; + + [SerializeField] [Range(-100, 100)] private float _debugCameraDepth = 100f; + + [SerializeField] private string _apiKey = ""; + + [SerializeField] private bool _enableBugReporter; + + [SerializeField] private DefaultTabs[] _disabledTabs = {}; + + [SerializeField] private PinAlignment _profilerAlignment = PinAlignment.BottomLeft; + + [SerializeField] private PinAlignment _optionsAlignment = PinAlignment.BottomRight; + + [SerializeField] private ConsoleAlignment _consoleAlignment = ConsoleAlignment.Top; + + [SerializeField] private PinAlignment _triggerPosition = PinAlignment.TopLeft; + + [SerializeField] private int _maximumConsoleEntries = 1500; + + [SerializeField] private bool _enableEventSystemCreation = true; + + [SerializeField] private bool _automaticShowCursor = true; + + [SerializeField] private float _uiScale = 1; + + [SerializeField] private bool _unloadOnClose = false; + + #endregion + + #region Property Changed + + private void OnPropertyChanged(string propertyName) + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + + #endregion + + #region Saving/Loading + + private static Settings GetOrCreateInstance() + { + var instance = Resources.Load("SRDebugger/" + ResourcesName); + + if (instance == null) + { + // Create instance + instance = CreateInstance(); + +#if UNITY_EDITOR + + // Get resources folder path + var resourcesPath = GetResourcesPath(); + + if (resourcesPath == null) + { + Debug.LogError( + "[SRDebugger] Error finding Resources path. Please make sure SRDebugger folder is intact"); + return instance; + } + + Debug.Log("[SRDebugger] Creating settings asset at {0}/{1}".Fmt(resourcesPath, ResourcesName)); + + // Create directory if it doesn't exist + Directory.CreateDirectory(resourcesPath); + + // Save instance if in editor + AssetDatabase.CreateAsset(instance, resourcesPath + "/" + ResourcesName + ".asset"); + +#endif + } + + return instance; + } + +#if UNITY_EDITOR + + private static string GetResourcesPath() + { + try + { + return Internal.Editor.SRDebugEditorUtil.GetRootPath() + ResourcesPath; + } + catch + { + return null; + } + } + +#endif + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs.meta new file mode 100644 index 00000000..8f48e636 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Settings.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16d00b7005a47ef47802a8421dc6baf6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI.meta new file mode 100644 index 00000000..a4cde645 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: efd786645c02b9246916a4d19f1ab7dd +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls.meta new file mode 100644 index 00000000..2241a40a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 50d86929c58b07248aadea9a99dc350d +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs new file mode 100644 index 00000000..d9fb732d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs @@ -0,0 +1,112 @@ +namespace SRDebugger.UI.Controls +{ + using System; + using Services; + using SRF; + using SRF.UI; + using SRF.UI.Layout; + using UnityEngine; + using UnityEngine.UI; + + [RequireComponent(typeof (RectTransform))] + public class ConsoleEntryView : SRMonoBehaviourEx, IVirtualView + { + public const string ConsoleBlobInfo = "Console_Info_Blob"; + public const string ConsoleBlobWarning = "Console_Warning_Blob"; + public const string ConsoleBlobError = "Console_Error_Blob"; + private int _count; + private bool _hasCount; + private ConsoleEntry _prevData; + private RectTransform _rectTransform; + + [RequiredField] public Text Count; + + [RequiredField] public CanvasGroup CountContainer; + + [RequiredField] public StyleComponent ImageStyle; + + [RequiredField] public Text Message; + + [RequiredField] public Text StackTrace; + + public void SetDataContext(object data) + { + var msg = data as ConsoleEntry; + + if (msg == null) + { + throw new Exception("Data should be a ConsoleEntry"); + } + + // Always check for updates on "Count", as it can change + if (msg.Count > 1) + { + if (!_hasCount) + { + CountContainer.alpha = 1f; + _hasCount = true; + } + + if (msg.Count != _count) + { + Count.text = Internal.SRDebuggerUtil.GetNumberString(msg.Count, 999, "999+"); + _count = msg.Count; + } + } + else if (_hasCount) + { + CountContainer.alpha = 0f; + _hasCount = false; + } + + // Only update everything else if data context has changed, not just for an update + if (msg == _prevData) + { + return; + } + + _prevData = msg; + + Message.text = msg.MessagePreview; + StackTrace.text = msg.StackTracePreview; + + if (string.IsNullOrEmpty(StackTrace.text)) + { + Message.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 2, + _rectTransform.rect.height - 4); + } + else + { + Message.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 12, + _rectTransform.rect.height - 14); + } + + switch (msg.LogType) + { + case LogType.Log: + ImageStyle.StyleKey = ConsoleBlobInfo; + break; + + case LogType.Warning: + ImageStyle.StyleKey = ConsoleBlobWarning; + break; + + case LogType.Exception: + case LogType.Assert: + case LogType.Error: + ImageStyle.StyleKey = ConsoleBlobError; + break; + } + } + + protected override void Awake() + { + base.Awake(); + + _rectTransform = CachedTransform as RectTransform; + CountContainer.alpha = 0f; + + Message.supportRichText = Settings.Instance.RichTextInConsole; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs.meta new file mode 100644 index 00000000..6ae4d855 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleEntryView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c214ec24a4baf1a4f828768a9795f241 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs new file mode 100644 index 00000000..4d40450b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs @@ -0,0 +1,196 @@ + +#pragma warning disable 169 +#pragma warning disable 649 + +namespace SRDebugger.UI.Controls +{ + using System; + using System.Collections; + using Internal; + using Services; + using SRF; + using SRF.UI.Layout; + using UnityEngine; + using UnityEngine.UI; + + public class ConsoleLogControl : SRMonoBehaviourEx + { + [RequiredField] [SerializeField] private VirtualVerticalLayoutGroup _consoleScrollLayoutGroup; + + [RequiredField] [SerializeField] private ScrollRect _consoleScrollRect; + + private bool _isDirty; + private Vector2? _scrollPosition; + private bool _showErrors = true; + private bool _showInfo = true; + private bool _showWarnings = true; + public Action SelectedItemChanged; + private string _filter; + + public bool ShowErrors + { + get { return _showErrors; } + set + { + _showErrors = value; + SetIsDirty(); + } + } + + public bool ShowWarnings + { + get { return _showWarnings; } + set + { + _showWarnings = value; + SetIsDirty(); + } + } + + public bool ShowInfo + { + get { return _showInfo; } + set + { + _showInfo = value; + SetIsDirty(); + } + } + + public bool EnableSelection + { + get { return _consoleScrollLayoutGroup.EnableSelection; } + set { _consoleScrollLayoutGroup.EnableSelection = value; } + } + + public string Filter + { + get { return _filter; } + set { + if (_filter != value) + { + _filter = value; + _isDirty = true; + } + } + } + + protected override void Awake() + { + base.Awake(); + + _consoleScrollLayoutGroup.SelectedItemChanged.AddListener(OnSelectedItemChanged); + Service.Console.Updated += ConsoleOnUpdated; + } + + protected override void Start() + { + base.Start(); + SetIsDirty(); + StartCoroutine(ScrollToBottom()); + } + + IEnumerator ScrollToBottom() + { + yield return new WaitForEndOfFrame(); + yield return new WaitForEndOfFrame(); + yield return new WaitForEndOfFrame(); + _scrollPosition = new Vector2(0,0); + } + + protected override void OnDestroy() + { + if (Service.Console != null) + { + Service.Console.Updated -= ConsoleOnUpdated; + } + + base.OnDestroy(); + } + + private void OnSelectedItemChanged(object arg0) + { + var entry = arg0 as ConsoleEntry; + + if (SelectedItemChanged != null) + { + SelectedItemChanged(entry); + } + } + + protected override void Update() + { + base.Update(); + + if (_scrollPosition.HasValue) + { + _consoleScrollRect.normalizedPosition = _scrollPosition.Value; + _scrollPosition = null; + } + + if (_isDirty) + { + Refresh(); + } + } + + private void Refresh() + { + if (_consoleScrollRect.normalizedPosition.y.ApproxZero()) + { + _scrollPosition = _consoleScrollRect.normalizedPosition; + } + + _consoleScrollLayoutGroup.ClearItems(); + + var entries = Service.Console.Entries; + + for (var i = 0; i < entries.Count; i++) + { + var e = entries[i]; + + if ((e.LogType == LogType.Error || e.LogType == LogType.Exception || e.LogType == LogType.Assert) && + !ShowErrors) + { + if (e == _consoleScrollLayoutGroup.SelectedItem) _consoleScrollLayoutGroup.SelectedItem = null; + continue; + } + + if (e.LogType == LogType.Warning && !ShowWarnings) + { + if (e == _consoleScrollLayoutGroup.SelectedItem) _consoleScrollLayoutGroup.SelectedItem = null; + continue; + } + + if (e.LogType == LogType.Log && !ShowInfo) + { + if (e == _consoleScrollLayoutGroup.SelectedItem) _consoleScrollLayoutGroup.SelectedItem = null; + continue; + } + + if (!string.IsNullOrEmpty(Filter)) + { + if (e.Message.IndexOf(Filter, StringComparison.OrdinalIgnoreCase) < 0) + { + if (e == _consoleScrollLayoutGroup.SelectedItem) _consoleScrollLayoutGroup.SelectedItem = null; + continue; + } + } + + _consoleScrollLayoutGroup.AddItem(e); + } + + _isDirty = false; + } + + private void SetIsDirty() + { + _isDirty = true; + } + + private void ConsoleOnUpdated(IConsoleService console) + { + SetIsDirty(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs.meta new file mode 100644 index 00000000..aa0250e2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ConsoleLogControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 413376b74a5948a4db9e0a5c9c002724 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data.meta new file mode 100644 index 00000000..7d584d36 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: b5fd2859be59fd34c83def152a20f905 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs new file mode 100644 index 00000000..ac09c81c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs @@ -0,0 +1,52 @@ +namespace SRDebugger.UI.Controls.Data +{ + using System; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class ActionControl : OptionsControlBase + { + private SRF.Helpers.MethodReference _method; + + [RequiredField] public UnityEngine.UI.Button Button; + + [RequiredField] public Text Title; + + public SRF.Helpers.MethodReference Method + { + get { return _method; } + } + + protected override void Start() + { + base.Start(); + Button.onClick.AddListener(ButtonOnClick); + } + + private void ButtonOnClick() + { + if (_method == null) + { + Debug.LogWarning("[SRDebugger.Options] No method set for action control", this); + return; + } + + try + { + _method.Invoke(null); + } + catch (Exception e) + { + Debug.LogError("[SRDebugger] Exception thrown while executing action."); + Debug.LogException(e); + } + } + + public void SetMethod(string methodName, SRF.Helpers.MethodReference method) + { + _method = method; + Title.text = methodName; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs.meta new file mode 100644 index 00000000..25a400bf --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ActionControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c637c8d0d16d024fa920dda64fb38db +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs new file mode 100644 index 00000000..145d2a97 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs @@ -0,0 +1,44 @@ +namespace SRDebugger.UI.Controls.Data +{ + using System; + using SRF; + using UnityEngine.UI; + + public class BoolControl : DataBoundControl + { + [RequiredField] public Text Title; + + [RequiredField] public Toggle Toggle; + + protected override void Start() + { + base.Start(); + Toggle.onValueChanged.AddListener(ToggleOnValueChanged); + } + + private void ToggleOnValueChanged(bool isOn) + { + UpdateValue(isOn); + } + + protected override void OnBind(string propertyName, Type t) + { + base.OnBind(propertyName, t); + + Title.text = propertyName; + + Toggle.interactable = !IsReadOnly; + } + + protected override void OnValueUpdated(object newValue) + { + var value = (bool) newValue; + Toggle.isOn = value; + } + + public override bool CanBind(Type type, bool isReadOnly) + { + return type == typeof (bool); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs.meta new file mode 100644 index 00000000..fc435f38 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/BoolControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 645dcae76b625be40b595e4bbc27abb6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs new file mode 100644 index 00000000..5580b6fd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs @@ -0,0 +1,108 @@ +namespace SRDebugger.UI.Controls +{ + using System; + using UnityEngine; + + public abstract class DataBoundControl : OptionsControlBase + { + private bool _hasStarted; + private bool _isReadOnly; + private object _prevValue; + private SRF.Helpers.PropertyReference _prop; + + public SRF.Helpers.PropertyReference Property + { + get { return _prop; } + } + + public bool IsReadOnly + { + get { return _isReadOnly; } + } + + public string PropertyName { get; private set; } + + #region Data Binding + + public void Bind(string propertyName, SRF.Helpers.PropertyReference prop) + { + PropertyName = propertyName; + _prop = prop; + + _isReadOnly = !prop.CanWrite; + + OnBind(propertyName, prop.PropertyType); + Refresh(); + } + + protected void UpdateValue(object newValue) + { + if (newValue == _prevValue) + { + return; + } + + if (IsReadOnly) + { + return; + } + + _prop.SetValue(newValue); + _prevValue = newValue; + } + + public override void Refresh() + { + if (_prop == null) + { + return; + } + + var currentValue = _prop.GetValue(); + + if (currentValue != _prevValue) + { + try + { + OnValueUpdated(currentValue); + } + catch (Exception e) + { + Debug.LogError("[SROptions] Error refreshing binding."); + Debug.LogException(e); + } + } + + _prevValue = currentValue; + } + + protected virtual void OnBind(string propertyName, Type t) {} + protected abstract void OnValueUpdated(object newValue); + + public abstract bool CanBind(Type type, bool isReadOnly); + + #endregion + + #region Unity + + protected override void Start() + { + base.Start(); + + Refresh(); + _hasStarted = true; + } + + protected override void OnEnable() + { + base.OnEnable(); + + if (_hasStarted) + { + Refresh(); + } + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs.meta new file mode 100644 index 00000000..9ec1fcb8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/DataBoundControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f319c80d34ef2e4590641a136c82f1e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs new file mode 100644 index 00000000..1721e2f8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs @@ -0,0 +1,108 @@ +// ReSharper disable once RedundantUsingDirective +using System.Reflection; + +namespace SRDebugger.UI.Controls.Data +{ + using System; + using SRF; + using SRF.UI; + using UnityEngine; + using UnityEngine.UI; + + public class EnumControl : DataBoundControl + { + private object _lastValue; + private string[] _names; + private Array _values; + + [RequiredField] public LayoutElement ContentLayoutElement; + + public GameObject[] DisableOnReadOnly; + + [RequiredField] public SRSpinner Spinner; + + [RequiredField] public Text Title; + + [RequiredField] public Text Value; + + protected override void Start() + { + base.Start(); + } + + protected override void OnBind(string propertyName, Type t) + { + base.OnBind(propertyName, t); + + Title.text = propertyName; + + Spinner.interactable = !IsReadOnly; + + if (DisableOnReadOnly != null) + { + foreach (var child in DisableOnReadOnly) + { + child.SetActive(!IsReadOnly); + } + } + + _names = Enum.GetNames(t); + _values = Enum.GetValues(t); + + var longestName = ""; + + for (var i = 0; i < _names.Length; i++) + { + if (_names[i].Length > longestName.Length) + { + longestName = _names[i]; + } + } + + if (_names.Length == 0) + { + return; + } + + // Set preferred width of content to the largest possible value size + + var width = Value.cachedTextGeneratorForLayout.GetPreferredWidth(longestName, + Value.GetGenerationSettings(new Vector2(float.MaxValue, Value.preferredHeight))); + + ContentLayoutElement.preferredWidth = width; + } + + protected override void OnValueUpdated(object newValue) + { + _lastValue = newValue; + Value.text = newValue.ToString(); + } + + public override bool CanBind(Type type, bool isReadOnly) + { +#if NETFX_CORE + return type.GetTypeInfo().IsEnum; +#else + return type.IsEnum; +#endif + } + + private void SetIndex(int i) + { + UpdateValue(_values.GetValue(i)); + Refresh(); + } + + public void GoToNext() + { + var currentIndex = Array.IndexOf(_values, _lastValue); + SetIndex(SRMath.Wrap(_values.Length, currentIndex + 1)); + } + + public void GoToPrevious() + { + var currentIndex = Array.IndexOf(_values, _lastValue); + SetIndex(SRMath.Wrap(_values.Length, currentIndex - 1)); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs.meta new file mode 100644 index 00000000..a0d4cebb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/EnumControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b7f14311f0b3f442b273192dc8ffe4d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs new file mode 100644 index 00000000..3eea9b9e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs @@ -0,0 +1,198 @@ +using System.Globalization; + +namespace SRDebugger.UI.Controls.Data +{ + using System; + using System.Collections.Generic; + using SRF; + using SRF.UI; + using UnityEngine; + using UnityEngine.UI; + + public class NumberControl : DataBoundControl + { + private static readonly Type[] IntegerTypes = + { + typeof (int), typeof (short), typeof (byte), typeof (sbyte), typeof (uint), typeof (ushort) + }; + + private static readonly Type[] DecimalTypes = + { + typeof (float), typeof (double) + }; + + public static readonly Dictionary ValueRanges = new Dictionary + { + {typeof (int), new ValueRange {MaxValue = int.MaxValue, MinValue = int.MinValue}}, + {typeof (short), new ValueRange {MaxValue = short.MaxValue, MinValue = short.MinValue}}, + {typeof (byte), new ValueRange {MaxValue = byte.MaxValue, MinValue = byte.MinValue}}, + {typeof (sbyte), new ValueRange {MaxValue = sbyte.MaxValue, MinValue = sbyte.MinValue}}, + {typeof (uint), new ValueRange {MaxValue = uint.MaxValue, MinValue = uint.MinValue}}, + {typeof (ushort), new ValueRange {MaxValue = ushort.MaxValue, MinValue = ushort.MinValue}}, + {typeof (float), new ValueRange {MaxValue = float.MaxValue, MinValue = float.MinValue}}, + {typeof (double), new ValueRange {MaxValue = double.MaxValue, MinValue = double.MinValue}} + }; + + private string _lastValue; + private Type _type; + public GameObject[] DisableOnReadOnly; + public SRNumberButton DownNumberButton; + + [RequiredField] public SRNumberSpinner NumberSpinner; + + [RequiredField] public Text Title; + + public SRNumberButton UpNumberButton; + + protected override void Start() + { + base.Start(); + NumberSpinner.onEndEdit.AddListener(OnValueChanged); + } + + private void OnValueChanged(string newValue) + { + try + { + var num = Convert.ChangeType(newValue, _type, CultureInfo.InvariantCulture); + UpdateValue(num); + } + catch (Exception) + { + NumberSpinner.text = _lastValue; + } + } + + protected override void OnBind(string propertyName, Type t) + { + base.OnBind(propertyName, t); + Title.text = propertyName; + + if (IsIntegerType(t)) + { + NumberSpinner.contentType = InputField.ContentType.IntegerNumber; + } + else if (IsDecimalType(t)) + { + NumberSpinner.contentType = InputField.ContentType.DecimalNumber; + } + else + { + throw new ArgumentException("Type must be one of expected types", "t"); + } + + var rangeAttrib = Property.GetAttribute(); + + NumberSpinner.MaxValue = GetMaxValue(t); + NumberSpinner.MinValue = GetMinValue(t); + + if (rangeAttrib != null) + { + NumberSpinner.MaxValue = Math.Min(rangeAttrib.Max, NumberSpinner.MaxValue); + NumberSpinner.MinValue = Math.Max(rangeAttrib.Min, NumberSpinner.MinValue); + } + + var incrementAttribute = Property.GetAttribute(); + + if (incrementAttribute != null) + { + if (UpNumberButton != null) + { + UpNumberButton.Amount = incrementAttribute.Increment; + } + + if (DownNumberButton != null) + { + DownNumberButton.Amount = -incrementAttribute.Increment; + } + } + + _type = t; + + NumberSpinner.interactable = !IsReadOnly; + + if (DisableOnReadOnly != null) + { + foreach (var childControl in DisableOnReadOnly) + { + childControl.SetActive(!IsReadOnly); + } + } + } + + protected override void OnValueUpdated(object newValue) + { + var value = Convert.ToDecimal(newValue, CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture); + + if (value != _lastValue) + { + NumberSpinner.text = value; + } + + _lastValue = value; + } + + public override bool CanBind(Type type, bool isReadOnly) + { + return IsDecimalType(type) || IsIntegerType(type); + } + + protected static bool IsIntegerType(Type t) + { + for (var i = 0; i < IntegerTypes.Length; i++) + { + if (IntegerTypes[i] == t) + { + return true; + } + } + + return false; + } + + protected static bool IsDecimalType(Type t) + { + for (var i = 0; i < DecimalTypes.Length; i++) + { + if (DecimalTypes[i] == t) + { + return true; + } + } + + return false; + } + + protected double GetMaxValue(Type t) + { + ValueRange value; + if (ValueRanges.TryGetValue(t, out value)) + { + return value.MaxValue; + } + + Debug.LogWarning("[NumberControl] No MaxValue stored for type {0}".Fmt(t)); + + return double.MaxValue; + } + + protected double GetMinValue(Type t) + { + ValueRange value; + if (ValueRanges.TryGetValue(t, out value)) + { + return value.MinValue; + } + + Debug.LogWarning("[NumberControl] No MinValue stored for type {0}".Fmt(t)); + + return double.MinValue; + } + + public struct ValueRange + { + public double MaxValue; + public double MinValue; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs.meta new file mode 100644 index 00000000..4d59ff5f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/NumberControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a6d9f7214a7c5e4b868bfc520d92799 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs new file mode 100644 index 00000000..13b3706b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs @@ -0,0 +1,74 @@ +namespace SRDebugger.UI.Controls +{ + using Internal; + using SRF; + using UnityEngine.UI; + + public abstract class OptionsControlBase : SRMonoBehaviourEx + { + private bool _selectionModeEnabled; + + [RequiredField] public Toggle SelectionModeToggle; + + public OptionDefinition Option; + + public bool SelectionModeEnabled + { + get { return _selectionModeEnabled; } + + set + { + if (value == _selectionModeEnabled) + { + return; + } + + _selectionModeEnabled = value; + + SelectionModeToggle.gameObject.SetActive(_selectionModeEnabled); + + if (SelectionModeToggle.graphic != null) + { + SelectionModeToggle.graphic.CrossFadeAlpha(IsSelected ? _selectionModeEnabled ? 1.0f : 0.2f : 0f, 0, + true); + } + } + } + + public bool IsSelected + { + get { return SelectionModeToggle.isOn; } + set + { + SelectionModeToggle.isOn = value; + + if (SelectionModeToggle.graphic != null) + { + SelectionModeToggle.graphic.CrossFadeAlpha(value ? _selectionModeEnabled ? 1.0f : 0.2f : 0f, 0, true); + } + } + } + + protected override void Awake() + { + base.Awake(); + + IsSelected = false; + SelectionModeToggle.gameObject.SetActive(false); + } + + protected override void OnEnable() + { + base.OnEnable(); + + // Reapply selection indicator alpha (is reset when disabled / reenabled) + if (SelectionModeToggle.graphic != null) + { + SelectionModeToggle.graphic.CrossFadeAlpha(IsSelected ? _selectionModeEnabled ? 1.0f : 0.2f : 0f, 0, + true); + } + } + + public virtual void Refresh() {} + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs.meta new file mode 100644 index 00000000..0e2244f8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/OptionsControlBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff04c6750fdb3b744ac19818a2425666 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs new file mode 100644 index 00000000..5fe1d3d3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs @@ -0,0 +1,36 @@ +namespace SRDebugger.UI.Controls.Data +{ + using System; + using SRF; + using UnityEngine.UI; + + public class ReadOnlyControl : DataBoundControl + { + [RequiredField] + public Text ValueText; + + [RequiredField] + public Text Title; + + protected override void Start() + { + base.Start(); + } + + protected override void OnBind(string propertyName, Type t) + { + base.OnBind(propertyName, t); + Title.text = propertyName; + } + + protected override void OnValueUpdated(object newValue) + { + ValueText.text = Convert.ToString(newValue); + } + + public override bool CanBind(Type type, bool isReadOnly) + { + return type == typeof(string) && isReadOnly; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs.meta new file mode 100644 index 00000000..0abe0ee2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/ReadOnlyControl.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41b5dbc85a74ae84dbb6c6685e1151fc +timeCreated: 1466683332 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs new file mode 100644 index 00000000..beef3e21 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs @@ -0,0 +1,47 @@ +namespace SRDebugger.UI.Controls.Data +{ + using System; + using SRF; + using UnityEngine.UI; + + public class StringControl : DataBoundControl + { + [RequiredField] public InputField InputField; + + [RequiredField] public Text Title; + + protected override void Start() + { + base.Start(); +#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + InputField.onValueChange.AddListener(OnValueChanged); +#else + InputField.onValueChanged.AddListener(OnValueChanged); +#endif + } + + private void OnValueChanged(string newValue) + { + UpdateValue(newValue); + } + + protected override void OnBind(string propertyName, Type t) + { + base.OnBind(propertyName, t); + Title.text = propertyName; + InputField.text = ""; + InputField.interactable = !IsReadOnly; + } + + protected override void OnValueUpdated(object newValue) + { + var value = newValue == null ? "" : (string) newValue; + InputField.text = value; + } + + public override bool CanBind(Type type, bool isReadOnly) + { + return type == typeof (string) && !isReadOnly; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs.meta new file mode 100644 index 00000000..5ef389f5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Data/StringControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 019f81638c7cf1f438569f1ca9def175 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs new file mode 100644 index 00000000..371bf0c6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs @@ -0,0 +1,12 @@ +namespace SRDebugger.UI.Controls +{ + using SRF; + using UnityEngine.UI; + + public class InfoBlock : SRMonoBehaviourEx + { + [RequiredField] public Text Content; + + [RequiredField] public Text Title; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs.meta new file mode 100644 index 00000000..cdcd4223 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/InfoBlock.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3214a2a17debe0c489148429ec9a37b2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs new file mode 100644 index 00000000..609bf263 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs @@ -0,0 +1,30 @@ +namespace SRDebugger.UI.Controls +{ + using UnityEngine; + using UnityEngine.EventSystems; + + public class MultiTapButton : UnityEngine.UI.Button + { + private float _lastTap; + private int _tapCount; + public int RequiredTapCount = 3; + public float ResetTime = 0.5f; + + public override void OnPointerClick(PointerEventData eventData) + { + if (Time.unscaledTime - _lastTap > ResetTime) + { + _tapCount = 0; + } + + _lastTap = Time.unscaledTime; + _tapCount++; + + if (_tapCount == RequiredTapCount) + { + base.OnPointerClick(eventData); + _tapCount = 0; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs.meta new file mode 100644 index 00000000..8ca7e889 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/MultiTapButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abc57d317f579f2459ba7317f386ecf3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs new file mode 100644 index 00000000..1f392c08 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs @@ -0,0 +1,176 @@ +namespace SRDebugger.UI.Controls +{ + using System.Collections.Generic; + using System.Collections.ObjectModel; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public delegate void PinEntryControlCallback(IList result, bool didCancel); + + public class PinEntryControl : SRMonoBehaviourEx + { + private bool _isVisible = true; + private List _numbers = new List(4); + + [RequiredField] public Image Background; + + public bool CanCancel = true; + + [RequiredField] public UnityEngine.UI.Button CancelButton; + + [RequiredField] public Text CancelButtonText; + + [RequiredField] public CanvasGroup CanvasGroup; + + [RequiredField] public Animator DotAnimator; + + public UnityEngine.UI.Button[] NumberButtons; + public Toggle[] NumberDots; + + [RequiredField] public Text PromptText; + + public event PinEntryControlCallback Complete; + + protected override void Awake() + { + base.Awake(); + + for (var i = 0; i < NumberButtons.Length; i++) + { + var number = i; + + NumberButtons[i].onClick.AddListener(() => { PushNumber(number); }); + } + + CancelButton.onClick.AddListener(CancelButtonPressed); + + RefreshState(); + } + + protected override void Update() + { + base.Update(); + + if (!_isVisible) + { + return; + } + + if (_numbers.Count > 0 && (Input.GetKeyDown(KeyCode.Backspace) || Input.GetKeyDown(KeyCode.Delete))) + { + _numbers.PopLast(); + RefreshState(); + } + + var input = Input.inputString; + + for (var i = 0; i < input.Length; i++) + { + if (!char.IsNumber(input, i)) + { + continue; + } + + var num = (int) char.GetNumericValue(input, i); + + if (num > 9 || num < 0) + { + continue; + } + + PushNumber(num); + } + } + + public void Show() + { + CanvasGroup.alpha = 1f; + CanvasGroup.blocksRaycasts = CanvasGroup.interactable = true; + _isVisible = true; + } + + public void Hide() + { + CanvasGroup.alpha = 0f; + CanvasGroup.blocksRaycasts = CanvasGroup.interactable = false; + _isVisible = false; + } + + public void Clear() + { + _numbers.Clear(); + RefreshState(); + } + + public void PlayInvalidCodeAnimation() + { + DotAnimator.SetTrigger("Invalid"); + } + + protected void OnComplete() + { + if (Complete != null) + { + Complete(new ReadOnlyCollection(_numbers), false); + } + } + + protected void OnCancel() + { + if (Complete != null) + { + Complete(new int[] {}, true); + } + } + + private void CancelButtonPressed() + { + if (_numbers.Count > 0) + { + _numbers.PopLast(); + } + else + { + OnCancel(); + } + + RefreshState(); + } + + public void PushNumber(int number) + { + if (_numbers.Count >= 4) + { + Debug.LogWarning("[PinEntry] Expected 4 numbers"); + return; + } + + _numbers.Add(number); + + if (_numbers.Count >= 4) + { + OnComplete(); + } + + RefreshState(); + } + + private void RefreshState() + { + for (var i = 0; i < NumberDots.Length; i++) + { + NumberDots[i].isOn = i < _numbers.Count; + } + + if (_numbers.Count > 0) + { + CancelButtonText.text = "Delete"; + } + else + { + CancelButtonText.text = CanCancel ? "Cancel" : ""; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs.meta new file mode 100644 index 00000000..821f9511 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/PinEntryControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac5725a9566ed324c98b66c6cb03c5cf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler.meta new file mode 100644 index 00000000..a4e26356 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: de55705b2748e684483766cb59b84390 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs new file mode 100644 index 00000000..b1614fd6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs @@ -0,0 +1,38 @@ +namespace SRDebugger.UI +{ + using Services; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class ProfilerFPSLabel : SRMonoBehaviourEx + { + private float _nextUpdate; + + protected override void Update() + { + base.Update(); + + if (Time.realtimeSinceStartup > _nextUpdate) + { + Refresh(); + } + } + + private void Refresh() + { + _text.text = "FPS: {0:0.00}".Fmt(1f/_profilerService.AverageFrameTime); + + _nextUpdate = Time.realtimeSinceStartup + UpdateFrequency; + } +#pragma warning disable 649 + + [Import] private IProfilerService _profilerService; + + public float UpdateFrequency = 1f; + + [RequiredField] [SerializeField] private Text _text; + +#pragma warning restore 649 + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs.meta new file mode 100644 index 00000000..106b4b69 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerFPSLabel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85621644eaef06f44835068498590190 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs new file mode 100644 index 00000000..43d77ff0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs @@ -0,0 +1,79 @@ +namespace SRDebugger.UI.Controls +{ + using System; + using System.Collections; + using SRF; + using UnityEngine; + using UnityEngine.UI; +#if UNITY_5_5_OR_NEWER + using UnityEngine.Profiling; +#endif + + public class ProfilerMemoryBlock : SRMonoBehaviourEx + { + private float _lastRefresh; + + [RequiredField] public Text CurrentUsedText; + + [RequiredField] public Slider Slider; + + [RequiredField] public Text TotalAllocatedText; + + protected override void OnEnable() + { + base.OnEnable(); + TriggerRefresh(); + } + + protected override void Update() + { + base.Update(); + + if (SRDebug.Instance.IsDebugPanelVisible && (Time.realtimeSinceStartup - _lastRefresh > 1f)) + { + TriggerRefresh(); + _lastRefresh = Time.realtimeSinceStartup; + } + } + + public void TriggerRefresh() + { + long max; + long current; + +#if UNITY_5_6_OR_NEWER + max = Profiler.GetTotalReservedMemoryLong(); + current = Profiler.GetTotalAllocatedMemoryLong(); +#else + max = Profiler.GetTotalReservedMemory(); + current = Profiler.GetTotalAllocatedMemory(); +#endif + + var maxMb = (max >> 10); + maxMb /= 1024; // On new line to fix il2cpp + + var currentMb = (current >> 10); + currentMb /= 1024; + + Slider.maxValue = maxMb; + Slider.value = currentMb; + + TotalAllocatedText.text = "Reserved: {0}MB".Fmt(maxMb); + CurrentUsedText.text = "{0}MB".Fmt(currentMb); + } + + public void TriggerCleanup() + { + StartCoroutine(CleanUp()); + } + + private IEnumerator CleanUp() + { + GC.Collect(); + yield return Resources.UnloadUnusedAssets(); + GC.Collect(); + + TriggerRefresh(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs.meta new file mode 100644 index 00000000..85c64aa6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMemoryBlock.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 445cb6d0a347a0542a38dd652e9ba01b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs new file mode 100644 index 00000000..168671b7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs @@ -0,0 +1,91 @@ +namespace SRDebugger.UI.Controls +{ + using System; + using SRF; + using UnityEngine; + using UnityEngine.UI; +#if UNITY_5_5_OR_NEWER + using UnityEngine.Profiling; +#endif + + public class ProfilerMonoBlock : SRMonoBehaviourEx + { + private float _lastRefresh; + + [RequiredField] + public Text CurrentUsedText; + + [RequiredField] + public GameObject NotSupportedMessage; + + [RequiredField] + public Slider Slider; + + [RequiredField] + public Text TotalAllocatedText; + private bool _isSupported; + + protected override void OnEnable() + { + base.OnEnable(); + +#if UNITY_5_6_OR_NEWER + _isSupported = Profiler.GetMonoUsedSizeLong() > 0; +#else + _isSupported = Profiler.GetMonoUsedSize() > 0; +#endif + + NotSupportedMessage.SetActive(!_isSupported); + CurrentUsedText.gameObject.SetActive(_isSupported); + + TriggerRefresh(); + } + + protected override void Update() + { + base.Update(); + + if (SRDebug.Instance.IsDebugPanelVisible && (Time.realtimeSinceStartup - _lastRefresh > 1f)) + { + TriggerRefresh(); + _lastRefresh = Time.realtimeSinceStartup; + } + } + + public void TriggerRefresh() + { + long max; + long current; + +#if UNITY_5_6_OR_NEWER + max = _isSupported ? Profiler.GetMonoHeapSizeLong() : GC.GetTotalMemory(false); + current = Profiler.GetMonoUsedSizeLong(); +#else + max = _isSupported ? Profiler.GetMonoHeapSize() : GC.GetTotalMemory(false); + current = Profiler.GetMonoUsedSize(); +#endif + + var maxMb = (max >> 10); + maxMb /= 1024; // On new line to workaround IL2CPP bug + + var currentMb = (current >> 10); + currentMb /= 1024; + + Slider.maxValue = maxMb; + Slider.value = currentMb; + + TotalAllocatedText.text = "Total: {0}MB".Fmt(maxMb); + + if (currentMb > 0) + { + CurrentUsedText.text = "{0}MB".Fmt(currentMb); + } + } + + public void TriggerCollection() + { + GC.Collect(); + TriggerRefresh(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs.meta new file mode 100644 index 00000000..d8700239 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/Profiler/ProfilerMonoBlock.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fff10238b625f545b2d88c80d4cf9d4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs new file mode 100644 index 00000000..64a4566d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs @@ -0,0 +1,73 @@ +namespace SRDebugger.UI.Controls +{ + using Internal; + using SRF; + using UnityEngine; + using UnityEngine.UI; +#if UNITY_5_5_OR_NEWER + using UnityEngine.Profiling; +#endif + + public class ProfilerEnableControl : SRMonoBehaviourEx + { + private bool _previousState; + [RequiredField] public Text ButtonText; + [RequiredField] public UnityEngine.UI.Button EnableButton; + [RequiredField] public Text Text; + + protected override void Start() + { + base.Start(); + + if (!Profiler.supported) + { + Text.text = SRDebugStrings.Current.Profiler_NotSupported; + EnableButton.gameObject.SetActive(false); + enabled = false; + return; + } + + if (!Application.HasProLicense()) + { + Text.text = SRDebugStrings.Current.Profiler_NoProInfo; + EnableButton.gameObject.SetActive(false); + enabled = false; + return; + } + + UpdateLabels(); + } + + protected void UpdateLabels() + { + if (!Profiler.enabled) + { + Text.text = SRDebugStrings.Current.Profiler_EnableProfilerInfo; + ButtonText.text = "Enable"; + } + else + { + Text.text = SRDebugStrings.Current.Profiler_DisableProfilerInfo; + ButtonText.text = "Disable"; + } + + _previousState = Profiler.enabled; + } + + protected override void Update() + { + base.Update(); + + if (Profiler.enabled != _previousState) + { + UpdateLabels(); + } + } + + public void ToggleProfiler() + { + Debug.Log("Toggle Profiler"); + Profiler.enabled = !Profiler.enabled; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs.meta new file mode 100644 index 00000000..791e4fbc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerEnableControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 04ad714fc337b334687c4aedb49873e9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs new file mode 100644 index 00000000..fc1fdd0f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs @@ -0,0 +1,51 @@ +namespace SRDebugger.UI.Controls +{ + using SRF; + using UnityEngine; + using UnityEngine.UI; + + [RequireComponent(typeof (RectTransform))] + public class ProfilerGraphAxisLabel : SRMonoBehaviourEx + { + private float _prevFrameTime; + private float? _queuedFrameTime; + private float _yPosition; + + [RequiredField] public Text Text; + + protected override void Update() + { + base.Update(); + + if (_queuedFrameTime.HasValue) + { + SetValueInternal(_queuedFrameTime.Value); + _queuedFrameTime = null; + } + } + + public void SetValue(float frameTime, float yPosition) + { + if (_prevFrameTime == frameTime && _yPosition == yPosition) + { + return; + } + + _queuedFrameTime = frameTime; + _yPosition = yPosition; + } + + private void SetValueInternal(float frameTime) + { + _prevFrameTime = frameTime; + + var ms = Mathf.FloorToInt(frameTime*1000); + var fps = Mathf.RoundToInt(1f/frameTime); + + Text.text = "{0}ms ({1}FPS)".Fmt(ms, fps); + + var r = (RectTransform) CachedTransform; + r.anchoredPosition = new Vector2(r.rect.width*0.5f + 10f, _yPosition); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs.meta new file mode 100644 index 00000000..e7706949 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphAxisLabel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4694d7052fd506340ba6cad9f8a10f1b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs new file mode 100644 index 00000000..7a5545de --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs @@ -0,0 +1,550 @@ +//#define LOGGING + +#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 +#define LEGACY_UI +#endif + +namespace SRDebugger.UI.Controls +{ + using System.Collections.Generic; + using Services; + using SRF; + using SRF.Service; + using UnityEngine; + using UnityEngine.UI; + + [ExecuteInEditMode] + [RequireComponent(typeof (RectTransform))] + [RequireComponent(typeof (CanvasRenderer))] + public class ProfilerGraphControl : Graphic + { + public enum VerticalAlignments + { + Top, + Bottom + } + + public VerticalAlignments VerticalAlignment = VerticalAlignments.Bottom; + + private static readonly float[] ScaleSteps = + { + 1f/200f, + 1f/160f, + 1f/120f, + 1f/100f, + 1f/60f, + 1f/30f, + 1f/20f, + 1f/12f, + 1f/6f + }; + + /// + /// Resize the y-axis to fit the nearest useful fps value + /// + public bool FloatingScale; + + /// + /// If not using FloatingScale, use the target FPS set by Application.targetFrameRate for TargetFps + /// + public bool TargetFpsUseApplication; + + /// + /// Toggle drawing of the various axes + /// + public bool DrawAxes = true; + + /// + /// If FloatingScale is disabled, use this value to determine y-axis + /// + public int TargetFps = 60; + + public bool Clip = true; + + public const float DataPointMargin = 2f; + public const float DataPointVerticalMargin = 2f; + + public const float DataPointWidth = 4f; + + public int VerticalPadding = 10; + + public const int LineCount = 3; + + public Color[] LineColours = new Color[0]; + + private IProfilerService _profilerService; + + private ProfilerGraphAxisLabel[] _axisLabels; + + private Rect _clipBounds; + +#if LEGACY_UI + private List _vbo; +#else + private readonly List _meshVertices = new List(); + private readonly List _meshVertexColors = new List(); + private readonly List _meshTriangles = new List(); +#endif + + protected override void Awake() + { + base.Awake(); + _profilerService = SRServiceManager.GetService(); + } + + protected override void Start() + { + base.Start(); + } + + protected void Update() + { + SetVerticesDirty(); + } + +#if LEGACY_UI + protected override void OnFillVBO(List vbo) +#else + [System.ObsoleteAttribute] + protected override void OnPopulateMesh(Mesh m) +#endif + { +#if LEGACY_UI + _vbo = vbo; +#else + _meshVertices.Clear(); + _meshVertexColors.Clear(); + _meshTriangles.Clear(); +#endif + +#if LOGGING + if(!Application.isPlaying) + Debug.Log("Draw"); +#endif + + var graphWidth = rectTransform.rect.width; + var graphHeight = rectTransform.rect.height; + + _clipBounds = new Rect(0, 0, graphWidth, graphHeight); + + var targetFps = TargetFps; + + if (Application.isPlaying && TargetFpsUseApplication && Application.targetFrameRate > 0) + { + targetFps = Application.targetFrameRate; + } + + var maxValue = 1f/targetFps; + + // Holds the index of the nearest 'useful' FPS step + var fpsStep = -1; + + var maxFrameTime = FloatingScale ? CalculateMaxFrameTime() : 1f/targetFps; + + if (FloatingScale) + { + for (var i = 0; i < ScaleSteps.Length; i++) + { + var step = ScaleSteps[i]; + + if (maxFrameTime < step*1.1f) + { + maxValue = step; + fpsStep = i; + break; + } + } + + // Fall back on the largest one + if (fpsStep < 0) + { + fpsStep = ScaleSteps.Length - 1; + maxValue = ScaleSteps[fpsStep]; + } + } + else + { + // Search for the next scale step after the user-provided step + for (var i = 0; i < ScaleSteps.Length; i++) + { + var step = ScaleSteps[i]; + + if (maxFrameTime > step) + { + fpsStep = i; + } + } + } + + var verticalScale = (graphHeight - (VerticalPadding*2))/maxValue; + + // Number of data points that can fit into the graph space + var availableDataPoints = CalculateVisibleDataPointCount(); + + // Reallocate vertex array if insufficient length (or not yet created) + var sampleCount = GetFrameBufferCurrentSize(); + + for (var i = 0; i < sampleCount; i++) + { + // Break loop if all visible data points have been drawn + if (i >= availableDataPoints) + { + break; + } + + // When using right-alignment, read from the end of the profiler buffer + var frame = GetFrame(sampleCount - i - 1); + + // Left-hand x coord + var lx = graphWidth - DataPointWidth*i - DataPointWidth - graphWidth/2f; + + DrawDataPoint(lx, verticalScale, frame); + } + + if (DrawAxes) + { + if (!FloatingScale) + { + DrawAxis(maxValue, maxValue*verticalScale, GetAxisLabel(0)); + } + + var axisCount = 2; + var j = 0; + + if (!FloatingScale) + { + j++; + } + + for (var i = fpsStep; i >= 0; --i) + { + if (j >= axisCount) + { + break; + } + + DrawAxis(ScaleSteps[i], ScaleSteps[i]*verticalScale, GetAxisLabel(j)); + ++j; + } + } + +#if !LEGACY_UI + + m.Clear(); + m.SetVertices(_meshVertices); + m.SetColors(_meshVertexColors); + m.SetTriangles(_meshTriangles, 0); + +#endif + } + + protected void DrawDataPoint(float xPosition, float verticalScale, ProfilerFrame frame) + { + // Right-hand x-coord + var rx = Mathf.Min(_clipBounds.width/2f, xPosition + DataPointWidth - DataPointMargin); + + var currentLineHeight = 0f; + + for (var j = 0; j < LineCount; j++) + { + var lineIndex = j; + + var value = 0f; + + if (j == 0) + { + value = (float) frame.UpdateTime; + } + else if (j == 1) + { + value = (float) frame.RenderTime; + } + else if (j == 2) + { + value = (float) frame.OtherTime; + } + + value *= verticalScale; + + if (value.ApproxZero() || value - DataPointVerticalMargin*2f < 0f) + { + continue; + } + + // Lower y-coord + var ly = currentLineHeight + DataPointVerticalMargin - rectTransform.rect.height/2f; + + if (VerticalAlignment == VerticalAlignments.Top) + { + ly = rectTransform.rect.height/2f - currentLineHeight - DataPointVerticalMargin; + } + + // Upper y-coord + var uy = ly + value - DataPointVerticalMargin; + + if (VerticalAlignment == VerticalAlignments.Top) + { + uy = ly - value + DataPointVerticalMargin; + } + + var c = LineColours[lineIndex]; + + AddRect(new Vector3(Mathf.Max(-_clipBounds.width/2f, xPosition), ly), + new Vector3(Mathf.Max(-_clipBounds.width/2f, xPosition), uy), new Vector3(rx, uy), + new Vector3(rx, ly), c); + + currentLineHeight += value; + } + } + + protected void DrawAxis(float frameTime, float yPosition, ProfilerGraphAxisLabel label) + { +#if LOGGING + if(!Application.isPlaying) + Debug.Log("Draw Axis: {0}".Fmt(yPosition)); +#endif + + var lx = -rectTransform.rect.width*0.5f; + var rx = -lx; + + var uy = yPosition - rectTransform.rect.height*0.5f + 0.5f; + var ly = yPosition - rectTransform.rect.height*0.5f - 0.5f; + + var c = new Color(1f, 1f, 1f, 0.4f); + + AddRect(new Vector3(lx, ly), new Vector3(lx, uy), new Vector3(rx, uy), new Vector3(rx, ly), c); + + if (label != null) + { + label.SetValue(frameTime, yPosition); + } + } + + protected void AddRect(Vector3 tl, Vector3 tr, Vector3 bl, Vector3 br, Color c) + { +#if LEGACY_UI + + var v = UIVertex.simpleVert; + v.color = c; + + v.position = tl; + _vbo.Add(v); + + v.position = tr; + _vbo.Add(v); + + v.position = bl; + _vbo.Add(v); + + v.position = br; + _vbo.Add(v); + +#else + + // New UI system uses triangles + + _meshVertices.Add(tl); + _meshVertices.Add(tr); + _meshVertices.Add(bl); + _meshVertices.Add(br); + + _meshTriangles.Add(_meshVertices.Count - 4); // tl + _meshTriangles.Add(_meshVertices.Count - 3); // tr + _meshTriangles.Add(_meshVertices.Count - 1); // br + + _meshTriangles.Add(_meshVertices.Count - 2); // bl + _meshTriangles.Add(_meshVertices.Count - 1); // br + _meshTriangles.Add(_meshVertices.Count - 3); // tr + + _meshVertexColors.Add(c); + _meshVertexColors.Add(c); + _meshVertexColors.Add(c); + _meshVertexColors.Add(c); + +#endif + } + + protected ProfilerFrame GetFrame(int i) + { +#if UNITY_EDITOR + + if (!Application.isPlaying) + { + return TestData[i]; + } + +#endif + + return _profilerService.FrameBuffer[i]; + } + + protected int CalculateVisibleDataPointCount() + { + return Mathf.RoundToInt(rectTransform.rect.width/DataPointWidth); + } + + protected int GetFrameBufferCurrentSize() + { +#if UNITY_EDITOR + + if (!Application.isPlaying) + { + return TestData.Length; + } + +#endif + + return _profilerService.FrameBuffer.Count; + } + + protected int GetFrameBufferMaxSize() + { +#if UNITY_EDITOR + + if (!Application.isPlaying) + { + return TestData.Length; + } + +#endif + + return _profilerService.FrameBuffer.Capacity; + } + + protected float CalculateMaxFrameTime() + { + var frameCount = GetFrameBufferCurrentSize(); + var c = Mathf.Min(CalculateVisibleDataPointCount(), frameCount); + + var max = 0d; + + for (var i = 0; i < c; i++) + { + var frameNumber = frameCount - i - 1; + + var t = GetFrame(frameNumber); + + if (t.FrameTime > max) + { + max = t.FrameTime; + } + } + + return (float) max; + } + + private ProfilerGraphAxisLabel GetAxisLabel(int index) + { + if (_axisLabels == null || !Application.isPlaying) + { + _axisLabels = GetComponentsInChildren(); + } + + if (_axisLabels.Length > index) + { + return _axisLabels[index]; + } + + Debug.LogWarning("[SRDebugger.Profiler] Not enough axis labels in pool"); + + return null; + } + + #region Editor Only test data + +#if UNITY_EDITOR + + private ProfilerFrame[] TestData + { + get + { + if (_testData == null) + { + _testData = GenerateSampleData(); + } + + return _testData; + } + } + + private ProfilerFrame[] _testData; + + protected static ProfilerFrame[] GenerateSampleData() + { + var sampleCount = 200; + + var data = new ProfilerFrame[sampleCount]; + + for (var i = 0; i < sampleCount; i++) + { + var frame = new ProfilerFrame(); + + for (var j = 0; j < 3; j++) + { + var v = 0d; + + if (j == 0) + { + v = Mathf.PerlinNoise(i/200f, 0); + } + else if (j == 1) + { + v = Mathf.PerlinNoise(0, i/200f); + } + else + { + v = Random.Range(0, 1f); + } + + v *= (1f/60f)*0.333f; + + // Simulate spikes + if (Random.value > 0.8f) + { + v *= Random.Range(1.2f, 1.8f); + } + + if (j == 2) + { + v *= 0.1f; + } + + if (j == 0) + { + frame.UpdateTime = v; + } + else if (j == 1) + { + frame.RenderTime = v; + } + else if (j == 2) + { + frame.FrameTime = frame.RenderTime + frame.UpdateTime + v; + } + } + + data[i] = frame; + } + + data[0] = new ProfilerFrame + { + FrameTime = 0.005, + RenderTime = 0.005, + UpdateTime = 0.005 + }; + + data[sampleCount - 1] = new ProfilerFrame + { + FrameTime = 1d/60d, + RenderTime = 0.007, + UpdateTime = 0.007 + }; + + return data; + } + +#endif + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs.meta new file mode 100644 index 00000000..5b27d531 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/ProfilerGraphControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5812a284a856b743b4f54c6a4637061 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs new file mode 100644 index 00000000..6c5485db --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs @@ -0,0 +1,26 @@ +namespace SRDebugger.UI.Controls +{ + using SRF; + using SRF.UI; + using UnityEngine; + using UnityEngine.UI; + + public class SRTabButton : SRMonoBehaviourEx + { + [RequiredField] public Behaviour ActiveToggle; + + [RequiredField] public UnityEngine.UI.Button Button; + + [RequiredField] public RectTransform ExtraContentContainer; + + [RequiredField] public StyleComponent IconStyleComponent; + + [RequiredField] public Text TitleText; + + public bool IsActive + { + get { return ActiveToggle.enabled; } + set { ActiveToggle.enabled = value; } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs.meta new file mode 100644 index 00000000..01c65b35 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Controls/SRTabButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2e81b40d04e8e440bb9659057db98c8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs new file mode 100644 index 00000000..0e1f9025 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs @@ -0,0 +1,34 @@ +namespace SRDebugger.UI +{ + using Scripts; + using Services; + using SRF; + using SRF.Service; + using UnityEngine; + + public class DebugPanelRoot : SRMonoBehaviourEx + { + [RequiredField] public Canvas Canvas; + + [RequiredField] public CanvasGroup CanvasGroup; + + [RequiredField] public DebuggerTabController TabController; + + public void Close() + { + if (Settings.Instance.UnloadOnClose) + { + SRServiceManager.GetService().DestroyDebugPanel(); + } + else + { + SRServiceManager.GetService().HideDebugPanel(); + } + } + + public void CloseAndDestroy() + { + SRServiceManager.GetService().DestroyDebugPanel(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs.meta new file mode 100644 index 00000000..e6a42d82 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebugPanelRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64a45d1be7c826148a745e7d38b02161 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs new file mode 100644 index 00000000..b4a54a58 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs @@ -0,0 +1,119 @@ +namespace SRDebugger.Scripts +{ + using System; + using System.Linq; + using SRF; + using UI.Other; + using UnityEngine; + + public class DebuggerTabController : SRMonoBehaviourEx + { + private SRTab _aboutTabInstance; + private DefaultTabs? _activeTab; + private bool _hasStarted; + public SRTab AboutTab; + + [RequiredField] public SRTabController TabController; + + public DefaultTabs? ActiveTab + { + get + { + var key = TabController.ActiveTab.Key; + + if (string.IsNullOrEmpty(key)) + { + return null; + } + + var t = Enum.Parse(typeof (DefaultTabs), key); + + if (!Enum.IsDefined(typeof (DefaultTabs), t)) + { + return null; + } + + return (DefaultTabs) t; + } + } + + protected override void Start() + { + base.Start(); + + _hasStarted = true; + + // Loads all available tabs from resources + var tabs = Resources.LoadAll("SRDebugger/UI/Prefabs/Tabs"); + var defaultTabs = Enum.GetNames(typeof (DefaultTabs)); + + foreach (var srTab in tabs) + { + var enabler = srTab.GetComponent(typeof (IEnableTab)) as IEnableTab; + + if (enabler != null && !enabler.IsEnabled) + { + continue; + } + + if (defaultTabs.Contains(srTab.Key)) + { + var tabValue = Enum.Parse(typeof (DefaultTabs), srTab.Key); + + if (Enum.IsDefined(typeof (DefaultTabs), tabValue) && + Settings.Instance.DisabledTabs.Contains((DefaultTabs) tabValue)) + { + continue; + } + } + + TabController.AddTab(SRInstantiate.Instantiate(srTab)); + } + + // Add about tab (has no button, accessed via "Stompy" logo + if (AboutTab != null) + { + _aboutTabInstance = SRInstantiate.Instantiate(AboutTab); + TabController.AddTab(_aboutTabInstance, false); + } + + // Open active tab (set before panel loaded), or default tab from settings + var defaultTab = _activeTab ?? Settings.Instance.DefaultTab; + + if (!OpenTab(defaultTab)) + { + TabController.ActiveTab = TabController.Tabs.FirstOrDefault(); + } + } + + public bool OpenTab(DefaultTabs tab) + { + if (!_hasStarted) + { + _activeTab = tab; + return true; + } + + var tabName = tab.ToString(); + + foreach (var t in TabController.Tabs) + { + if (t.Key == tabName) + { + TabController.ActiveTab = t; + return true; + } + } + + return false; + } + + public void ShowAboutTab() + { + if (_aboutTabInstance != null) + { + TabController.ActiveTab = _aboutTabInstance; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs.meta new file mode 100644 index 00000000..e1c8557e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/DebuggerTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 295aaaf6e216af84e99f15dff7b6fc32 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs new file mode 100644 index 00000000..ccb52fcf --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs @@ -0,0 +1,162 @@ +namespace SRDebugger.UI +{ + using Other; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class MobileMenuController : SRMonoBehaviourEx + { + private UnityEngine.UI.Button _closeButton; + + [SerializeField] private float _maxMenuWidth = 185f; + + [SerializeField] private float _peekAmount = 45f; + + private float _targetXPosition; + + [RequiredField] public RectTransform Content; + + [RequiredField] public RectTransform Menu; + + [RequiredField] public UnityEngine.UI.Button OpenButton; + + [RequiredField] public SRTabController TabController; + + public float PeekAmount + { + get { return _peekAmount; } + } + + public float MaxMenuWidth + { + get { return _maxMenuWidth; } + } + + protected override void OnEnable() + { + base.OnEnable(); + + var parent = Menu.parent as RectTransform; + + var layoutElement = Menu.GetComponent(); + layoutElement.ignoreLayout = true; + + // Set up menu anchors so it stretches to full height and has the screen width + Menu.pivot = new Vector2(1, 1); + + Menu.offsetMin = new Vector2(1f, 0f); + Menu.offsetMax = new Vector2(1f, 1f); + + Menu.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, + Mathf.Clamp(parent.rect.width - PeekAmount, 0, MaxMenuWidth)); + + Menu.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, parent.rect.height); + + Menu.anchoredPosition = new Vector2(0, 0); + + if (_closeButton == null) + { + CreateCloseButton(); + } + + OpenButton.gameObject.SetActive(true); + + TabController.ActiveTabChanged += TabControllerOnActiveTabChanged; + } + + protected override void OnDisable() + { + base.OnDisable(); + + var layoutElement = Menu.GetComponent(); + layoutElement.ignoreLayout = false; + + // Reset content position in case it has been moved by opening the menu + Content.anchoredPosition = new Vector2(0, 0); + + _closeButton.gameObject.SetActive(false); + OpenButton.gameObject.SetActive(false); + + TabController.ActiveTabChanged -= TabControllerOnActiveTabChanged; + } + + private void CreateCloseButton() + { + var go = new GameObject("SR_CloseButtonCanvas", typeof(RectTransform)); + go.transform.SetParent(Content, false); + var c = go.AddComponent(); + go.AddComponent(); + var rect = go.GetComponentOrAdd(); + + c.overrideSorting = true; + c.sortingOrder = 122; + + go.AddComponent().ignoreLayout = true; + + SetRectSize(rect); + + var cGo = new GameObject("SR_CloseButton", typeof(RectTransform)); + cGo.transform.SetParent(rect, false); + var cRect = cGo.GetComponent(); + + SetRectSize(cRect); + cGo.AddComponent().color = new Color(0, 0, 0, 0); + + _closeButton = cGo.AddComponent(); + _closeButton.transition = Selectable.Transition.None; + _closeButton.onClick.AddListener(CloseButtonClicked); + _closeButton.gameObject.SetActive(false); + } + + private void SetRectSize(RectTransform rect) + { + rect.anchorMin = new Vector2(0, 0); + rect.anchorMax = new Vector2(1, 1); + rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Content.rect.width); + rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, Content.rect.height); + } + + private void CloseButtonClicked() + { + Close(); + } + + protected override void Update() + { + base.Update(); + + var from = Content.anchoredPosition.x; + + if (Mathf.Abs(_targetXPosition - from) < 2.5f) + { + Content.anchoredPosition = new Vector2(_targetXPosition, Content.anchoredPosition.y); + } + else + { + Content.anchoredPosition = + new Vector2(SRMath.SpringLerp(from, _targetXPosition, 15f, Time.unscaledDeltaTime), + Content.anchoredPosition.y); + } + } + + private void TabControllerOnActiveTabChanged(SRTabController srTabController, SRTab srTab) + { + Close(); + } + + [ContextMenu("Open")] + public void Open() + { + _targetXPosition = Menu.rect.width; + _closeButton.gameObject.SetActive(true); + } + + [ContextMenu("Close")] + public void Close() + { + _targetXPosition = 0; + _closeButton.gameObject.SetActive(false); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs.meta new file mode 100644 index 00000000..b510ff99 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/MobileMenuController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3cc3afaacd56e9b4f9f2b6201ec85267 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other.meta new file mode 100644 index 00000000..03f4571a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 7e7d110cdb77d7b41bfa3bc97d8144e2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs new file mode 100644 index 00000000..f46216a2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs @@ -0,0 +1,12 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using UnityEngine; + + public class BugReportPopoverRoot : SRMonoBehaviourEx + { + [RequiredField] public CanvasGroup CanvasGroup; + + [RequiredField] public RectTransform Container; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs.meta new file mode 100644 index 00000000..fb3a4da5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportPopoverRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c9a194ca4d3911419f82b2f06d5ef2e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs new file mode 100644 index 00000000..119a7896 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs @@ -0,0 +1,195 @@ + +#if NETFX_CORE +using UnityEngine.Windows; +#endif + +namespace SRDebugger.UI.Other +{ + using System; + using System.Collections; + using System.Linq; + using Internal; + using Services; + using SRF; + using SRF.Service; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + public class BugReportSheetController : SRMonoBehaviourEx + { + [RequiredField] public GameObject ButtonContainer; + + [RequiredField] public Text ButtonText; + + [RequiredField] public UnityEngine.UI.Button CancelButton; + + public Action CancelPressed; + + [RequiredField] public InputField DescriptionField; + + [RequiredField] public InputField EmailField; + + [RequiredField] public Slider ProgressBar; + + [RequiredField] public Text ResultMessageText; + + public Action ScreenshotComplete; + + [RequiredField] public UnityEngine.UI.Button SubmitButton; + + public Action SubmitComplete; + public Action TakingScreenshot; + + public bool IsCancelButtonEnabled + { + get { return CancelButton.gameObject.activeSelf; } + set { CancelButton.gameObject.SetActive(value); } + } + + protected override void Start() + { + base.Start(); + + SetLoadingSpinnerVisible(false); + ClearErrorMessage(); + ClearForm(); + } + + public void Submit() + { + EventSystem.current.SetSelectedGameObject(null); + + ProgressBar.value = 0; + ClearErrorMessage(); + SetLoadingSpinnerVisible(true); + SetFormEnabled(false); + + if (!string.IsNullOrEmpty(EmailField.text)) + { + SetDefaultEmailFieldContents(EmailField.text); + } + + StartCoroutine(SubmitCo()); + } + + public void Cancel() + { + if (CancelPressed != null) + { + CancelPressed(); + } + } + + private IEnumerator SubmitCo() + { + if (BugReportScreenshotUtil.ScreenshotData == null) + { + if (TakingScreenshot != null) + { + TakingScreenshot(); + } + + yield return new WaitForEndOfFrame(); + + yield return StartCoroutine(BugReportScreenshotUtil.ScreenshotCaptureCo()); + + if (ScreenshotComplete != null) + { + ScreenshotComplete(); + } + } + + var s = SRServiceManager.GetService(); + + var r = new BugReport(); + + r.Email = EmailField.text; + r.UserDescription = DescriptionField.text; + + r.ConsoleLog = Service.Console.AllEntries.ToList(); + r.SystemInformation = SRServiceManager.GetService().CreateReport(); + r.ScreenshotData = BugReportScreenshotUtil.ScreenshotData; + + BugReportScreenshotUtil.ScreenshotData = null; + + s.SendBugReport(r, OnBugReportComplete, OnBugReportProgress); + } + + private void OnBugReportProgress(float progress) + { + ProgressBar.value = progress; + } + + private void OnBugReportComplete(bool didSucceed, string errorMessage) + { + if (!didSucceed) + { + ShowErrorMessage("Error sending bug report", errorMessage); + } + else + { + ClearForm(); + ShowErrorMessage("Bug report submitted successfully"); + } + + SetLoadingSpinnerVisible(false); + SetFormEnabled(true); + + if (SubmitComplete != null) + { + SubmitComplete(didSucceed, errorMessage); + } + } + + protected void SetLoadingSpinnerVisible(bool visible) + { + ProgressBar.gameObject.SetActive(visible); + ButtonContainer.SetActive(!visible); + } + + protected void ClearForm() + { + EmailField.text = GetDefaultEmailFieldContents(); + DescriptionField.text = ""; + } + + protected void ShowErrorMessage(string userMessage, string serverMessage = null) + { + var txt = userMessage; + + if (!string.IsNullOrEmpty(serverMessage)) + { + txt += " ({0})".Fmt(serverMessage); + } + + ResultMessageText.text = txt; + ResultMessageText.gameObject.SetActive(true); + } + + protected void ClearErrorMessage() + { + ResultMessageText.text = ""; + ResultMessageText.gameObject.SetActive(false); + } + + protected void SetFormEnabled(bool e) + { + SubmitButton.interactable = e; + CancelButton.interactable = e; + EmailField.interactable = e; + DescriptionField.interactable = e; + } + + private string GetDefaultEmailFieldContents() + { + return PlayerPrefs.GetString("SRDEBUGGER_BUG_REPORT_LAST_EMAIL", ""); + } + + private void SetDefaultEmailFieldContents(string value) + { + PlayerPrefs.SetString("SRDEBUGGER_BUG_REPORT_LAST_EMAIL", value); + PlayerPrefs.Save(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs.meta new file mode 100644 index 00000000..82e6594d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/BugReportSheetController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63d76b94b1c670b4cbafd57dd8dcd2ff +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs new file mode 100644 index 00000000..37116f51 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs @@ -0,0 +1,56 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class CategoryGroup : SRMonoBehaviourEx + { + [RequiredField] public RectTransform Container; + [RequiredField] public Text Header; + [RequiredField] public GameObject Background; + [RequiredField] public Toggle SelectionToggle; + + public GameObject[] EnabledDuringSelectionMode = new GameObject[0]; + + private bool _selectionModeEnabled = true; + + public bool IsSelected + { + get + { + return SelectionToggle.isOn; + } + set + { + SelectionToggle.isOn = value; + + if (SelectionToggle.graphic != null) + { + SelectionToggle.graphic.CrossFadeAlpha(value ? _selectionModeEnabled ? 1.0f : 0.2f : 0f, 0, true); + } + } + } + + public bool SelectionModeEnabled + { + get { return _selectionModeEnabled; } + + set + { + if (value == _selectionModeEnabled) + { + return; + } + + _selectionModeEnabled = value; + + for (var i = 0; i < EnabledDuringSelectionMode.Length; i++) + { + EnabledDuringSelectionMode[i].SetActive(_selectionModeEnabled); + } + } + } + + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs.meta new file mode 100644 index 00000000..d756f956 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/CategoryGroup.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 176c1a8b99c762143a65fa14f47b5d93 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs new file mode 100644 index 00000000..24c3a5dd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs @@ -0,0 +1,53 @@ +using System; +using System.ComponentModel; +using UnityEngine.UI; + +namespace SRDebugger.UI.Other +{ + using Internal; + using SRF; + using UnityEngine; + + [RequireComponent(typeof (Canvas))] + public class ConfigureCanvasFromSettings : SRMonoBehaviour + { + private Canvas _canvas; + private CanvasScaler _canvasScaler; + + private float _originalScale; + private float _lastSetScale; + private Settings _settings; + + private void Start() + { + _canvas = GetComponent(); + _canvasScaler = GetComponent(); + + SRDebuggerUtil.ConfigureCanvas(_canvas); + + _settings = SRDebug.Instance.Settings; + _originalScale = _canvasScaler.scaleFactor; + _canvasScaler.scaleFactor = _originalScale * _settings.UIScale; + + // Track the last set scale in case it is modified by the retina scaler. + _lastSetScale = _canvasScaler.scaleFactor; + + _settings.PropertyChanged += SettingsOnPropertyChanged; + } + + private void OnDestroy() + { + _settings.PropertyChanged -= SettingsOnPropertyChanged; + } + + private void SettingsOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) + { + // If the last set scale does not match the current scale factor, then it is likely the retina scaler has applied a change. + // Treat the new value as the original scale. + if (_canvasScaler.scaleFactor != _lastSetScale) _originalScale = _canvasScaler.scaleFactor; + + _canvasScaler.scaleFactor = _originalScale * _settings.UIScale; + _lastSetScale = _canvasScaler.scaleFactor; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs.meta new file mode 100644 index 00000000..2788422b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConfigureCanvasFromSettings.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0ad3d8afa9fd64429a249b5bbb19557 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs new file mode 100644 index 00000000..c640fb80 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs @@ -0,0 +1,71 @@ +namespace SRDebugger.UI.Other +{ + using Services; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class ConsoleTabQuickViewControl : SRMonoBehaviourEx + { + private const int Max = 1000; + private static readonly string MaxString = (Max - 1) + "+"; + private int _prevErrorCount = -1; + private int _prevInfoCount = -1; + private int _prevWarningCount = -1; + + [Import] public IConsoleService ConsoleService; + + [RequiredField] public Text ErrorCountText; + + [RequiredField] public Text InfoCountText; + + [RequiredField] public Text WarningCountText; + + protected override void Awake() + { + base.Awake(); + + ErrorCountText.text = "0"; + WarningCountText.text = "0"; + InfoCountText.text = "0"; + } + + protected override void Update() + { + base.Update(); + + if (ConsoleService == null) + { + return; + } + + if (HasChanged(ConsoleService.ErrorCount, ref _prevErrorCount, Max)) + { + ErrorCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.ErrorCount, Max, MaxString); + } + + if (HasChanged(ConsoleService.WarningCount, ref _prevWarningCount, Max)) + { + WarningCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.WarningCount, Max, + MaxString); + } + + if (HasChanged(ConsoleService.InfoCount, ref _prevInfoCount, Max)) + { + InfoCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.InfoCount, Max, MaxString); + } + } + + private static bool HasChanged(int newCount, ref int oldCount, int max) + { + var newCountClamped = Mathf.Clamp(newCount, 0, max); + var oldCountClamped = Mathf.Clamp(oldCount, 0, max); + + var hasChanged = newCountClamped != oldCountClamped; + + oldCount = newCount; + + return hasChanged; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs.meta new file mode 100644 index 00000000..d808e959 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b9e7555976318b846887116c61e2ecf6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs new file mode 100644 index 00000000..ded030eb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs @@ -0,0 +1,37 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using SRF.UI; + using UnityEngine; + + [RequireComponent(typeof (StyleComponent))] + public class DebugPanelBackgroundBehaviour : SRMonoBehaviour + { + private string _defaultKey; + private bool _isTransparent; + private StyleComponent _styleComponent; + public string TransparentStyleKey = ""; + + private void Awake() + { + _styleComponent = GetComponent(); + + _defaultKey = _styleComponent.StyleKey; + Update(); + } + + private void Update() + { + if (!_isTransparent && Settings.Instance.EnableBackgroundTransparency) + { + _styleComponent.StyleKey = TransparentStyleKey; + _isTransparent = true; + } + else if (_isTransparent && !Settings.Instance.EnableBackgroundTransparency) + { + _styleComponent.StyleKey = _defaultKey; + _isTransparent = false; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs.meta new file mode 100644 index 00000000..d46737c8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DebugPanelBackgroundBehaviour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a819a08c122d6474a848377ee7ba3192 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs new file mode 100644 index 00000000..85a721cc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs @@ -0,0 +1,210 @@ +namespace SRDebugger.UI.Other +{ + using Controls; + using Internal; + using Services; + using SRF; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + public class DockConsoleController : SRMonoBehaviourEx, IPointerEnterHandler, IPointerExitHandler + { + public const float NonFocusOpacity = 0.65f; + private bool _isDirty; + private bool _isDragging; + private int _pointersOver; + + [RequiredField] public GameObject BottomHandle; + + [RequiredField] public CanvasGroup CanvasGroup; + + [RequiredField] public ConsoleLogControl Console; + + [RequiredField] public GameObject Dropdown; + + [RequiredField] public Image DropdownToggleSprite; + + [RequiredField] public Text TextErrors; + + [RequiredField] public Text TextInfo; + + [RequiredField] public Text TextWarnings; + + [RequiredField] public Toggle ToggleErrors; + + [RequiredField] public Toggle ToggleInfo; + + [RequiredField] public Toggle ToggleWarnings; + + [RequiredField] public GameObject TopBar; + + [RequiredField] public GameObject TopHandle; + + public bool IsVisible + { + get { return CachedGameObject.activeSelf; } + set { CachedGameObject.SetActive(value); } + } + + protected override void Start() + { + base.Start(); + + //_canvasScaler = Canvas.GetComponent(); + Service.Console.Updated += ConsoleOnUpdated; + + Refresh(); + RefreshAlpha(); + } + + protected override void OnDestroy() + { + base.OnDestroy(); + + if (Service.Console != null) + { + Service.Console.Updated -= ConsoleOnUpdated; + } + } + + protected override void OnEnable() + { + base.OnEnable(); + + _pointersOver = 0; + _isDragging = false; + RefreshAlpha(); + } + + protected override void OnDisable() + { + base.OnDisable(); + _pointersOver = 0; + } + + protected override void Update() + { + base.Update(); + + if (_isDirty) + { + Refresh(); + } + } + + private void ConsoleOnUpdated(IConsoleService console) + { + _isDirty = true; + } + + public void SetDropdownVisibility(bool visible) + { + Dropdown.SetActive(visible); + DropdownToggleSprite.rectTransform.localRotation = Quaternion.Euler(0, 0, visible ? 0f : 180f); + } + + public void SetAlignmentMode(ConsoleAlignment alignment) + { + switch (alignment) + { + case ConsoleAlignment.Top: + { + TopBar.transform.SetSiblingIndex(0); + Dropdown.transform.SetSiblingIndex(2); + TopHandle.SetActive(false); + BottomHandle.SetActive(true); + transform.SetSiblingIndex(0); + DropdownToggleSprite.rectTransform.parent.localRotation = Quaternion.Euler(0, 0, 0f); + break; + } + + case ConsoleAlignment.Bottom: + { + Dropdown.transform.SetSiblingIndex(0); + TopBar.transform.SetSiblingIndex(2); + TopHandle.SetActive(true); + BottomHandle.SetActive(false); + transform.SetSiblingIndex(1); + DropdownToggleSprite.rectTransform.parent.localRotation = Quaternion.Euler(0, 0, 180f); + break; + } + } + } + + private void Refresh() + { + // Update total counts labels + TextInfo.text = SRDebuggerUtil.GetNumberString(Service.Console.InfoCount, 999, "999+"); + TextWarnings.text = SRDebuggerUtil.GetNumberString(Service.Console.WarningCount, 999, "999+"); + TextErrors.text = SRDebuggerUtil.GetNumberString(Service.Console.ErrorCount, 999, "999+"); + + _isDirty = false; + } + + private void RefreshAlpha() + { + if (_isDragging || _pointersOver > 0) + { + CanvasGroup.alpha = 1.0f; + } + else + { + CanvasGroup.alpha = NonFocusOpacity; + } + } + + #region Event Callbacks + + public void ToggleDropdownVisible() + { + SetDropdownVisibility(!Dropdown.activeSelf); + } + + public void MenuButtonPressed() + { + SRDebug.Instance.ShowDebugPanel(DefaultTabs.Console); + } + + public void ClearButtonPressed() + { + Service.Console.Clear(); + } + + public void TogglesUpdated() + { + Console.ShowErrors = ToggleErrors.isOn; + Console.ShowWarnings = ToggleWarnings.isOn; + Console.ShowInfo = ToggleInfo.isOn; + + SetDropdownVisibility(true); + } + + public void OnPointerEnter(PointerEventData e) + { + _pointersOver = 1; + RefreshAlpha(); + } + + public void OnPointerExit(PointerEventData e) + { + _pointersOver = 0; //Mathf.Max(0, _pointersOver - 1); + RefreshAlpha(); + } + + public void OnBeginDrag() + { + _isDragging = true; + RefreshAlpha(); + } + + public void OnEndDrag() + { + _isDragging = false; + _pointersOver = 0; + RefreshAlpha(); + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs.meta new file mode 100644 index 00000000..b85c2ec5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c8181ba76f89dd64a96c1e8c2beccb26 +timeCreated: 1441833066 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs new file mode 100644 index 00000000..920cc968 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs @@ -0,0 +1,3 @@ +// Deprecated file. Included to prevent conflicts when upgrading from a previous version of SRDebugger + + diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs.meta new file mode 100644 index 00000000..ce143afd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/DockConsoleRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e502669a31931b74ea762540a783f1ff +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs new file mode 100644 index 00000000..19a07683 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs @@ -0,0 +1,56 @@ +using UnityEngine; + +namespace SRDebugger.UI.Other +{ + public class ErrorNotifier : MonoBehaviour + { + public bool IsVisible + { + get { return enabled; } + } + + private const float DisplayTime = 6; + + [SerializeField] + private Animator _animator = null; + + private int _triggerHash; + + private float _hideTime; + private bool _isShowing; + + private bool _queueWarning; + + void Awake() + { + _triggerHash = Animator.StringToHash("Display"); + } + + public void ShowErrorWarning() + { + _queueWarning = true; + } + + void Update() + { + if (_queueWarning) + { + _hideTime = Time.realtimeSinceStartup + DisplayTime; + + if (!_isShowing) + { + _isShowing = true; + _animator.SetBool(_triggerHash, true); + } + + _queueWarning = false; + } + + if (_isShowing && Time.realtimeSinceStartup > _hideTime) + { + _animator.SetBool(_triggerHash, false); + _isShowing = false; + } + } + } +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs.meta new file mode 100644 index 00000000..8fcae28c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ErrorNotifier.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dc845b8723c64841aa76e259d4a0b6c4 +timeCreated: 1582392762 \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs new file mode 100644 index 00000000..917c3c5b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs @@ -0,0 +1,106 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using UnityEngine; + + /// + /// Handles enabling/disabling handle objects for different anchoring modes + /// + public class HandleManager : SRMonoBehaviour + { + private bool _hasSet; + public GameObject BottomHandle; + public GameObject BottomLeftHandle; + public GameObject BottomRightHandle; + public PinAlignment DefaultAlignment; + public GameObject LeftHandle; + public GameObject RightHandle; + public GameObject TopHandle; + public GameObject TopLeftHandle; + public GameObject TopRightHandle; + + private void Start() + { + if (!_hasSet) + { + SetAlignment(DefaultAlignment); + } + } + + public void SetAlignment(PinAlignment alignment) + { + _hasSet = true; + + switch (alignment) + { + case PinAlignment.TopLeft: + case PinAlignment.TopRight: + SetActive(BottomHandle, true); + SetActive(TopHandle, false); + SetActive(TopLeftHandle, false); + SetActive(TopRightHandle, false); + break; + + case PinAlignment.BottomLeft: + case PinAlignment.BottomRight: + SetActive(BottomHandle, false); + SetActive(TopHandle, true); + SetActive(BottomLeftHandle, false); + SetActive(BottomRightHandle, false); + break; + } + + switch (alignment) + { + case PinAlignment.TopLeft: + case PinAlignment.BottomLeft: + SetActive(LeftHandle, false); + SetActive(RightHandle, true); + SetActive(TopLeftHandle, false); + SetActive(BottomLeftHandle, false); + break; + + case PinAlignment.TopRight: + case PinAlignment.BottomRight: + SetActive(LeftHandle, true); + SetActive(RightHandle, false); + SetActive(TopRightHandle, false); + SetActive(BottomRightHandle, false); + break; + } + + switch (alignment) + { + case PinAlignment.TopLeft: + SetActive(BottomLeftHandle, false); + SetActive(BottomRightHandle, true); + break; + + case PinAlignment.TopRight: + SetActive(BottomLeftHandle, true); + SetActive(BottomRightHandle, false); + break; + + case PinAlignment.BottomLeft: + SetActive(TopLeftHandle, false); + SetActive(TopRightHandle, true); + break; + + case PinAlignment.BottomRight: + SetActive(TopLeftHandle, true); + SetActive(TopRightHandle, false); + break; + } + } + + private void SetActive(GameObject obj, bool active) + { + if (obj == null) + { + return; + } + + obj.SetActive(active); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs.meta new file mode 100644 index 00000000..e6c9558c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/HandleManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4292e93ad30fda64b96c60d4d68b3c0d +timeCreated: 1441815277 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs new file mode 100644 index 00000000..82b1c214 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs @@ -0,0 +1,7 @@ +namespace SRDebugger.UI.Other +{ + public interface IEnableTab + { + bool IsEnabled { get; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs.meta new file mode 100644 index 00000000..82b43bb4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/IEnableTab.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0522b3ec2155a4468bea956e3ea2fd5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs new file mode 100644 index 00000000..fbaae59b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs @@ -0,0 +1,35 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using UnityEngine; + + public class LoadingSpinnerBehaviour : SRMonoBehaviour + { + private float _dt; + public int FrameCount = 12; + public float SpinDuration = 0.8f; + + private void Update() + { + _dt += Time.unscaledDeltaTime; + + var localRotation = CachedTransform.localRotation.eulerAngles; + var r = localRotation.z; + + var fTime = SpinDuration/FrameCount; + var hasChanged = false; + + while (_dt > fTime) + { + r -= 360f/FrameCount; + _dt -= fTime; + hasChanged = true; + } + + if (hasChanged) + { + CachedTransform.localRotation = Quaternion.Euler(localRotation.x, localRotation.y, r); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs.meta new file mode 100644 index 00000000..afb6673b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/LoadingSpinnerBehaviour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44d058d954e809c4fa87cfab328237d7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs new file mode 100644 index 00000000..bf3d2367 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs @@ -0,0 +1,26 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using SRF.UI.Layout; + using UnityEngine; + using UnityEngine.UI; + + public class PinnedUIRoot : SRMonoBehaviourEx + { + [RequiredField] public Canvas Canvas; + + [RequiredField] public RectTransform Container; + + [RequiredField] public DockConsoleController DockConsoleController; + + [RequiredField] public GameObject Options; + + [RequiredField] public FlowLayoutGroup OptionsLayoutGroup; + + [RequiredField] public GameObject Profiler; + + [RequiredField] public HandleManager ProfilerHandleManager; + + [RequiredField] public VerticalLayoutGroup ProfilerVerticalLayoutGroup; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs.meta new file mode 100644 index 00000000..5165a39f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/PinnedUIRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d5f8248a0899ee48adc84c3fb98627a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs new file mode 100644 index 00000000..591b8fdb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs @@ -0,0 +1,52 @@ +namespace SRDebugger.UI.Other +{ + using System; + using Controls; + using SRF; + using UnityEngine; + using UnityEngine.Serialization; + + public class SRTab : SRMonoBehaviourEx + { + /// + /// Content that will be added to the content area of the header + /// + public RectTransform HeaderExtraContent; + + [Obsolete] [HideInInspector] public Sprite Icon; + + /// + /// Content that will be added to the content area of the tab button + /// + public RectTransform IconExtraContent; + + public string IconStyleKey = "Icon_Stompy"; + public int SortIndex; + + [HideInInspector] public SRTabButton TabButton; + + public string Title + { + get { return _title; } + } + + public string LongTitle + { + get { return !string.IsNullOrEmpty(_longTitle) ? _longTitle : _title; } + } + + public string Key + { + get { return _key; } + } +#pragma warning disable 649 + + [SerializeField] [FormerlySerializedAs("Title")] private string _title; + + [SerializeField] private string _longTitle; + + [SerializeField] private string _key; + +#pragma warning restore 649 + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs.meta new file mode 100644 index 00000000..911d5de6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTab.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94b1f24ed4379dd4fab14add56e520a5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs new file mode 100644 index 00000000..a57ec8dc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs @@ -0,0 +1,133 @@ +namespace SRDebugger.UI.Other +{ + using System; + using System.Collections.Generic; + using Controls; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class SRTabController : SRMonoBehaviourEx + { + private readonly SRList _tabs = new SRList(); + private SRTab _activeTab; + + [RequiredField] public RectTransform TabButtonContainer; + + [RequiredField] public SRTabButton TabButtonPrefab; + + [RequiredField] public RectTransform TabContentsContainer; + + [RequiredField] public RectTransform TabHeaderContentContainer; + + [RequiredField] public Text TabHeaderText; + + public SRTab ActiveTab + { + get { return _activeTab; } + set { MakeActive(value); } + } + + public IList Tabs + { + get { return _tabs.AsReadOnly(); } + } + + public event Action ActiveTabChanged; + + public void AddTab(SRTab tab, bool visibleInSidebar = true) + { + tab.CachedTransform.SetParent(TabContentsContainer, false); + tab.CachedGameObject.SetActive(false); + + if (visibleInSidebar) + { + // Create a tab button for this tab + var button = SRInstantiate.Instantiate(TabButtonPrefab); + button.CachedTransform.SetParent(TabButtonContainer, false); + button.TitleText.text = tab.Title.ToUpper(); + + if (tab.IconExtraContent != null) + { + var extraContent = SRInstantiate.Instantiate(tab.IconExtraContent); + extraContent.SetParent(button.ExtraContentContainer, false); + } + + button.IconStyleComponent.StyleKey = tab.IconStyleKey; + button.IsActive = false; + + button.Button.onClick.AddListener(() => MakeActive(tab)); + + tab.TabButton = button; + } + + _tabs.Add(tab); + SortTabs(); + + if (_tabs.Count == 1) + { + ActiveTab = tab; + } + } + + private void MakeActive(SRTab tab) + { + if (!_tabs.Contains(tab)) + { + throw new ArgumentException("tab is not a member of this tab controller", "tab"); + } + + if (_activeTab != null) + { + _activeTab.CachedGameObject.SetActive(false); + + if (_activeTab.TabButton != null) + { + _activeTab.TabButton.IsActive = false; + } + + if (_activeTab.HeaderExtraContent != null) + { + _activeTab.HeaderExtraContent.gameObject.SetActive(false); + } + } + + _activeTab = tab; + + if (_activeTab != null) + { + _activeTab.CachedGameObject.SetActive(true); + TabHeaderText.text = _activeTab.LongTitle; + + if (_activeTab.TabButton != null) + { + _activeTab.TabButton.IsActive = true; + } + + if (_activeTab.HeaderExtraContent != null) + { + _activeTab.HeaderExtraContent.SetParent(TabHeaderContentContainer, false); + _activeTab.HeaderExtraContent.gameObject.SetActive(true); + } + } + + if (ActiveTabChanged != null) + { + ActiveTabChanged(this, _activeTab); + } + } + + private void SortTabs() + { + _tabs.Sort((t1, t2) => t1.SortIndex.CompareTo(t2.SortIndex)); + + for (var i = 0; i < _tabs.Count; i++) + { + if (_tabs[i].TabButton != null) + { + _tabs[i].TabButton.CachedTransform.SetSiblingIndex(i); + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs.meta new file mode 100644 index 00000000..2b788ca5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SRTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 035be48566f8a3a4285521c6480d83ce +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs new file mode 100644 index 00000000..3f303ead --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs @@ -0,0 +1,36 @@ +namespace SRDebugger.UI.Other +{ + using UnityEngine; + using UnityEngine.UI; + + [RequireComponent(typeof (ScrollRect))] + [ExecuteInEditMode] + public class ScrollRectPatch : MonoBehaviour + { + public RectTransform Content; + public Mask ReplaceMask; + public RectTransform Viewport; +#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2) + + private void Awake() + { + var scrollRect = GetComponent(); + + scrollRect.content = Content; + scrollRect.viewport = Viewport; + + if (ReplaceMask != null) + { + var go = ReplaceMask.gameObject; + + Destroy(go.GetComponent()); + Destroy(go.GetComponent()); + Destroy(ReplaceMask); + + go.AddComponent(); + } + } + +#endif + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs.meta new file mode 100644 index 00000000..eadd4f3b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollRectPatch.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec8340b6e7293114da3d567338dc8e9f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs new file mode 100644 index 00000000..72e61c73 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs @@ -0,0 +1,23 @@ +namespace SRDebugger.UI.Other +{ + using UnityEngine; + using UnityEngine.UI; + + [RequireComponent(typeof (ScrollRect))] + public class ScrollSettingsBehaviour : MonoBehaviour + { + public const float ScrollSensitivity = 40f; + + private void Awake() + { + var scrollRect = GetComponent(); + scrollRect.scrollSensitivity = ScrollSensitivity; + + if (!Internal.SRDebuggerUtil.IsMobilePlatform) + { + scrollRect.movementType = ScrollRect.MovementType.Clamped; + scrollRect.inertia = false; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs.meta new file mode 100644 index 00000000..06633ba5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/ScrollSettingsBehaviour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f0ff44b792ef2042856036000e22450 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs new file mode 100644 index 00000000..f4e28307 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs @@ -0,0 +1,12 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + + public class SetLayerFromSettings : SRMonoBehaviour + { + private void Start() + { + gameObject.SetLayerRecursive(Settings.Instance.DebugLayer); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs.meta new file mode 100644 index 00000000..ea084bde --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/SetLayerFromSettings.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40436e7c301de034f916ee1e7ddabeeb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs new file mode 100644 index 00000000..c9c1851a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs @@ -0,0 +1,21 @@ +namespace SRDebugger.UI.Other +{ + using Controls; + using SRF; + using SRF.UI; + using UnityEngine; + using UnityEngine.Serialization; + + public class TriggerRoot : SRMonoBehaviourEx + { + [RequiredField] public Canvas Canvas; + + [RequiredField] public LongPressButton TapHoldButton; + + [RequiredField] public RectTransform TriggerTransform; + + [RequiredField] public ErrorNotifier ErrorNotifier; + + [RequiredField] [FormerlySerializedAs("TriggerButton")] public MultiTapButton TripleTapButton; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs.meta new file mode 100644 index 00000000..1cde93d0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/TriggerRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e511950015658d545aa9d10a45550b11 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs new file mode 100644 index 00000000..aceca67d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs @@ -0,0 +1,19 @@ +namespace SRDebugger.UI.Other +{ + using SRF; + using UnityEngine.UI; + + public class VersionTextBehaviour : SRMonoBehaviourEx + { + public string Format = "SRDebugger {0}"; + + [RequiredField] public Text Text; + + protected override void Start() + { + base.Start(); + + Text.text = string.Format(Format, SRDebug.Version); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs.meta new file mode 100644 index 00000000..65e0b600 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Other/VersionTextBehaviour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc11b0e922d02a54fa6197856eee3976 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs.meta new file mode 100644 index 00000000..5b440ebc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: e8e391e4f3003d641aaae5d4046e75f3 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs new file mode 100644 index 00000000..ae867d3c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs @@ -0,0 +1,42 @@ +namespace SRDebugger.UI.Tabs +{ + using Other; + using SRF; + using UnityEngine; + + public class BugReportTabController : SRMonoBehaviourEx, IEnableTab + { + [RequiredField] public BugReportSheetController BugReportSheetPrefab; + + [RequiredField] public RectTransform Container; + + public bool IsEnabled + { + get { return Settings.Instance.EnableBugReporter; } + } + + protected override void Start() + { + base.Start(); + + var sheet = SRInstantiate.Instantiate(BugReportSheetPrefab); + sheet.IsCancelButtonEnabled = false; + + // Callbacks when taking screenshot will hide the debug panel so it is not present in the image + sheet.TakingScreenshot = TakingScreenshot; + sheet.ScreenshotComplete = ScreenshotComplete; + + sheet.CachedTransform.SetParent(Container, false); + } + + private void TakingScreenshot() + { + SRDebug.Instance.HideDebugPanel(); + } + + private void ScreenshotComplete() + { + SRDebug.Instance.ShowDebugPanel(false); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs.meta new file mode 100644 index 00000000..42c6a3f0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/BugReportTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6739582ce86516749a398ff57c5ca282 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs new file mode 100644 index 00000000..a0b2c8bc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs @@ -0,0 +1,216 @@ +//#define SR_CONSOLE_DEBUG + +namespace SRDebugger.UI.Tabs +{ + using System; + using Controls; + using Internal; + using Services; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class ConsoleTabController : SRMonoBehaviourEx + { + private const int MaxLength = 2600; + + private Canvas _consoleCanvas; + private bool _isDirty; + + [RequiredField] + public ConsoleLogControl ConsoleLogControl; + + [RequiredField] + public Toggle PinToggle; + //public bool IsListening = true; + + [RequiredField] + public ScrollRect StackTraceScrollRect; + [RequiredField] + public Text StackTraceText; + [RequiredField] + public Toggle ToggleErrors; + [RequiredField] + public Text ToggleErrorsText; + [RequiredField] + public Toggle ToggleInfo; + [RequiredField] + public Text ToggleInfoText; + [RequiredField] + public Toggle ToggleWarnings; + [RequiredField] + public Text ToggleWarningsText; + + [RequiredField] + public Toggle FilterToggle; + [RequiredField] + public InputField FilterField; + [RequiredField] + public GameObject FilterBarContainer; + + protected override void Start() + { + base.Start(); + + _consoleCanvas = GetComponent(); + + ToggleErrors.onValueChanged.AddListener(isOn => _isDirty = true); + ToggleWarnings.onValueChanged.AddListener(isOn => _isDirty = true); + ToggleInfo.onValueChanged.AddListener(isOn => _isDirty = true); + + PinToggle.onValueChanged.AddListener(PinToggleValueChanged); + + FilterToggle.onValueChanged.AddListener(FilterToggleValueChanged); + FilterBarContainer.SetActive(FilterToggle.isOn); + +#if UNITY_5_3_OR_NEWER + FilterField.onValueChanged.AddListener(FilterValueChanged); +#else + FilterField.onValueChange.AddListener(FilterValueChanged); +#endif + + ConsoleLogControl.SelectedItemChanged = ConsoleLogSelectedItemChanged; + + Service.Console.Updated += ConsoleOnUpdated; + Service.Panel.VisibilityChanged += PanelOnVisibilityChanged; + + StackTraceText.supportRichText = Settings.Instance.RichTextInConsole; + PopulateStackTraceArea(null); + + Refresh(); + } + + + private void FilterToggleValueChanged(bool isOn) + { + if (isOn) + { + FilterBarContainer.SetActive(true); + ConsoleLogControl.Filter = FilterField.text; + } + else + { + ConsoleLogControl.Filter = null; + FilterBarContainer.SetActive(false); + } + } + private void FilterValueChanged(string filterText) + { + if (FilterToggle.isOn && !string.IsNullOrEmpty(filterText) && filterText.Trim().Length != 0) + { + ConsoleLogControl.Filter = filterText; + } + else + { + ConsoleLogControl.Filter = null; + } + } + + private void PanelOnVisibilityChanged(IDebugPanelService debugPanelService, bool b) + { + if (_consoleCanvas == null) + { + return; + } + + if (b) + { + _consoleCanvas.enabled = true; + } + else + { + _consoleCanvas.enabled = false; + } + } + + private void PinToggleValueChanged(bool isOn) + { + Service.DockConsole.IsVisible = isOn; + } + + protected override void OnDestroy() + { + if (Service.Console != null) + { + Service.Console.Updated -= ConsoleOnUpdated; + } + + base.OnDestroy(); + } + + protected override void OnEnable() + { + base.OnEnable(); + + _isDirty = true; + } + + private void ConsoleLogSelectedItemChanged(object item) + { + var log = item as ConsoleEntry; + PopulateStackTraceArea(log); + } + + protected override void Update() + { + base.Update(); + + if (_isDirty) + { + Refresh(); + } + } + + private void PopulateStackTraceArea(ConsoleEntry entry) + { + if (entry == null) + { + StackTraceText.text = ""; + } + else + { + var text = entry.Message + Environment.NewLine + + (!string.IsNullOrEmpty(entry.StackTrace) + ? entry.StackTrace + : SRDebugStrings.Current.Console_NoStackTrace); + + if (text.Length > MaxLength) + { + text = text.Substring(0, MaxLength); + text += "\n" + SRDebugStrings.Current.Console_MessageTruncated; + } + + StackTraceText.text = text; + } + + StackTraceScrollRect.normalizedPosition = new Vector2(0, 1); + } + + private void Refresh() + { + // Update total counts labels + ToggleInfoText.text = SRDebuggerUtil.GetNumberString(Service.Console.InfoCount, 999, "999+"); + ToggleWarningsText.text = SRDebuggerUtil.GetNumberString(Service.Console.WarningCount, 999, "999+"); + ToggleErrorsText.text = SRDebuggerUtil.GetNumberString(Service.Console.ErrorCount, 999, "999+"); + + ConsoleLogControl.ShowErrors = ToggleErrors.isOn; + ConsoleLogControl.ShowWarnings = ToggleWarnings.isOn; + ConsoleLogControl.ShowInfo = ToggleInfo.isOn; + + PinToggle.isOn = Service.DockConsole.IsVisible; + + _isDirty = false; + } + + private void ConsoleOnUpdated(IConsoleService console) + { + _isDirty = true; + } + + public void Clear() + { + Service.Console.Clear(); + _isDirty = true; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs.meta new file mode 100644 index 00000000..69230d62 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ConsoleTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b54f4d46edbb634985db4a2fa4ada2f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs new file mode 100644 index 00000000..1bd2e306 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs @@ -0,0 +1,112 @@ +namespace SRDebugger.UI.Tabs +{ + using System.Collections.Generic; + using System.Text; + using Controls; + using Services; + using SRF; + using SRF.Service; + using UnityEngine; + + public class InfoTabController : SRMonoBehaviourEx + { + public const char Tick = '\u2713'; + public const char Cross = '\u00D7'; + public const string NameColor = "#BCBCBC"; + private Dictionary _infoBlocks = new Dictionary(); + + [RequiredField] public InfoBlock InfoBlockPrefab; + + [RequiredField] public RectTransform LayoutContainer; + + protected override void OnEnable() + { + base.OnEnable(); + Refresh(); + } + + public void Refresh() + { + var s = SRServiceManager.GetService(); + + foreach (var category in s.GetCategories()) + { + if (!_infoBlocks.ContainsKey(category)) + { + var block = CreateBlock(category); + _infoBlocks.Add(category, block); + } + } + + foreach (var kv in _infoBlocks) + { + FillInfoBlock(kv.Value, s.GetInfo(kv.Key)); + } + } + + private void FillInfoBlock(InfoBlock block, IList info) + { + var sb = new StringBuilder(); + + var maxTitleLength = 0; + + foreach (var systemInfo in info) + { + if (systemInfo.Title.Length > maxTitleLength) + { + maxTitleLength = systemInfo.Title.Length; + } + } + + maxTitleLength += 2; + + var first = true; + foreach (var i in info) + { + if (first) + { + first = false; + } + else + { + sb.AppendLine(); + } + + sb.Append(""); + + sb.Append(i.Title); + sb.Append(": "); + + sb.Append(""); + + for (var j = i.Title.Length; j <= maxTitleLength; ++j) + { + sb.Append(' '); + } + + if (i.Value is bool) + { + sb.Append((bool) i.Value ? Tick : Cross); + } + else + { + sb.Append(i.Value); + } + } + + block.Content.text = sb.ToString(); + } + + private InfoBlock CreateBlock(string title) + { + var block = SRInstantiate.Instantiate(InfoBlockPrefab); + block.Title.text = title; + + block.CachedTransform.SetParent(LayoutContainer, false); + + return block; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs.meta new file mode 100644 index 00000000..b4a99939 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/InfoTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b6cf74d4a6343648bbe857301cf1bc8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs new file mode 100644 index 00000000..089e0321 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs @@ -0,0 +1,350 @@ +namespace SRDebugger.UI.Tabs +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using Controls; + using Controls.Data; + using Internal; + using Other; + using Services; + using SRF; + using UnityEngine; + using UnityEngine.UI; + + public class OptionsTabController : SRMonoBehaviourEx + { + private class CategoryInstance + { + public CategoryGroup CategoryGroup { get; private set; } + public readonly List Options = new List(); + + public CategoryInstance(CategoryGroup group) + { + CategoryGroup = group; + } + } + + private readonly List _controls = new List(); + private readonly List _categories = new List(); + + private readonly Dictionary _options = + new Dictionary(); + + private bool _queueRefresh; + private bool _selectionModeEnabled; + private Canvas _optionCanvas; + + [RequiredField] public ActionControl ActionControlPrefab; + + [RequiredField] public CategoryGroup CategoryGroupPrefab; + + [RequiredField] public RectTransform ContentContainer; + + [RequiredField] public GameObject NoOptionsNotice; + + [RequiredField] public Toggle PinButton; + + [RequiredField] public GameObject PinPromptSpacer; + + [RequiredField] public GameObject PinPromptText; + + + protected override void Start() + { + base.Start(); + + PinButton.onValueChanged.AddListener(SetSelectionModeEnabled); + + PinPromptText.SetActive(false); + //PinPromptSpacer.SetActive(false); + + Populate(); + + _optionCanvas = GetComponent(); + + Service.Options.OptionsUpdated += OnOptionsUpdated; + Service.Options.OptionsValueUpdated += OnOptionsValueChanged; + Service.PinnedUI.OptionPinStateChanged += OnOptionPinnedStateChanged; + } + + private void OnOptionPinnedStateChanged(OptionDefinition optionDefinition, bool isPinned) + { + if (_options.ContainsKey(optionDefinition)) + { + _options[optionDefinition].IsSelected = isPinned; + } + } + + private void OnOptionsUpdated(object sender, EventArgs eventArgs) + { + Clear(); + Populate(); + } + + private void OnOptionsValueChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) + { + _queueRefresh = true; + } + + protected override void OnEnable() + { + base.OnEnable(); + + Service.Panel.VisibilityChanged += PanelOnVisibilityChanged; + } + + protected override void OnDisable() + { + // Always end pinning mode when tabbing away + SetSelectionModeEnabled(false); + + if (Service.Panel != null) + { + Service.Panel.VisibilityChanged -= PanelOnVisibilityChanged; + } + + base.OnDisable(); + } + + protected override void Update() + { + base.Update(); + + if (_queueRefresh) + { + _queueRefresh = false; + Refresh(); + } + } + + private void PanelOnVisibilityChanged(IDebugPanelService debugPanelService, bool b) + { + // Always end pinning mode when panel is closed + if (!b) + { + SetSelectionModeEnabled(false); + + // Refresh bindings for all pinned controls + Refresh(); + } + else if (b && CachedGameObject.activeInHierarchy) + { + // If the panel is visible, and this tab is active (selected), refresh all the data bindings + Refresh(); + } + + if (_optionCanvas != null) + { + _optionCanvas.enabled = b; + } + } + + public void SetSelectionModeEnabled(bool isEnabled) + { + if (_selectionModeEnabled == isEnabled) + { + return; + } + + _selectionModeEnabled = isEnabled; + + PinButton.isOn = isEnabled; + PinPromptText.SetActive(isEnabled); + //PinPromptSpacer.SetActive(isEnabled); + + foreach (var kv in _options) + { + kv.Value.SelectionModeEnabled = isEnabled; + + // Set IsSelected if entering selection mode. + if (isEnabled) + { + kv.Value.IsSelected = Service.PinnedUI.HasPinned(kv.Key); + } + } + + foreach (var cat in _categories) + { + cat.CategoryGroup.SelectionModeEnabled = isEnabled; + } + + RefreshCategorySelection(); + + // Return if entering selection mode + if (isEnabled) + { + return; + } + } + + private void Refresh() + { + for (var i = 0; i < _options.Count; i++) + { + _controls[i].Refresh(); + _controls[i].IsSelected = Service.PinnedUI.HasPinned(_controls[i].Option); + } + } + + private void CommitPinnedOptions() + { + foreach (var kv in _options) + { + var control = kv.Value; + + if (control.IsSelected && !Service.PinnedUI.HasPinned(kv.Key)) + { + Service.PinnedUI.Pin(kv.Key); + } + else if (!control.IsSelected && Service.PinnedUI.HasPinned(kv.Key)) + { + Service.PinnedUI.Unpin(kv.Key); + } + } + } + + private bool _isTogglingCategory; + + private void RefreshCategorySelection() + { + _isTogglingCategory = true; + + foreach (var cat in _categories) + { + var allSelected = true; + + for (var i = 0; i < cat.Options.Count; i++) + { + if (!cat.Options[i].IsSelected) + { + allSelected = false; + break; + } + } + + cat.CategoryGroup.IsSelected = allSelected; + } + + _isTogglingCategory = false; + } + + private void OnOptionSelectionToggle(bool selected) + { + if (!_isTogglingCategory) + { + RefreshCategorySelection(); + CommitPinnedOptions(); + } + } + + /// + /// When a category mode selection is changed. + /// + /// + /// + private void OnCategorySelectionToggle(CategoryInstance category, bool selected) + { + _isTogglingCategory = true; + + for (var i = 0; i < category.Options.Count; i++) + { + category.Options[i].IsSelected = selected; + } + + _isTogglingCategory = false; + + CommitPinnedOptions(); + } + + #region Initialisation + + protected void Populate() + { + var sortedOptions = new Dictionary>(); + + foreach (var option in Service.Options.Options) + { + // Find a properly list for that category, or create a new one + List memberList; + + if (!sortedOptions.TryGetValue(option.Category, out memberList)) + { + memberList = new List(); + sortedOptions.Add(option.Category, memberList); + } + + memberList.Add(option); + } + + var hasCreated = false; + + foreach (var kv in sortedOptions) + { + if (kv.Value.Count == 0) + { + continue; + } + + hasCreated = true; + CreateCategory(kv.Key, kv.Value); + } + + if (hasCreated) + { + NoOptionsNotice.SetActive(false); + } + } + + protected void CreateCategory(string title, List options) + { + options.Sort((d1, d2) => d1.SortPriority.CompareTo(d2.SortPriority)); + + var groupInstance = SRInstantiate.Instantiate(CategoryGroupPrefab); + var categoryInstance = new CategoryInstance(groupInstance); + + _categories.Add(categoryInstance); + + groupInstance.CachedTransform.SetParent(ContentContainer, false); + groupInstance.Header.text = title; + groupInstance.SelectionModeEnabled = false; + + categoryInstance.CategoryGroup.SelectionToggle.onValueChanged.AddListener( + b => OnCategorySelectionToggle(categoryInstance, b)); + + foreach (var option in options) + { + var control = OptionControlFactory.CreateControl(option, title); + + if (control == null) + { + Debug.LogError("[SRDebugger.OptionsTab] Failed to create option control for {0}".Fmt(option.Name)); + continue; + } + + categoryInstance.Options.Add(control); + control.CachedTransform.SetParent(groupInstance.Container, false); + control.IsSelected = Service.PinnedUI.HasPinned(option); + control.SelectionModeEnabled = false; + control.SelectionModeToggle.onValueChanged.AddListener(OnOptionSelectionToggle); + + _options.Add(option, control); + _controls.Add(control); + } + } + + void Clear() + { + foreach (var categoryInstance in _categories) + { + Destroy(categoryInstance.CategoryGroup.gameObject); + } + + _categories.Clear(); + _controls.Clear(); + _options.Clear(); + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs.meta new file mode 100644 index 00000000..78fcb1f1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/OptionsTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 977db337f5942e64aa7b62fc1ca01e28 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs new file mode 100644 index 00000000..4443f3e8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs @@ -0,0 +1,49 @@ +//#define SR_CONSOLE_DEBUG + +namespace SRDebugger.UI.Tabs +{ + using SRF; + using UnityEngine.UI; + + public class ProfilerTabController : SRMonoBehaviourEx + { + private bool _isDirty; + + [RequiredField] public Toggle PinToggle; + + protected override void Start() + { + base.Start(); + + PinToggle.onValueChanged.AddListener(PinToggleValueChanged); + Refresh(); + } + + private void PinToggleValueChanged(bool isOn) + { + SRDebug.Instance.IsProfilerDocked = isOn; + } + + protected override void OnEnable() + { + base.OnEnable(); + _isDirty = true; + } + + protected override void Update() + { + base.Update(); + + if (_isDirty) + { + Refresh(); + } + } + + private void Refresh() + { + PinToggle.isOn = SRDebug.Instance.IsProfilerDocked; + _isDirty = false; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs.meta new file mode 100644 index 00000000..3deccae8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/UI/Tabs/ProfilerTabController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f26b5a0018be8444fb0a18037b471f65 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs new file mode 100644 index 00000000..130f9eb9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs @@ -0,0 +1,5 @@ +namespace SRDebugger { + public static class VersionInfo { + public const string Version = "1.9.1"; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs.meta new file mode 100644 index 00000000..8f841aa7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/Scripts/Version.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8f621404e9f88e144a8f9d2b15378f78 +timeCreated: 1441800960 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef b/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef new file mode 100644 index 00000000..d5f9a537 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef @@ -0,0 +1,8 @@ +{ + "name": "StompyRobot.SRDebugger", + "references": [ + "StompyRobot.SRF" + ], + "includePlatforms": [], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef.meta new file mode 100644 index 00000000..aaf46868 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/StompyRobot.SRDebugger.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bcc75752368a72b4aba4043ea13b2a1a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI.meta new file mode 100644 index 00000000..b9c3c58a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 330115dc0d4b42741a9215c39211f366 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts.meta new file mode 100644 index 00000000..dde7fc8f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: dd8e6d338a61bf544bebf375287bcbeb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt new file mode 100644 index 00000000..c842b1a3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt.meta new file mode 100644 index 00000000..73336006 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/FONT LICENSE.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: ff89cdf7c4536ff47b40d4549239bc2c +TextScriptImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf new file mode 100644 index 00000000..7fc1e44f Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf.meta new file mode 100644 index 00000000..997c3963 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Black.otf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: db8aec58b7ce99443a1c4f5cd4d9e408 +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + customCharacters: + fontRenderingMode: 0 + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf new file mode 100644 index 00000000..4ea0cc90 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf.meta new file mode 100644 index 00000000..f1823b36 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Bold.otf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 4e46f78eb6d69074d9b4fe427bb2f1a2 +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + customCharacters: + fontRenderingMode: 0 + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf new file mode 100644 index 00000000..3c91c311 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf.meta new file mode 100644 index 00000000..21c7fdef --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Light.otf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 677c9fb41b6c7e14199885b0b31740ee +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + customCharacters: + fontRenderingMode: 0 + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf new file mode 100644 index 00000000..c16ae86d Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf.meta new file mode 100644 index 00000000..e402fc9a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/Orbitron Medium.otf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: dff6bf51d54250840bdef2ca8260c146 +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + customCharacters: + fontRenderingMode: 0 + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf new file mode 100644 index 00000000..8f031da9 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf.meta new file mode 100644 index 00000000..60706efb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Fonts/SourceCodePro-Regular.otf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 718657b6be420a6498b0f091c199a215 +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + customCharacters: + fontRenderingMode: 0 + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs.meta new file mode 100644 index 00000000..c70e16ec --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 6c0b9bd3b1ebd8149b26cf724e7814ba +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab new file mode 100644 index 00000000..29089361 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab @@ -0,0 +1,561 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &127230 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22427230} + - component: {fileID: 11427230} + - component: {fileID: 11410894} + m_Layer: 5 + m_Name: AboutTab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148258 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448258} + - component: {fileID: 11448252} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448260} + - component: {fileID: 11448254} + m_Layer: 5 + m_Name: SR_Contents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148262 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448262} + - component: {fileID: 11448258} + - component: {fileID: 11448256} + m_Layer: 5 + m_Name: SR_Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148264 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448264} + - component: {fileID: 11448260} + m_Layer: 5 + m_Name: SR_Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148266 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448266} + m_Layer: 5 + m_Name: SR_GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148268 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448268} + - component: {fileID: 22248268} + - component: {fileID: 11448262} + - component: {fileID: 11448264} + - component: {fileID: 11448270} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148270 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22448270} + - component: {fileID: 22248270} + - component: {fileID: 11448268} + - component: {fileID: 11448266} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11410894 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11427230 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b1f24ed4379dd4fab14add56e520a5, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + HeaderExtraContent: {fileID: 0} + Icon: {fileID: 0} + IconExtraContent: {fileID: 0} + IconStyleKey: + SortIndex: 100 + TabButton: {fileID: 0} + _title: About + _longTitle: + _key: +--- !u!114 &11448252 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 10000 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11448254 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &11448256 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 620 + m_PreferredHeight: -1 + m_FlexibleWidth: 0 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11448258 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &11448260 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148264} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 10000 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &11448262 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + 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: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 41 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 20 + m_MaxSize: 41 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SRDebugger 1.1.0 +--- !u!114 &11448264 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11448266 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Text_Light + IgnoreImage: 0 +--- !u!114 &11448268 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + 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: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 18 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Developed by Stompy Robot LTD + + + (c) 2015-2020 + + + www.stompyrobot.uk + + + + + Icons provided by Icons8 + + + www.icons8.com' +--- !u!114 &11448270 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc11b0e922d02a54fa6197856eee3976, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Format: SRDebugger {0} + Text: {fileID: 11448262} +--- !u!222 &22248268 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148268} +--- !u!222 &22248270 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148270} +--- !u!224 &22427230 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127230} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22448260} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448258 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448260} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448260 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148260} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22448258} + - {fileID: 22448262} + - {fileID: 22448264} + m_Father: {fileID: 22427230} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 502} + m_Pivot: {x: 0.5, y: 1} +--- !u!224 &22448262 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148262} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22448268} + - {fileID: 22448270} + - {fileID: 22448266} + m_Father: {fileID: 22448260} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448264 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148264} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448260} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448266 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148266} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448262} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448268 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148268} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448262} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22448270 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148270} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22448262} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 127230} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab.meta new file mode 100644 index 00000000..c1fc5de2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/AboutTab.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: b32f9ca33474ad44999aa3570c7f42ee +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console.meta new file mode 100644 index 00000000..2642ba13 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 45f652f6286230a4c8f77ed9d37c4f35 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab new file mode 100644 index 00000000..f4711440 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab @@ -0,0 +1,734 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 222: {fileID: 22200000} + - 114: {fileID: 11400000} + - 114: {fileID: 11400010} + m_Layer: 5 + m_Name: SR_StackTrace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200002} + - 114: {fileID: 11400002} + - 114: {fileID: 11400014} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400004} + - 114: {fileID: 11400004} + - 114: {fileID: 11400006} + - 114: {fileID: 11440990} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200004} + - 114: {fileID: 11479146} + - 114: {fileID: 11400012} + - 114: {fileID: 11454940} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &141924 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22441924} + - 225: {fileID: 22508906} + m_Layer: 5 + m_Name: SR_Count + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178810 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22478810} + - 222: {fileID: 22278812} + - 114: {fileID: 11478810} + - 114: {fileID: 11478812} + - 114: {fileID: 11441920} + m_Layer: 5 + m_Name: SR_Blob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178812 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22478812} + - 222: {fileID: 22278810} + - 114: {fileID: 11478806} + - 114: {fileID: 11478808} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179136 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479136} + - 222: {fileID: 22279136} + - 114: {fileID: 11479140} + - 114: {fileID: 11479138} + - 114: {fileID: 11479136} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179138 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479138} + - 114: {fileID: 11479144} + - 114: {fileID: 11479142} + m_Layer: 5 + m_Name: SR_Layout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .705882311, g: .705882311, b: .705882311, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 9 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Console Log Message +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .172549024, g: .172549024, b: .172549024, a: .784313738} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11400006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c214ec24a4baf1a4f828768a9795f241, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Count: {fileID: 11479146} + CountContainer: {fileID: 22508906} + ImageStyle: {fileID: 11478812} + Message: {fileID: 11478806} + StackTrace: {fileID: 11400000} +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Entry_Stack + IgnoreImage: 0 +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Count_Text + IgnoreImage: 0 +--- !u!114 &11400014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Entry_BG + IgnoreImage: 0 +--- !u!114 &11440990 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11441920 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11454940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 16 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11478806 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Console Log Message +--- !u!114 &11478808 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Entry_Message + IgnoreImage: 0 +--- !u!114 &11478810 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .34117648, g: .701960802, b: .956862748, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11478812 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Info_Blob + IgnoreImage: 0 +--- !u!114 &11479136 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11479138 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Count + IgnoreImage: 0 +--- !u!114 &11479140 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 21300000, guid: a0c7ffb7676bd694192d1a9b3f8d20bd, type: 3} + m_Type: 1 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11479142 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &11479144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 5 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11479146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 983b04ffc0cd0a04fb74c9b74eb789bd, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 9 +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} +--- !u!222 &22200002 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!222 &22278810 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178812} +--- !u!222 &22278812 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178810} +--- !u!222 &22279136 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179136} +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400004} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 8.5, y: 3} + m_SizeDelta: {x: -27, y: 12} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400004} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400004 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22400002} + - {fileID: 22478810} + - {fileID: 22478812} + - {fileID: 22400000} + - {fileID: 22441924} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 364.543488, y: -508.153046} + m_SizeDelta: {x: 719.086975, y: 30} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22479138} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22441924 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22479138} + m_Father: {fileID: 22400004} + m_RootOrder: 4 + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -14, y: 0} + m_SizeDelta: {x: 45, y: 0} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22478810 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400004} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: .5} + m_AnchorMax: {x: 0, y: .5} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22478812 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178812} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400004} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 6.5, y: 5} + m_SizeDelta: {x: -23, y: -14} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22479136 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22479138} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 8, y: 4} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22479138 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179138} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22479136} + - {fileID: 22400006} + m_Father: {fileID: 22441924} + m_RootOrder: 0 + m_AnchorMin: {x: 1, y: .5} + m_AnchorMax: {x: 1, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 1, y: .5} +--- !u!225 &22508906 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141924} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100004} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab.meta new file mode 100644 index 00000000..9e2d0c50 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Console/Item.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 408ed745743f47f46ac11b71f96cf1a4 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab new file mode 100644 index 00000000..17f40aea --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab @@ -0,0 +1,256 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 114: {fileID: 11400008} + - 114: {fileID: 11419538} + - 114: {fileID: 11434292} + m_Layer: 5 + m_Name: InfoBlock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200000} + - 114: {fileID: 11400000} + - 114: {fileID: 11400012} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200004} + - 114: {fileID: 11400004} + - 114: {fileID: 11400010} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .845588207, g: .845588207, b: .845588207, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Text Header +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: 718657b6be420a6498b0f091c199a215, type: 3} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "Operating System: Windows 8.1 \nSys + Memory Size: 15.951 GB\r\nDevice Name: PWNHAMMER\r\nDevice + Model: Intel(R) )\r\nDevice Type: Desktop\r" +--- !u!114 &11400008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Text + IgnoreImage: 0 +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Content_Block_Header + IgnoreImage: 0 +--- !u!114 &11419538 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3214a2a17debe0c489148429ec9a37b2, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Content: {fileID: 11400004} + Title: {fileID: 11400000} +--- !u!114 &11434292 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22400002} + - {fileID: 22400006} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab.meta new file mode 100644 index 00000000..689c80c8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/InfoBlock.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 54dcbf94ddefe604898e059992c2f974 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options.meta new file mode 100644 index 00000000..0d985ad0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: eabed75fe7405114c8e2d4c3270eeb2f +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab new file mode 100644 index 00000000..0afa63ea --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab @@ -0,0 +1,628 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104774 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22453876} + - 222: {fileID: 22257160} + - 114: {fileID: 11477844} + - 114: {fileID: 11428292} + - 114: {fileID: 11491264} + - 114: {fileID: 11484494} + - 114: {fileID: 11428488} + m_Layer: 5 + m_Name: SR_SelectionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125720 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22485638} + - 222: {fileID: 22263646} + - 114: {fileID: 11489672} + - 114: {fileID: 11448550} + - 114: {fileID: 11424022} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164394 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22464394} + - 114: {fileID: 11464392} + - 114: {fileID: 11456202} + - 114: {fileID: 11416692} + m_Layer: 5 + m_Name: Category + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164396 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22464396} + - 222: {fileID: 22264396} + - 114: {fileID: 11464394} + - 114: {fileID: 11464396} + - 114: {fileID: 11420472} + m_Layer: 5 + m_Name: SR_Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402984} + - 222: {fileID: 22214518} + - 114: {fileID: 11443600} + - 114: {fileID: 11450382} + - 114: {fileID: 11482066} + m_Layer: 5 + m_Name: SR_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182766 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22459184} + - 114: {fileID: 11456566} + - 114: {fileID: 11497630} + - 114: {fileID: 11423070} + m_Layer: 5 + m_Name: SR_HeaderButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11416692 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40436e7c301de034f916ee1e7ddabeeb, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: +--- !u!114 &11420472 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Category_Header + IgnoreImage: 0 +--- !u!114 &11423070 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &11424022 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_Item_Background + IgnoreImage: 0 +--- !u!114 &11428292 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11428488 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7134149b092993149867a9ce13a5ec50, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11443600 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .396078438, g: .396078438, b: .396078438, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11448550 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11450382 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggleBackground + IgnoreImage: 0 +--- !u!114 &11456202 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 176c1a8b99c762143a65fa14f47b5d93, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Container: {fileID: 22464394} + Header: {fileID: 11464394} + Background: {fileID: 125720} + SelectionToggle: {fileID: 11477844} + EnabledDuringSelectionMode: + - {fileID: 179716} + - {fileID: 125720} + - {fileID: 104774} +--- !u!114 &11456566 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11464392 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3a5149e46522d84cb8079537220a929, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 39 + m_Bottom: 10 + m_ChildAlignment: 0 + ChildForceExpandHeight: 1 + ChildForceExpandWidth: 0 + Spacing: 5 +--- !u!114 &11464394 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .996078432, b: .996078432, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: .899999976 + m_Text: Some Header +--- !u!114 &11464396 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11477844 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + m_HighlightedColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + m_PressedColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + m_DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11491264} + toggleTransition: 0 + graphic: {fileID: 11443600} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11482066 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11484494 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Options_SelectionToggle + IgnoreImage: 0 +--- !u!114 &11489672 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11491264 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11497630 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!222 &22214518 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179716} +--- !u!222 &22257160 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} +--- !u!222 &22263646 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125720} +--- !u!222 &22264396 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164396} +--- !u!224 &22402984 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179716} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459184} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22453876 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459184} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: .5} + m_SizeDelta: {x: 0, y: -1} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22459184 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182766} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22402984} + - {fileID: 22485638} + - {fileID: 22464396} + - {fileID: 22453876} + m_Father: {fileID: 22464394} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: -17} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0, y: .5} +--- !u!224 &22464394 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164394} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22459184} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22464396 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164396} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459184} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22485638 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459184} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 164394} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab.meta new file mode 100644 index 00000000..e61e6a6b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/Options/Category.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d866070c81c4ea749b60d2854567cea1 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar.meta new file mode 100644 index 00000000..7f178c65 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 9704ac39d22659a4993f2fd2a7249a9f +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab new file mode 100644 index 00000000..bc10a4f6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab @@ -0,0 +1,843 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &173734 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473734} + - 222: {fileID: 22273734} + - 114: {fileID: 11473734} + - 114: {fileID: 11425312} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173736 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473736} + - 114: {fileID: 11473736} + - 114: {fileID: 11435312} + m_Layer: 5 + m_Name: ConsoleTabButtonContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173738 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473738} + - 114: {fileID: 11473740} + - 114: {fileID: 11473738} + m_Layer: 5 + m_Name: SR_Errors + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173740 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473740} + - 114: {fileID: 11473744} + - 114: {fileID: 11473742} + m_Layer: 5 + m_Name: SR_Warnings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473742} + - 222: {fileID: 22273736} + - 114: {fileID: 11473746} + - 114: {fileID: 11425310} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473744} + - 114: {fileID: 11473750} + - 114: {fileID: 11473748} + m_Layer: 5 + m_Name: SR_Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173746 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473746} + - 222: {fileID: 22273738} + - 114: {fileID: 11473752} + - 114: {fileID: 11425308} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173748 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473748} + - 222: {fileID: 22273740} + - 114: {fileID: 11473758} + - 114: {fileID: 11473756} + - 114: {fileID: 11473754} + m_Layer: 5 + m_Name: SR_Knob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173750 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473750} + - 222: {fileID: 22273742} + - 114: {fileID: 11473764} + - 114: {fileID: 11473762} + - 114: {fileID: 11473760} + m_Layer: 5 + m_Name: SR_Knob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173752 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22473752} + - 222: {fileID: 22273744} + - 114: {fileID: 11473770} + - 114: {fileID: 11473768} + - 114: {fileID: 11473766} + m_Layer: 5 + m_Name: SR_Knob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11425308 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 34 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11425310 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 34 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11425312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 34 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11435312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9e7555976318b846887116c61e2ecf6, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ErrorCountText: {fileID: 11473734} + InfoCountText: {fileID: 11473752} + WarningCountText: {fileID: 11473746} +--- !u!114 &11473734 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 9 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: .769999981 + m_Text: 65765 +--- !u!114 &11473736 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 9 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 +--- !u!114 &11473738 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 6.80000019 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11473740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 6.80000019 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11473744 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473746 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 9 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: .769999981 + m_Text: 65765 +--- !u!114 &11473748 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 6.80000019 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11473750 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 30 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473752 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 9 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: .769999981 + m_Text: 65765 +--- !u!114 &11473754 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Info_Blob + IgnoreImage: 0 +--- !u!114 &11473756 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473758 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .34117648, g: .701960802, b: .956862748, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11473760 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Warning_Blob + IgnoreImage: 0 +--- !u!114 &11473762 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473764 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .956862748, g: .760784328, b: .34117648, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11473766 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: Console_Error_Blob + IgnoreImage: 0 +--- !u!114 &11473768 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 8 + m_PreferredHeight: 8 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11473770 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .956862748, g: .356862754, b: .34117648, a: 1} + m_Sprite: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22273734 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173734} +--- !u!222 &22273736 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173742} +--- !u!222 &22273738 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173746} +--- !u!222 &22273740 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173748} +--- !u!222 &22273742 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173750} +--- !u!222 &22273744 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173752} +--- !u!224 &22473734 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473738} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473736 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173736} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22473738} + - {fileID: 22473740} + - {fileID: 22473744} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473738 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173738} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22473752} + - {fileID: 22473734} + m_Father: {fileID: 22473736} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473740 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173740} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22473750} + - {fileID: 22473742} + m_Father: {fileID: 22473736} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473742 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473740} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473744 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22473748} + - {fileID: 22473746} + m_Father: {fileID: 22473736} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473746 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173746} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473744} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473748 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473744} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473750 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473740} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22473752 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173752} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22473738} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 173736} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab.meta new file mode 100644 index 00000000..b1577152 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/ConsoleTabButtonContent.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 38622dccbe5c7c84782cd2c695aa3521 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab new file mode 100644 index 00000000..3fc0c1aa --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab @@ -0,0 +1,667 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100020 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400020} + - 114: {fileID: 11400042} + m_Layer: 5 + m_Name: SR_Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100022 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400022} + - 114: {fileID: 11400044} + - 114: {fileID: 11400040} + m_Layer: 5 + m_Name: SR_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100024 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400024} + - 222: {fileID: 22200012} + - 114: {fileID: 11400052} + - 114: {fileID: 11400050} + - 114: {fileID: 11400048} + m_Layer: 5 + m_Name: SR_BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100026 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400026} + - 114: {fileID: 11400056} + - 114: {fileID: 11400054} + - 114: {fileID: 11400060} + - 114: {fileID: 11400058} + - 114: {fileID: 11400062} + - 114: {fileID: 11400038} + - 114: {fileID: 11423178} + m_Layer: 5 + m_Name: Tab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100028 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400028} + - 222: {fileID: 22200014} + - 114: {fileID: 11400064} + - 114: {fileID: 11433166} + m_Layer: 5 + m_Name: SR_Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100030 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400030} + - 222: {fileID: 22200016} + - 114: {fileID: 11400068} + - 114: {fileID: 11400066} + m_Layer: 5 + m_Name: SR_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100032 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400032} + - 222: {fileID: 22200018} + - 114: {fileID: 11400072} + - 114: {fileID: 11400070} + - 114: {fileID: 11400046} + m_Layer: 5 + m_Name: SR_BorderBot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400038 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11400040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: -1 + m_FlexibleWidth: 0 + m_FlexibleHeight: 0 +--- !u!114 &11400042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: 1 +--- !u!114 &11400044 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 +--- !u!114 &11400046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11400048 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11400050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Background + IgnoreImage: 0 +--- !u!114 &11400052 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .152941182, g: .152941182, b: .152941182, a: .58431375} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400054 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1bf029da478aff42a6d6e0ed8e21203, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + StyleSheet: {fileID: 11400000, guid: 4c110ad198b0a65458270ceac7690ce5, type: 2} +--- !u!114 &11400056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 80 + m_FlexibleWidth: 1 + m_FlexibleHeight: 0 +--- !u!114 &11400058 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Text + IgnoreImage: 0 +--- !u!114 &11400060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: .0500000007 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400064} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11400062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2415a15c0c9eea041863fc6c1a434ede, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + Entries: + - Components: [] + GameObjects: + - {fileID: 100020} + Mode: 0 + ThresholdHeight: 0 + ThresholdWidth: 160 + - Components: [] + GameObjects: + - {fileID: 100030} + Mode: 0 + ThresholdHeight: 0 + ThresholdWidth: 61 +--- !u!114 &11400064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 4ea5932536416924bab8eb9b5bab3874, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400066 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ed84aa42fb48c9458d3942c1d059055, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + From: {fileID: 11400064} +--- !u!114 &11400068 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: dff6bf51d54250840bdef2ca8260c146, type: 3} + m_FontSize: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SYSTEM +--- !u!114 &11400070 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: SideBar_Tab_Border + IgnoreImage: 0 +--- !u!114 &11400072 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .258823544, g: .258823544, b: .258823544, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11423178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2e81b40d04e8e440bb9659057db98c8, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + ActiveToggle: {fileID: 11400054} + Button: {fileID: 11400060} + ExtraContentContainer: {fileID: 22400020} + IconStyleComponent: {fileID: 11433166} + TitleText: {fileID: 11400068} +--- !u!114 &11433166 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73ae1b6eac706814a9cd427288a3c5c9, type: 3} + m_Name: SR_ + m_EditorClassIdentifier: + _styleKey: + IgnoreImage: 0 +--- !u!222 &22200012 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} +--- !u!222 &22200014 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100028} +--- !u!222 &22200016 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} +--- !u!222 &22200018 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} +--- !u!224 &22400020 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400026} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400022 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22400028} + - {fileID: 22400030} + m_Father: {fileID: 22400026} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400024 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400026} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22400026 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22400024} + - {fileID: 22400032} + - {fileID: 22400020} + - {fileID: 22400022} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400028 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400022} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 0} +--- !u!224 &22400030 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400022} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: 1} +--- !u!224 &22400032 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400026} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: -6.10351562e-05} + m_SizeDelta: {x: 0, y: 1} + m_Pivot: {x: .5, y: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100026} + m_IsPrefabParent: 1 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab.meta new file mode 100644 index 00000000..65d9831d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Prefabs/SideBar/Tab.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 20aa0923117a8a449bbe649769f6bd16 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites.meta new file mode 100644 index 00000000..ae3a8bc3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 2d746042121a9c44b9cbdce2d52723bb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default.meta new file mode 100644 index 00000000..9a37303a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: afe097535c95d384d8ee3afb4b7c0e50 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD new file mode 100644 index 00000000..7b3da722 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD.meta new file mode 100644 index 00000000..6a22de94 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Alert.PSD.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: fa4a3dea13d28344a8bcc77a1a7e2fcf +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 0e4cfe58b3da34fa8994bbf9fbe57451 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG.meta new file mode 100644 index 00000000..74a4cd09 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 864a20964327d084088d08d681cd8620 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png new file mode 100644 index 00000000..e765f606 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png.meta new file mode 100644 index 00000000..f02b6ec6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/BG/footer_lodyas.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 72f587d74eb73bb4789dd3f6f10b3600 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 5 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e69ee386876764e859b175e4b3998f11 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd new file mode 100644 index 00000000..d0ecc331 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd.meta new file mode 100644 index 00000000..667ad83c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Circle.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 54b8502585d246249bd1f7540a8bf2b9 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 64 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: a4cfc63803e8f4535b7b066878142338 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons.meta new file mode 100644 index 00000000..eaece8b1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 329fc3abae5fff246a324eb7d6020b59 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png new file mode 100644 index 00000000..7ecdfe8c Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png.meta new file mode 100644 index 00000000..5591b33b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/Filter-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ccea1a2a1be59649956a168449bdb9f +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: eefb2d2e8e0a041f2bab7cff2560068d + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png new file mode 100644 index 00000000..3fbeec50 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png.meta new file mode 100644 index 00000000..75b09c02 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/close-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 8ccc360b0ed61e54ba5d8fa329ca8988 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: eb0931b948ad84821b9b183e679e4831 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png new file mode 100644 index 00000000..79265eb2 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png.meta new file mode 100644 index 00000000..db342269 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/collapse-32.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 159fc50f1c2574d4ea143a010597198a +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: a7cba168a996a4c23b7dfea16580428b + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png new file mode 100644 index 00000000..ca7fb777 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png.meta new file mode 100644 index 00000000..fd71fb2b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/console-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: b07075cb163d9b8489a1ee90ce068409 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 50cc727451d86402b94be484bd81296c + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png new file mode 100644 index 00000000..c8937e5c Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png.meta new file mode 100644 index 00000000..cf4d543e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/down-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 3422278a31f39bc4cab9304b78a09d41 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 711e81d89d0a94deb8a851f5458dbe35 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png new file mode 100644 index 00000000..d18fdcc2 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png.meta new file mode 100644 index 00000000..f307083f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/feedback-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 511379265414f8841b9a7b342d8e3981 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 84f79a831f27444c9a3f70495e02ed7e + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png new file mode 100644 index 00000000..a34ca93d Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png.meta new file mode 100644 index 00000000..8ff79c1e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/heart_monitor-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: b5b46026463fb334bb8a3b95b303b224 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 26da3ded4b75f448094a3c6c282c1b7f + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png new file mode 100644 index 00000000..cecd09cb Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png.meta new file mode 100644 index 00000000..87853ae4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/info-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 4ea5932536416924bab8eb9b5bab3874 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 622e156e7b736405bb4b5c70770d85ca + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png new file mode 100644 index 00000000..acc69e82 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png.meta new file mode 100644 index 00000000..c4653d36 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-25.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: a123c1c6f56057e4e9a11e2dcaf2df94 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: bf8f8a8ab9caf4f1481641e50b830a7f + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png new file mode 100644 index 00000000..d286a419 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png.meta new file mode 100644 index 00000000..a36fd5e1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-32.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2fd39c3920ff82048ad7b8aac693d224 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 8ec44bbaa70914f60b3696f5d72c4391 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png new file mode 100644 index 00000000..c16cdccc Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png.meta new file mode 100644 index 00000000..f530d823 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/menu-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 48ee5588255d30d4e93c3d7627144a7c +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: af83a7073fb0e48e2b517754aab04fa1 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png new file mode 100644 index 00000000..87b2d973 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png.meta new file mode 100644 index 00000000..9f77af9b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/message-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 9964df38e784f1c458b4f42ed8944a39 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 452cae70bc1c34d5c93d4b23d42caf54 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png new file mode 100644 index 00000000..3e8f48cf Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png.meta new file mode 100644 index 00000000..a7e8ac38 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/open-dropdown-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 3174499e448de9d49840e98d8913aa07 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 7ce25f59ba25046a588ceb7ff9238914 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png new file mode 100644 index 00000000..63e56843 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png.meta new file mode 100644 index 00000000..7bf2ae4a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/outline-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 76eac9450dc776147b628586aac2b0d0 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: d735b58a3267447e7bd6ac2cb5a07318 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png new file mode 100644 index 00000000..0c26af19 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png.meta new file mode 100644 index 00000000..7cd5e7d6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 23dfb5d7fc5a2fb4f9a5fc00f697147f +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 31b3d4865e54744c09814d82f91f9662 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png new file mode 100644 index 00000000..855d460f Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png.meta new file mode 100644 index 00000000..e8bc26b6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/pin-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: d74ece6f102dfaa47aa02f6af42f0073 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 19fbd5214a8314834b0a5db26a0b4c97 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png new file mode 100644 index 00000000..c20b55cf Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png.meta new file mode 100644 index 00000000..cf183f91 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/refresh-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 9662640d4260c9a4d926c7de03e6609e +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 9c69e588628744e8389f622309c7520e + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png new file mode 100644 index 00000000..9c284158 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png.meta new file mode 100644 index 00000000..bdfe6031 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/spider-64.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: d1b72323dad76bc4da0da6c26f3dbc2f +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 7cabb147973f24de1af4eea83dd2e184 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png new file mode 100644 index 00000000..9ae73b69 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png.meta new file mode 100644 index 00000000..b92b2b92 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/stompy_white_128.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 534e3ec14cd78434b8676eec8a7fd9ba +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5f4702675076f453dba0ce229a4ea9fb + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png new file mode 100644 index 00000000..0ca948d9 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png.meta new file mode 100644 index 00000000..43025c32 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-32.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 8b93e13a01362424a89df66b813b3403 +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 8849e09b555364bbd868323256a184df + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png new file mode 100644 index 00000000..7edd3aa3 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png.meta new file mode 100644 index 00000000..6a670377 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Icons/trash2-50.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: a8d613b67f373cd4285c6d5b0a7f163c +labels: +- Icons8 +- See_Readme_License +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: c18ad7ee9ca194d04b33c64adf686594 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd new file mode 100644 index 00000000..c97cee61 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd.meta new file mode 100644 index 00000000..8b491371 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 239112d3dd3ec2243ad5b895480716a5 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 158fa7bdd49ac43838461d270cd670f1 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd new file mode 100644 index 00000000..7e4d21c3 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd.meta new file mode 100644 index 00000000..704fc477 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Logo@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 2187241f9bab99244bfd668e9e056e25 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 3b5d2ed5a11e547f2b3822c23bd6ef06 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin.meta new file mode 100644 index 00000000..dc8e2580 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 1d4bca2c36f6cc4489e411b96a09fa36 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd new file mode 100644 index 00000000..26790b0e Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd.meta new file mode 100644 index 00000000..cbc1a298 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Fill@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 6fe1234e2b04b2e44b33619147d02408 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 0dc361ee58d014006aa556a65469f0db + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default_pin@2x' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd new file mode 100644 index 00000000..65d1823f Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd.meta new file mode 100644 index 00000000..7bcc0808 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/NumberButton_Outline@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 3967d34dc919aa04cac871bbf2ebce4b +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 51198699b9e7f4cd08da0038b7de468a + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default_pin@2x' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd new file mode 100644 index 00000000..484e799c Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd.meta new file mode 100644 index 00000000..483d4fae --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Fill@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: a097b58da8de2bf4cb593d05feca1d98 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 9c84a5ccf9fa945ad9afbf13dd5c516b + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default_pin@2x' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd new file mode 100644 index 00000000..430d3e85 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd.meta new file mode 100644 index 00000000..6bfa982f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/Pin/PinDot_Outline@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ca27eb96a4f0c4145a479ad3e29790a2 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: b5b01abbd224f4d8ca0a7710d306e4b3 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default_pin@2x' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd new file mode 100644 index 00000000..46ef5525 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd.meta new file mode 100644 index 00000000..fa4c9ac5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 485f3bf8e01fab741915ba1f20bc5a8f +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 2, y: 2, z: 2, w: 2} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 6d8083f3826f84cbeb61c4c064406855 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd new file mode 100644 index 00000000..217ea1f2 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd.meta new file mode 100644 index 00000000..ce8e4853 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-2px@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: a0d7355cd1bbc6c44b68f572bb8c2722 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 4, y: 4, z: 4, w: 4} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 0b34c03b96c664584ac1e19ef2fb466b + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd new file mode 100644 index 00000000..c1c1cfa4 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd.meta new file mode 100644 index 00000000..57efd33d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 1619a22b6c609d946b469c845cc226de +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: bb1a717fd3325450082cd8ec2613f83e + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd new file mode 100644 index 00000000..eb06209b Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd.meta new file mode 100644 index 00000000..4dd939fd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/RoundedCorner-5px@2x.psd.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: a0c7ffb7676bd694192d1a9b3f8d20bd +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 10, y: 10, z: 10, w: 10} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 94e12344573bf4275a83e20bbaa9f4bc + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png new file mode 100644 index 00000000..81edda62 Binary files /dev/null and b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png differ diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png.meta new file mode 100644 index 00000000..a1581b42 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Sprites/Default/loading@2x.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: b69c9e0b4f478f94a8b015db733dc6f7 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 200 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 1608b97acfef54417b45de0318e7e2d5 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: '[RECT]srdebugger_default' + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles.meta new file mode 100644 index 00000000..acbb8980 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 80ec7ce83f1447f499ec6ab3b908d09e +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset new file mode 100644 index 00000000..a931bbcb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d631692ab5174474eaaf2b43947b0b9f, type: 3} + m_Name: Default + m_EditorClassIdentifier: + _keys: + - SideBar_Background + - Sidebar_Border + - Content_Border + - Content_Background + - SideBar_Tab_Text + - SideBar_Tab_Border + - SideBar_Tab_Background + - Console_Error_Blob + - Console_Warning_Blob + - Console_Info_Blob + - Tab_Background + - Tab_Header_Background + - Tab_Header_Text + - Content_Block_Header + - Content_Block_Text + - Content_Block_Background + - Console_Entry_BG + - Console_Entry_Message + - Console_Entry_Stack + - ScrollBar + - Toggle_BG_Active + - Options_Name + - Options_Category_Header + - Options_Item_Background + - Options_Item_Button + - Content_Background_Transparent + - Tab_Header_Button + - Icon_Close + - Icon_Trash + - Icon_Stompy + - Icon_System + - Icon_Options + - Icon_Console + - Icon_BugReport + - Icon_Profiler + - Icon_Logo + - Icon_Menu + - Profiler_Axis_Background + - Profiler_Axis_Text + - Profiler_Memory_BG + - Profiler_Memory_FG + - Text_Dim + - Text_Light + - Icon_Pin + - Options_SelectionToggle + - Options_SelectionToggleBackground + - PinEntry_Number_Button + - PinEntry_Number_Ring + - PinEntry_Number_Ring_Fill + - PinEntry_Dot_Ring + - PinEntry_Dot_Fill + - PinEntry_CancelButton + - Text_Input + - Console_Count + - Console_Count_Text + - Icon_ToggleDropdown + - Icon_Trash_Small + - Icon_Menu_Small + - Tab_Header_Toggle_Selected + - Pinned_Profiler_BG + - Icon_Refresh + - Icon_Filter + - Icon_ScrollToBottom + _styles: + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 72f587d74eb73bb4789dd3f6f10b3600, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .308823526, g: .308823526, b: .308823526, a: .376470596} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .388235301, b: .545098066, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .113725491, g: .113725491, b: .121568628, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .514705896, g: .514705896, b: .514705896, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .152941182, g: .152941182, b: .152941182, a: .145098045} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + NormalColor: {r: .956862748, g: .356862754, b: .34117648, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + NormalColor: {r: .956862748, g: .760784328, b: .34117648, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 54b8502585d246249bd1f7540a8bf2b9, type: 3} + NormalColor: {r: .34117648, g: .701960802, b: .956862748, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .203921571, g: .203921571, b: .203921571, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .215686277, g: .215686277, b: .215686277, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .996078432, g: .996078432, b: .996078432, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .845588207, g: .845588207, b: .845588207, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .192156866, g: .192156866, b: .192156866, a: .588235319} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .172549024, g: .172549024, b: .172549024, a: .784313738} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .705882311, g: .705882311, b: .705882311, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: .316176474, g: .316176474, b: .316176474, a: .517647088} + HoverColor: {r: .889705896, g: .889705896, b: .889705896, a: .811764717} + Image: {fileID: 0} + NormalColor: {r: .441176474, g: .441176474, b: .441176474, a: .709803939} + - ActiveColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + DisabledColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + HoverColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + Image: {fileID: 0} + NormalColor: {r: .278431386, g: .278431386, b: .278431386, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .996078432, g: .996078432, b: .996078432, a: 1} + - ActiveColor: {r: .154411793, g: .154411793, b: .154411793, a: 1} + DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + HoverColor: {r: .323529422, g: .323529422, b: .323529422, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + - ActiveColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + HoverColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .113725491, g: .113725491, b: .121568628, a: .90196079} + - ActiveColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + HoverColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 8ccc360b0ed61e54ba5d8fa329ca8988, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: a8d613b67f373cd4285c6d5b0a7f163c, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 534e3ec14cd78434b8676eec8a7fd9ba, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 4ea5932536416924bab8eb9b5bab3874, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 76eac9450dc776147b628586aac2b0d0, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: b07075cb163d9b8489a1ee90ce068409, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: d1b72323dad76bc4da0da6c26f3dbc2f, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: b5b46026463fb334bb8a3b95b303b224, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 2187241f9bab99244bfd668e9e056e25, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 48ee5588255d30d4e93c3d7627144a7c, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .345588207, g: .345588207, b: .345588207, a: .717647076} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .264705896, g: .264705896, b: .264705896, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .580882311, g: .580882311, b: .580882311, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .737254918, g: .737254918, b: .737254918, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 23dfb5d7fc5a2fb4f9a5fc00f697147f, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: .152941182, g: .152941182, b: .152941182, a: 0} + DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 0} + HoverColor: {r: .325490206, g: .325490206, b: .325490206, a: .392156869} + Image: {fileID: 0} + NormalColor: {r: .397058845, g: .397058845, b: .397058845, a: 0} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .396078438, g: .396078438, b: .396078438, a: 1} + - ActiveColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: .258823544, g: .388235301, b: .53725493, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 3967d34dc919aa04cac871bbf2ebce4b, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 6fe1234e2b04b2e44b33619147d02408, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: ca27eb96a4f0c4145a479ad3e29790a2, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: a097b58da8de2bf4cb593d05feca1d98, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: .258823544, g: .388235301, b: .533333361, a: 1} + DisabledColor: {r: .426470578, g: .426470578, b: .426470578, a: .784313738} + HoverColor: {r: .735294104, g: .735294104, b: .735294104, a: 1} + Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: .152941182, g: .152941182, b: .152941182, a: 1} + DisabledColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + HoverColor: {r: .325490206, g: .325490206, b: .325490206, a: 1} + Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: a0c7ffb7676bd694192d1a9b3f8d20bd, type: 3} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .996078432, g: .996078432, b: .996078432, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 159fc50f1c2574d4ea143a010597198a, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 8b93e13a01362424a89df66b813b3403, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 2fd39c3920ff82048ad7b8aac693d224, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .396078438, g: .396078438, b: .396078438, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 0} + NormalColor: {r: .0955882072, g: .0955882072, b: .0955882072, a: .870588243} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 9662640d4260c9a4d926c7de03e6609e, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 2ccea1a2a1be59649956a168449bdb9f, type: 3} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + - ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + Image: {fileID: 21300000, guid: 3422278a31f39bc4cab9304b78a09d41, type: 3} + NormalColor: {r: .808823526, g: .808823526, b: .808823526, a: 1} + Parent: {fileID: 0} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset.meta new file mode 100644 index 00000000..c1421cb9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/Default.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: cdfb48dd49c2d7a4d9f8805cd96e0241 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset new file mode 100644 index 00000000..77175097 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d631692ab5174474eaaf2b43947b0b9f, type: 3} + m_Name: DefaultConsoleAltRow + m_EditorClassIdentifier: + Parent: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} + _keys: + - Console_Entry_BG + _styles: + - Image: {fileID: 0} + NormalColor: {r: .188235298, g: .188235298, b: .188235298, a: .784313738} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset.meta new file mode 100644 index 00000000..1cb7de7f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleAltRow.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 9e09b8950236048448238f4c0963f3ad +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset new file mode 100644 index 00000000..762c9b0d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d631692ab5174474eaaf2b43947b0b9f, type: 3} + m_Name: DefaultConsoleSelectedRow + m_EditorClassIdentifier: + Parent: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} + _keys: + - Console_Entry_BG + _styles: + - Image: {fileID: 0} + NormalColor: {r: .243137255, g: .372549027, b: .58431375, a: .823529422} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset.meta new file mode 100644 index 00000000..2f211e58 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultConsoleSelectedRow.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d30366e803724014382b48500f16271c +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset new file mode 100644 index 00000000..856a3486 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d631692ab5174474eaaf2b43947b0b9f, type: 3} + m_Name: DefaultTabActive + m_EditorClassIdentifier: + Parent: {fileID: 11400000, guid: cdfb48dd49c2d7a4d9f8805cd96e0241, type: 2} + _keys: + - SideBar_Tab_Text + - SideBar_Tab_Border + - SideBar_Tab_Background + _styles: + - Image: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + - Image: {fileID: 0} + NormalColor: {r: .258823544, g: .258823544, b: .258823544, a: 1} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} + - Image: {fileID: 0} + NormalColor: {r: .152941182, g: .152941182, b: .152941182, a: .58431375} + HoverColor: {r: 1, g: 1, b: 1, a: 1} + ActiveColor: {r: 1, g: 1, b: 1, a: 1} + DisabledColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset.meta new file mode 100644 index 00000000..af2c8565 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/UI/Styles/DefaultTabActive.asset.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 4c110ad198b0a65458270ceac7690ce5 +NativeFormatImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr.meta new file mode 100644 index 00000000..69b8e738 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c553aba9c80a494fb3e74da73f203b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources.meta new file mode 100644 index 00000000..c3d09e34 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f393f53d1d894456c9fb1eafeaf8c2e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger.meta new file mode 100644 index 00000000..d2429d0e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22bb21ac3e4fc42c99f5c4abe4ee9e4f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset new file mode 100644 index 00000000..1cf70040 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 16d00b7005a47ef47802a8421dc6baf6, type: 3} + m_Name: Settings + m_EditorClassIdentifier: + _isEnabled: 0 + _defaultTab: 1 + _triggerEnableMode: 0 + _triggerBehaviour: 2 + _errorNotification: 0 + _enableKeyboardShortcuts: 1 + _keyboardShortcuts: [] + _newKeyboardShortcuts: + - Action: 1 + Alt: 0 + Control: 1 + Key: 282 + Shift: 1 + - Action: 2 + Alt: 0 + Control: 1 + Key: 283 + Shift: 1 + - Action: 3 + Alt: 0 + Control: 1 + Key: 284 + Shift: 1 + - Action: 4 + Alt: 0 + Control: 1 + Key: 285 + Shift: 1 + _keyboardModifierControl: 1 + _keyboardModifierAlt: 0 + _keyboardModifierShift: 1 + _keyboardEscapeClose: 1 + _enableBackgroundTransparency: 1 + _collapseDuplicateLogEntries: 1 + _richTextInConsole: 1 + _requireEntryCode: 0 + _requireEntryCodeEveryTime: 0 + _entryCode: 00000000000000000000000000000000 + _useDebugCamera: 0 + _debugLayer: 5 + _debugCameraDepth: 100 + _apiKey: + _enableBugReporter: 0 + _disabledTabs: + _profilerAlignment: 2 + _optionsAlignment: 3 + _consoleAlignment: 0 + _triggerPosition: 4 + _maximumConsoleEntries: 1500 + _enableEventSystemCreation: 1 + _automaticShowCursor: 1 + _uiScale: 1 + _unloadOnClose: 0 diff --git a/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset.meta b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset.meta new file mode 100644 index 00000000..1d1bcd70 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRDebugger/usr/Resources/SRDebugger/Settings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cab1bfd5c22f144ffb49e695e497ed7e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF.meta b/Assets/ThirdPlugins/StompyRobot/SRF.meta new file mode 100644 index 00000000..913094f9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 15228ecbee4873b4e94106ec5a2936a4 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/External.meta b/Assets/ThirdPlugins/StompyRobot/SRF/External.meta new file mode 100644 index 00000000..a1bbb01d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/External.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 1612d99e81c5543498f1110f9085a789 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs b/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs new file mode 100644 index 00000000..762e0f57 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs @@ -0,0 +1,938 @@ + +#if !UNITY_5 && !UNITY_5_3_OR_NEWER && UNITY_EDITOR + +using System; +using System.Diagnostics; + +#pragma warning disable 1591 +// ReSharper disable UnusedMember.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable IntroduceOptionalParameters.Global +// ReSharper disable MemberCanBeProtected.Global +// ReSharper disable InconsistentNaming + +namespace JetBrains.Annotations +{ + /// + /// Indicates that the value of the marked element could be null sometimes, + /// so the check for null is necessary before its usage + /// + /// + /// [CanBeNull] public object Test() { return null; } + /// public void UseTest() { + /// var p = Test(); + /// var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class CanBeNullAttribute : Attribute { } + + /// + /// Indicates that the value of the marked element could never be null + /// + /// + /// [NotNull] public object Foo() { + /// return null; // Warning: Possible 'null' assignment + /// } + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class NotNullAttribute : Attribute { } + + /// + /// Indicates that collection or enumerable value does not contain null elements + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class ItemNotNullAttribute : Attribute { } + + /// + /// Indicates that collection or enumerable value can contain null elements + /// + [AttributeUsage( + AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | + AttributeTargets.Delegate | AttributeTargets.Field)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class ItemCanBeNullAttribute : Attribute { } + + /// + /// Indicates that the marked method builds string by format pattern and (optional) arguments. + /// Parameter, which contains format string, should be given in constructor. The format string + /// should be in -like form + /// + /// + /// [StringFormatMethod("message")] + /// public void ShowError(string message, params object[] args) { /* do something */ } + /// public void Foo() { + /// ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + /// } + /// + [AttributeUsage( + AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Delegate)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class StringFormatMethodAttribute : Attribute + { + /// + /// Specifies which parameter of an annotated method should be treated as format-string + /// + public StringFormatMethodAttribute(string formatParameterName) + { + FormatParameterName = formatParameterName; + } + + public string FormatParameterName { get; private set; } + } + + /// + /// For a parameter that is expected to be one of the limited set of values. + /// Specify fields of which type should be used as values for this parameter. + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class ValueProviderAttribute : Attribute + { + public ValueProviderAttribute(string name) + { + Name = name; + } + + [NotNull] + public string Name { get; private set; } + } + + /// + /// Indicates that the function argument should be string literal and match one + /// of the parameters of the caller function. For example, ReSharper annotates + /// the parameter of + /// + /// + /// public void Foo(string param) { + /// if (param == null) + /// throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + /// } + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class InvokerParameterNameAttribute : Attribute { } + + /// + /// Indicates that the method is contained in a type that implements + /// System.ComponentModel.INotifyPropertyChanged interface and this method + /// is used to notify that some property value changed + /// + /// + /// The method should be non-static and conform to one of the supported signatures: + /// + /// NotifyChanged(string) + /// NotifyChanged(params string[]) + /// NotifyChanged{T}(Expression{Func{T}}) + /// NotifyChanged{T,U}(Expression{Func{T,U}}) + /// SetProperty{T}(ref T, T, string) + /// + /// + /// + /// public class Foo : INotifyPropertyChanged { + /// public event PropertyChangedEventHandler PropertyChanged; + /// [NotifyPropertyChangedInvocator] + /// protected virtual void NotifyChanged(string propertyName) { ... } + /// + /// private string _name; + /// public string Name { + /// get { return _name; } + /// set { _name = value; NotifyChanged("LastName"); /* Warning */ } + /// } + /// } + /// + /// Examples of generated notifications: + /// + /// NotifyChanged("Property") + /// NotifyChanged(() => Property) + /// NotifyChanged((VM x) => x.Property) + /// SetProperty(ref myField, value, "Property") + /// + /// + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class NotifyPropertyChangedInvocatorAttribute : Attribute + { + public NotifyPropertyChangedInvocatorAttribute() { } + public NotifyPropertyChangedInvocatorAttribute(string parameterName) + { + ParameterName = parameterName; + } + + public string ParameterName { get; private set; } + } + + /// + /// Describes dependency between method input and output + /// + /// + ///

Function Definition Table syntax:

+ /// + /// FDT ::= FDTRow [;FDTRow]* + /// FDTRow ::= Input => Output | Output <= Input + /// Input ::= ParameterName: Value [, Input]* + /// Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + /// Value ::= true | false | null | notnull | canbenull + /// + /// If method has single input parameter, it's name could be omitted.
+ /// Using halt (or void/nothing, which is the same) + /// for method output means that the methos doesn't return normally.
+ /// canbenull annotation is only applicable for output parameters.
+ /// You can use multiple [ContractAnnotation] for each FDT row, + /// or use single attribute with rows separated by semicolon.
+ ///
+ /// + /// + /// [ContractAnnotation("=> halt")] + /// public void TerminationMethod() + /// + /// + /// [ContractAnnotation("halt <= condition: false")] + /// public void Assert(bool condition, string text) // regular assertion method + /// + /// + /// [ContractAnnotation("s:null => true")] + /// public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + /// + /// + /// // A method that returns null if the parameter is null, + /// // and not null if the parameter is not null + /// [ContractAnnotation("null => null; notnull => notnull")] + /// public object Transform(object data) + /// + /// + /// [ContractAnnotation("s:null=>false; =>true,result:notnull; =>false, result:null")] + /// public bool TryParse(string s, out Person result) + /// + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class ContractAnnotationAttribute : Attribute + { + public ContractAnnotationAttribute([NotNull] string contract) + : this(contract, false) { } + + public ContractAnnotationAttribute([NotNull] string contract, bool forceFullStates) + { + Contract = contract; + ForceFullStates = forceFullStates; + } + + public string Contract { get; private set; } + public bool ForceFullStates { get; private set; } + } + + /// + /// Indicates that marked element should be localized or not + /// + /// + /// [LocalizationRequiredAttribute(true)] + /// public class Foo { + /// private string str = "my string"; // Warning: Localizable string + /// } + /// + [AttributeUsage(AttributeTargets.All)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class LocalizationRequiredAttribute : Attribute + { + public LocalizationRequiredAttribute() : this(true) { } + public LocalizationRequiredAttribute(bool required) + { + Required = required; + } + + public bool Required { get; private set; } + } + + /// + /// Indicates that the value of the marked type (or its derivatives) + /// cannot be compared using '==' or '!=' operators and Equals() + /// should be used instead. However, using '==' or '!=' for comparison + /// with null is always permitted. + /// + /// + /// [CannotApplyEqualityOperator] + /// class NoEquality { } + /// class UsesNoEquality { + /// public void Test() { + /// var ca1 = new NoEquality(); + /// var ca2 = new NoEquality(); + /// if (ca1 != null) { // OK + /// bool condition = ca1 == ca2; // Warning + /// } + /// } + /// } + /// + [AttributeUsage( + AttributeTargets.Interface | AttributeTargets.Class | AttributeTargets.Struct)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class CannotApplyEqualityOperatorAttribute : Attribute { } + + /// + /// When applied to a target attribute, specifies a requirement for any type marked + /// with the target attribute to implement or inherit specific type or types. + /// + /// + /// [BaseTypeRequired(typeof(IComponent)] // Specify requirement + /// public class ComponentAttribute : Attribute { } + /// [Component] // ComponentAttribute requires implementing IComponent interface + /// public class MyComponent : IComponent { } + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + [BaseTypeRequired(typeof(Attribute))] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class BaseTypeRequiredAttribute : Attribute + { + public BaseTypeRequiredAttribute([NotNull] Type baseType) + { + BaseType = baseType; + } + + [NotNull] + public Type BaseType { get; private set; } + } + + /// + /// Indicates that the marked symbol is used implicitly + /// (e.g. via reflection, in external library), so this symbol + /// will not be marked as unused (as well as by other usage inspections) + /// + [AttributeUsage(AttributeTargets.All)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class UsedImplicitlyAttribute : Attribute + { + public UsedImplicitlyAttribute() + : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { } + + public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags) + : this(useKindFlags, ImplicitUseTargetFlags.Default) { } + + public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags) + : this(ImplicitUseKindFlags.Default, targetFlags) { } + + public UsedImplicitlyAttribute( + ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags) + { + UseKindFlags = useKindFlags; + TargetFlags = targetFlags; + } + + public ImplicitUseKindFlags UseKindFlags { get; private set; } + public ImplicitUseTargetFlags TargetFlags { get; private set; } + } + + /// + /// Should be used on attributes and causes ReSharper + /// to not mark symbols marked with such attributes as unused + /// (as well as by other usage inspections) + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.GenericParameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class MeansImplicitUseAttribute : Attribute + { + public MeansImplicitUseAttribute() + : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { } + + public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags) + : this(useKindFlags, ImplicitUseTargetFlags.Default) { } + + public MeansImplicitUseAttribute(ImplicitUseTargetFlags targetFlags) + : this(ImplicitUseKindFlags.Default, targetFlags) { } + + public MeansImplicitUseAttribute( + ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags) + { + UseKindFlags = useKindFlags; + TargetFlags = targetFlags; + } + + [UsedImplicitly] + public ImplicitUseKindFlags UseKindFlags { get; private set; } + [UsedImplicitly] + public ImplicitUseTargetFlags TargetFlags { get; private set; } + } + + [Flags] + public enum ImplicitUseKindFlags + { + Default = Access | Assign | InstantiatedWithFixedConstructorSignature, + /// Only entity marked with attribute considered used + Access = 1, + /// Indicates implicit assignment to a member + Assign = 2, + /// + /// Indicates implicit instantiation of a type with fixed constructor signature. + /// That means any unused constructor parameters won't be reported as such. + /// + InstantiatedWithFixedConstructorSignature = 4, + /// Indicates implicit instantiation of a type + InstantiatedNoFixedConstructorSignature = 8, + } + + /// + /// Specify what is considered used implicitly when marked + /// with or + /// + [Flags] + public enum ImplicitUseTargetFlags + { + Default = Itself, + Itself = 1, + /// Members of entity marked with attribute are considered used + Members = 2, + /// Entity marked with attribute and all its members considered used + WithMembers = Itself | Members + } + + /// + /// This attribute is intended to mark publicly available API + /// which should not be removed and so is treated as used + /// + [MeansImplicitUse] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class PublicAPIAttribute : Attribute + { + public PublicAPIAttribute() { } + public PublicAPIAttribute([NotNull] string comment) + { + Comment = comment; + } + + public string Comment { get; private set; } + } + + /// + /// Tells code analysis engine if the parameter is completely handled + /// when the invoked method is on stack. If the parameter is a delegate, + /// indicates that delegate is executed while the method is executed. + /// If the parameter is an enumerable, indicates that it is enumerated + /// while the method is executed + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class InstantHandleAttribute : Attribute { } + + /// + /// Indicates that a method does not make any observable state changes. + /// The same as System.Diagnostics.Contracts.PureAttribute + /// + /// + /// [Pure] private int Multiply(int x, int y) { return x * y; } + /// public void Foo() { + /// const int a = 2, b = 2; + /// Multiply(a, b); // Waring: Return value of pure method is not used + /// } + /// + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class PureAttribute : Attribute { } + + /// + /// Indicates that a parameter is a path to a file or a folder within a web project. + /// Path can be relative or absolute, starting from web root (~) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public class PathReferenceAttribute : Attribute + { + public PathReferenceAttribute() { } + public PathReferenceAttribute([PathReference] string basePath) + { + BasePath = basePath; + } + + public string BasePath { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcAreaMasterLocationFormatAttribute : Attribute + { + public AspMvcAreaMasterLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcAreaPartialViewLocationFormatAttribute : Attribute + { + public AspMvcAreaPartialViewLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcAreaViewLocationFormatAttribute : Attribute + { + public AspMvcAreaViewLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcMasterLocationFormatAttribute : Attribute + { + public AspMvcMasterLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcPartialViewLocationFormatAttribute : Attribute + { + public AspMvcPartialViewLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcViewLocationFormatAttribute : Attribute + { + public AspMvcViewLocationFormatAttribute(string format) + { + Format = format; + } + + public string Format { get; private set; } + } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC action. If applied to a method, the MVC action name is calculated + /// implicitly from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String) + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcActionAttribute : Attribute + { + public AspMvcActionAttribute() { } + public AspMvcActionAttribute(string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + public string AnonymousProperty { get; private set; } + } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcAreaAttribute : PathReferenceAttribute + { + public AspMvcAreaAttribute() { } + public AspMvcAreaAttribute(string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + public string AnonymousProperty { get; private set; } + } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + /// an MVC controller. If applied to a method, the MVC controller name is calculated + /// implicitly from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String) + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcControllerAttribute : Attribute + { + public AspMvcControllerAttribute() { } + public AspMvcControllerAttribute(string anonymousProperty) + { + AnonymousProperty = anonymousProperty; + } + + public string AnonymousProperty { get; private set; } + } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + /// for custom wrappers similar to System.Web.Mvc.Controller.View(String, String) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcMasterAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + /// for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcModelTypeAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + /// partial view. If applied to a method, the MVC partial view name is calculated implicitly + /// from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String) + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcPartialViewAttribute : PathReferenceAttribute { } + + /// + /// ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcSupressViewErrorAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcDisplayTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + /// Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcEditorTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + /// Use this attribute for custom wrappers similar to + /// System.ComponentModel.DataAnnotations.UIHintAttribute(System.String) + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcTemplateAttribute : Attribute { } + + /// + /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + /// is an MVC view. If applied to a method, the MVC view name is calculated implicitly + /// from the context. Use this attribute for custom wrappers similar to + /// System.Web.Mvc.Controller.View(Object) + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcViewAttribute : PathReferenceAttribute { } + + /// + /// ASP.NET MVC attribute. When applied to a parameter of an attribute, + /// indicates that this parameter is an MVC action name + /// + /// + /// [ActionName("Foo")] + /// public ActionResult Login(string returnUrl) { + /// ViewBag.ReturnUrl = Url.Action("Foo"); // OK + /// return RedirectToAction("Bar"); // Error: Cannot resolve action + /// } + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMvcActionSelectorAttribute : Attribute { } + + [AttributeUsage( + AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class HtmlElementAttributesAttribute : Attribute + { + public HtmlElementAttributesAttribute() { } + public HtmlElementAttributesAttribute(string name) + { + Name = name; + } + + public string Name { get; private set; } + } + + [AttributeUsage( + AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class HtmlAttributeValueAttribute : Attribute + { + public HtmlAttributeValueAttribute([NotNull] string name) + { + Name = name; + } + + [NotNull] + public string Name { get; private set; } + } + + /// + /// Razor attribute. Indicates that a parameter or a method is a Razor section. + /// Use this attribute for custom wrappers similar to + /// System.Web.WebPages.WebPageBase.RenderSection(String) + /// + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorSectionAttribute : Attribute { } + + /// + /// Indicates how method invocation affects content of the collection + /// + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class CollectionAccessAttribute : Attribute + { + public CollectionAccessAttribute(CollectionAccessType collectionAccessType) + { + CollectionAccessType = collectionAccessType; + } + + public CollectionAccessType CollectionAccessType { get; private set; } + } + + [Flags] + public enum CollectionAccessType + { + /// Method does not use or modify content of the collection + None = 0, + /// Method only reads content of the collection but does not modify it + Read = 1, + /// Method can change content of the collection but does not add new elements + ModifyExistingContent = 2, + /// Method can add new elements to the collection + UpdatedContent = ModifyExistingContent | 4 + } + + /// + /// Indicates that the marked method is assertion method, i.e. it halts control flow if + /// one of the conditions is satisfied. To set the condition, mark one of the parameters with + /// attribute + /// + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AssertionMethodAttribute : Attribute { } + + /// + /// Indicates the condition parameter of the assertion method. The method itself should be + /// marked by attribute. The mandatory argument of + /// the attribute is the assertion type. + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AssertionConditionAttribute : Attribute + { + public AssertionConditionAttribute(AssertionConditionType conditionType) + { + ConditionType = conditionType; + } + + public AssertionConditionType ConditionType { get; private set; } + } + + /// + /// Specifies assertion type. If the assertion method argument satisfies the condition, + /// then the execution continues. Otherwise, execution is assumed to be halted + /// + public enum AssertionConditionType + { + /// Marked parameter should be evaluated to true + IS_TRUE = 0, + /// Marked parameter should be evaluated to false + IS_FALSE = 1, + /// Marked parameter should be evaluated to null value + IS_NULL = 2, + /// Marked parameter should be evaluated to not null value + IS_NOT_NULL = 3, + } + + /// + /// Indicates that the marked method unconditionally terminates control flow execution. + /// For example, it could unconditionally throw exception + /// + [Obsolete("Use [ContractAnnotation('=> halt')] instead")] + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class TerminatesProgramAttribute : Attribute { } + + /// + /// Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + /// .Where). This annotation allows inference of [InstantHandle] annotation for parameters + /// of delegate type by analyzing LINQ method chains. + /// + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class LinqTunnelAttribute : Attribute { } + + /// + /// Indicates that IEnumerable, passed as parameter, is not enumerated. + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class NoEnumerationAttribute : Attribute { } + + /// + /// Indicates that parameter is regular expression pattern. + /// + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RegexPatternAttribute : Attribute { } + + /// + /// XAML attribute. Indicates the type that has ItemsSource property and should be + /// treated as ItemsControl-derived type, to enable inner items DataContext + /// type resolve. + /// + [AttributeUsage(AttributeTargets.Class)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class XamlItemsControlAttribute : Attribute { } + + /// + /// XAML attibute. Indicates the property of some BindingBase-derived type, that + /// is used to bind some item of ItemsControl-derived type. This annotation will + /// enable the DataContext type resolve for XAML bindings for such properties. + /// + /// + /// Property should have the tree ancestor of the ItemsControl type or + /// marked with the attribute. + /// + [AttributeUsage(AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class XamlItemBindingOfItemsControlAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspChildControlTypeAttribute : Attribute + { + public AspChildControlTypeAttribute(string tagName, Type controlType) + { + TagName = tagName; + ControlType = controlType; + } + + public string TagName { get; private set; } + public Type ControlType { get; private set; } + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspDataFieldAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspDataFieldsAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspMethodPropertyAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspRequiredAttributeAttribute : Attribute + { + public AspRequiredAttributeAttribute([NotNull] string attribute) + { + Attribute = attribute; + } + + public string Attribute { get; private set; } + } + + [AttributeUsage(AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class AspTypePropertyAttribute : Attribute + { + public bool CreateConstructorReferences { get; private set; } + + public AspTypePropertyAttribute(bool createConstructorReferences) + { + CreateConstructorReferences = createConstructorReferences; + } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorImportNamespaceAttribute : Attribute + { + public RazorImportNamespaceAttribute(string name) + { + Name = name; + } + + public string Name { get; private set; } + } + + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorInjectionAttribute : Attribute + { + public RazorInjectionAttribute(string type, string fieldName) + { + Type = type; + FieldName = fieldName; + } + + public string Type { get; private set; } + public string FieldName { get; private set; } + } + + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorHelperCommonAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Property)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorLayoutAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorWriteLiteralMethodAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Method)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorWriteMethodAttribute : Attribute { } + + [AttributeUsage(AttributeTargets.Parameter)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class RazorWriteMethodParameterAttribute : Attribute { } + + /// + /// Prevents the Member Reordering feature from tossing members of the marked class. + /// + /// + /// The attribute must be mentioned in your member reordering patterns. + /// + [AttributeUsage(AttributeTargets.All)] + [Conditional("JETBRAINS_ANNOTATIONS")] + public sealed class NoReorder : Attribute { } +} + +#endif diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs.meta new file mode 100644 index 00000000..5a065792 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/External/Jetbrains.Annotations.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 643a949c9c71dd94a970b2573c29fe67 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs b/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs new file mode 100644 index 00000000..861df381 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs @@ -0,0 +1,626 @@ +/* + * Copyright (c) 2013 Calvin Rien + * + * Based on the JSON parser by Patrick van Bergen + * http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html + * + * Simplified it so that it doesn't throw exceptions + * and can be used in Unity iPhone with maximum code stripping. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +using System.Globalization; + +namespace SRF +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.IO; + using System.Text; + + // Example usage: + // + // using UnityEngine; + // using System.Collections; + // using System.Collections.Generic; + // using MiniJSON; + // + // public class MiniJSONTest : MonoBehaviour { + // void Start () { + // var jsonString = "{ \"array\": [1.44,2,3], " + + // "\"object\": {\"key1\":\"value1\", \"key2\":256}, " + + // "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " + + // "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " + + // "\"int\": 65536, " + + // "\"float\": 3.1415926, " + + // "\"bool\": true, " + + // "\"null\": null }"; + // + // var dict = Json.Deserialize(jsonString) as Dictionary; + // + // Debug.Log("deserialized: " + dict.GetType()); + // Debug.Log("dict['array'][0]: " + ((List) dict["array"])[0]); + // Debug.Log("dict['string']: " + (string) dict["string"]); + // Debug.Log("dict['float']: " + (double) dict["float"]); // floats come out as doubles + // Debug.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs + // Debug.Log("dict['unicode']: " + (string) dict["unicode"]); + // + // var str = Json.Serialize(dict); + // + // Debug.Log("serialized: " + str); + // } + // } + + /// + /// This class encodes and decodes JSON strings. + /// Spec. details, see http://www.json.org/ + /// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary. + /// All numbers are parsed to doubles. + /// + public static class Json + { + /// + /// Parses the string json into a value + /// + /// A JSON string. + /// An List<object>, a Dictionary<string, object>, a double, an integer,a string, null, true, or false + public static object Deserialize(string json) + { + // save the string for debug information + if (json == null) + { + return null; + } + + return Parser.Parse(json); + } + + /// + /// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string + /// + /// A Dictionary<string, object> / List<object> + /// A JSON encoded string, or null if object 'json' is not serializable + public static string Serialize(object obj) + { + return Serializer.Serialize(obj); + } + + private sealed class Parser : IDisposable + { + private const string WORD_BREAK = "{}[],:\""; + private StringReader json; + + private Parser(string jsonString) + { + json = new StringReader(jsonString); + } + + private char PeekChar + { + get { return Convert.ToChar(json.Peek()); } + } + + private char NextChar + { + get { return Convert.ToChar(json.Read()); } + } + + private string NextWord + { + get + { + var word = new StringBuilder(); + + while (!IsWordBreak(PeekChar)) + { + word.Append(NextChar); + + if (json.Peek() == -1) + { + break; + } + } + + return word.ToString(); + } + } + + private TOKEN NextToken + { + get + { + EatWhitespace(); + + if (json.Peek() == -1) + { + return TOKEN.NONE; + } + + switch (PeekChar) + { + case '{': + return TOKEN.CURLY_OPEN; + case '}': + json.Read(); + return TOKEN.CURLY_CLOSE; + case '[': + return TOKEN.SQUARED_OPEN; + case ']': + json.Read(); + return TOKEN.SQUARED_CLOSE; + case ',': + json.Read(); + return TOKEN.COMMA; + case '"': + return TOKEN.STRING; + case ':': + return TOKEN.COLON; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + return TOKEN.NUMBER; + } + + switch (NextWord) + { + case "false": + return TOKEN.FALSE; + case "true": + return TOKEN.TRUE; + case "null": + return TOKEN.NULL; + } + + return TOKEN.NONE; + } + } + + public void Dispose() + { + json.Dispose(); + json = null; + } + + public static bool IsWordBreak(char c) + { + return char.IsWhiteSpace(c) || WORD_BREAK.IndexOf(c) != -1; + } + + public static object Parse(string jsonString) + { + using (var instance = new Parser(jsonString)) + { + return instance.ParseValue(); + } + } + + private Dictionary ParseObject() + { + var table = new Dictionary(); + + // ditch opening brace + json.Read(); + + // { + while (true) + { + switch (NextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.CURLY_CLOSE: + return table; + default: + // name + var name = ParseString(); + if (name == null) + { + return null; + } + + // : + if (NextToken != TOKEN.COLON) + { + return null; + } + // ditch the colon + json.Read(); + + // value + table[name] = ParseValue(); + break; + } + } + } + + private List ParseArray() + { + var array = new List(); + + // ditch opening bracket + json.Read(); + + // [ + var parsing = true; + while (parsing) + { + var nextToken = NextToken; + + switch (nextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.SQUARED_CLOSE: + parsing = false; + break; + default: + var value = ParseByToken(nextToken); + + array.Add(value); + break; + } + } + + return array; + } + + private object ParseValue() + { + var nextToken = NextToken; + return ParseByToken(nextToken); + } + + private object ParseByToken(TOKEN token) + { + switch (token) + { + case TOKEN.STRING: + return ParseString(); + case TOKEN.NUMBER: + return ParseNumber(); + case TOKEN.CURLY_OPEN: + return ParseObject(); + case TOKEN.SQUARED_OPEN: + return ParseArray(); + case TOKEN.TRUE: + return true; + case TOKEN.FALSE: + return false; + case TOKEN.NULL: + return null; + default: + return null; + } + } + + private string ParseString() + { + var s = new StringBuilder(); + char c; + + // ditch opening quote + json.Read(); + + var parsing = true; + while (parsing) + { + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + parsing = false; + break; + case '\\': + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + case '\\': + case '/': + s.Append(c); + break; + case 'b': + s.Append('\b'); + break; + case 'f': + s.Append('\f'); + break; + case 'n': + s.Append('\n'); + break; + case 'r': + s.Append('\r'); + break; + case 't': + s.Append('\t'); + break; + case 'u': + var hex = new char[4]; + + for (var i = 0; i < 4; i++) + { + hex[i] = NextChar; + } + + s.Append((char) Convert.ToInt32(new string(hex), 16)); + break; + } + break; + default: + s.Append(c); + break; + } + } + + return s.ToString(); + } + + private object ParseNumber() + { + var number = NextWord; + + if (number.IndexOf('.') == -1) + { + long parsedInt; + long.TryParse(number, out parsedInt); + return parsedInt; + } + + double parsedDouble; + double.TryParse(number, out parsedDouble); + return parsedDouble; + } + + private void EatWhitespace() + { + while (char.IsWhiteSpace(PeekChar)) + { + json.Read(); + + if (json.Peek() == -1) + { + break; + } + } + } + + private enum TOKEN + { + NONE, + CURLY_OPEN, + CURLY_CLOSE, + SQUARED_OPEN, + SQUARED_CLOSE, + COLON, + COMMA, + STRING, + NUMBER, + TRUE, + FALSE, + NULL + }; + } + + private sealed class Serializer + { + private StringBuilder builder; + + private Serializer() + { + builder = new StringBuilder(); + } + + public static string Serialize(object obj) + { + var instance = new Serializer(); + + instance.SerializeValue(obj); + + return instance.builder.ToString(); + } + + private void SerializeValue(object value) + { + IList asList; + IDictionary asDict; + string asStr; + + if (value == null) + { + builder.Append("null"); + } + else if ((asStr = value as string) != null) + { + SerializeString(asStr); + } + else if (value is bool) + { + builder.Append((bool) value ? "true" : "false"); + } + else if ((asList = value as IList) != null) + { + SerializeArray(asList); + } + else if ((asDict = value as IDictionary) != null) + { + SerializeObject(asDict); + } + else if (value is char) + { + SerializeString(new string((char) value, 1)); + } + else + { + SerializeOther(value); + } + } + + private void SerializeObject(IDictionary obj) + { + var first = true; + + builder.Append('{'); + + foreach (var e in obj.Keys) + { + if (!first) + { + builder.Append(','); + } + + SerializeString(e.ToString()); + builder.Append(':'); + + SerializeValue(obj[e]); + + first = false; + } + + builder.Append('}'); + } + + private void SerializeArray(IList anArray) + { + builder.Append('['); + + var first = true; + + foreach (var obj in anArray) + { + if (!first) + { + builder.Append(','); + } + + SerializeValue(obj); + + first = false; + } + + builder.Append(']'); + } + + private void SerializeString(string str) + { + builder.Append('\"'); + + var charArray = str.ToCharArray(); + foreach (var c in charArray) + { + switch (c) + { + case '"': + builder.Append("\\\""); + break; + case '\\': + builder.Append("\\\\"); + break; + case '\b': + builder.Append("\\b"); + break; + case '\f': + builder.Append("\\f"); + break; + case '\n': + builder.Append("\\n"); + break; + case '\r': + builder.Append("\\r"); + break; + case '\t': + builder.Append("\\t"); + break; + default: + var codepoint = Convert.ToInt32(c); + if ((codepoint >= 32) && (codepoint <= 126)) + { + builder.Append(c); + } + else + { + builder.Append("\\u"); + builder.Append(codepoint.ToString("x4")); + } + break; + } + } + + builder.Append('\"'); + } + + private void SerializeOther(object value) + { + // NOTE: decimals lose precision during serialization. + // They always have, I'm just letting you know. + // Previously floats and doubles lost precision too. + if (value is float) + { + builder.Append(((float) value).ToString("R", CultureInfo.InvariantCulture)); + } + else if (value is int + || value is uint + || value is long + || value is sbyte + || value is byte + || value is short + || value is ushort + || value is ulong) + { + builder.Append(value); + } + else if (value is double + || value is decimal) + { + builder.Append(Convert.ToDouble(value).ToString("R", CultureInfo.InvariantCulture)); + } + else + { + SerializeString(value.ToString()); + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs.meta new file mode 100644 index 00000000..75d3fbdd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/External/MiniJSON.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac9ef7034b8966443b1c264ec9cf4cdd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Internal.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Internal.meta new file mode 100644 index 00000000..34f3691b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Internal.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: c843948cd30ff504ca75040138c14ed9 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs new file mode 100644 index 00000000..984dbe3a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs @@ -0,0 +1,80 @@ +namespace SRF.Internal +{ + internal static class ComponentMenuPaths + { + public const string PathRoot = "SRF"; + public const string SRServiceManager = PathRoot + "/Service/Service Manager"; + + #region Behaviours + + public const string BehavioursRoot = PathRoot + "/Behaviours"; + + public const string DestroyOnDisable = BehavioursRoot + "/Destroy On Disable"; + public const string DontDestroyOnLoad = BehavioursRoot + "/Don't Destroy On Load"; + public const string MatchTransform = BehavioursRoot + "/Match Transform"; + public const string LookAt = BehavioursRoot + "/LookAt"; + public const string MatchForwardDirection = BehavioursRoot + "/Match Forward Direction"; + public const string MatchMainCameraForwardDirection = BehavioursRoot + "/Match Forward Direction (Main Camera)"; + + public const string RuntimePosition = BehavioursRoot + "/Runtime Position"; + public const string ScrollTexture = BehavioursRoot + "/Scroll Texture"; + public const string SmoothFloatBehaviour = BehavioursRoot + "/Smooth Float"; + public const string SmoothFollow2D = BehavioursRoot + "/Smooth Follow (2D)"; + public const string SpringFollow = BehavioursRoot + "/Spring Follow"; + public const string SmoothMatchTransform = BehavioursRoot + "/Match Transform (Smooth)"; + public const string SpawnPrefab = BehavioursRoot + "/Spawn Prefab"; + public const string Velocity = BehavioursRoot + "/Velocity"; + + public const string SmoothOscillate = BehavioursRoot + "/Smooth Oscillate"; + + public const string SRDebugCamera = BehavioursRoot + "/Camera/SRDebugCamera"; + + #endregion + + #region Components + + public const string ComponentsRoot = PathRoot + "/Components"; + + public const string SRLineRenderer = ComponentsRoot + "/SRLineRenderer"; + public const string SelectionRoot = ComponentsRoot + "/Selection Root"; + + public const string SRSpriteFadeRenderer = ComponentsRoot + "/Fade Renderer (Sprite)"; + public const string SRMaterialFadeRenderer = ComponentsRoot + "/Fade Renderer (Material)"; + public const string SRCompositeFadeRenderer = ComponentsRoot + "/Fade Renderer (Composite)"; + + #endregion + + #region UI + + public const string UIRoot = PathRoot + "/UI"; + + public const string TiltOnTouch = UIRoot + "/Tilt On Touch"; + public const string ScaleOnTouch = UIRoot + "/Scale On Touch"; + public const string InheritColour = UIRoot + "/Inherit Colour"; + public const string FlashGraphic = UIRoot + "/Flash Graphic"; + public const string CopyPreferredSize = UIRoot + "/Copy Preferred Size"; + public const string CopyLayoutElement = UIRoot + "/Copy Layout Element"; + public const string CopySizeIntoLayoutElement = UIRoot + "/Copy Size Into Layout Element"; + public const string SRText = UIRoot + "/SRText"; + public const string Unselectable = UIRoot + "/Unselectable"; + public const string LongPressButton = UIRoot + "/Long Press Button"; + public const string ScrollToBottom = UIRoot + "/Scroll To Bottom Behaviour"; + + public const string FlowLayoutGroup = UIRoot + "/Layout/Flow Layout Group"; + public const string VirtualVerticalLayoutGroup = UIRoot + "/Layout/VerticalLayoutGroup (Virtualizing)"; + + public const string StyleRoot = UIRoot + "/Style Root"; + public const string StyleComponent = UIRoot + "/Style Component"; + + public const string ResponsiveEnable = UIRoot + "/Responsive (Enable)"; + public const string ResponsiveResize = UIRoot + "/Responsive (Resize)"; + + public const string RetinaScaler = UIRoot + "/Retina Scaler"; + public const string NumberButton = UIRoot + "/SRNumberButton"; + public const string NumberSpinner = UIRoot + "/SRNumberSpinner"; + public const string SRSpinner = UIRoot + "/Spinner"; + public const string ContentFitText = UIRoot + "/Content Fit Text"; + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs.meta new file mode 100644 index 00000000..eccdf83f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Internal/ComponentMenuPaths.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5483729387663d0428dfecd534652360 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE b/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE new file mode 100644 index 00000000..c4c1ff91 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Stompy Robot LTD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE.meta b/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE.meta new file mode 100644 index 00000000..264199e5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/LICENSE.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 8bd9e7d9842a77042bf5a124af70a142 +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/README.md b/Assets/ThirdPlugins/StompyRobot/SRF/README.md new file mode 100644 index 00000000..f1d3cc3e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/README.md @@ -0,0 +1,12 @@ +SRF (Stompy Robot Framework) +=== + +This is a stripped-down LITE version of SRF, containing the minimal necessary scripts for SRDebugger. Visit http://github.com/StompyRobot/SRF for the full version. + + +SRF contains numerious helpful behaviours and components for the Unity3D game engine that we use internally at Stompy Robot. We have made it available for anyone to use in their own games. + +Dependencies +== +SRF depends on the following libraries, which are included in the External folder +* MiniJSON \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/README.md.meta b/Assets/ThirdPlugins/StompyRobot/SRF/README.md.meta new file mode 100644 index 00000000..7d8108e8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/README.md.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 5c4f30500bf5ea74da5892d0e5a19f55 +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts.meta new file mode 100644 index 00000000..9ad96e85 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: d6dccedcbd04a634ba6919a7a6a53912 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections.meta new file mode 100644 index 00000000..787ac8c2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 713ffa030c417a84190555e6aef2e0b2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs new file mode 100644 index 00000000..d805f924 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs @@ -0,0 +1,348 @@ +namespace SRF +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using UnityEngine; + + /// + /// IList implementation which does not release the buffer when clearing/removing elements. Based on the NGUI BetterList + /// + [Serializable] + public class SRList : IList, ISerializationCallbackReceiver + { + [SerializeField] private T[] _buffer; + [SerializeField] private int _count; + private EqualityComparer _equalityComparer; + private ReadOnlyCollection _readOnlyWrapper; + public SRList() {} + + public SRList(int capacity) + { + Buffer = new T[capacity]; + } + + /// + /// Create a new list with the range of values. Contains a foreach loop, which will allocate garbage when used with most + /// generic collection types. + /// + public SRList(IEnumerable source) + { + AddRange(source); + } + + public T[] Buffer + { + get { return _buffer; } + private set { _buffer = value; } + } + + private EqualityComparer EqualityComparer + { + get + { + if (_equalityComparer == null) + { + _equalityComparer = EqualityComparer.Default; + } + + return _equalityComparer; + } + } + + public int Count + { + get { return _count; } + private set { _count = value; } + } + + public IEnumerator GetEnumerator() + { + if (Buffer != null) + { + for (var i = 0; i < Count; ++i) + { + yield return Buffer[i]; + } + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public void Add(T item) + { + if (Buffer == null || Count == Buffer.Length) + { + Expand(); + } + + Buffer[Count++] = item; + } + + public void Clear() + { + Count = 0; + } + + public bool Contains(T item) + { + if (Buffer == null) + { + return false; + } + + for (var i = 0; i < Count; ++i) + { + if (EqualityComparer.Equals(Buffer[i], item)) + { + return true; + } + } + + return false; + } + + public void CopyTo(T[] array, int arrayIndex) + { + Trim(); + Buffer.CopyTo(array, arrayIndex); + } + + public bool Remove(T item) + { + if (Buffer == null) + { + return false; + } + + var index = IndexOf(item); + + if (index < 0) + { + return false; + } + + RemoveAt(index); + + return true; + } + + public bool IsReadOnly + { + get { return false; } + } + + public int IndexOf(T item) + { + if (Buffer == null) + { + return -1; + } + + for (var i = 0; i < Count; ++i) + { + if (EqualityComparer.Equals(Buffer[i], item)) + { + return i; + } + } + + return -1; + } + + public void Insert(int index, T item) + { + if (Buffer == null || Count == Buffer.Length) + { + Expand(); + } + + if (index < Count) + { + for (var i = Count; i > index; --i) + { + Buffer[i] = Buffer[i - 1]; + } + Buffer[index] = item; + ++Count; + } + else + { + Add(item); + } + } + + public void RemoveAt(int index) + { + if (Buffer != null && index < Count) + { + --Count; + Buffer[index] = default(T); + for (var b = index; b < Count; ++b) + { + Buffer[b] = Buffer[b + 1]; + } + } + } + + public T this[int index] + { + get + { + if (Buffer == null) + { + throw new IndexOutOfRangeException(); + } + + return Buffer[index]; + } + set + { + if (Buffer == null) + { + throw new IndexOutOfRangeException(); + } + + Buffer[index] = value; + } + } + + public void OnBeforeSerialize() + { + Debug.Log("[OnBeforeSerialize] Count: {0}".Fmt(_count)); + // Clean buffer of unused elements before serializing + Clean(); + } + + public void OnAfterDeserialize() + { + Debug.Log("[OnAfterDeserialize] Count: {0}".Fmt(_count)); + } + + /// + /// Add range of values to the list. Contains a foreach loop, which will allocate garbage when used with most + /// generic collection types. + /// + /// + public void AddRange(IEnumerable range) + { + foreach (var item in range) + { + Add(item); + } + } + + /// + /// Clear the list, optionally setting each element to default(T) + /// + public void Clear(bool clean) + { + Clear(); + + if (!clean) + { + return; + } + + Clean(); + } + + public void Clean() + { + if (Buffer == null) + { + return; + } + + for (var i = Count; i < _buffer.Length; i++) + { + _buffer[i] = default(T); + } + } + + /// + /// Get a read-only wrapper of this list. This is cached, so very little cost after first called. + /// + /// + public ReadOnlyCollection AsReadOnly() + { + if (_readOnlyWrapper == null) + { + _readOnlyWrapper = new ReadOnlyCollection(this); + } + + return _readOnlyWrapper; + } + + /// + /// Helper function that expands the size of the array, maintaining the content. + /// + private void Expand() + { + var newList = (Buffer != null) ? new T[Mathf.Max(Buffer.Length << 1, 32)] : new T[32]; + + if (Buffer != null && Count > 0) + { + Buffer.CopyTo(newList, 0); + } + + Buffer = newList; + } + + /// + /// Trim the unnecessary memory, resizing the buffer to be of 'Length' size. + /// Call this function only if you are sure that the buffer won't need to resize anytime soon. + /// + public void Trim() + { + if (Count > 0) + { + if (Count >= Buffer.Length) + { + return; + } + + var newList = new T[Count]; + + for (var i = 0; i < Count; ++i) + { + newList[i] = Buffer[i]; + } + + Buffer = newList; + } + else + { + Buffer = new T[0]; + } + } + + /// + /// List.Sort equivalent. + /// + public void Sort(Comparison comparer) + { + var changed = true; + + while (changed) + { + changed = false; + + for (var i = 1; i < Count; ++i) + { + if (comparer.Invoke(Buffer[i - 1], Buffer[i]) > 0) + { + var temp = Buffer[i]; + Buffer[i] = Buffer[i - 1]; + Buffer[i - 1] = temp; + changed = true; + } + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs.meta new file mode 100644 index 00000000..0ae2359f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Collections/SRList.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5201015973137a64986d1c3a21aa95bd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components.meta new file mode 100644 index 00000000..a7758885 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: b492ab4aeb29c06468a92411414d3647 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs new file mode 100644 index 00000000..198eccf8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs @@ -0,0 +1,56 @@ +namespace SRF.Components +{ + using System.Diagnostics; + using UnityEngine; + using Debug = UnityEngine.Debug; + + /// + /// Singleton MonoBehaviour class which automatically creates an instance if one does not already exist. + /// + public abstract class SRAutoSingleton : SRMonoBehaviour where T : SRAutoSingleton + { + private static T _instance; + + /// + /// Get (or create) the instance of this Singleton + /// + public static T Instance + { + [DebuggerStepThrough] + get + { + // Instance required for the first time, we look for it + if (_instance == null && Application.isPlaying) + { + var go = new GameObject("_" + typeof (T).Name); + go.AddComponent(); // _instance set by Awake() constructor + } + return _instance; + } + } + + public static bool HasInstance + { + get { return _instance != null; } + } + + // If no other monobehaviour request the instance in an awake function + // executing before this one, no need to search the object. + protected virtual void Awake() + { + if (_instance != null) + { + Debug.LogWarning("More than one singleton object of type {0} exists.".Fmt(typeof (T).Name)); + return; + } + + _instance = (T) this; + } + + // Make sure the instance isn't referenced anymore when the user quit, just in case. + private void OnApplicationQuit() + { + _instance = null; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs.meta new file mode 100644 index 00000000..ed875f18 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRAutoSingleton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73f72db4fa1856540bbe92740280c8e2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs new file mode 100644 index 00000000..4684ccae --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs @@ -0,0 +1,202 @@ +namespace SRF +{ + using System.Diagnostics; + using UnityEngine; + + /// + /// Base MonoBehaviour which provides useful common functionality + /// + public abstract class SRMonoBehaviour : MonoBehaviour + { + /// + /// Get the Transform component, using a cached reference if possible. + /// + public Transform CachedTransform + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_transform == null) + { + _transform = base.transform; + } + + return _transform; + } + } + + /// + /// Get the Collider component, using a cached reference if possible. + /// + public Collider CachedCollider + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_collider == null) + { + _collider = GetComponent(); + } + + return _collider; + } + } + + /// + /// Get the Collider component, using a cached reference if possible. + /// + public Collider2D CachedCollider2D + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_collider2D == null) + { + _collider2D = GetComponent(); + } + + return _collider2D; + } + } + + /// + /// Get the Rigidbody component, using a cached reference if possible. + /// + public Rigidbody CachedRigidBody + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_rigidBody == null) + { + _rigidBody = GetComponent(); + } + + return _rigidBody; + } + } + + /// + /// Get the Rigidbody2D component, using a cached reference if possible. + /// + public Rigidbody2D CachedRigidBody2D + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_rigidbody2D == null) + { + _rigidbody2D = GetComponent(); + } + + return _rigidbody2D; + } + } + + /// + /// Get the GameObject this behaviour is attached to, using a cached reference if possible. + /// + public GameObject CachedGameObject + { + [DebuggerStepThrough] + [DebuggerNonUserCode] + get + { + if (_gameObject == null) + { + _gameObject = base.gameObject; + } + + return _gameObject; + } + } + + // Override existing getters for legacy usage + + // ReSharper disable InconsistentNaming + public new Transform transform + { + get { return CachedTransform; } + } + +#if !UNITY_5 && !UNITY_2017_1_OR_NEWER + + public new Collider collider + { + get { return CachedCollider; } + } + public new Collider2D collider2D + { + get { return CachedCollider2D; } + } + public new Rigidbody rigidbody + { + get { return CachedRigidBody; } + } + public new Rigidbody2D rigidbody2D + { + get { return CachedRigidBody2D; } + } + public new GameObject gameObject + { + get { return CachedGameObject; } + } + +#endif + + // ReSharper restore InconsistentNaming + + private Collider _collider; + private Transform _transform; + private Rigidbody _rigidBody; + private GameObject _gameObject; + private Rigidbody2D _rigidbody2D; + private Collider2D _collider2D; + + /// + /// Assert that the value is not null, disable the object and print a debug error message if it is. + /// + /// Object to check + /// Debug name to pass in + [DebuggerNonUserCode] + [DebuggerStepThrough] + protected void AssertNotNull(object value, string fieldName = null) + { + SRDebugUtil.AssertNotNull(value, fieldName, this); + } + + [DebuggerNonUserCode] + [DebuggerStepThrough] + protected void Assert(bool condition, string message = null) + { + SRDebugUtil.Assert(condition, message, this); + } + + /// + /// Assert that the value is not null, disable the object and print a debug error message if it is. + /// + /// Object to check + /// Debug name to pass in + /// True if object is not null + [Conditional("UNITY_EDITOR")] + [DebuggerNonUserCode] + [DebuggerStepThrough] + protected void EditorAssertNotNull(object value, string fieldName = null) + { + AssertNotNull(value, fieldName); + } + + [Conditional("UNITY_EDITOR")] + [DebuggerNonUserCode] + [DebuggerStepThrough] + protected void EditorAssert(bool condition, string message = null) + { + Assert(condition, message); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs.meta new file mode 100644 index 00000000..2d43b251 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a97a8611d5d683b4aa89a5054bc3774e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs new file mode 100644 index 00000000..9df2f83b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs @@ -0,0 +1,215 @@ +// ReSharper disable once RedundantUsingDirective +using System.Linq; + +namespace SRF +{ + using System; + using System.Collections.Generic; + using System.Reflection; + using Helpers; + using Service; + using UnityEngine; + + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field)] + public sealed class RequiredFieldAttribute : Attribute + { + private bool _autoCreate; + private bool _autoSearch; + private bool _editorOnly = true; + + public RequiredFieldAttribute(bool autoSearch) + { + AutoSearch = autoSearch; + } + + public RequiredFieldAttribute() {} + + public bool AutoSearch + { + get { return _autoSearch; } + set { _autoSearch = value; } + } + + public bool AutoCreate + { + get { return _autoCreate; } + set { _autoCreate = value; } + } + + [Obsolete] + public bool EditorOnly + { + get { return _editorOnly; } + set { _editorOnly = value; } + } + } + + /// + /// Add to a field to attempt to use SRServiceManager to get an instance of the field type + /// + [AttributeUsage(AttributeTargets.Field)] + public class ImportAttribute : Attribute + { + public readonly Type Service; + public ImportAttribute() {} + + public ImportAttribute(Type serviceType) + { + Service = serviceType; + } + } + + public abstract class SRMonoBehaviourEx : SRMonoBehaviour + { + private static Dictionary> _checkedFields; + + private static void CheckFields(SRMonoBehaviourEx instance, bool justSet = false) + { + if (_checkedFields == null) + { + _checkedFields = new Dictionary>(); + } + + var t = instance.GetType(); + + IList cache; + + if (!_checkedFields.TryGetValue(instance.GetType(), out cache)) + { + cache = ScanType(t); + + _checkedFields.Add(t, cache); + } + + PopulateObject(cache, instance, justSet); + } + + private static void PopulateObject(IList cache, SRMonoBehaviourEx instance, bool justSet) + { + for (var i = 0; i < cache.Count; i++) + { + var f = cache[i]; + + if (!EqualityComparer.Default.Equals(f.Field.GetValue(instance), null)) + { + continue; + } + + // If import is enabled, use SRServiceManager to import the reference + if (f.Import) + { + var t = f.ImportType ?? f.Field.FieldType; + + var service = SRServiceManager.GetService(t); + + if (service == null) + { + Debug.LogWarning("Field {0} import failed (Type {1})".Fmt(f.Field.Name, t)); + continue; + } + + f.Field.SetValue(instance, service); + + continue; + } + + // If autoset is enabled on field, try and find the component on the GameObject + + if (f.AutoSet) + { + var newValue = instance.GetComponent(f.Field.FieldType); + + if (!EqualityComparer.Default.Equals(newValue, null)) + { + f.Field.SetValue(instance, newValue); + continue; + } + } + + if (justSet) + { + continue; + } + + if (f.AutoCreate) + { + var newValue = instance.CachedGameObject.AddComponent(f.Field.FieldType); + f.Field.SetValue(instance, newValue); + } + + throw new UnassignedReferenceException( + "Field {0} is unassigned, but marked with RequiredFieldAttribute".Fmt(f.Field.Name)); + } + } + + private static List ScanType(Type t) + { + var cache = new List(); + + // Check for attribute added to the class + var globalAttr = SRReflection.GetAttribute(t); + +#if NETFX_CORE + var fields = t.GetTypeInfo().DeclaredFields.Where(f => !f.IsStatic); +#else + // Check each field for the attribute + var fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); +#endif + + foreach (var f in fields) + { + var requiredFieldAttribute = SRReflection.GetAttribute(f); + var importAttribute = SRReflection.GetAttribute(f); + + if (globalAttr == null && requiredFieldAttribute == null && importAttribute == null) + { + continue; // Early out if no attributes found. + } + + var info = new FieldInfo(); + info.Field = f; + + if (importAttribute != null) + { + info.Import = true; + info.ImportType = importAttribute.Service; + } + else if (requiredFieldAttribute != null) + { + info.AutoSet = requiredFieldAttribute.AutoSearch; + info.AutoCreate = requiredFieldAttribute.AutoCreate; + } + else + { + info.AutoSet = globalAttr.AutoSearch; + info.AutoCreate = globalAttr.AutoCreate; + } + + cache.Add(info); + } + + return cache; + } + + protected virtual void Awake() + { + CheckFields(this); + } + + protected virtual void Start() {} + protected virtual void Update() {} + protected virtual void FixedUpdate() {} + protected virtual void OnEnable() {} + protected virtual void OnDisable() {} + protected virtual void OnDestroy() {} + + private struct FieldInfo + { + public bool AutoCreate; + public bool AutoSet; + public System.Reflection.FieldInfo Field; + public bool Import; + public Type ImportType; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs.meta new file mode 100644 index 00000000..6a71c9e4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRMonoBehaviourEx.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82088ea802108344da1e919daa6881fd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs new file mode 100644 index 00000000..081d20cc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs @@ -0,0 +1,82 @@ +namespace SRF.Components +{ + using System; + using System.Diagnostics; + using UnityEngine; + using Debug = UnityEngine.Debug; + + /// + /// Inherit from this component to easily create a singleton gameobject. + /// + /// + public abstract class SRSingleton : SRMonoBehaviour where T : SRSingleton + { + private static T _instance; + + /// + /// Get the instance of this singleton. + /// ().Length == 2) + { + Destroy(gameObject); + } + else + { + Destroy(this); + } + + return; + } + + _instance = (T) this; + } + + // If no other monobehaviour request the instance in an awake function + // executing before this one, no need to search the object. + protected virtual void Awake() + { + Register(); + } + + protected virtual void OnEnable() + { + // In case of code-reload, this should restore the single instance + if (_instance == null) + { + Register(); + } + } + + // Make sure the instance isn't referenced anymore when the user quit, just in case. + private void OnApplicationQuit() + { + _instance = null; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs.meta new file mode 100644 index 00000000..15491ff6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Components/SRSingleton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca9e6e61f807f3442b520b02db3a48c7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs new file mode 100644 index 00000000..c3115797 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs @@ -0,0 +1,18 @@ +namespace SRF +{ + using System.Collections; + using UnityEngine; + + public static class Coroutines + { + public static IEnumerator WaitForSecondsRealTime(float time) + { + var endTime = Time.realtimeSinceStartup + time; + + while (Time.realtimeSinceStartup < endTime) + { + yield return null; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs.meta new file mode 100644 index 00000000..a76ff197 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Coroutines.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83ca528cafb0d2e40866729c49dc2d76 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions.meta new file mode 100644 index 00000000..655c16cd --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 5a242390cef216543a4fa08843e88004 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs new file mode 100644 index 00000000..a9e9312d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs @@ -0,0 +1,27 @@ +namespace SRF +{ + using UnityEngine; + + public static class SRFFloatExtensions + { + public static float Sqr(this float f) + { + return f*f; + } + + public static float SqrRt(this float f) + { + return Mathf.Sqrt(f); + } + + public static bool ApproxZero(this float f) + { + return Mathf.Approximately(0, f); + } + + public static bool Approx(this float f, float f2) + { + return Mathf.Approximately(f, f2); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs.meta new file mode 100644 index 00000000..64885149 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/FloatExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb221a6020786a841a6f7f1ea19a7eb7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs new file mode 100644 index 00000000..3a812b63 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs @@ -0,0 +1,100 @@ +namespace SRF +{ + using UnityEngine; + + public static class SRFGameObjectExtensions + { + public static T GetIComponent(this GameObject t) where T : class + { + return t.GetComponent(typeof (T)) as T; + } + + /// + /// Get the component T, or add it to the GameObject if none exists + /// + /// + /// + public static T GetComponentOrAdd(this GameObject obj) where T : Component + { + var t = obj.GetComponent(); + + if (t == null) + { + t = obj.AddComponent(); + } + + return t; + } + + /// + /// Removed component of type T if it exists on the GameObject + /// + /// + /// + public static void RemoveComponentIfExists(this GameObject obj) where T : Component + { + var t = obj.GetComponent(); + + if (t != null) + { + Object.Destroy(t); + } + } + + /// + /// Removed components of type T if it exists on the GameObject + /// + /// + /// + public static void RemoveComponentsIfExists(this GameObject obj) where T : Component + { + var t = obj.GetComponents(); + + for (var i = 0; i < t.Length; i++) + { + Object.Destroy(t[i]); + } + } + + /// + /// Set enabled property MonoBehaviour of type T if it exists + /// + /// + /// + /// + /// True if the component exists + public static bool EnableComponentIfExists(this GameObject obj, bool enable = true) where T : MonoBehaviour + { + var t = obj.GetComponent(); + + if (t == null) + { + return false; + } + + t.enabled = enable; + + return true; + } + + /// + /// Set the layer of a gameobject and all child objects + /// + /// + /// + public static void SetLayerRecursive(this GameObject o, int layer) + { + SetLayerInternal(o.transform, layer); + } + + private static void SetLayerInternal(Transform t, int layer) + { + t.gameObject.layer = layer; + + foreach (Transform o in t) + { + SetLayerInternal(o, layer); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs.meta new file mode 100644 index 00000000..bcd492b3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/GameObjectExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57a08f4d800e4384fac80b0ecf63a7a0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs new file mode 100644 index 00000000..819ad2ab --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs @@ -0,0 +1,47 @@ +namespace SRF +{ + using System; + using System.Collections.Generic; + + public static class SRFIListExtensions + { + public static T Random(this IList list) + { + if (list.Count == 0) + { + throw new IndexOutOfRangeException("List needs at least one entry to call Random()"); + } + + if (list.Count == 1) + { + return list[0]; + } + + return list[UnityEngine.Random.Range(0, list.Count)]; + } + + public static T RandomOrDefault(this IList list) + { + if (list.Count == 0) + { + return default(T); + } + + return list.Random(); + } + + public static T PopLast(this IList list) + { + if (list.Count == 0) + { + throw new InvalidOperationException(); + } + + var t = list[list.Count - 1]; + + list.RemoveAt(list.Count - 1); + + return t; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs.meta new file mode 100644 index 00000000..98381009 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/IListExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c196b9d1bba9e9e44939cf8776545577 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs new file mode 100644 index 00000000..555f4d92 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs @@ -0,0 +1,32 @@ + +#if NETFX_CORE + +using System; +using System.Reflection; + +namespace SRF +{ + + public static class NetFxExtensions + { + + + public static bool IsAssignableFrom(this Type @this, Type t) + { + + return @this.GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()); + + } + + public static bool IsInstanceOfType(this Type @this, object obj) + { + + return @this.IsAssignableFrom(obj.GetType()); + + } + + } + +} + +#endif diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs.meta new file mode 100644 index 00000000..478c07a2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/NetFxExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f503b1a2564101f4f96417c97debaaf5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs new file mode 100644 index 00000000..a694c83e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs @@ -0,0 +1,13 @@ +namespace SRF +{ + public static class SRFStringExtensions + { +#if UNITY_EDITOR + [JetBrains.Annotations.StringFormatMethod("formatString")] +#endif + public static string Fmt(this string formatString, params object[] args) + { + return string.Format(formatString, args); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs.meta new file mode 100644 index 00000000..5bdf68bf --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/StringExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71e45638ff7335744a6554752b778f39 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs new file mode 100644 index 00000000..d5eb3870 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs @@ -0,0 +1,91 @@ +namespace SRF +{ + using System.Collections.Generic; + using UnityEngine; + + public static class SRFTransformExtensions + { + public static IEnumerable GetChildren(this Transform t) + { + var i = 0; + + while (i < t.childCount) + { + yield return t.GetChild(i); + ++i; + } + } + + /// + /// Reset all local values on a transform to identity + /// + /// + public static void ResetLocal(this Transform t) + { + t.localPosition = Vector3.zero; + t.localRotation = Quaternion.identity; + t.localScale = Vector3.one; + } + + /// + /// Create an empty child object of this transform + /// + /// + /// + /// + public static GameObject CreateChild(this Transform t, string name) + { + var go = new GameObject(name); + go.transform.parent = t; + go.transform.ResetLocal(); + go.gameObject.layer = t.gameObject.layer; + + return go; + } + + /// + /// Set the parent of this transform, but maintain the localScale, localPosition, localRotation values. + /// + /// + /// + public static void SetParentMaintainLocals(this Transform t, Transform parent) + { + t.SetParent(parent, false); + } + + /// + /// Copy local position,rotation,scale from other transform + /// + /// + /// + public static void SetLocals(this Transform t, Transform from) + { + t.localPosition = from.localPosition; + t.localRotation = from.localRotation; + t.localScale = from.localScale; + } + + /// + /// Set position/rotation to from. Scale is unchanged + /// + /// + /// + public static void Match(this Transform t, Transform from) + { + t.position = from.position; + t.rotation = from.rotation; + } + + /// + /// Destroy all child game objects + /// + /// + public static void DestroyChildren(this Transform t) + { + foreach (var child in t) + { + Object.Destroy(((Transform) child).gameObject); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs.meta new file mode 100644 index 00000000..8f37b866 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Extensions/TransformExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 891f8206d8bca304fbbf298c6a37648e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers.meta new file mode 100644 index 00000000..f07bb789 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 5354a62e7d1e47949b07ff9e9b123080 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs new file mode 100644 index 00000000..55548bf4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs @@ -0,0 +1,63 @@ +#if UNITY_EDITOR +using UnityEditor; + +#endif + +namespace SRF.Helpers +{ + using System.IO; + using UnityEngine; + + public static class AssetUtil + { +#if UNITY_EDITOR + + // This makes it easy to create, name and place unique new ScriptableObject asset files. + /// + /// + public static T CreateAsset() where T : ScriptableObject + { + var path = AssetDatabase.GetAssetPath(Selection.activeObject); + + if (path == "") + { + path = "Assets"; + } + else if (Path.GetExtension(path) != "") + { + path = path.Replace(Path.GetFileName(path), ""); + } + + return CreateAsset(path, "New " + typeof (T).Name); + } + + public static T CreateAsset(string path, string name) where T : ScriptableObject + { + if (string.IsNullOrEmpty(path)) + { + path = "Assets"; + } + + if (!name.EndsWith(".asset")) + { + name += ".asset"; + } + + var assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/" + name); + + var asset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(asset, assetPathAndName); + AssetDatabase.SaveAssets(); + + return asset; + } + + public static void SelectAssetInProjectView(Object asset) + { + EditorUtility.FocusProjectWindow(); + Selection.activeObject = asset; + } + +#endif + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs.meta new file mode 100644 index 00000000..091074f3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/AssetUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de28cc9633260c54a9ba062b7ad82e63 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs new file mode 100644 index 00000000..235b979d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs @@ -0,0 +1,64 @@ +namespace SRF +{ + using System; + using System.Collections.Generic; + using System.Linq; + using UnityEngine; + + public class Hierarchy + { + private static readonly char[] Seperator = {'/'}; + private static readonly Dictionary Cache = new Dictionary(); + + [Obsolete("Use static Get() instead")] + public Transform this[string key] + { + get { return Get(key); } + } + + /// + /// Pass in a path (e.g. /Test/Me/One) and get a transform with the hierarchy Test->Me->One. + /// Any Transforms required below this path will be auto-created. + /// This is a very slow method, so use only on initialisation. + /// + /// + /// + public static Transform Get(string key) + { + Transform t; + + // Check cache + if (Cache.TryGetValue(key, out t)) + { + return t; + } + + var find = GameObject.Find(key); + + if (find) + { + t = find.transform; + Cache.Add(key, t); + + return t; + } + + // Find container parent + var elements = key.Split(Seperator, StringSplitOptions.RemoveEmptyEntries); + + // Create new container + t = new GameObject(elements.Last()).transform; + Cache.Add(key, t); + + // If root + if (elements.Length == 1) + { + return t; + } + + t.parent = Get(string.Join("/", elements, 0, elements.Length - 1)); + + return t; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs.meta new file mode 100644 index 00000000..cfec593a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/Hierarchy.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ecf392c4c08d14543b90300c27422d60 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs new file mode 100644 index 00000000..0a636201 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs @@ -0,0 +1,28 @@ +namespace SRF.Helpers +{ + using System.Reflection; + + public class MethodReference + { + private MethodInfo _method; + private object _target; + + public MethodReference(object target, MethodInfo method) + { + SRDebugUtil.AssertNotNull(target); + + _target = target; + _method = method; + } + + public string MethodName + { + get { return _method.Name; } + } + + public object Invoke(object[] parameters) + { + return _method.Invoke(_target, parameters); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs.meta new file mode 100644 index 00000000..9f4d81d3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/MethodReference.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ed7f46979ff4b3418a838a6b940a9ab +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs new file mode 100644 index 00000000..0005ecbb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs @@ -0,0 +1,83 @@ +namespace SRF.Helpers +{ + using System; + using System.Linq; + using System.Reflection; + + public class PropertyReference + { + private readonly PropertyInfo _property; + private readonly object _target; + + public PropertyReference(object target, PropertyInfo property) + { + SRDebugUtil.AssertNotNull(target); + + _target = target; + _property = property; + } + + public string PropertyName + { + get { return _property.Name; } + } + + public Type PropertyType + { + get { return _property.PropertyType; } + } + + public bool CanRead + { + get + { +#if NETFX_CORE + return _property.GetMethod != null && _property.GetMethod.IsPublic; +#else + return _property.GetGetMethod() != null; +#endif + } + } + + public bool CanWrite + { + get + { +#if NETFX_CORE + return _property.SetMethod != null && _property.SetMethod.IsPublic; +#else + return _property.GetSetMethod() != null; +#endif + } + } + + public object GetValue() + { + if (_property.CanRead) + { + return SRReflection.GetPropertyValue(_target, _property); + } + + return null; + } + + public void SetValue(object value) + { + if (_property.CanWrite) + { + SRReflection.SetPropertyValue(_target, _property, value); + } + else + { + throw new InvalidOperationException("Can not write to property"); + } + } + + public T GetAttribute() where T : Attribute + { + var attributes = _property.GetCustomAttributes(typeof (T), true).FirstOrDefault(); + + return attributes as T; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs.meta new file mode 100644 index 00000000..35e516c8 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/PropertyReference.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dedbd84f93f7d4c4e86f2d3a238916c4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs new file mode 100644 index 00000000..726e0d2c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using SRF; +using UnityEngine; +using Debug = UnityEngine.Debug; + +public static class SRDebugUtil +{ + public const int LineBufferCount = 512; + public static bool IsFixedUpdate { get; set; } + + [DebuggerNonUserCode] + [DebuggerStepThrough] + public static void AssertNotNull(object value, string message = null, MonoBehaviour instance = null) + { + if (!EqualityComparer.Default.Equals(value, null)) + { + return; + } + + message = message != null ? "NotNullAssert Failed: {0}".Fmt(message) : "Assert Failed"; + + Debug.LogError(message, instance); + + if (instance != null) + { + instance.enabled = false; + } + + throw new NullReferenceException(message); + } + + [DebuggerNonUserCode] + [DebuggerStepThrough] + public static void Assert(bool condition, string message = null, MonoBehaviour instance = null) + { + if (condition) + { + return; + } + + message = message != null ? "Assert Failed: {0}".Fmt(message) : "Assert Failed"; + + Debug.LogError(message, instance); + throw new Exception(message); + } + + [Conditional("UNITY_EDITOR")] + [DebuggerNonUserCode] + [DebuggerStepThrough] + public static void EditorAssertNotNull(object value, string message = null, MonoBehaviour instance = null) + { + AssertNotNull(value, message, instance); + } + + [Conditional("UNITY_EDITOR")] + [DebuggerNonUserCode] + [DebuggerStepThrough] + public static void EditorAssert(bool condition, string message = null, MonoBehaviour instance = null) + { + Assert(condition, message, instance); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs.meta new file mode 100644 index 00000000..347da7a3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRDebugUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f74f500c46d2b60419e95b8bd0cb87b6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs new file mode 100644 index 00000000..09ccb7f9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs @@ -0,0 +1,73 @@ +using System.IO; +using System.Threading; + +public static class SRFileUtil +{ +#if !UNITY_WEBPLAYER && !NETFX_CORE + + public static void DeleteDirectory(string path) + { + try + { + Directory.Delete(path, true); + } + catch (IOException) + { + Thread.Sleep(0); + Directory.Delete(path, true); + } + } + +#endif + + /// + /// Returns the human-readable file size for an arbitrary, 64-bit file size + /// The default format is "0.### XB", e.g. "4.2 KB" or "1.434 GB" + /// + /// + /// http://stackoverflow.com/a/281684/147003 + /// + public static string GetBytesReadable(long i) + { + var sign = (i < 0 ? "-" : ""); + double readable = (i < 0 ? -i : i); + string suffix; + if (i >= 0x1000000000000000) // Exabyte + { + suffix = "EB"; + readable = i >> 50; + } + else if (i >= 0x4000000000000) // Petabyte + { + suffix = "PB"; + readable = i >> 40; + } + else if (i >= 0x10000000000) // Terabyte + { + suffix = "TB"; + readable = i >> 30; + } + else if (i >= 0x40000000) // Gigabyte + { + suffix = "GB"; + readable = i >> 20; + } + else if (i >= 0x100000) // Megabyte + { + suffix = "MB"; + readable = i >> 10; + } + else if (i >= 0x400) // Kilobyte + { + suffix = "KB"; + readable = i; + } + else + { + return i.ToString(sign + "0 B"); // Byte + } + readable /= 1024; + + return sign + readable.ToString("0.### ") + suffix; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs.meta new file mode 100644 index 00000000..0b1add25 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRFileUtil.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c5dd64a3a7854e4f948daaec7d318fa +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs new file mode 100644 index 00000000..8a31885b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +public static class SRInstantiate +{ + public static T Instantiate(T prefab) where T : Component + { + return (T) Object.Instantiate(prefab); + } + + public static GameObject Instantiate(GameObject prefab) + { + return (GameObject) Object.Instantiate(prefab); + } + + public static T Instantiate(T prefab, Vector3 position, Quaternion rotation) where T : Component + { + return (T) Object.Instantiate(prefab, position, rotation); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs.meta new file mode 100644 index 00000000..2e1edb00 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRInstantiate.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b2502558f76a9a4b9d3fd4d26d4d2a6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs new file mode 100644 index 00000000..37f3a71e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs @@ -0,0 +1,788 @@ +using UnityEngine; + +public static partial class SRMath +{ + /** + * + * These tweening functions taken from https://wpf-animation.googlecode.com/svn/trunk/src/WPF/Animation/PennerDoubleAnimation.cs + * Licensed under the new BSD License + * + * @author Darren David darren-code@lookorfeel.com + * @version 1.0 + * + * Credit/Thanks: + * Robert Penner - The easing equations we all know and love + * (http://robertpenner.com/easing/) [See License.txt for license info] + * + * Lee Brimelow - initial port of Penner's equations to WPF + * (http://thewpfblog.com/?p=12) + * + * Zeh Fernando - additional equations (out/in) from + * caurina.transitions.Tweener (http://code.google.com/p/tweener/) + * [See License.txt for license info] + * + */ + + private static class TweenFunctions + { + #region Equations + + #region Linear + + /// + /// Easing equation function for a simple linear tweening, with no easing. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float Linear(float t, float b, float c, float d) + { + return c*t/d + b; + } + + #endregion + + #region Expo + + /// + /// Easing equation function for an exponential (2^t) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ExpoEaseOut(float t, float b, float c, float d) + { + return (t == d) ? b + c : c*(-Mathf.Pow(2, -10*t/d) + 1) + b; + } + + /// + /// Easing equation function for an exponential (2^t) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ExpoEaseIn(float t, float b, float c, float d) + { + return (t == 0) ? b : c*Mathf.Pow(2, 10*(t/d - 1)) + b; + } + + /// + /// Easing equation function for an exponential (2^t) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ExpoEaseInOut(float t, float b, float c, float d) + { + if (t == 0) + { + return b; + } + + if (t == d) + { + return b + c; + } + + if ((t /= d/2) < 1) + { + return c/2*Mathf.Pow(2, 10*(t - 1)) + b; + } + + return c/2*(-Mathf.Pow(2, -10*--t) + 2) + b; + } + + /// + /// Easing equation function for an exponential (2^t) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ExpoEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return ExpoEaseOut(t*2, b, c/2, d); + } + + return ExpoEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Circular + + /// + /// Easing equation function for a circular (sqrt(1-t^2)) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CircEaseOut(float t, float b, float c, float d) + { + return c*Mathf.Sqrt(1 - (t = t/d - 1)*t) + b; + } + + /// + /// Easing equation function for a circular (sqrt(1-t^2)) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CircEaseIn(float t, float b, float c, float d) + { + return -c*(Mathf.Sqrt(1 - (t /= d)*t) - 1) + b; + } + + /// + /// Easing equation function for a circular (sqrt(1-t^2)) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CircEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return -c/2*(Mathf.Sqrt(1 - t*t) - 1) + b; + } + + return c/2*(Mathf.Sqrt(1 - (t -= 2)*t) + 1) + b; + } + + /// + /// Easing equation function for a circular (sqrt(1-t^2)) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CircEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return CircEaseOut(t*2, b, c/2, d); + } + + return CircEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Quad + + /// + /// Easing equation function for a quadratic (t^2) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuadEaseOut(float t, float b, float c, float d) + { + return -c*(t /= d)*(t - 2) + b; + } + + /// + /// Easing equation function for a quadratic (t^2) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuadEaseIn(float t, float b, float c, float d) + { + return c*(t /= d)*t + b; + } + + /// + /// Easing equation function for a quadratic (t^2) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuadEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return c/2*t*t + b; + } + + return -c/2*((--t)*(t - 2) - 1) + b; + } + + /// + /// Easing equation function for a quadratic (t^2) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuadEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return QuadEaseOut(t*2, b, c/2, d); + } + + return QuadEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Sine + + /// + /// Easing equation function for a sinusoidal (sin(t)) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float SineEaseOut(float t, float b, float c, float d) + { + return c*Mathf.Sin(t/d*(Mathf.PI/2)) + b; + } + + /// + /// Easing equation function for a sinusoidal (sin(t)) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float SineEaseIn(float t, float b, float c, float d) + { + return -c*Mathf.Cos(t/d*(Mathf.PI/2)) + c + b; + } + + /// + /// Easing equation function for a sinusoidal (sin(t)) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float SineEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return c/2*(Mathf.Sin(Mathf.PI*t/2)) + b; + } + + return -c/2*(Mathf.Cos(Mathf.PI*--t/2) - 2) + b; + } + + /// + /// Easing equation function for a sinusoidal (sin(t)) easing in/out: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float SineEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return SineEaseOut(t*2, b, c/2, d); + } + + return SineEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Cubic + + /// + /// Easing equation function for a cubic (t^3) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CubicEaseOut(float t, float b, float c, float d) + { + return c*((t = t/d - 1)*t*t + 1) + b; + } + + /// + /// Easing equation function for a cubic (t^3) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CubicEaseIn(float t, float b, float c, float d) + { + return c*(t /= d)*t*t + b; + } + + /// + /// Easing equation function for a cubic (t^3) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CubicEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return c/2*t*t*t + b; + } + + return c/2*((t -= 2)*t*t + 2) + b; + } + + /// + /// Easing equation function for a cubic (t^3) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float CubicEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return CubicEaseOut(t*2, b, c/2, d); + } + + return CubicEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Quartic + + /// + /// Easing equation function for a quartic (t^4) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuartEaseOut(float t, float b, float c, float d) + { + return -c*((t = t/d - 1)*t*t*t - 1) + b; + } + + /// + /// Easing equation function for a quartic (t^4) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuartEaseIn(float t, float b, float c, float d) + { + return c*(t /= d)*t*t*t + b; + } + + /// + /// Easing equation function for a quartic (t^4) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuartEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return c/2*t*t*t*t + b; + } + + return -c/2*((t -= 2)*t*t*t - 2) + b; + } + + /// + /// Easing equation function for a quartic (t^4) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuartEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return QuartEaseOut(t*2, b, c/2, d); + } + + return QuartEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Quintic + + /// + /// Easing equation function for a quintic (t^5) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuintEaseOut(float t, float b, float c, float d) + { + return c*((t = t/d - 1)*t*t*t*t + 1) + b; + } + + /// + /// Easing equation function for a quintic (t^5) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuintEaseIn(float t, float b, float c, float d) + { + return c*(t /= d)*t*t*t*t + b; + } + + /// + /// Easing equation function for a quintic (t^5) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuintEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) < 1) + { + return c/2*t*t*t*t*t + b; + } + return c/2*((t -= 2)*t*t*t*t + 2) + b; + } + + /// + /// Easing equation function for a quintic (t^5) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float QuintEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return QuintEaseOut(t*2, b, c/2, d); + } + return QuintEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Elastic + + /// + /// Easing equation function for an elastic (exponentially decaying sine wave) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ElasticEaseOut(float t, float b, float c, float d) + { + if ((t /= d) == 1) + { + return b + c; + } + + var p = d*.3f; + var s = p/4; + + return (c*Mathf.Pow(2, -10*t)*Mathf.Sin((t*d - s)*(2*Mathf.PI)/p) + c + b); + } + + /// + /// Easing equation function for an elastic (exponentially decaying sine wave) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ElasticEaseIn(float t, float b, float c, float d) + { + if ((t /= d) == 1) + { + return b + c; + } + + var p = d*.3f; + var s = p/4; + + return -(c*Mathf.Pow(2, 10*(t -= 1))*Mathf.Sin((t*d - s)*(2*Mathf.PI)/p)) + b; + } + + /// + /// Easing equation function for an elastic (exponentially decaying sine wave) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ElasticEaseInOut(float t, float b, float c, float d) + { + if ((t /= d/2) == 2) + { + return b + c; + } + + var p = d*(.3f*1.5f); + var s = p/4; + + if (t < 1) + { + return -.5f*(c*Mathf.Pow(2, 10*(t -= 1))*Mathf.Sin((t*d - s)*(2*Mathf.PI)/p)) + b; + } + return c*Mathf.Pow(2, -10*(t -= 1))*Mathf.Sin((t*d - s)*(2*Mathf.PI)/p)*.5f + c + b; + } + + /// + /// Easing equation function for an elastic (exponentially decaying sine wave) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float ElasticEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return ElasticEaseOut(t*2, b, c/2, d); + } + return ElasticEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Bounce + + /// + /// Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BounceEaseOut(float t, float b, float c, float d) + { + if ((t /= d) < (1/2.75f)) + { + return c*(7.5625f*t*t) + b; + } + if (t < (2/2.75)) + { + return c*(7.5625f*(t -= (1.5f/2.75f))*t + .75f) + b; + } + if (t < (2.5/2.75)) + { + return c*(7.5625f*(t -= (2.25f/2.75f))*t + .9375f) + b; + } + return c*(7.5625f*(t -= (2.625f/2.75f))*t + .984375f) + b; + } + + /// + /// Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BounceEaseIn(float t, float b, float c, float d) + { + return c - BounceEaseOut(d - t, 0, c, d) + b; + } + + /// + /// Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BounceEaseInOut(float t, float b, float c, float d) + { + if (t < d/2) + { + return BounceEaseIn(t*2, 0, c, d)*.5f + b; + } + return BounceEaseOut(t*2 - d, 0, c, d)*.5f + c*.5f + b; + } + + /// + /// Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BounceEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return BounceEaseOut(t*2, b, c/2, d); + } + return BounceEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #region Back + + /// + /// Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out: + /// decelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BackEaseOut(float t, float b, float c, float d) + { + return c*((t = t/d - 1)*t*((1.70158f + 1)*t + 1.70158f) + 1) + b; + } + + /// + /// Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in: + /// accelerating from zero velocity. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BackEaseIn(float t, float b, float c, float d) + { + return c*(t /= d)*t*((1.70158f + 1)*t - 1.70158f) + b; + } + + /// + /// Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in/out: + /// acceleration until halfway, then deceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BackEaseInOut(float t, float b, float c, float d) + { + var s = 1.70158f; + if ((t /= d/2) < 1) + { + return c/2*(t*t*(((s *= (1.525f)) + 1)*t - s)) + b; + } + return c/2*((t -= 2)*t*(((s *= (1.525f)) + 1)*t + s) + 2) + b; + } + + /// + /// Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out/in: + /// deceleration until halfway, then acceleration. + /// + /// Current time in seconds. + /// Starting value. + /// Final value. + /// Duration of animation. + /// The correct value. + public static float BackEaseOutIn(float t, float b, float c, float d) + { + if (t < d/2) + { + return BackEaseOut(t*2, b, c/2, d); + } + return BackEaseIn((t*2) - d, b + c/2, c/2, d); + } + + #endregion + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs.meta new file mode 100644 index 00000000..261957a5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.Functions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c0be6d36a29af844fa2d7584d66b374c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs new file mode 100644 index 00000000..8f73c5b0 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs @@ -0,0 +1,209 @@ +using System; +using UnityEngine; + +public static partial class SRMath +{ + public enum EaseType + { + Linear, + QuadEaseOut, + QuadEaseIn, + QuadEaseInOut, + QuadEaseOutIn, + ExpoEaseOut, + ExpoEaseIn, + ExpoEaseInOut, + ExpoEaseOutIn, + CubicEaseOut, + CubicEaseIn, + CubicEaseInOut, + CubicEaseOutIn, + QuartEaseOut, + QuartEaseIn, + QuartEaseInOut, + QuartEaseOutIn, + QuintEaseOut, + QuintEaseIn, + QuintEaseInOut, + QuintEaseOutIn, + CircEaseOut, + CircEaseIn, + CircEaseInOut, + CircEaseOutIn, + SineEaseOut, + SineEaseIn, + SineEaseInOut, + SineEaseOutIn, + ElasticEaseOut, + ElasticEaseIn, + ElasticEaseInOut, + ElasticEaseOutIn, + BounceEaseOut, + BounceEaseIn, + BounceEaseInOut, + BounceEaseOutIn, + BackEaseOut, + BackEaseIn, + BackEaseInOut, + BackEaseOutIn + } + + public static float Ease(float from, float to, float t, EaseType type) + { + switch (type) + { + case EaseType.Linear: + return TweenFunctions.Linear(t, from, to, 1f); + case EaseType.QuadEaseOut: + return TweenFunctions.QuadEaseOut(t, from, to, 1f); + case EaseType.QuadEaseIn: + return TweenFunctions.QuadEaseIn(t, from, to, 1f); + case EaseType.QuadEaseInOut: + return TweenFunctions.QuadEaseInOut(t, from, to, 1f); + case EaseType.QuadEaseOutIn: + return TweenFunctions.QuadEaseOutIn(t, from, to, 1f); + case EaseType.ExpoEaseOut: + return TweenFunctions.ExpoEaseOut(t, from, to, 1f); + case EaseType.ExpoEaseIn: + return TweenFunctions.ExpoEaseIn(t, from, to, 1f); + case EaseType.ExpoEaseInOut: + return TweenFunctions.ExpoEaseInOut(t, from, to, 1f); + case EaseType.ExpoEaseOutIn: + return TweenFunctions.ExpoEaseOutIn(t, from, to, 1f); + case EaseType.CubicEaseOut: + return TweenFunctions.CubicEaseOut(t, from, to, 1f); + case EaseType.CubicEaseIn: + return TweenFunctions.CubicEaseIn(t, from, to, 1f); + case EaseType.CubicEaseInOut: + return TweenFunctions.CubicEaseInOut(t, from, to, 1f); + case EaseType.CubicEaseOutIn: + return TweenFunctions.CubicEaseOutIn(t, from, to, 1f); + case EaseType.QuartEaseOut: + return TweenFunctions.QuartEaseOut(t, from, to, 1f); + case EaseType.QuartEaseIn: + return TweenFunctions.QuartEaseIn(t, from, to, 1f); + case EaseType.QuartEaseInOut: + return TweenFunctions.QuartEaseInOut(t, from, to, 1f); + case EaseType.QuartEaseOutIn: + return TweenFunctions.QuartEaseOutIn(t, from, to, 1f); + case EaseType.QuintEaseOut: + return TweenFunctions.QuintEaseOut(t, from, to, 1f); + case EaseType.QuintEaseIn: + return TweenFunctions.QuintEaseIn(t, from, to, 1f); + case EaseType.QuintEaseInOut: + return TweenFunctions.QuintEaseInOut(t, from, to, 1f); + case EaseType.QuintEaseOutIn: + return TweenFunctions.QuintEaseOutIn(t, from, to, 1f); + case EaseType.CircEaseOut: + return TweenFunctions.CircEaseOut(t, from, to, 1f); + case EaseType.CircEaseIn: + return TweenFunctions.CircEaseIn(t, from, to, 1f); + case EaseType.CircEaseInOut: + return TweenFunctions.CircEaseInOut(t, from, to, 1f); + case EaseType.CircEaseOutIn: + return TweenFunctions.CircEaseOutIn(t, from, to, 1f); + case EaseType.SineEaseOut: + return TweenFunctions.SineEaseOut(t, from, to, 1f); + case EaseType.SineEaseIn: + return TweenFunctions.SineEaseIn(t, from, to, 1f); + case EaseType.SineEaseInOut: + return TweenFunctions.SineEaseInOut(t, from, to, 1f); + case EaseType.SineEaseOutIn: + return TweenFunctions.SineEaseOutIn(t, from, to, 1f); + case EaseType.ElasticEaseOut: + return TweenFunctions.ElasticEaseOut(t, from, to, 1f); + case EaseType.ElasticEaseIn: + return TweenFunctions.ElasticEaseIn(t, from, to, 1f); + case EaseType.ElasticEaseInOut: + return TweenFunctions.ElasticEaseInOut(t, from, to, 1f); + case EaseType.ElasticEaseOutIn: + return TweenFunctions.ElasticEaseOutIn(t, from, to, 1f); + case EaseType.BounceEaseOut: + return TweenFunctions.BounceEaseOut(t, from, to, 1f); + case EaseType.BounceEaseIn: + return TweenFunctions.BounceEaseIn(t, from, to, 1f); + case EaseType.BounceEaseInOut: + return TweenFunctions.BounceEaseInOut(t, from, to, 1f); + case EaseType.BounceEaseOutIn: + return TweenFunctions.BounceEaseOutIn(t, from, to, 1f); + case EaseType.BackEaseOut: + return TweenFunctions.BackEaseOut(t, from, to, 1f); + case EaseType.BackEaseIn: + return TweenFunctions.BackEaseIn(t, from, to, 1f); + case EaseType.BackEaseInOut: + return TweenFunctions.BackEaseInOut(t, from, to, 1f); + case EaseType.BackEaseOutIn: + return TweenFunctions.BackEaseOutIn(t, from, to, 1f); + default: + throw new ArgumentOutOfRangeException("type"); + } + } + + /// + /// Calculate a framerate-independent value to lerp by + /// + /// + /// + /// + public static float SpringLerp(float strength, float deltaTime) + { + var ms = Mathf.RoundToInt(deltaTime*1000f); + var step = 0.001f*strength; + + var from = 0f; + var to = 1f; + + for (var i = 0; i < ms; i++) + { + from = Mathf.Lerp(from, to, step); + } + + return from; + } + + /// + /// A frame-rate independent way of doing Mathf.Lerp(from, to, Time.deltaTime * strength). Based on NGUIMath.SpringLerp + /// + /// Starting Value + /// End Value + /// How fast the spring will complete + /// Pass in Time.deltaTime or RealTime.deltaTime + /// Interpolated value + public static float SpringLerp(float from, float to, float strength, float deltaTime) + { + return Mathf.Lerp(from, to, SpringLerp(strength, deltaTime)); + } + + public static Vector3 SpringLerp(Vector3 from, Vector3 to, float strength, float deltaTime) + { + return Vector3.Lerp(from, to, SpringLerp(strength, deltaTime)); + } + + public static Quaternion SpringLerp(Quaternion from, Quaternion to, float strength, float deltaTime) + { + return Quaternion.Slerp(from, to, SpringLerp(strength, deltaTime)); + } + + /// + /// Smoothly clamp value between 0 and max, smoothing between min and max + /// + /// + /// + /// + /// + /// + public static float SmoothClamp(float value, float min, float max, float scrollMax, + EaseType easeType = EaseType.ExpoEaseOut) + { + if (value < min) + { + return value; + } + + var p = Mathf.Clamp01((value - min)/(scrollMax - min)); + + Debug.Log(p); + + return Mathf.Clamp(min + Mathf.Lerp(value - min, max, Ease(0, 1f, p, easeType)), 0, max); + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs.meta new file mode 100644 index 00000000..dfe9d950 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.Tweening.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 810c2c875ec6af345a04174ff5828880 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs new file mode 100644 index 00000000..8935786a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs @@ -0,0 +1,151 @@ +using System; +using UnityEngine; + +public static partial class SRMath +{ + /// + /// Lerp from one value to another, without clamping t to 0-1. + /// + /// + /// + /// + /// + public static float LerpUnclamped(float from, float to, float t) + { + return (1.0f - t)*from + t*to; + } + + /// + /// Lerp from one vector to another, without clamping t + /// + /// + /// + /// + /// + public static Vector3 LerpUnclamped(Vector3 from, Vector3 to, float t) + { + return new Vector3( + LerpUnclamped(from.x, to.x, t), + LerpUnclamped(from.y, to.y, t), + LerpUnclamped(from.z, to.z, t) + ); + } + + /// + /// Value from 0.0f-1.0f, 0 when facing fully away and 1.0f when facing fully towards + /// + public static float FacingNormalized(Vector3 dir1, Vector3 dir2) + { + dir1.Normalize(); + dir2.Normalize(); + + return Mathf.InverseLerp(-1, 1, Vector3.Dot(dir1, dir2)); + } + + /// + /// Reduces a given angle to a value between 180 and -180. + /// + /// The angle to reduce, in radians. + /// The new angle, in radians. + /// https://github.com/mono/MonoGame/blob/develop/MonoGame.Framework/MathHelper.cs + public static float WrapAngle(float angle) + { + if (angle <= -180f) + { + angle += 360f; + } + else + { + if (angle > 180f) + { + angle -= 360f; + } + } + return angle; + } + + /// + /// Return the angle closest to 'to' + /// + /// + /// + /// + /// + public static float NearestAngle(float to, float angle1, float angle2) + { + if (Mathf.Abs(Mathf.DeltaAngle(to, angle1)) > Mathf.Abs(Mathf.DeltaAngle(to, angle2))) + { + return angle2; + } + return angle1; + } + + /// + /// Wrap value to 0-max (non-inclusive) + /// + /// Max value (non-inclusive) + /// + /// Value wrapped from 0-max + public static int Wrap(int max, int value) + { + if (max < 0) + { + throw new ArgumentOutOfRangeException("max", "max must be greater than 0"); + } + + while (value < 0) + { + value += max; + } + + while (value >= max) + { + value -= max; + } + + return value; + } + + /// + /// Wrap value to 0-max (non-inclusive) + /// + /// Max value (non-inclusive) + /// + /// Value wrapped from 0-max + public static float Wrap(float max, float value) + { + while (value < 0) + { + value += max; + } + + while (value >= max) + { + value -= max; + } + + return value; + } + + public static float Average(float v1, float v2) + { + return (v1 + v2)*0.5f; + } + + /// + /// Return an angle in range -180, 180 based on direction vector + /// + /// + /// + public static float Angle(Vector2 direction) + { + var angle = Vector3.Angle(Vector3.up, direction); + + if (Vector3.Cross(direction, Vector3.up).z > 0f) + { + angle *= -1; + } + + return angle; + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs.meta new file mode 100644 index 00000000..6449bff9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRMath.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc751da3d31975645847e0e4088ff560 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs new file mode 100644 index 00000000..07d08552 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs @@ -0,0 +1,46 @@ +namespace SRF.Helpers +{ + using System; + using System.Reflection; + + public static class SRReflection + { + public static void SetPropertyValue(object obj, PropertyInfo p, object value) + { +#if NETFX_CORE + p.SetValue(obj, value, null); +#else + p.GetSetMethod().Invoke(obj, new[] {value}); +#endif + } + + public static object GetPropertyValue(object obj, PropertyInfo p) + { +#if NETFX_CORE + return p.GetValue(obj, null); +#else + return p.GetGetMethod().Invoke(obj, null); +#endif + } + + public static T GetAttribute(MemberInfo t) where T : Attribute + { +#if !NETFX_CORE + return Attribute.GetCustomAttribute(t, typeof (T)) as T; +#else + return t.GetCustomAttribute(typeof (T), true) as T; +#endif + } + +#if NETFX_CORE + + public static T GetAttribute(Type t) where T : Attribute + { + + return GetAttribute(t.GetTypeInfo()); + + } + +#endif + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs.meta new file mode 100644 index 00000000..83d4b0de --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Helpers/SRReflection.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6aaf1b857713dd44a955633b6458f1c2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service.meta new file mode 100644 index 00000000..8b55ccd3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 9107076f77b9a344d8c00028a350b6fb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs new file mode 100644 index 00000000..73cfe1e6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs @@ -0,0 +1,39 @@ +using UnityEngine.Scripting; + +namespace SRF.Service +{ + using System; + + [AttributeUsage(AttributeTargets.Class)] + public sealed class ServiceAttribute : PreserveAttribute + { + public ServiceAttribute(Type serviceType) + { + ServiceType = serviceType; + } + + public Type ServiceType { get; private set; } + } + + [AttributeUsage(AttributeTargets.Method)] + public sealed class ServiceSelectorAttribute : PreserveAttribute + { + public ServiceSelectorAttribute(Type serviceType) + { + ServiceType = serviceType; + } + + public Type ServiceType { get; private set; } + } + + [AttributeUsage(AttributeTargets.Method)] + public sealed class ServiceConstructorAttribute : PreserveAttribute + { + public ServiceConstructorAttribute(Type serviceType) + { + ServiceType = serviceType; + } + + public Type ServiceType { get; private set; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs.meta new file mode 100644 index 00000000..2cde2f19 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/Attributes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 901f51b194db73d479d84ae26519fc20 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs new file mode 100644 index 00000000..6047d09e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs @@ -0,0 +1,7 @@ +namespace SRF.Service +{ + public interface IAsyncService + { + bool IsLoaded { get; } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs.meta new file mode 100644 index 00000000..35aa3bc6 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/IAsyncService.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08e9b59ff0ffb22488411ef5134ee325 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs new file mode 100644 index 00000000..2a7a73e5 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs @@ -0,0 +1,91 @@ +//#define ENABLE_LOGGING + +namespace SRF.Service +{ + using System; + using System.Collections; + using System.Diagnostics; + using UnityEngine; + using Debug = UnityEngine.Debug; + using Object = UnityEngine.Object; + + /// + /// A service which has async-loading dependencies + /// + /// + public abstract class SRDependencyServiceBase : SRServiceBase, IAsyncService where T : class + { + private bool _isLoaded; + protected abstract Type[] Dependencies { get; } + + public bool IsLoaded + { + get { return _isLoaded; } + } + + [Conditional("ENABLE_LOGGING")] + private void Log(string msg, Object target) + { +//#if ENABLE_LOGGING + Debug.Log(msg, target); +//#endif + } + + protected override void Start() + { + base.Start(); + + StartCoroutine(LoadDependencies()); + } + + /// + /// Invoked once all dependencies are loaded + /// + protected virtual void OnLoaded() {} + + private IEnumerator LoadDependencies() + { + SRServiceManager.LoadingCount++; + + Log("[Service] Loading service ({0})".Fmt(GetType().Name), this); + + foreach (var d in Dependencies) + { + var hasService = SRServiceManager.HasService(d); + + Log("[Service] Resolving Service ({0}) HasService: {1}".Fmt(d.Name, hasService), this); + + if (hasService) + { + continue; + } + + var service = SRServiceManager.GetService(d); + + if (service == null) + { + Debug.LogError("[Service] Could not resolve dependency ({0})".Fmt(d.Name)); + enabled = false; + yield break; + } + + var a = service as IAsyncService; + + if (a != null) + { + while (!a.IsLoaded) + { + yield return new WaitForEndOfFrame(); + } + } + } + + Log("[Service] Loading service ({0}) complete.".Fmt(GetType().Name), this); + + _isLoaded = true; + SRServiceManager.LoadingCount--; + + OnLoaded(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs.meta new file mode 100644 index 00000000..701119ff --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRDependencyServiceBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c5aaa1711d009f48a19f2db87d71b82 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs new file mode 100644 index 00000000..7c53996d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs @@ -0,0 +1,128 @@ +//#define ENABLE_LOGGING + +namespace SRF.Service +{ + using System.Collections; + using System.Diagnostics; + using UnityEngine; + using Debug = UnityEngine.Debug; + + public abstract class SRSceneServiceBase : SRServiceBase, IAsyncService + where T : class + where TImpl : Component + { + private TImpl _rootObject; + + /// + /// Name of the scene this service's contents are within + /// + protected abstract string SceneName { get; } + + /// + /// Scene contents root object + /// + protected TImpl RootObject + { + get { return _rootObject; } + } + + public bool IsLoaded + { + get { return _rootObject != null; } + } + + [Conditional("ENABLE_LOGGING")] + private void Log(string msg, Object target) + { + //#if ENABLE_LOGGING + Debug.Log(msg, target); + //#endif + } + + protected override void Start() + { + base.Start(); + + StartCoroutine(LoadCoroutine()); + } + + protected override void OnDestroy() + { + if (IsLoaded) + { + Destroy(_rootObject.gameObject); + } + + base.OnDestroy(); + } + + protected virtual void OnLoaded() {} + + private IEnumerator LoadCoroutine() + { + if (_rootObject != null) + { + yield break; + } + + SRServiceManager.LoadingCount++; +#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + if (Application.loadedLevelName == SceneName) +#else + if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(SceneName).isLoaded) +#endif + { + Log("[Service] Already in service scene {0}. Searching for root object...".Fmt(SceneName), this); + } + else + { + Log("[Service] Loading scene ({0})".Fmt(SceneName), this); + +#if UNITY_PRO_LICENSE || UNITY_5 || UNITY_5_3_OR_NEWER +#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + yield return Application.LoadLevelAdditiveAsync(SceneName); +#else + yield return UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(SceneName, UnityEngine.SceneManagement.LoadSceneMode.Additive); +#endif +#else + Application.LoadLevelAdditive(SceneName); + yield return new WaitForEndOfFrame(); +#endif + + Log("[Service] Scene loaded. Searching for root object...", this); + } + + var go = GameObject.Find(SceneName); + + if (go == null) + { + goto Error; + } + + var timpl = go.GetComponent(); + + if (timpl == null) + { + goto Error; + } + + _rootObject = timpl; + _rootObject.transform.parent = CachedTransform; + + DontDestroyOnLoad(go); + + Debug.Log("[Service] Loading {0} complete. (Scene: {1})".Fmt(GetType().Name, SceneName), this); + SRServiceManager.LoadingCount--; + + OnLoaded(); + + yield break; + + Error: + + SRServiceManager.LoadingCount--; + Debug.LogError("[Service] Root object ({0}) not found".Fmt(SceneName), this); + enabled = false; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs.meta new file mode 100644 index 00000000..56864357 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRSceneServiceBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff0dcbb555990d24e9e3055e77395656 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs new file mode 100644 index 00000000..c0d00af3 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs @@ -0,0 +1,17 @@ +namespace SRF.Service +{ + public abstract class SRServiceBase : SRMonoBehaviourEx where T : class + { + protected override void Awake() + { + base.Awake(); + SRServiceManager.RegisterService(this); + } + + protected override void OnDestroy() + { + base.OnDestroy(); + SRServiceManager.UnRegisterService(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs.meta new file mode 100644 index 00000000..f8c2d41c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4f48d5ad0a809349bd5e46160a824d3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs new file mode 100644 index 00000000..9db59a7d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs @@ -0,0 +1,498 @@ +// Disable unreachable code warning caused by DEBUG +#pragma warning disable 0162 + +namespace SRF.Service +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + using Components; + using Helpers; + using Internal; + using UnityEngine; + using Object = UnityEngine.Object; + + [AddComponentMenu(ComponentMenuPaths.SRServiceManager)] + public class SRServiceManager : SRAutoSingleton + { +#if SRDEBUG + public const bool EnableLogging = true; +#else + public const bool EnableLogging = false; +#endif + +#if (!UNITY_2017 && !UNITY_2018 && !UNITY_2019) || UNITY_2019_3_OR_NEWER + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] + public static void RuntimeInitialize() + { + // To handle entering play mode without a domain reload, need to reset the state of the service manager. + _hasQuit = false; + } +#endif + + /// + /// Register the assembly that contains type with the service manager. + /// + /// + public static void RegisterAssembly() + { +#if NETFX_CORE + var assembly = typeof(TType).GetTypeInfo().Assembly; +#else + var assembly = typeof(TType).Assembly; +#endif + + if (_assemblies.Contains(assembly)) + { + return; + } + + _assemblies.Add(assembly); + } + + /// + /// Is there a service loading? + /// + public static bool IsLoading + { + get { return LoadingCount > 0; } + } + + public static int LoadingCount = 0; + + public static T GetService() where T : class + { + var s = GetServiceInternal(typeof(T)) as T; + + if (s == null && (!_hasQuit || EnableLogging)) + { + Debug.LogWarning("Service {0} not found. (HasQuit: {1})".Fmt(typeof(T).Name, _hasQuit)); + } + + return s; + } + + public static object GetService(Type t) + { + var s = GetServiceInternal(t); + + if (s == null && (!_hasQuit || EnableLogging)) + { + Debug.LogWarning("Service {0} not found. (HasQuit: {1})".Fmt(t.Name, _hasQuit)); + } + + return s; + } + + private static object GetServiceInternal(Type t) + { + if (_hasQuit || !Application.isPlaying) + { + return null; + } + + var services = Instance._services; + + for (var i = 0; i < services.Count; i++) + { + var s = services[i]; + + if (t.IsAssignableFrom(s.Type)) + { + if (s.Object == null) + { + UnRegisterService(t); + break; + } + + return s.Object; + } + } + + return Instance.AutoCreateService(t); + } + + public static bool HasService() where T : class + { + return HasService(typeof(T)); + } + + public static bool HasService(Type t) + { + if (_hasQuit || !Application.isPlaying) + { + return false; + } + + var services = Instance._services; + + for (var i = 0; i < services.Count; i++) + { + var s = services[i]; + + if (t.IsAssignableFrom(s.Type)) + { + return s.Object != null; + } + } + + return false; + } + + public static void RegisterService(object service) where T : class + { + RegisterService(typeof(T), service); + } + + private static void RegisterService(Type t, object service) + { + if (_hasQuit) + { + return; + } + + if (HasService(t)) + { + if (GetServiceInternal(t) == service) + { + return; + } + + throw new Exception("Service already registered for type " + t.Name); + } + + UnRegisterService(t); + + if (!t.IsInstanceOfType(service)) + { + throw new ArgumentException("service {0} must be assignable from type {1}".Fmt(service.GetType(), t)); + } + + Instance._services.Add(new Service { + Object = service, + Type = t + }); + } + + public static void UnRegisterService() where T : class + { + UnRegisterService(typeof(T)); + } + + private static void UnRegisterService(Type t) + { + if (_hasQuit || !HasInstance) + { + return; + } + + if (!HasService(t)) + { + return; + } + + var services = Instance._services; + + for (var i = services.Count - 1; i >= 0; i--) + { + var s = services[i]; + + if (s.Type == t) + { + services.RemoveAt(i); + } + } + } + + [Serializable] + private class Service + { + public object Object; + public Type Type; + } + + [Serializable] + private class ServiceStub + { + public Func Constructor; + public Type InterfaceType; + public Func Selector; + public Type Type; + + public override string ToString() + { + var s = InterfaceType.Name + " ("; + + if (Type != null) + { + s += "Type: " + Type; + } + else if (Selector != null) + { + s += "Selector: " + Selector; + } + else if (Constructor != null) + { + s += "Constructor: " + Constructor; + } + + s += ")"; + + return s; + } + } + + private static readonly List _assemblies = new List(2); + + private readonly SRList _services = new SRList(); + + private List _serviceStubs; + + private static bool _hasQuit; + + protected override void Awake() + { + _hasQuit = false; + base.Awake(); + DontDestroyOnLoad(CachedGameObject); + + CachedGameObject.hideFlags = HideFlags.NotEditable; + } + + protected void UpdateStubs() + { + if (_serviceStubs != null) + { + return; + } + + RegisterAssembly(); + + _serviceStubs = new List(); + + var types = new List(); + + foreach (var assembly in _assemblies) + { + try + { +#if NETFX_CORE + types.AddRange(assembly.ExportedTypes); +#else + types.AddRange(assembly.GetExportedTypes()); +#endif + } + catch (Exception e) + { + Debug.LogError("[SRServiceManager] Error loading assembly {0}".Fmt(assembly.FullName), this); + Debug.LogException(e); + } + } + + foreach (var type in types) + { + ScanType(type); + } + + if (EnableLogging) + { + var serviceStrings = + _serviceStubs.Select(p => " {0}".Fmt(p)).ToArray(); + + Debug.Log("[SRServiceManager] Services Discovered: {0} \n {1}".Fmt(serviceStrings.Length, + string.Join("\n ", serviceStrings))); + } + } + + protected object AutoCreateService(Type t) + { + UpdateStubs(); + + foreach (var stub in _serviceStubs) + { + if (stub.InterfaceType != t) + { + continue; + } + + object service = null; + + if (stub.Constructor != null) + { + service = stub.Constructor(); + } + else + { + var serviceType = stub.Type; + + if (serviceType == null) + { + serviceType = stub.Selector(); + } + + service = DefaultServiceConstructor(t, serviceType); + } + + if (!HasService(t)) + { + RegisterService(t, service); + } + + if (EnableLogging) + { + Debug.Log("[SRServiceManager] Auto-created service: {0} ({1})".Fmt(stub.Type, stub.InterfaceType), + service as Object); + } + + return service; + } + + return null; + } + + protected void OnApplicationQuit() + { + _hasQuit = true; + } + + private static object DefaultServiceConstructor(Type serviceIntType, Type implType) + { + // If mono-behaviour based, create a gameobject for this service + if (typeof(MonoBehaviour).IsAssignableFrom(implType)) + { + var go = new GameObject("_S_" + serviceIntType.Name); + return go.AddComponent(implType); + } + + // If ScriptableObject based, create an instance + if (typeof(ScriptableObject).IsAssignableFrom(implType)) + { + var obj = ScriptableObject.CreateInstance(implType); + return obj; + } + + // If just a standard C# object, just create an instance + return Activator.CreateInstance(implType); + } + +#region Type Scanning + + private void ScanType(Type type) + { + var attribute = SRReflection.GetAttribute(type); + + if (attribute != null) + { + _serviceStubs.Add(new ServiceStub { + Type = type, + InterfaceType = attribute.ServiceType + }); + } + + ScanTypeForConstructors(type, _serviceStubs); + ScanTypeForSelectors(type, _serviceStubs); + } + + private static void ScanTypeForSelectors(Type t, List stubs) + { + var methods = GetStaticMethods(t); + + foreach (var method in methods) + { + var attrib = SRReflection.GetAttribute(method); + + if (attrib == null) + { + continue; + } + + if (method.ReturnType != typeof(Type)) + { + Debug.LogError("ServiceSelector must have return type of Type ({0}.{1}())".Fmt(t.Name, method.Name)); + continue; + } + + if (method.GetParameters().Length > 0) + { + Debug.LogError("ServiceSelector must have no parameters ({0}.{1}())".Fmt(t.Name, method.Name)); + continue; + } + + var stub = stubs.FirstOrDefault(p => p.InterfaceType == attrib.ServiceType); + + if (stub == null) + { + stub = new ServiceStub { + InterfaceType = attrib.ServiceType + }; + + stubs.Add(stub); + } + +#if NETFX_CORE + stub.Selector = (Func)method.CreateDelegate(typeof(Func)); +#else + stub.Selector = (Func)Delegate.CreateDelegate(typeof(Func), method); +#endif + } + } + + private static void ScanTypeForConstructors(Type t, List stubs) + { + var methods = GetStaticMethods(t); + + foreach (var method in methods) + { + var attrib = SRReflection.GetAttribute(method); + + if (attrib == null) + { + continue; + } + + if (method.ReturnType != attrib.ServiceType) + { + Debug.LogError("ServiceConstructor must have return type of {2} ({0}.{1}())".Fmt(t.Name, method.Name, + attrib.ServiceType)); + continue; + } + + if (method.GetParameters().Length > 0) + { + Debug.LogError("ServiceConstructor must have no parameters ({0}.{1}())".Fmt(t.Name, method.Name)); + continue; + } + + var stub = stubs.FirstOrDefault(p => p.InterfaceType == attrib.ServiceType); + + if (stub == null) + { + stub = new ServiceStub { + InterfaceType = attrib.ServiceType + }; + + stubs.Add(stub); + } + + var m = method; + stub.Constructor = () => m.Invoke(null, null); + } + } + +#endregion + +#region Reflection + + private static MethodInfo[] GetStaticMethods(Type t) + { +#if !NETFX_CORE + return t.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); +#else + return t.GetTypeInfo().DeclaredMethods.Where(p => p.IsStatic).ToArray(); +#endif + } + +#endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs.meta new file mode 100644 index 00000000..6c3aa1c7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/Service/SRServiceManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83920a42d6e0f814bacbc701ae8636a5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 16100 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI.meta new file mode 100644 index 00000000..2793ef36 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: ed6eb48a67380fe40a3864e012ce762d +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs new file mode 100644 index 00000000..10f70909 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs @@ -0,0 +1,145 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + [RequireComponent(typeof (RectTransform))] + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.ContentFitText)] + public class ContentFitText : UIBehaviour, ILayoutElement + { + public SRText CopySource; + public Vector2 Padding; + + public float minWidth + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetMinWidth(CopySource.rectTransform) + Padding.x; + } + } + + public float preferredWidth + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetPreferredWidth(CopySource.rectTransform) + Padding.x; + } + } + + public float flexibleWidth + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetFlexibleWidth(CopySource.rectTransform); + } + } + + public float minHeight + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform) + Padding.y; + } + } + + public float preferredHeight + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetPreferredHeight(CopySource.rectTransform) + Padding.y; + } + } + + public float flexibleHeight + { + get + { + if (CopySource == null) + { + return -1f; + } + return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform); + } + } + + public int layoutPriority + { + get { return 0; } + } + + public void CalculateLayoutInputHorizontal() + { + CopySource.CalculateLayoutInputHorizontal(); + } + + public void CalculateLayoutInputVertical() + { + CopySource.CalculateLayoutInputVertical(); + } + + protected override void OnEnable() + { + SetDirty(); + CopySource.LayoutDirty += CopySourceOnLayoutDirty; + } + + private void CopySourceOnLayoutDirty(SRText srText) + { + SetDirty(); + } + + protected override void OnTransformParentChanged() + { + SetDirty(); + } + + protected override void OnDisable() + { + CopySource.LayoutDirty -= CopySourceOnLayoutDirty; + SetDirty(); + } + + protected override void OnDidApplyAnimationProperties() + { + SetDirty(); + } + + protected override void OnBeforeTransformParentChanged() + { + SetDirty(); + } + + protected void SetDirty() + { + if (!IsActive()) + { + return; + } + + LayoutRebuilder.MarkLayoutForRebuild(transform as RectTransform); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs.meta new file mode 100644 index 00000000..5b2fb1f2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ContentFitText.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dced79525dbfa2b44b8d52b2cca6d745 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs new file mode 100644 index 00000000..f64fbf24 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs @@ -0,0 +1,95 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + /// + /// Copies the preferred size of another layout element (useful for a parent object basing its sizing from a child + /// element). + /// This does have very quirky behaviour, though. + /// TODO: Write custom editor for this to match layout element editor + /// + [RequireComponent(typeof (RectTransform))] + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.CopyLayoutElement)] + public class CopyLayoutElement : UIBehaviour, ILayoutElement + { + public bool CopyMinHeight; + public bool CopyMinWidth; + public bool CopyPreferredHeight; + public bool CopyPreferredWidth; + public RectTransform CopySource; + public float PaddingMinHeight; + public float PaddingMinWidth; + public float PaddingPreferredHeight; + public float PaddingPreferredWidth; + + public float preferredWidth + { + get + { + if (!CopyPreferredWidth || CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetPreferredWidth(CopySource) + PaddingPreferredWidth; + } + } + + public float preferredHeight + { + get + { + if (!CopyPreferredHeight || CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetPreferredHeight(CopySource) + PaddingPreferredHeight; + } + } + + public float minWidth + { + get + { + if (!CopyMinWidth || CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetMinWidth(CopySource) + PaddingMinWidth; + } + } + + public float minHeight + { + get + { + if (!CopyMinHeight || CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetMinHeight(CopySource) + PaddingMinHeight; + } + } + + public int layoutPriority + { + get { return 2; } + } + + public float flexibleHeight + { + get { return -1; } + } + + public float flexibleWidth + { + get { return -1; } + } + + public void CalculateLayoutInputHorizontal() {} + public void CalculateLayoutInputVertical() {} + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs.meta new file mode 100644 index 00000000..857a94bb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyLayoutElement.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 525a40520606ceb469b7494cb8ddef87 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs new file mode 100644 index 00000000..accf7835 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs @@ -0,0 +1,50 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.UI; + + /// + /// Copies the preferred size of another layout element (useful for a parent object basing its sizing from a child + /// element). + /// This does have very quirky behaviour, though. + /// + [RequireComponent(typeof (RectTransform))] + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.CopyPreferredSize)] + public class CopyPreferredSize : LayoutElement + { + public RectTransform CopySource; + public float PaddingHeight; + public float PaddingWidth; + + public override float preferredWidth + { + get + { + if (CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetPreferredWidth(CopySource) + PaddingWidth; + } + } + + public override float preferredHeight + { + get + { + if (CopySource == null || !IsActive()) + { + return -1f; + } + return LayoutUtility.GetPreferredHeight(CopySource) + PaddingHeight; + } + } + + public override int layoutPriority + { + get { return 2; } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs.meta new file mode 100644 index 00000000..f15bf25c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopyPreferredSize.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32609112f4257a740aa4b920a8556d24 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs new file mode 100644 index 00000000..0e97d482 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs @@ -0,0 +1,76 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.UI; + + /// + /// Copies the preferred size of another layout element (useful for a parent object basing its sizing from a child + /// element). + /// This does have very quirky behaviour, though. + /// + [RequireComponent(typeof(RectTransform))] + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.CopySizeIntoLayoutElement)] + public class CopySizeIntoLayoutElement : LayoutElement + { + public RectTransform CopySource; + public float PaddingHeight; + public float PaddingWidth; + + public bool SetPreferredSize = false; + public bool SetMinimumSize = false; + + public override float preferredWidth + { + get + { + if (!SetPreferredSize || CopySource == null || !IsActive()) + { + return -1f; + } + return CopySource.rect.width + PaddingWidth; + } + } + + public override float preferredHeight + { + get + { + if (!SetPreferredSize || CopySource == null || !IsActive()) + { + return -1f; + } + return CopySource.rect.height + PaddingHeight; + } + } + public override float minWidth + { + get + { + if (!SetMinimumSize || CopySource == null || !IsActive()) + { + return -1f; + } + return CopySource.rect.width + PaddingWidth; + } + } + + public override float minHeight + { + get + { + if (!SetMinimumSize || CopySource == null || !IsActive()) + { + return -1f; + } + return CopySource.rect.height + PaddingHeight; + } + } + + public override int layoutPriority + { + get { return 2; } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs.meta new file mode 100644 index 00000000..d198be68 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/CopySizeIntoLayoutElement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65f264d1c98f61c4f9143ddeb0e74ff5 +timeCreated: 1476961746 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs new file mode 100644 index 00000000..f2dc7661 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs @@ -0,0 +1,190 @@ +namespace SRF.UI +{ + using System; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + public class DragHandle : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler + { + private CanvasScaler _canvasScaler; + private float _delta; + private float _startValue; + public RectTransform.Axis Axis = RectTransform.Axis.Horizontal; + public bool Invert = false; + public float MaxSize = -1; + public LayoutElement TargetLayoutElement; + public RectTransform TargetRectTransform; + + private float Mult + { + get { return Invert ? -1 : 1; } + } + + public void OnBeginDrag(PointerEventData eventData) + { + if (!Verify()) + { + return; + } + + //Debug.Log("OnBeginDrag"); + + _startValue = GetCurrentValue(); + _delta = 0; + } + + public void OnDrag(PointerEventData eventData) + { + if (!Verify()) + { + return; + } + + //Debug.Log("OnDrag"); + + var delta = 0f; + + if (Axis == RectTransform.Axis.Horizontal) + { + delta += eventData.delta.x; + } + else + { + delta += eventData.delta.y; + } + + if (_canvasScaler != null) + { + delta /= _canvasScaler.scaleFactor; + } + + delta *= Mult; + _delta += delta; + + SetCurrentValue(Mathf.Clamp(_startValue + _delta, GetMinSize(), GetMaxSize())); + } + + public void OnEndDrag(PointerEventData eventData) + { + if (!Verify()) + { + return; + } + + //Debug.Log("OnEndDrag"); + + SetCurrentValue(Mathf.Max(_startValue + _delta, GetMinSize())); + _delta = 0; + CommitCurrentValue(); + } + + private void Start() + { + Verify(); + _canvasScaler = GetComponentInParent(); + } + + private bool Verify() + { + if (TargetLayoutElement == null && TargetRectTransform == null) + { + Debug.LogWarning( + "DragHandle: TargetLayoutElement and TargetRectTransform are both null. Disabling behaviour."); + enabled = false; + return false; + } + + return true; + } + + private float GetCurrentValue() + { + if (TargetLayoutElement != null) + { + return Axis == RectTransform.Axis.Horizontal + ? TargetLayoutElement.preferredWidth + : TargetLayoutElement.preferredHeight; + } + + if (TargetRectTransform != null) + { + return Axis == RectTransform.Axis.Horizontal + ? TargetRectTransform.sizeDelta.x + : TargetRectTransform.sizeDelta.y; + } + + throw new InvalidOperationException(); + } + + private void SetCurrentValue(float value) + { + if (TargetLayoutElement != null) + { + if (Axis == RectTransform.Axis.Horizontal) + { + TargetLayoutElement.preferredWidth = value; + } + else + { + TargetLayoutElement.preferredHeight = value; + } + + return; + } + + if (TargetRectTransform != null) + { + var d = TargetRectTransform.sizeDelta; + + if (Axis == RectTransform.Axis.Horizontal) + { + d.x = value; + } + else + { + d.y = value; + } + + TargetRectTransform.sizeDelta = d; + + return; + } + + throw new InvalidOperationException(); + } + + private void CommitCurrentValue() + { + if (TargetLayoutElement != null) + { + if (Axis == RectTransform.Axis.Horizontal) + { + TargetLayoutElement.preferredWidth = ((RectTransform) TargetLayoutElement.transform).sizeDelta.x; + } + else + { + TargetLayoutElement.preferredHeight = ((RectTransform) TargetLayoutElement.transform).sizeDelta.y; + } + } + } + + private float GetMinSize() + { + if (TargetLayoutElement == null) + { + return 0; + } + return Axis == RectTransform.Axis.Horizontal ? TargetLayoutElement.minWidth : TargetLayoutElement.minHeight; + } + + private float GetMaxSize() + { + if (MaxSize > 0) + { + return MaxSize; + } + return float.MaxValue; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs.meta new file mode 100644 index 00000000..5942d91e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/DragHandle.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8faed27c04557e24e8aecd35f2b4d9d3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor.meta new file mode 100644 index 00000000..c3986f81 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: fee397aaceb8d684a94ce2bae9b71aa1 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs new file mode 100644 index 00000000..1e4d9f60 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs @@ -0,0 +1,39 @@ +namespace SRF.UI.Editor +{ + /*[CustomEditor(typeof(CopyLayoutElement))] + [CanEditMultipleObjects] + public class CopyLayoutElementEditor : UnityEditor.Editor + { + + private SerializedProperty _copySourceProperty; + + private SerializedProperty _paddingWidthProperty; + private SerializedProperty _paddingHeightProperty; + + protected void OnEnable() + { + + _paddingWidthProperty = serializedObject.FindProperty("PaddingWidth"); + _paddingHeightProperty = serializedObject.FindProperty("PaddingHeight"); + _copySourceProperty = serializedObject.FindProperty("CopySource"); + + } + + public override void OnInspectorGUI() + { + + //base.OnInspectorGUI(); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(_copySourceProperty); + EditorGUILayout.PropertyField(_paddingWidthProperty); + EditorGUILayout.PropertyField(_paddingHeightProperty); + serializedObject.ApplyModifiedProperties(); + + serializedObject.Update(); + + } + + }*/ +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs.meta new file mode 100644 index 00000000..7daba590 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyLayoutElementEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44df26ca5be5b5c468b5090cbe3df8ab +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs new file mode 100644 index 00000000..dd301950 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs @@ -0,0 +1,34 @@ +using UnityEditor; + +namespace SRF.UI.Editor +{ + [CustomEditor(typeof (CopyPreferredSize))] + [CanEditMultipleObjects] + public class CopyPreferredSizeEditor : UnityEditor.Editor + { + private SerializedProperty _copySourceProperty; + private SerializedProperty _paddingHeightProperty; + private SerializedProperty _paddingWidthProperty; + + protected void OnEnable() + { + _paddingWidthProperty = serializedObject.FindProperty("PaddingWidth"); + _paddingHeightProperty = serializedObject.FindProperty("PaddingHeight"); + _copySourceProperty = serializedObject.FindProperty("CopySource"); + } + + public override void OnInspectorGUI() + { + //base.OnInspectorGUI(); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(_copySourceProperty); + EditorGUILayout.PropertyField(_paddingWidthProperty); + EditorGUILayout.PropertyField(_paddingHeightProperty); + serializedObject.ApplyModifiedProperties(); + + serializedObject.Update(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs.meta new file mode 100644 index 00000000..158bc4b7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/CopyPreferredSizeEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 776c60ba14d0d0242968c3258a3ba16c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs new file mode 100644 index 00000000..f03513cf --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs @@ -0,0 +1,28 @@ +using UnityEditor; +using UnityEditor.UI; + +namespace SRF.UI.Editor +{ + [CustomEditor(typeof (LongPressButton), true)] + [CanEditMultipleObjects] + public class LongPressButtonEditor : ButtonEditor + { + private SerializedProperty _onLongPressProperty; + + protected override void OnEnable() + { + base.OnEnable(); + _onLongPressProperty = serializedObject.FindProperty("_onLongPress"); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + EditorGUILayout.Space(); + serializedObject.Update(); + EditorGUILayout.PropertyField(_onLongPressProperty); + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs.meta new file mode 100644 index 00000000..c8913ce7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/LongPressButtonEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d57f229ac662764aa4508a0d42ddede +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs new file mode 100644 index 00000000..6160adf9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs @@ -0,0 +1,32 @@ +using UnityEditor; +using UnityEditor.UI; + +namespace SRF.UI.Editor +{ + [CustomEditor(typeof (SRNumberButton))] + [CanEditMultipleObjects] + public class SRNumberButtonEditor : ButtonEditor + { + private SerializedProperty _amountProperty; + private SerializedProperty _targetFieldProperty; + + protected override void OnEnable() + { + base.OnEnable(); + _targetFieldProperty = serializedObject.FindProperty("TargetField"); + _amountProperty = serializedObject.FindProperty("Amount"); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + EditorGUILayout.Space(); + + serializedObject.Update(); + EditorGUILayout.PropertyField(_targetFieldProperty); + EditorGUILayout.PropertyField(_amountProperty); + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs.meta new file mode 100644 index 00000000..040225e2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/SRNumberButtonEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d1845f798a1b5a47af337e37e463641 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef new file mode 100644 index 00000000..97e6e4a4 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef @@ -0,0 +1,10 @@ +{ + "name": "StompyRobot.SRF.Editor", + "references": [ + "StompyRobot.SRF" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef.meta new file mode 100644 index 00000000..07e5fffc --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StompyRobot.SRF.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 714123ebf07616740963b992cf10f84c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs new file mode 100644 index 00000000..6d482ead --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs @@ -0,0 +1,105 @@ +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SRF.UI.Editor +{ + [CustomEditor(typeof (StyleComponent))] + [CanEditMultipleObjects] + public class StyleComponentEditor : UnityEditor.Editor + { + private SerializedProperty _styleKeyProperty; + + protected void OnEnable() + { + _styleKeyProperty = serializedObject.FindProperty("_styleKey"); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + var styleComponent = serializedObject.targetObject as StyleComponent; + + if (styleComponent == null) + { + Debug.LogWarning("Target is null, expected StyleComponent"); + return; + } + + var styleRoot = styleComponent.GetComponentInParent(); + + if (styleRoot == null) + { + EditorGUILayout.HelpBox("There must be a StyleRoot component above this object in the hierarchy.", + MessageType.Error, + true); + + return; + } + + var styleSheet = styleRoot.StyleSheet; + + if (styleSheet == null) + { + EditorGUILayout.HelpBox("Style Root has no stylesheet set.", MessageType.Warning); + + EditorGUILayout.Popup("Key", 0, + new[] {string.IsNullOrEmpty(styleComponent.StyleKey) ? "--" : styleComponent.StyleKey}); + + return; + } + + var options = styleRoot.StyleSheet.GetStyleKeys(true).ToList(); + + var index = _styleKeyProperty.hasMultipleDifferentValues + ? 0 + : options.IndexOf(_styleKeyProperty.stringValue) + 1; + + options.Insert(0, "--"); + + EditorGUILayout.Separator(); + + GUI.enabled = _styleKeyProperty.editable; + var newIndex = EditorGUILayout.Popup("Key", index, options.ToArray()); + GUI.enabled = true; + + if (newIndex != index) + { + _styleKeyProperty.stringValue = ""; + _styleKeyProperty.stringValue = newIndex == 0 ? "" : options[newIndex]; + } + + if (serializedObject.ApplyModifiedProperties()) + { + foreach (var o in serializedObject.targetObjects) + { + var c = o as StyleComponent; + c.Refresh(true); + } + + _styleKeyProperty.serializedObject.Update(); + } + + EditorGUILayout.Separator(); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button("Open StyleSheet")) + { + Selection.activeObject = styleRoot.StyleSheet; + } + + EditorGUILayout.Separator(); + + if (GUILayout.Button("Select StyleRoot")) + { + Selection.activeGameObject = styleRoot.gameObject; + } + + GUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs.meta new file mode 100644 index 00000000..fd490457 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleComponentEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffea2a0fd78a7484f88b5b877c0d6659 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs new file mode 100644 index 00000000..c15e1a71 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs @@ -0,0 +1,178 @@ +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SRF.UI.Editor +{ + [CustomEditor(typeof (StyleSheet))] + public class StyleSheetEditor : UnityEditor.Editor + { + public const float ColourColumnWidth = 40f; + public const float OverrideColumnWidth = 20f; + private string _newKeyField = ""; + + public override void OnInspectorGUI() + { + var styleSheet = target as StyleSheet; + + if (styleSheet == null) + { + Debug.LogWarning("Expected target to be StyleSheer", target); + return; + } + + var parentStyleSheet = styleSheet.Parent; + + styleSheet.Parent = + EditorGUILayout.ObjectField("Parent", styleSheet.Parent, typeof (StyleSheet), false) as StyleSheet; + + EditorGUILayout.Separator(); + EditorGUILayout.Separator(); + + EditorGUILayout.BeginVertical(); + + // Draw table header + EditorGUILayout.BeginHorizontal(); + + GUILayout.Space(OverrideColumnWidth); + GUILayout.Label("Name"); + GUILayout.Label("Img", GUILayout.Width(ColourColumnWidth)); + GUILayout.Label("Norm.", GUILayout.Width(ColourColumnWidth)); + GUILayout.Label("Hov.", GUILayout.Width(ColourColumnWidth)); + GUILayout.Label("Actv.", GUILayout.Width(ColourColumnWidth)); + GUILayout.Label("Dsbld.", GUILayout.Width(ColourColumnWidth)); + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + + var keys = styleSheet.GetStyleKeys(false); + + if (parentStyleSheet != null) + { + keys = keys.Union(parentStyleSheet.GetStyleKeys()); + } + + // Draw rows + foreach (var key in keys) + { + // Style from the current stylesheet + var style = styleSheet.GetStyle(key, false); + + // Style from the parent stylesheet + Style parentStyle = null; + + if (parentStyleSheet != null) + { + parentStyle = parentStyleSheet.GetStyle(key, true); + } + + EditorGUILayout.BeginHorizontal(); + + var canEdit = style != null; + + // If there is a parent stylesheet, and the parent contains this key + if (parentStyleSheet != null && parentStyle != null) + { + var overrideParent = GUILayout.Toggle(style != null, "", GUILayout.Width(OverrideColumnWidth)); + + if (overrideParent && style == null) + { + // Copy the style to the current stylesheet + Undo.RecordObject(styleSheet, "Override Style"); + styleSheet.AddStyle(key); + style = styleSheet.GetStyle(key, false); + style.CopyFrom(parentStyle); + EditorUtility.SetDirty(styleSheet); + canEdit = true; + } + else if (!overrideParent && style != null) + { + Undo.RecordObject(styleSheet, "Delete Style"); + styleSheet.DeleteStyle(key); + style = null; + EditorUtility.SetDirty(styleSheet); + canEdit = false; + } + } + else + { + // Otherwise display a delete button + + if (GUILayout.Button("X", GUILayout.Width(OverrideColumnWidth))) + { + Undo.RecordObject(styleSheet, "Delete Style"); + styleSheet.DeleteStyle(key); + EditorUtility.SetDirty(styleSheet); + + continue; + } + } + + GUI.enabled = canEdit; + + GUILayout.Label(key); + + EditorGUI.BeginChangeCheck(); + + var img = + EditorGUILayout.ObjectField(style != null ? style.Image : parentStyle.Image, typeof (Sprite), false, + GUILayout.Width(ColourColumnWidth)) as Sprite; + + var normalColor = EditorGUILayout.ColorField( + style != null ? style.NormalColor : parentStyle.NormalColor, + GUILayout.Width(ColourColumnWidth)); + var hoverColor = EditorGUILayout.ColorField(style != null ? style.HoverColor : parentStyle.HoverColor, + GUILayout.Width(ColourColumnWidth)); + var activeColor = EditorGUILayout.ColorField( + style != null ? style.ActiveColor : parentStyle.ActiveColor, + GUILayout.Width(ColourColumnWidth)); + var disabledColor = + EditorGUILayout.ColorField(style != null ? style.DisabledColor : parentStyle.DisabledColor, + GUILayout.Width(ColourColumnWidth)); + + if (EditorGUI.EndChangeCheck() && canEdit) + { + Undo.RecordObject(styleSheet, "Update Style"); + + style.Image = img; + style.NormalColor = normalColor; + style.HoverColor = hoverColor; + style.ActiveColor = activeColor; + style.DisabledColor = disabledColor; + + EditorUtility.SetDirty(styleSheet); + } + + GUI.enabled = true; + + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.EndVertical(); + + EditorGUILayout.Separator(); + + EditorGUILayout.BeginHorizontal(); + + GUILayout.Label("New Style"); + + _newKeyField = EditorGUILayout.TextField(_newKeyField); + + GUI.enabled = !string.IsNullOrEmpty(_newKeyField) && styleSheet.GetStyle(_newKeyField) == null; + + if (GUILayout.Button("Add")) + { + Undo.RecordObject(styleSheet, "Add Style"); + styleSheet.AddStyle(_newKeyField); + EditorUtility.SetDirty(styleSheet); + + _newKeyField = ""; + } + + GUI.enabled = true; + + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs.meta new file mode 100644 index 00000000..88aa3b2c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Editor/StyleSheetEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cc490d54f84d704f90e31d72e293018 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs new file mode 100644 index 00000000..78a7c06f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs @@ -0,0 +1,54 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + /// + /// Instantly sets colour to FlashColor on pointer down, then fades back to DefaultColour once pointer is released. + /// + [AddComponentMenu(ComponentMenuPaths.FlashGraphic)] + [ExecuteInEditMode] + public class FlashGraphic : UIBehaviour, IPointerDownHandler, IPointerUpHandler + { + public float DecayTime = 0.15f; + public Color DefaultColor = new Color(1, 1, 1, 0); + public Color FlashColor = Color.white; + public Graphic Target; + + public void OnPointerDown(PointerEventData eventData) + { + Target.CrossFadeColor(FlashColor, 0f, true, true); + } + + public void OnPointerUp(PointerEventData eventData) + { + Target.CrossFadeColor(DefaultColor, DecayTime, true, true); + } + + protected override void OnEnable() + { + base.OnEnable(); + Target.CrossFadeColor(DefaultColor, 0f, true, true); + } + + protected void Update() + { +#if UNITY_EDITOR + + if (!Application.isPlaying && Target != null) + { + Target.CrossFadeColor(DefaultColor, 0, true, true); + } + +#endif + } + + public void Flash() + { + Target.CrossFadeColor(FlashColor, 0f, true, true); + Target.CrossFadeColor(DefaultColor, DecayTime, true, true); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs.meta new file mode 100644 index 00000000..09d2887f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/FlashGraphic.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95878e800ddd366418edfb56a22f9d56 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs new file mode 100644 index 00000000..00ba4c34 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs @@ -0,0 +1,48 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.UI; + + [RequireComponent(typeof (Graphic))] + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.InheritColour)] + public class InheritColour : SRMonoBehaviour + { + private Graphic _graphic; + public Graphic From; + + private Graphic Graphic + { + get + { + if (_graphic == null) + { + _graphic = GetComponent(); + } + + return _graphic; + } + } + + private void Refresh() + { + if (From == null) + { + return; + } + + Graphic.color = From.canvasRenderer.GetColor(); + } + + private void Update() + { + Refresh(); + } + + private void Start() + { + Refresh(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs.meta new file mode 100644 index 00000000..db663c2f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/InheritColour.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ed84aa42fb48c9458d3942c1d059055 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout.meta new file mode 100644 index 00000000..f8b7bb79 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: e77c380334ccc0d438d07473a296a1cc +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs new file mode 100644 index 00000000..6cb49d3a --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs @@ -0,0 +1,304 @@ +namespace SRF.UI.Layout +{ + using System.Collections.Generic; + using Internal; + using UnityEngine; + using UnityEngine.UI; + + /// + /// Layout Group controller that arranges children in rows, fitting as many on a line until total width exceeds parent + /// bounds + /// + [AddComponentMenu(ComponentMenuPaths.FlowLayoutGroup)] + public class FlowLayoutGroup : LayoutGroup + { + /// + /// Holds the rects that will make up the current row being processed + /// + private readonly IList _rowList = new List(); + + private float _layoutHeight; + public bool ChildForceExpandHeight = false; + public bool ChildForceExpandWidth = false; + public float Spacing = 0f; + + protected bool IsCenterAlign + { + get + { + return childAlignment == TextAnchor.LowerCenter || childAlignment == TextAnchor.MiddleCenter || + childAlignment == TextAnchor.UpperCenter; + } + } + + protected bool IsRightAlign + { + get + { + return childAlignment == TextAnchor.LowerRight || childAlignment == TextAnchor.MiddleRight || + childAlignment == TextAnchor.UpperRight; + } + } + + protected bool IsMiddleAlign + { + get + { + return childAlignment == TextAnchor.MiddleLeft || childAlignment == TextAnchor.MiddleRight || + childAlignment == TextAnchor.MiddleCenter; + } + } + + protected bool IsLowerAlign + { + get + { + return childAlignment == TextAnchor.LowerLeft || childAlignment == TextAnchor.LowerRight || + childAlignment == TextAnchor.LowerCenter; + } + } + + public override void CalculateLayoutInputHorizontal() + { + base.CalculateLayoutInputHorizontal(); + + var minWidth = GetGreatestMinimumChildWidth() + padding.left + padding.right; + + SetLayoutInputForAxis(minWidth, -1, -1, 0); + } + + public override void SetLayoutHorizontal() + { + SetLayout(rectTransform.rect.width, 0, false); + } + + public override void SetLayoutVertical() + { + SetLayout(rectTransform.rect.width, 1, false); + } + + public override void CalculateLayoutInputVertical() + { + _layoutHeight = SetLayout(rectTransform.rect.width, 1, true); + } + + /// + /// Main layout method + /// + /// Width to calculate the layout with + /// 0 for horizontal axis, 1 for vertical + /// If true, sets the layout input for the axis. If false, sets child position for axis + public float SetLayout(float width, int axis, bool layoutInput) + { + var groupHeight = rectTransform.rect.height; + + // Width that is available after padding is subtracted + var workingWidth = rectTransform.rect.width - padding.left - padding.right; + + // Accumulates the total height of the rows, including spacing and padding. + var yOffset = IsLowerAlign ? padding.bottom : (float)padding.top; + + var currentRowWidth = 0f; + var currentRowHeight = 0f; + + for (var i = 0; i < rectChildren.Count; i++) + { + // LowerAlign works from back to front + var index = IsLowerAlign ? rectChildren.Count - 1 - i : i; + + var child = rectChildren[index]; + + var childWidth = LayoutUtility.GetPreferredSize(child, 0); + var childHeight = LayoutUtility.GetPreferredSize(child, 1); + + // Max child width is layout group with - padding + childWidth = Mathf.Min(childWidth, workingWidth); + + // Apply spacing if not the first element in a row + if (_rowList.Count > 0) + { + currentRowWidth += Spacing; + } + + // If adding this element would exceed the bounds of the row, + // go to a new line after processing the current row + if (currentRowWidth + childWidth > workingWidth) + { + // Undo spacing addition if we're moving to a new line (Spacing is not applied on edges) + currentRowWidth -= Spacing; + + // Process current row elements positioning + if (!layoutInput) + { + var h = CalculateRowVerticalOffset(groupHeight, yOffset, currentRowHeight); + LayoutRow(_rowList, currentRowWidth, currentRowHeight, workingWidth, padding.left, h, axis); + } + + // Clear existing row + _rowList.Clear(); + + // Add the current row height to total height accumulator, and reset to 0 for the next row + yOffset += currentRowHeight; + yOffset += Spacing; + + currentRowHeight = 0; + currentRowWidth = 0; + } + + currentRowWidth += childWidth; + _rowList.Add(child); + + // We need the largest element height to determine the starting position of the next line + if (childHeight > currentRowHeight) + { + currentRowHeight = childHeight; + } + } + + if (!layoutInput) + { + var h = CalculateRowVerticalOffset(groupHeight, yOffset, currentRowHeight); + + // Layout the final row + LayoutRow(_rowList, currentRowWidth, currentRowHeight, workingWidth, padding.left, h, axis); + } + + _rowList.Clear(); + + // Add the last rows height to the height accumulator + yOffset += currentRowHeight; + yOffset += IsLowerAlign ? padding.top : padding.bottom; + + if (layoutInput) + { + if (axis == 1) + { + SetLayoutInputForAxis(yOffset, yOffset, -1, axis); + } + } + + return yOffset; + } + + private float CalculateRowVerticalOffset(float groupHeight, float yOffset, float currentRowHeight) + { + float h; + + if (IsLowerAlign) + { + h = groupHeight - yOffset - currentRowHeight; + } + else if (IsMiddleAlign) + { + h = groupHeight * 0.5f - _layoutHeight * 0.5f + yOffset; + } + else + { + h = yOffset; + } + return h; + } + + protected void LayoutRow(IList contents, float rowWidth, float rowHeight, float maxWidth, + float xOffset, float yOffset, int axis) + { + var xPos = xOffset; + + if (!ChildForceExpandWidth && IsCenterAlign) + { + xPos += (maxWidth - rowWidth) * 0.5f; + } + else if (!ChildForceExpandWidth && IsRightAlign) + { + xPos += (maxWidth - rowWidth); + } + + var extraWidth = 0f; + + if (ChildForceExpandWidth) + { + var flexibleChildCount = 0; + + for (var i = 0; i < _rowList.Count; i++) + { + if (LayoutUtility.GetFlexibleWidth(_rowList[i]) > 0f) + { + flexibleChildCount++; + } + } + + if (flexibleChildCount > 0) + { + extraWidth = (maxWidth - rowWidth) / flexibleChildCount; + } + } + + for (var j = 0; j < _rowList.Count; j++) + { + var index = IsLowerAlign ? _rowList.Count - 1 - j : j; + + var rowChild = _rowList[index]; + + var rowChildWidth = LayoutUtility.GetPreferredSize(rowChild, 0); + + if (LayoutUtility.GetFlexibleWidth(rowChild) > 0f) + { + rowChildWidth += extraWidth; + } + + var rowChildHeight = LayoutUtility.GetPreferredSize(rowChild, 1); + + if (ChildForceExpandHeight) + { + rowChildHeight = rowHeight; + } + + rowChildWidth = Mathf.Min(rowChildWidth, maxWidth); + + var yPos = yOffset; + + if (IsMiddleAlign) + { + yPos += (rowHeight - rowChildHeight) * 0.5f; + } + else if (IsLowerAlign) + { + yPos += (rowHeight - rowChildHeight); + } + + if (axis == 0) + { +#if UNITY_2019_1 + SetChildAlongAxis(rowChild, 0, 1f, xPos, rowChildWidth); +#else + SetChildAlongAxis(rowChild, 0, xPos, rowChildWidth); +#endif + } + else + { +#if UNITY_2019_1 + SetChildAlongAxis(rowChild, 1, 1f, yPos, rowChildHeight); +#else + SetChildAlongAxis(rowChild, 1, yPos, rowChildHeight); +#endif + } + + xPos += rowChildWidth + Spacing; + } + } + + public float GetGreatestMinimumChildWidth() + { + var max = 0f; + + for (var i = 0; i < rectChildren.Count; i++) + { + var w = LayoutUtility.GetMinWidth(rectChildren[i]); + + max = Mathf.Max(w, max); + } + + return max; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs.meta new file mode 100644 index 00000000..e85d3d2b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/FlowLayoutGroup.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3a5149e46522d84cb8079537220a929 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs new file mode 100644 index 00000000..6fee8433 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs @@ -0,0 +1,607 @@ +//#define PROFILE + +namespace SRF.UI.Layout +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.Events; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + public interface IVirtualView + { + void SetDataContext(object data); + } + + /// + /// + [AddComponentMenu(ComponentMenuPaths.VirtualVerticalLayoutGroup)] + public class VirtualVerticalLayoutGroup : LayoutGroup, IPointerClickHandler + { + private readonly SRList _itemList = new SRList(); + private readonly SRList _visibleItemList = new SRList(); + + private bool _isDirty = false; + private SRList _rowCache = new SRList(); + private ScrollRect _scrollRect; + private int _selectedIndex; + private object _selectedItem; + + [SerializeField] private SelectedItemChangedEvent _selectedItemChanged; + + private int _visibleItemCount; + private SRList _visibleRows = new SRList(); + public StyleSheet AltRowStyleSheet; + public bool EnableSelection = true; + public RectTransform ItemPrefab; + + /// + /// Rows to show above and below the visible rect to reduce pop-in + /// + public int RowPadding = 2; + + public StyleSheet RowStyleSheet; + public StyleSheet SelectedRowStyleSheet; + + /// + /// Spacing to add between rows + /// + public float Spacing; + + /// + /// If true, the scroll view will stick to the last element when fully scrolled to the bottom and an item is added + /// + public bool StickToBottom = true; + + public SelectedItemChangedEvent SelectedItemChanged + { + get { return _selectedItemChanged; } + set { _selectedItemChanged = value; } + } + + public object SelectedItem + { + get { return _selectedItem; } + set + { + if (_selectedItem == value || !EnableSelection) + { + return; + } + + var newSelectedIndex = value == null ? -1 : _itemList.IndexOf(value); + + // Ensure that the new selected item is present in the item list + if (value != null && newSelectedIndex < 0) + { + throw new InvalidOperationException("Cannot select item not present in layout"); + } + + // Invalidate old selected item row + if (_selectedItem != null) + { + InvalidateItem(_selectedIndex); + } + + _selectedItem = value; + _selectedIndex = newSelectedIndex; + + // Invalidate the newly selected item + if (_selectedItem != null) + { + InvalidateItem(_selectedIndex); + } + + SetDirty(); + + if (_selectedItemChanged != null) + { + _selectedItemChanged.Invoke(_selectedItem); + } + } + } + + public override float minHeight + { + get { return _itemList.Count*ItemHeight + padding.top + padding.bottom + Spacing*_itemList.Count; } + } + + public void OnPointerClick(PointerEventData eventData) + { + if (!EnableSelection) + { + return; + } + + var hitObject = eventData.pointerPressRaycast.gameObject; + + if (hitObject == null) + { + return; + } + + var hitPos = hitObject.transform.position; + var localPos = rectTransform.InverseTransformPoint(hitPos); + var row = Mathf.FloorToInt(Mathf.Abs(localPos.y)/ItemHeight); + + if (row >= 0 && row < _itemList.Count) + { + SelectedItem = _itemList[row]; + } + else + { + SelectedItem = null; + } + } + + protected override void Awake() + { + base.Awake(); + + ScrollRect.onValueChanged.AddListener(OnScrollRectValueChanged); + + var view = ItemPrefab.GetComponent(typeof (IVirtualView)); + + if (view == null) + { + Debug.LogWarning( + "[VirtualVerticalLayoutGroup] ItemPrefab does not have a component inheriting from IVirtualView, so no data binding can occur"); + } + } + + private void OnScrollRectValueChanged(Vector2 d) + { + if (d.y < 0 || d.y > 1) + { + _scrollRect.verticalNormalizedPosition = Mathf.Clamp01(d.y); + } + + //CanvasUpdateRegistry.RegisterCanvasElementForLayoutRebuild(this); + SetDirty(); + } + + protected override void Start() + { + base.Start(); + ScrollUpdate(); + } + + protected override void OnEnable() + { + base.OnEnable(); + SetDirty(); + } + + protected void Update() + { + if (!AlignBottom && !AlignTop) + { + Debug.LogWarning("[VirtualVerticalLayoutGroup] Only Lower or Upper alignment is supported.", this); + childAlignment = TextAnchor.UpperLeft; + } + + if (SelectedItem != null && !_itemList.Contains(SelectedItem)) + { + SelectedItem = null; + } + + if (_isDirty) + { + _isDirty = false; + ScrollUpdate(); + } + } + + /// + /// Invalidate a single row (before removing, or changing selection status) + /// + /// + protected void InvalidateItem(int itemIndex) + { + if (!_visibleItemList.Contains(itemIndex)) + { + return; + } + + _visibleItemList.Remove(itemIndex); + + for (var i = 0; i < _visibleRows.Count; i++) + { + if (_visibleRows[i].Index == itemIndex) + { + RecycleRow(_visibleRows[i]); + _visibleRows.RemoveAt(i); + break; + } + } + } + + /// + /// After removing or inserting a row, ensure that the cached indexes (used for layout) match up + /// with the item index in the list + /// + protected void RefreshIndexCache() + { + for (var i = 0; i < _visibleRows.Count; i++) + { + _visibleRows[i].Index = _itemList.IndexOf(_visibleRows[i].Data); + } + } + + protected void ScrollUpdate() + { + if (!Application.isPlaying) + { + return; + } + + //Debug.Log("[SRConsole] ScrollUpdate {0}".Fmt(Time.frameCount)); + + var pos = rectTransform.anchoredPosition; + var startY = pos.y; + + var viewHeight = ((RectTransform) ScrollRect.transform).rect.height; + + // Determine the range of rows that should be visible + var rowRangeLower = Mathf.FloorToInt(startY/(ItemHeight + Spacing)); + var rowRangeHigher = Mathf.CeilToInt((startY + viewHeight)/(ItemHeight + Spacing)); + + // Apply padding to reduce pop-in + rowRangeLower -= RowPadding; + rowRangeHigher += RowPadding; + + rowRangeLower = Mathf.Max(0, rowRangeLower); + rowRangeHigher = Mathf.Min(_itemList.Count, rowRangeHigher); + + var isDirty = false; + +#if PROFILE + Profiler.BeginSample("Visible Rows Cull"); +#endif + + for (var i = 0; i < _visibleRows.Count; i++) + { + var row = _visibleRows[i]; + + // Move on if row is still visible + if (row.Index >= rowRangeLower && row.Index <= rowRangeHigher) + { + continue; + } + + _visibleItemList.Remove(row.Index); + _visibleRows.Remove(row); + RecycleRow(row); + isDirty = true; + } + +#if PROFILE + Profiler.EndSample(); + Profiler.BeginSample("Item Visible Check"); +#endif + + for (var i = rowRangeLower; i < rowRangeHigher; ++i) + { + if (i >= _itemList.Count) + { + break; + } + + // Move on if row is already visible + if (_visibleItemList.Contains(i)) + { + continue; + } + + var row = GetRow(i); + _visibleRows.Add(row); + _visibleItemList.Add(i); + isDirty = true; + } + +#if PROFILE + Profiler.EndSample(); +#endif + + // If something visible has explicitly been changed, or the visible row count has changed + if (isDirty || _visibleItemCount != _visibleRows.Count) + { + //Debug.Log("[SRConsole] IsDirty {0}".Fmt(Time.frameCount)); + LayoutRebuilder.MarkLayoutForRebuild(rectTransform); + } + + _visibleItemCount = _visibleRows.Count; + } + + public override void CalculateLayoutInputVertical() + { + SetLayoutInputForAxis(minHeight, minHeight, -1, 1); + } + + public override void SetLayoutHorizontal() + { + var width = rectTransform.rect.width - padding.left - padding.right; + + // Position visible rows at 0 x + for (var i = 0; i < _visibleRows.Count; i++) + { + var item = _visibleRows[i]; + + SetChildAlongAxis(item.Rect, 0, padding.left, width); + } + + // Hide non-active rows to one side. More efficient than enabling/disabling them + for (var i = 0; i < _rowCache.Count; i++) + { + var item = _rowCache[i]; + + SetChildAlongAxis(item.Rect, 0, -width - padding.left, width); + } + } + + public override void SetLayoutVertical() + { + if (!Application.isPlaying) + { + return; + } + + //Debug.Log("[SRConsole] SetLayoutVertical {0}".Fmt(Time.frameCount)); + + // Position visible rows by the index of the item they represent + for (var i = 0; i < _visibleRows.Count; i++) + { + var item = _visibleRows[i]; + + SetChildAlongAxis(item.Rect, 1, item.Index*ItemHeight + padding.top + Spacing*item.Index, ItemHeight); + } + } + + private new void SetDirty() + { + base.SetDirty(); + + if (!IsActive()) + { + return; + } + + _isDirty = true; + //CanvasUpdateRegistry.RegisterCanvasElementForLayoutRebuild(this); + } + + [Serializable] + public class SelectedItemChangedEvent : UnityEvent {} + + [Serializable] + private class Row + { + public object Data; + public int Index; + public RectTransform Rect; + public StyleRoot Root; + public IVirtualView View; + } + + #region Public Data Methods + + public void AddItem(object item) + { + _itemList.Add(item); + SetDirty(); + + if (StickToBottom && Mathf.Approximately(ScrollRect.verticalNormalizedPosition, 0f)) + { + ScrollRect.normalizedPosition = new Vector2(0, 0); + } + } + + public void RemoveItem(object item) + { + if (SelectedItem == item) + { + SelectedItem = null; + } + + var index = _itemList.IndexOf(item); + + InvalidateItem(index); + _itemList.Remove(item); + + RefreshIndexCache(); + + SetDirty(); + } + + public void ClearItems() + { + for (var i = _visibleRows.Count - 1; i >= 0; i--) + { + InvalidateItem(_visibleRows[i].Index); + } + + _itemList.Clear(); + SetDirty(); + } + + #endregion + + #region Internal Properties + + private ScrollRect ScrollRect + { + get + { + if (_scrollRect == null) + { + _scrollRect = GetComponentInParent(); + } + + return _scrollRect; + } + } + + private bool AlignBottom + { + get + { + return childAlignment == TextAnchor.LowerRight || childAlignment == TextAnchor.LowerCenter || + childAlignment == TextAnchor.LowerLeft; + } + } + + private bool AlignTop + { + get + { + return childAlignment == TextAnchor.UpperLeft || childAlignment == TextAnchor.UpperCenter || + childAlignment == TextAnchor.UpperRight; + } + } + + private float _itemHeight = -1; + + private float ItemHeight + { + get + { + if (_itemHeight <= 0) + { + var layoutElement = ItemPrefab.GetComponent(typeof (ILayoutElement)) as ILayoutElement; + + if (layoutElement != null) + { + _itemHeight = layoutElement.preferredHeight; + } + else + { + _itemHeight = ItemPrefab.rect.height; + } + + if (_itemHeight.ApproxZero()) + { + Debug.LogWarning( + "[VirtualVerticalLayoutGroup] ItemPrefab must have a preferred size greater than 0"); + _itemHeight = 10; + } + } + + return _itemHeight; + } + } + + #endregion + + #region Row Pooling and Provisioning + + private Row GetRow(int forIndex) + { + // If there are no rows available in the cache, create one from scratch + if (_rowCache.Count == 0) + { + var newRow = CreateRow(); + PopulateRow(forIndex, newRow); + return newRow; + } + + var data = _itemList[forIndex]; + + Row row = null; + Row altRow = null; + + // Determine if the row we're looking for is an alt row + var target = forIndex%2; + + // Try and find a row which previously had this data, so we can reuse it + for (var i = 0; i < _rowCache.Count; i++) + { + row = _rowCache[i]; + + // If this row previously represented this data, just use that one. + if (row.Data == data) + { + _rowCache.RemoveAt(i); + PopulateRow(forIndex, row); + break; + } + + // Cache a row which is was the same alt state as the row we're looking for, in case + // we don't find an exact match. + if (row.Index%2 == target) + { + altRow = row; + } + + // Didn't match, reset to null + row = null; + } + + // If an exact match wasn't found, but a row with the same alt-status was found, use that one. + if (row == null && altRow != null) + { + _rowCache.Remove(altRow); + row = altRow; + PopulateRow(forIndex, row); + } + else if (row == null) + { + // No match found, use the last added item in the cache + row = _rowCache.PopLast(); + PopulateRow(forIndex, row); + } + + return row; + } + + private void RecycleRow(Row row) + { + _rowCache.Add(row); + } + + private void PopulateRow(int index, Row row) + { + row.Index = index; + + // Set data context on row + row.Data = _itemList[index]; + row.View.SetDataContext(_itemList[index]); + + // If we're using stylesheets + if (RowStyleSheet != null || AltRowStyleSheet != null || SelectedRowStyleSheet != null) + { + // If there is a selected row stylesheet, and this is the selected row, use that one + if (SelectedRowStyleSheet != null && SelectedItem == row.Data) + { + row.Root.StyleSheet = SelectedRowStyleSheet; + } + else + { + // Otherwise just use the stylesheet suitable for the row alt-status + row.Root.StyleSheet = index%2 == 0 ? RowStyleSheet : AltRowStyleSheet; + } + } + } + + private Row CreateRow() + { + var item = new Row(); + + var row = SRInstantiate.Instantiate(ItemPrefab); + item.Rect = row; + item.View = row.GetComponent(typeof (IVirtualView)) as IVirtualView; + + if (RowStyleSheet != null || AltRowStyleSheet != null || SelectedRowStyleSheet != null) + { + item.Root = row.gameObject.GetComponentOrAdd(); + item.Root.StyleSheet = RowStyleSheet; + } + + row.SetParent(rectTransform, false); + + return item; + } + + #endregion + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs.meta new file mode 100644 index 00000000..df3aebd2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/Layout/VirtualVerticalLayoutGroup.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19c408e3f064e184fa5e0d9862ac4d8b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs new file mode 100644 index 00000000..80e32e96 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs @@ -0,0 +1,74 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + + [AddComponentMenu(ComponentMenuPaths.LongPressButton)] + public class LongPressButton : UnityEngine.UI.Button + { + private bool _handled; + [SerializeField] private ButtonClickedEvent _onLongPress = new ButtonClickedEvent(); + private bool _pressed; + private float _pressedTime; + public float LongPressDuration = 0.9f; + + public ButtonClickedEvent onLongPress + { + get { return _onLongPress; } + set { _onLongPress = value; } + } + + public override void OnPointerExit(UnityEngine.EventSystems.PointerEventData eventData) + { + base.OnPointerExit(eventData); + _pressed = false; + } + + public override void OnPointerDown(UnityEngine.EventSystems.PointerEventData eventData) + { + base.OnPointerDown(eventData); + + if (eventData.button != UnityEngine.EventSystems.PointerEventData.InputButton.Left) + { + return; + } + + _pressed = true; + _handled = false; + _pressedTime = Time.realtimeSinceStartup; + } + + public override void OnPointerUp(UnityEngine.EventSystems.PointerEventData eventData) + { + if (!_handled) + { + base.OnPointerUp(eventData); + } + + _pressed = false; + } + + public override void OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData) + { + if (!_handled) + { + base.OnPointerClick(eventData); + } + } + + private void Update() + { + if (!_pressed) + { + return; + } + + if (Time.realtimeSinceStartup - _pressedTime >= LongPressDuration) + { + _pressed = false; + _handled = true; + onLongPress.Invoke(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs.meta new file mode 100644 index 00000000..73bbf70f --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/LongPressButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fc6d8b69639fdc45a849df5b853c783 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs new file mode 100644 index 00000000..1a067265 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs @@ -0,0 +1,55 @@ +namespace SRF.UI +{ + using UnityEngine; + + [ExecuteInEditMode] + [RequireComponent(typeof (RectTransform))] + public abstract class ResponsiveBase : SRMonoBehaviour + { + private bool _queueRefresh; + + protected RectTransform RectTransform + { + get { return (RectTransform) CachedTransform; } + } + + protected void OnEnable() + { + _queueRefresh = true; + } + + protected void OnRectTransformDimensionsChange() + { + _queueRefresh = true; + } + + protected void Update() + { +#if UNITY_EDITOR + + // Refresh whenever we can in the editor, since layout has quirky update behaviour + // when not in play mode + if (!Application.isPlaying) + { + Refresh(); + return; + } + +#endif + + if (_queueRefresh) + { + Refresh(); + _queueRefresh = false; + } + } + + protected abstract void Refresh(); + + [ContextMenu("Refresh")] + private void DoRefresh() + { + Refresh(); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs.meta new file mode 100644 index 00000000..7dfec10e --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a53d43b4191c4c4d9ed43860feca27e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs new file mode 100644 index 00000000..b0ad044c --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs @@ -0,0 +1,102 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + + [ExecuteInEditMode] + [RequireComponent(typeof (RectTransform))] + [AddComponentMenu(ComponentMenuPaths.ResponsiveEnable)] + public class ResponsiveEnable : ResponsiveBase + { + public enum Modes + { + EnableAbove, + EnableBelow + } + + public Entry[] Entries = new Entry[0]; + + protected override void Refresh() + { + var rect = RectTransform.rect; + + for (var i = 0; i < Entries.Length; i++) + { + var e = Entries[i]; + + var enable = true; + + switch (e.Mode) + { + case Modes.EnableAbove: + { + if (e.ThresholdHeight > 0) + { + enable = rect.height >= e.ThresholdHeight && enable; + } + + if (e.ThresholdWidth > 0) + { + enable = rect.width >= e.ThresholdWidth && enable; + } + + break; + } + case Modes.EnableBelow: + { + if (e.ThresholdHeight > 0) + { + enable = rect.height <= e.ThresholdHeight && enable; + } + + if (e.ThresholdWidth > 0) + { + enable = rect.width <= e.ThresholdWidth && enable; + } + + break; + } + default: + throw new IndexOutOfRangeException(); + } + + if (e.GameObjects != null) + { + for (var j = 0; j < e.GameObjects.Length; j++) + { + var go = e.GameObjects[j]; + + if (go != null) + { + go.SetActive(enable); + } + } + } + + if (e.Components != null) + { + for (var j = 0; j < e.Components.Length; j++) + { + var go = e.Components[j]; + + if (go != null) + { + go.enabled = enable; + } + } + } + } + } + + [Serializable] + public struct Entry + { + public Behaviour[] Components; + public GameObject[] GameObjects; + public Modes Mode; + public float ThresholdHeight; + public float ThresholdWidth; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs.meta new file mode 100644 index 00000000..c765b2d7 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2415a15c0c9eea041863fc6c1a434ede +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs new file mode 100644 index 00000000..1c705c15 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs @@ -0,0 +1,77 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.UI; + + [ExecuteInEditMode] + [RequireComponent(typeof (RectTransform))] + [AddComponentMenu(ComponentMenuPaths.ResponsiveEnable)] + public class ResponsiveResize : ResponsiveBase + { + public Element[] Elements = new Element[0]; + + protected override void Refresh() + { + var rect = RectTransform.rect; + + for (var i = 0; i < Elements.Length; i++) + { + var e = Elements[i]; + + if (e.Target == null) + { + continue; + } + + var maxWidth = float.MinValue; + var selectedWidth = -1f; + + for (var j = 0; j < e.SizeDefinitions.Length; j++) + { + var d = e.SizeDefinitions[j]; + + // If the threshold applies + if (d.ThresholdWidth <= rect.width) + { + // And it is the largest width so far + if (d.ThresholdWidth > maxWidth) + { + // Set it as active + maxWidth = d.ThresholdWidth; + selectedWidth = d.ElementWidth; + } + } + } + + if (selectedWidth > 0) + { + e.Target.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, selectedWidth); + + var le = e.Target.GetComponent(); + + if (le != null) + { + le.preferredWidth = selectedWidth; + } + } + } + } + + [Serializable] + public struct Element + { + public SizeDefinition[] SizeDefinitions; + public RectTransform Target; + + [Serializable] + public struct SizeDefinition + { + [Tooltip("Width to apply when over the threshold width")] public float ElementWidth; + + [Tooltip("Threshold over which this width will take effect")] public float ThresholdWidth; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs.meta new file mode 100644 index 00000000..06854f8b --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ResponsiveResize.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 395e9c70b6db8df408e038114524cc0b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs new file mode 100644 index 00000000..e62d6d44 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs @@ -0,0 +1,81 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.EventSystems; + + [AddComponentMenu(ComponentMenuPaths.NumberButton)] + public class SRNumberButton : UnityEngine.UI.Button, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler + { + private const float ExtraThreshold = 3f; + public const float Delay = 0.4f; + private float _delayTime; + private float _downTime; + private bool _isDown; + public double Amount = 1; + public SRNumberSpinner TargetField; + + public override void OnPointerDown(PointerEventData eventData) + { + base.OnPointerDown(eventData); + + if (!interactable) + { + return; + } + + Apply(); + + _isDown = true; + _downTime = Time.realtimeSinceStartup; + _delayTime = _downTime + Delay; + } + + public override void OnPointerUp(PointerEventData eventData) + { + base.OnPointerUp(eventData); + + _isDown = false; + } + + protected virtual void Update() + { + if (_isDown) + { + if (_delayTime <= Time.realtimeSinceStartup) + { + Apply(); + + var newDelay = Delay*0.5f; + + var extra = Mathf.RoundToInt((Time.realtimeSinceStartup - _downTime)/ExtraThreshold); + + for (var i = 0; i < extra; i++) + { + newDelay *= 0.5f; + } + + _delayTime = Time.realtimeSinceStartup + newDelay; + } + } + } + + private void Apply() + { + var currentValue = double.Parse(TargetField.text); + currentValue += Amount; + + if (currentValue > TargetField.MaxValue) + { + currentValue = TargetField.MaxValue; + } + if (currentValue < TargetField.MinValue) + { + currentValue = TargetField.MinValue; + } + + TargetField.text = currentValue.ToString(); + TargetField.onEndEdit.Invoke(TargetField.text); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs.meta new file mode 100644 index 00000000..686e7dee --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e271d820ea3d50a40bd29c81c23cb2a1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs new file mode 100644 index 00000000..3d5ebcda --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs @@ -0,0 +1,176 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + [AddComponentMenu(ComponentMenuPaths.NumberSpinner)] + public class SRNumberSpinner : InputField + { + private double _currentValue; + private double _dragStartAmount; + private double _dragStep; + public float DragSensitivity = 0.01f; + public double MaxValue = double.MaxValue; + public double MinValue = double.MinValue; + + protected override void Awake() + { + base.Awake(); + + if (contentType != ContentType.IntegerNumber && contentType != ContentType.DecimalNumber) + { + Debug.LogError("[SRNumberSpinner] contentType must be integer or decimal. Defaulting to integer"); + contentType = ContentType.DecimalNumber; + } + } + + public override void OnPointerClick(PointerEventData eventData) + { + //Debug.Log("OnPointerClick (isFocused: {0}, isUsed: {1}, isDragging: {2})".Fmt(isFocused, eventData.used, eventData.dragging)); + + if (!interactable) + { + return; + } + + if (eventData.dragging) + { + return; + } + + EventSystem.current.SetSelectedGameObject(gameObject, eventData); + + base.OnPointerClick(eventData); + + if ((m_Keyboard == null || !m_Keyboard.active)) + { + OnSelect(eventData); + } + else + { + UpdateLabel(); + eventData.Use(); + } + } + + public override void OnPointerDown(PointerEventData eventData) + { + //Debug.Log("OnPointerDown (isFocused: {0}, isUsed: {1})".Fmt(isFocused, eventData.used)); + + //base.OnPointerDown(eventData); + } + + public override void OnPointerUp(PointerEventData eventData) + { + //Debug.Log("OnPointerUp (isFocused: {0}, isUsed: {1})".Fmt(isFocused, eventData.used)); + + //base.OnPointerUp(eventData); + } + + public override void OnBeginDrag(PointerEventData eventData) + { + if (!interactable) + { + return; + } + + //Debug.Log("OnBeginDrag (isFocused: {0}, isUsed: {1}, delta: {2})".Fmt(isFocused, eventData.used, eventData.delta)); + + // Pass event to parent if it is a vertical drag + if (Mathf.Abs(eventData.delta.y) > Mathf.Abs(eventData.delta.x)) + { + //Debug.Log("Passing To Parent"); + + var parent = transform.parent; + + if (parent != null) + { + eventData.pointerDrag = ExecuteEvents.GetEventHandler(parent.gameObject); + + if (eventData.pointerDrag != null) + { + ExecuteEvents.Execute(eventData.pointerDrag, eventData, ExecuteEvents.beginDragHandler); + } + } + + return; + } + eventData.Use(); + + _dragStartAmount = double.Parse(text); + _currentValue = _dragStartAmount; + + var minStep = 1f; + + // Use a larger minimum step for integer numbers, since there are no fractional values + if (contentType == ContentType.IntegerNumber) + { + minStep *= 10; + } + + _dragStep = Math.Max(minStep, _dragStartAmount*0.05f); + + if (isFocused) + { + DeactivateInputField(); + } + } + + public override void OnDrag(PointerEventData eventData) + { + if (!interactable) + { + return; + } + + //Debug.Log("OnDrag (isFocused: {0}, isUsed: {1})".Fmt(isFocused, eventData.used)); + + var diff = eventData.delta.x; + + _currentValue += Math.Abs(_dragStep)*diff*DragSensitivity; + _currentValue = Math.Round(_currentValue, 2); + + if (_currentValue > MaxValue) + { + _currentValue = MaxValue; + } + + if (_currentValue < MinValue) + { + _currentValue = MinValue; + } + + if (contentType == ContentType.IntegerNumber) + { + text = ((int) Math.Round(_currentValue)).ToString(); + } + else + { + text = _currentValue.ToString(); + } + } + + public override void OnEndDrag(PointerEventData eventData) + { + if (!interactable) + { + return; + } + + //Debug.Log("OnEndDrag (isFocused: {0}, isUsed: {1})".Fmt(isFocused, eventData.used)); + + //base.OnEndDrag(eventData); + + eventData.Use(); + + if (_dragStartAmount != _currentValue) + { + DeactivateInputField(); + SendOnSubmit(); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs.meta new file mode 100644 index 00000000..f8d8e0ac --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRNumberSpinner.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7e6a39da209c144797f44248b82bfb3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs new file mode 100644 index 00000000..c7bef58d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs @@ -0,0 +1,57 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.UI; + + /// + /// Detects when a screen dpi exceeds what the developer considers + /// a "retina" level display, and scales the canvas accordingly. + /// + [RequireComponent(typeof (CanvasScaler))] + [AddComponentMenu(ComponentMenuPaths.RetinaScaler)] + public class SRRetinaScaler : SRMonoBehaviour + { + [SerializeField] private float _retinaScale = 2f; + + [SerializeField] private int _thresholdDpi = 250; + + [SerializeField] private bool _disablePixelPerfect = false; + + /// + /// Dpi over which to apply scaling + /// + public int ThresholdDpi + { + get { return _thresholdDpi; } + } + + public float RetinaScale + { + get { return _retinaScale; } + } + + private void Start() + { + var dpi = Screen.dpi; + + if (dpi <= 0) + { + return; + } + + if (dpi > ThresholdDpi) + { + var scaler = GetComponent(); + + scaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize; + scaler.scaleFactor = scaler.scaleFactor * RetinaScale; + + if (_disablePixelPerfect) + { + GetComponent().pixelPerfect = false; + } + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs.meta new file mode 100644 index 00000000..4b66dd76 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRRetinaScaler.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58bc4004a23c662408dd40e6d01ac936 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs new file mode 100644 index 00000000..48bcd405 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs @@ -0,0 +1,87 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.Events; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + [AddComponentMenu(ComponentMenuPaths.SRSpinner)] + public class SRSpinner : Selectable, IDragHandler, IBeginDragHandler + { + private float _dragDelta; + + [SerializeField] private SpinEvent _onSpinDecrement = new SpinEvent(); + + [SerializeField] private SpinEvent _onSpinIncrement = new SpinEvent(); + + /// + /// Number of units a drag must accumulate to trigger a change + /// + public float DragThreshold = 20f; + + public SpinEvent OnSpinIncrement + { + get { return _onSpinIncrement; } + set { _onSpinIncrement = value; } + } + + public SpinEvent OnSpinDecrement + { + get { return _onSpinDecrement; } + set { _onSpinDecrement = value; } + } + + public void OnBeginDrag(PointerEventData eventData) + { + _dragDelta = 0; + } + + public void OnDrag(PointerEventData eventData) + { + if (!interactable) + { + return; + } + + _dragDelta += eventData.delta.x; + + if (Mathf.Abs(_dragDelta) > DragThreshold) + { + var direction = Mathf.Sign(_dragDelta); + var quantity = Mathf.FloorToInt(Mathf.Abs(_dragDelta)/DragThreshold); + + if (direction > 0) + { + OnIncrement(quantity); + } + else + { + OnDecrement(quantity); + } + + _dragDelta -= quantity*DragThreshold*direction; + } + } + + private void OnIncrement(int amount) + { + for (var i = 0; i < amount; i++) + { + OnSpinIncrement.Invoke(); + } + } + + private void OnDecrement(int amount) + { + for (var i = 0; i < amount; i++) + { + OnSpinDecrement.Invoke(); + } + } + + [Serializable] + public class SpinEvent : UnityEvent {} + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs.meta new file mode 100644 index 00000000..f5152783 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRSpinner.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b9fa4d99839aa940b36addec78cb92f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs new file mode 100644 index 00000000..c630a05d --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs @@ -0,0 +1,26 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.UI; + + /// + /// Adds a LayoutDirty callback to the default Text component. + /// + [AddComponentMenu(ComponentMenuPaths.SRText)] + public class SRText : Text + { + public event Action LayoutDirty; + + public override void SetLayoutDirty() + { + base.SetLayoutDirty(); + + if (LayoutDirty != null) + { + LayoutDirty(this); + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs.meta new file mode 100644 index 00000000..9000edb1 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/SRText.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 983b04ffc0cd0a04fb74c9b74eb789bd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs new file mode 100644 index 00000000..6c4d8072 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs @@ -0,0 +1,87 @@ +namespace SRF.UI +{ + using System; + using Internal; + using UnityEngine; + using UnityEngine.UI; + + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + [AddComponentMenu(ComponentMenuPaths.ScrollToBottom)] + public class ScrollToBottomBehaviour : MonoBehaviour + { +#pragma warning disable 649 + [SerializeField] + private ScrollRect _scrollRect; + + [SerializeField] + private CanvasGroup _canvasGroup; +#pragma warning restore 649 + + public void Start() + { + if (_scrollRect == null) + { + Debug.LogError("[ScrollToBottomBehaviour] ScrollRect not set"); + return; + } + + if (_canvasGroup == null) + { + Debug.LogError("[ScrollToBottomBehaviour] CanvasGroup not set"); + return; + } + + _scrollRect.onValueChanged.AddListener(OnScrollRectValueChanged); + Refresh(); + } + + void OnEnable() + { + Refresh(); + } + + public void Trigger() + { + _scrollRect.normalizedPosition = new Vector2(0, 0); + } + + private void OnScrollRectValueChanged(Vector2 position) + { + Refresh(); + } + + private void Refresh() + { + if (_scrollRect == null) + return; + + var position = _scrollRect.normalizedPosition; + + if (position.y < 0.001f) + { + SetVisible(false); + } + else + { + SetVisible(true); + } + } + + void SetVisible(bool truth) + { + if (truth) + { + _canvasGroup.alpha = 1f; + _canvasGroup.interactable = true; + _canvasGroup.blocksRaycasts = true; + } + else + { + _canvasGroup.alpha = 0f; + _canvasGroup.interactable = false; + _canvasGroup.blocksRaycasts = false; + } + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs.meta new file mode 100644 index 00000000..510e17c9 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/ScrollToBottomBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35107bb7a2a89b54bbb85ea8ff193788 +timeCreated: 1476980356 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs new file mode 100644 index 00000000..670a5b66 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs @@ -0,0 +1,189 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + using UnityEngine.Serialization; + using UnityEngine.UI; + + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.StyleComponent)] + public class StyleComponent : SRMonoBehaviour + { + private Style _activeStyle; + private StyleRoot _cachedRoot; + private Graphic _graphic; + private bool _hasStarted; + private Image _image; + private Selectable _selectable; + + [SerializeField] [FormerlySerializedAs("StyleKey")] [HideInInspector] private string _styleKey; + + public bool IgnoreImage = false; + + public string StyleKey + { + get { return _styleKey; } + set + { + _styleKey = value; + Refresh(false); + } + } + + private void Start() + { + Refresh(true); + _hasStarted = true; + } + + private void OnEnable() + { + if (_hasStarted) + { + Refresh(false); + } + } + +#if UNITY_EDITOR + + /// + /// This method is not included in exported builds - don't worry about it showing up in the profiler. + /// + private void Update() + { + if (!Application.isPlaying) + { + ApplyStyle(); + } + } + +#endif + + public void Refresh(bool invalidateCache) + { + if (string.IsNullOrEmpty(StyleKey)) + { + _activeStyle = null; + return; + } + + if (_cachedRoot == null || invalidateCache) + { + _cachedRoot = GetStyleRoot(); + } + + if (_cachedRoot == null) + { + Debug.LogWarning("[StyleComponent] No active StyleRoot object found in parents.", this); + _activeStyle = null; + return; + } + + var s = _cachedRoot.GetStyle(StyleKey); + + if (s == null) + { + Debug.LogWarning("[StyleComponent] Style not found ({0})".Fmt(StyleKey), this); + _activeStyle = null; + return; + } + + _activeStyle = s; + ApplyStyle(); + } + + /// + /// Find the nearest enable style root component in parents + /// + /// + private StyleRoot GetStyleRoot() + { + var t = CachedTransform; + StyleRoot root; + + var i = 0; + + do + { + root = t.GetComponentInParent(); + + if (root != null) + { + t = root.transform.parent; + } + + ++i; + + if (i > 100) + { + Debug.LogWarning("Breaking Loop"); + break; + } + } while ((root != null && !root.enabled) && t != null); + + return root; + } + + private void ApplyStyle() + { + if (_activeStyle == null) + { + return; + } + + if (_graphic == null) + { + _graphic = GetComponent(); + } + + if (_selectable == null) + { + _selectable = GetComponent(); + } + + if (_image == null) + { + _image = GetComponent(); + } + + if (!IgnoreImage && _image != null) + { + _image.sprite = _activeStyle.Image; + } + + if (_selectable != null) + { + var colours = _selectable.colors; + colours.normalColor = _activeStyle.NormalColor; + colours.highlightedColor = _activeStyle.HoverColor; + colours.pressedColor = _activeStyle.ActiveColor; + colours.disabledColor = _activeStyle.DisabledColor; + colours.colorMultiplier = 1f; + + _selectable.colors = colours; + + if (_graphic != null) + { + _graphic.color = Color.white; + } + } + else if (_graphic != null) + { + _graphic.color = _activeStyle.NormalColor; + } + } + + private void SRStyleDirty() + { + // If inactive, invalidate the cached root and return. Next time it is enabled + // a new root will be found + if (!CachedGameObject.activeInHierarchy) + { + _cachedRoot = null; + return; + } + + Refresh(true); + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs.meta new file mode 100644 index 00000000..519df254 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleComponent.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73ae1b6eac706814a9cd427288a3c5c9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs new file mode 100644 index 00000000..a7d50709 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs @@ -0,0 +1,59 @@ +namespace SRF.UI +{ + using Internal; + using UnityEngine; + + [ExecuteInEditMode] + [AddComponentMenu(ComponentMenuPaths.StyleRoot)] + public sealed class StyleRoot : SRMonoBehaviour + { + private StyleSheet _activeStyleSheet; + public StyleSheet StyleSheet; + + public Style GetStyle(string key) + { + if (StyleSheet == null) + { + Debug.LogWarning("[StyleRoot] StyleSheet is not set.", this); + return null; + } + + return StyleSheet.GetStyle(key); + } + + private void OnEnable() + { + _activeStyleSheet = null; + + if (StyleSheet != null) + { + OnStyleSheetChanged(); + } + } + + private void OnDisable() + { + OnStyleSheetChanged(); + } + + private void Update() + { + if (_activeStyleSheet != StyleSheet) + { + OnStyleSheetChanged(); + } + } + + private void OnStyleSheetChanged() + { + _activeStyleSheet = StyleSheet; + + BroadcastMessage("SRStyleDirty", SendMessageOptions.DontRequireReceiver); + } + + public void SetDirty() + { + _activeStyleSheet = null; + } + } +} diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs.meta b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs.meta new file mode 100644 index 00000000..68b4b7a2 --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleRoot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1bf029da478aff42a6d6e0ed8e21203 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleSheet.cs b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleSheet.cs new file mode 100644 index 00000000..97da0ecb --- /dev/null +++ b/Assets/ThirdPlugins/StompyRobot/SRF/Scripts/UI/StyleSheet.cs @@ -0,0 +1,110 @@ +namespace SRF.UI +{ + using System; + using System.Collections.Generic; + using System.Linq; + using Helpers; + using UnityEngine; + + [Serializable] + public class Style + { + public Color ActiveColor = Color.white; + public Color DisabledColor = Color.white; + public Color HoverColor = Color.white; + public Sprite Image; + public Color NormalColor = Color.white; + + public Style Copy() + { + var s = new Style(); + s.CopyFrom(this); + return s; + } + + public void CopyFrom(Style style) + { + Image = style.Image; + NormalColor = style.NormalColor; + HoverColor = style.HoverColor; + ActiveColor = style.ActiveColor; + DisabledColor = style.DisabledColor; + } + } + + [Serializable] + public class StyleSheet : ScriptableObject + { + [SerializeField] private List _keys = new List(); + + [SerializeField] private List