diff --git a/ksp2-inputbinder-assets/Assets/AddressableAssetsData/AssetGroups/Inputbinder.asset b/ksp2-inputbinder-assets/Assets/AddressableAssetsData/AssetGroups/Inputbinder.asset index 05283ea..0b63bb5 100644 --- a/ksp2-inputbinder-assets/Assets/AddressableAssetsData/AssetGroups/Inputbinder.asset +++ b/ksp2-inputbinder-assets/Assets/AddressableAssetsData/AssetGroups/Inputbinder.asset @@ -105,6 +105,22 @@ MonoBehaviour: m_Address: Codenade.Inputbinder/SearchBox m_ReadOnly: 0 m_SerializedLabels: [] + - m_GUID: 40d436c09638a8d4c9656b4096794739 + m_Address: Codenade.Inputbinder/Icons/ring.png + m_ReadOnly: 0 + m_SerializedLabels: [] + - m_GUID: 7d227d68e3a3db84f869e22b08d3c3a5 + m_Address: Codenade.Inputbinder/Icons/ring-bottom.png + m_ReadOnly: 0 + m_SerializedLabels: [] + - m_GUID: aad6f57084e714d4fa828f6c841263cd + m_Address: Codenade.Inputbinder/Icons/ring-top.png + m_ReadOnly: 0 + m_SerializedLabels: [] + - m_GUID: de699fe0028059041b17dab217c93fb8 + m_Address: Codenade.Inputbinder/Icons/ring-both.png + m_ReadOnly: 0 + m_SerializedLabels: [] m_ReadOnly: 0 m_Settings: {fileID: 11400000, guid: 8644c698111574d4db1297cfbb2f6c1b, type: 2} m_SchemaSet: diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-both.png b/ksp2-inputbinder-assets/Assets/Icons/ring-both.png new file mode 100644 index 0000000..d3eaee7 Binary files /dev/null and b/ksp2-inputbinder-assets/Assets/Icons/ring-both.png differ diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-both.png.meta b/ksp2-inputbinder-assets/Assets/Icons/ring-both.png.meta new file mode 100644 index 0000000..eeb3006 --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring-both.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: de699fe0028059041b17dab217c93fb8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 300 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png b/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png new file mode 100644 index 0000000..7c069e7 Binary files /dev/null and b/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png differ diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png.meta b/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png.meta new file mode 100644 index 0000000..fbd5b0a --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring-bottom.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 7d227d68e3a3db84f869e22b08d3c3a5 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 300 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-top.png b/ksp2-inputbinder-assets/Assets/Icons/ring-top.png new file mode 100644 index 0000000..60ca972 Binary files /dev/null and b/ksp2-inputbinder-assets/Assets/Icons/ring-top.png differ diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring-top.png.meta b/ksp2-inputbinder-assets/Assets/Icons/ring-top.png.meta new file mode 100644 index 0000000..71e1ee9 --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring-top.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: aad6f57084e714d4fa828f6c841263cd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 300 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring.png b/ksp2-inputbinder-assets/Assets/Icons/ring.png new file mode 100644 index 0000000..206c40f Binary files /dev/null and b/ksp2-inputbinder-assets/Assets/Icons/ring.png differ diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring.png.meta b/ksp2-inputbinder-assets/Assets/Icons/ring.png.meta new file mode 100644 index 0000000..1b4f653 --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 40d436c09638a8d4c9656b4096794739 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 300 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring.svg b/ksp2-inputbinder-assets/Assets/Icons/ring.svg new file mode 100644 index 0000000..70c31c7 --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + diff --git a/ksp2-inputbinder-assets/Assets/Icons/ring.svg.meta b/ksp2-inputbinder-assets/Assets/Icons/ring.svg.meta new file mode 100644 index 0000000..61b04d2 --- /dev/null +++ b/ksp2-inputbinder-assets/Assets/Icons/ring.svg.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3037d4faf555238448395c1cb91b919c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorSaveButton.prefab b/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorSaveButton.prefab index 297a793..941de4d 100644 --- a/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorSaveButton.prefab +++ b/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorSaveButton.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5116417121060861808} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -65,7 +65,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Save + m_text: Apply m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -164,10 +164,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8152111216060116498} 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} diff --git a/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorWindowContent.prefab b/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorWindowContent.prefab index 52c4bc7..6ef36a7 100644 --- a/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorWindowContent.prefab +++ b/ksp2-inputbinder-assets/Assets/Prefabs/ProcessorWindowContent.prefab @@ -1,5 +1,80 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &60265376704322782 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8392941439737547295} + - component: {fileID: 8498180138623673523} + - component: {fileID: 3157873713848644850} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8392941439737547295 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60265376704322782} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8321961607384480341} + 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 &8498180138623673523 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60265376704322782} + m_CullTransparentMesh: 1 +--- !u!114 &3157873713848644850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60265376704322782} + 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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: de699fe0028059041b17dab217c93fb8, 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!1 &1270871442902592210 GameObject: m_ObjectHideFlags: 0 @@ -29,10 +104,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270871443995391932} m_Father: {fileID: 1270871443436255870} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -117,11 +192,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5074258553313709405} - {fileID: 1270871443811412285} m_Father: {fileID: 1270871443995391932} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -170,7 +245,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1270871443186402786 RectTransform: m_ObjectHideFlags: 0 @@ -181,17 +256,18 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5590239601663679738} - {fileID: 5261023518752025834} + - {fileID: 8321961607384480341} - {fileID: 1270871443381220763} m_Father: {fileID: 1270871443995391932} - 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: 90.33, y: -20} - m_SizeDelta: {x: 180.66, y: 40} + 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 &1270871443186402787 MonoBehaviour: @@ -246,14 +322,14 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1270871443186402786} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 90.33, y: -40} - m_SizeDelta: {x: 180.66, y: 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 &1270871443381220740 MonoBehaviour: @@ -310,11 +386,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270871442902592211} - {fileID: 1270871444194003788} m_Father: {fileID: 0} - 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} @@ -416,12 +492,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5590239602625455646} - {fileID: 3912228579438252192} - {fileID: 1270871444206273172} m_Father: {fileID: 1270871443995391932} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -481,9 +557,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1270871443037968783} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -544,9 +620,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1270871443968477037} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -617,10 +693,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270871443883074262} m_Father: {fileID: 1270871444194003788} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -655,12 +731,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270871443186402786} - {fileID: 1270871443037968783} - {fileID: 1270871443555904178} m_Father: {fileID: 1270871442902592211} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -736,10 +812,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270871443968477037} m_Father: {fileID: 1270871443436255870} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -860,9 +936,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1270871443555904178} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -895,11 +971,210 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 +--- !u!1 &3748399627489724682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8321961607384480341} + - component: {fileID: 4381604461232642093} + m_Layer: 5 + m_Name: ValueGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8321961607384480341 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3748399627489724682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8392941439737547295} + - {fileID: 3312148710545092697} + m_Father: {fileID: 1270871443186402786} + 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 &4381604461232642093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3748399627489724682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + 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 + m_ReverseArrangement: 0 +--- !u!1 &7155791252272157101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3312148710545092697} + - component: {fileID: 8103345695007027139} + - component: {fileID: 2368633411953927248} + m_Layer: 5 + m_Name: Value + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3312148710545092697 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7155791252272157101} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8321961607384480341} + 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 &8103345695007027139 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7155791252272157101} + m_CullTransparentMesh: 1 +--- !u!114 &2368633411953927248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7155791252272157101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Value + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 12 + m_fontSizeBase: 12 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 3 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 5, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1001 &1270871443237806995 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1270871443186402786} m_Modifications: - target: {fileID: 3541106057085378520, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} @@ -924,7 +1199,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_AnchorMin.x @@ -932,15 +1207,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_SizeDelta.x - value: 180.66 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_SizeDelta.y - value: 20 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_LocalPosition.x @@ -972,11 +1247,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_AnchoredPosition.x - value: 90.33 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_AnchoredPosition.y - value: -10 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -995,6 +1270,9 @@ PrefabInstance: value: ProcessorCancelButton objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} --- !u!224 &5590239601663679738 stripped RectTransform: @@ -1006,6 +1284,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1270871443555904178} m_Modifications: - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} @@ -1097,6 +1376,9 @@ PrefabInstance: value: ProcessorCancelButton objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} --- !u!224 &5590239602625455646 stripped RectTransform: @@ -1108,6 +1390,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1270871443037968783} m_Modifications: - target: {fileID: 6644937643226087273, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} @@ -1199,6 +1482,9 @@ PrefabInstance: value: ProcessorCancelButton objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5c674c30542c7f64084331bbddae68c7, type: 3} --- !u!224 &5074258553313709405 stripped RectTransform: @@ -1210,6 +1496,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1270871443555904178} m_Modifications: - target: {fileID: 5116417121060861808, guid: 5fb5680935354694bb69a32ebbbc2956, type: 3} @@ -1301,6 +1588,9 @@ PrefabInstance: value: ProcessorSaveButton objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5fb5680935354694bb69a32ebbbc2956, type: 3} --- !u!224 &3912228579438252192 stripped RectTransform: @@ -1312,6 +1602,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1270871443186402786} m_Modifications: - target: {fileID: 1025797152624248629, guid: b2517bd3c137096419d4959e713fc03e, type: 3} @@ -1336,7 +1627,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_AnchorMin.x @@ -1344,15 +1635,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_SizeDelta.x - value: 180.66 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_SizeDelta.y - value: 20 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_LocalPosition.x @@ -1384,11 +1675,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_AnchoredPosition.x - value: 90.33 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_AnchoredPosition.y - value: -30 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3691881327015811145, guid: b2517bd3c137096419d4959e713fc03e, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -1415,6 +1706,9 @@ PrefabInstance: value: -1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b2517bd3c137096419d4959e713fc03e, type: 3} --- !u!224 &5261023518752025834 stripped RectTransform: diff --git a/ksp2-inputbinder/GameInputUtils.cs b/ksp2-inputbinder/GameInputUtils.cs index 1b96c8f..c1b60ff 100644 --- a/ksp2-inputbinder/GameInputUtils.cs +++ b/ksp2-inputbinder/GameInputUtils.cs @@ -12,6 +12,9 @@ namespace Codenade.Inputbinder { internal static class GameInputUtils { + private static readonly FieldInfo _inputControlMinValue = typeof(InputControl).GetField("m_MinValue", BindingFlags.Instance | BindingFlags.NonPublic); + private static readonly FieldInfo _inputControlMaxValue = typeof(InputControl).GetField("m_MaxValue", BindingFlags.Instance | BindingFlags.NonPublic); + // Handling for game_actions_to_add.txt public static List Load(string path) { @@ -127,6 +130,10 @@ public static void OnStateChange(this InputAction action, Action (PrimitiveValue)_inputControlMinValue.GetValue(control); + + public static PrimitiveValue GetMaxValue(this InputControl control) => (PrimitiveValue)_inputControlMaxValue.GetValue(control); + public static Dictionary GetInputSystemLayouts() { var im = typeof(InputSystem).GetField("s_Manager", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null); diff --git a/ksp2-inputbinder/GlobalConfiguration.cs b/ksp2-inputbinder/GlobalConfiguration.cs index 0d2ed52..b60da14 100644 --- a/ksp2-inputbinder/GlobalConfiguration.cs +++ b/ksp2-inputbinder/GlobalConfiguration.cs @@ -12,10 +12,9 @@ internal static class GlobalConfiguration internal static readonly string profilePath = Path.Combine(BepInEx.Paths.ConfigPath, "inputbinder/defaultprofile.txt"); public static List aapBindings = new List(); - [ConfigProperty("main")] - public static float SliderMin { get; set; } = -2; - [ConfigProperty("main")] - public static float SliderMax { get; set; } = 2; + [ConfigProperty("main")] public static float SliderMin { get; set; } = -2; + [ConfigProperty("main")] public static float SliderMax { get; set; } = 2; + [ConfigProperty("main")] public static bool ShowValuesInProcessorsSection { get; set; } = true; public static string DefaultProfile { get; set; } = "input"; public static void Load() @@ -148,7 +147,7 @@ public static void Create() SaveDefaultProfile(); } - protected class ConfigPropertyAttribute : Attribute + private class ConfigPropertyAttribute : Attribute { public string Section { get; set; } diff --git a/ksp2-inputbinder/ProcessorUtilities.cs b/ksp2-inputbinder/ProcessorUtilities.cs index eb7e9ba..cd8a304 100644 --- a/ksp2-inputbinder/ProcessorUtilities.cs +++ b/ksp2-inputbinder/ProcessorUtilities.cs @@ -1,4 +1,8 @@ -namespace Codenade.Inputbinder +using System; +using System.Reflection; +using UnityEngine.InputSystem; + +namespace Codenade.Inputbinder { public static class ProcessorUtilities { @@ -24,5 +28,55 @@ public static bool ExtractSingleProcessor(string input, string processorName, ou output = input.Substring(start, end - start + 1); return true; } + + public static object Process(string processorString, object value, InputControl control) + { + var processorName = processorString.Substring(0, processorString.IndexOf('(')); + Type processorType = InputSystem.TryGetProcessor(processorName); + if (processorType is null) + return value; + InputProcessor processorObj = (InputProcessor)Activator.CreateInstance(processorType); + foreach (var parameterStr in processorString.Substring(processorName.Length + 1, processorString.IndexOf(')', processorName.Length) - (processorName.Length + 1)).Split(',')) + { + string[] splits = parameterStr.Split('='); + if (splits.Length == 2) + { + var fldInf = processorType.GetField(splits[0], BindingFlags.Instance | BindingFlags.Public); + if (fldInf is null) + continue; + object procFldValue = null; + var fldType = fldInf.FieldType; + if (fldType.IsValueType) + procFldValue = Activator.CreateInstance(fldType); + if (fldType == typeof(string)) + procFldValue = splits[1]; + else if (fldType.GetMethod("TryParse", new Type[] { typeof(string), fldType.MakeByRefType() }) is MethodInfo tryParseMethod) + { + object[] mParams = new object[] { splits[1], procFldValue }; + if (!(bool)tryParseMethod.Invoke(null, mParams)) + continue; + procFldValue = mParams[1]; + } + else if (fldType.GetMethod("Parse", new Type[] { typeof(string) }) is MethodInfo parseMethod) + { + try + { + procFldValue = parseMethod.Invoke(null, new object[] { splits[1] }); + } + catch (Exception) + { + continue; + } + } + else + { + continue; + } + + fldInf.SetValue(processorObj, procFldValue); + } + } + return processorObj.ProcessAsObject(value, control); + } } } diff --git a/ksp2-inputbinder/ksp2-inputbinder.csproj b/ksp2-inputbinder/ksp2-inputbinder.csproj index 8717901..aaf3ecc 100644 --- a/ksp2-inputbinder/ksp2-inputbinder.csproj +++ b/ksp2-inputbinder/ksp2-inputbinder.csproj @@ -3,6 +3,7 @@ netstandard2.1 Codenade.Inputbinder + true 0.6.0 diff --git a/ksp2-inputbinder/ui/Page1ListPopulator.cs b/ksp2-inputbinder/ui/Page1ListPopulator.cs index 8837b6e..9234fdb 100644 --- a/ksp2-inputbinder/ui/Page1ListPopulator.cs +++ b/ksp2-inputbinder/ui/Page1ListPopulator.cs @@ -1,22 +1,134 @@ -using TMPro; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using TMPro; using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.AddressableAssets.ResourceLocators; +using UnityEngine.InputSystem; +using UnityEngine.ResourceManagement.AsyncOperations; +using UnityEngine.UI; namespace Codenade.Inputbinder { internal class Page1ListPopulator : MonoBehaviour { + private static Sprite sprtRing; + private static Sprite sprtRingTop; + private static Sprite sprtRingBottom; + private static Sprite sprtRingBoth; + private static List waitingForBoth = new List(); + private static List waitingForBottom = new List(); + + private TextMeshProUGUI _value; + private TextMeshProUGUI[] _intermediates; + private string[] _processors; + private InputAction _action; + private MethodInfo _currentStatePointerInfo; + + private void Awake() + { + _currentStatePointerInfo = typeof(InputControl).GetProperty("currentStatePtr", BindingFlags.Instance | BindingFlags.NonPublic).GetMethod; + _value = transform.parent.Find("ValueGroup/Value").gameObject.GetComponent(); + var catOp = Addressables.LoadContentCatalogAsync(Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), Path.Join("addressables", "catalog.json"))); + catOp.Completed += CatalogLoaded; + + void CatalogLoaded(AsyncOperationHandle hOpc) + { + if (hOpc.Status == AsyncOperationStatus.Succeeded) + { + var resLoc = hOpc.Result; + Addressables.LoadAssetAsync("Codenade.Inputbinder/Icons/ring.png").Completed += (x) => AssetLoaded(x, ref sprtRing); + Addressables.LoadAssetAsync("Codenade.Inputbinder/Icons/ring-top.png").Completed += (x) => AssetLoaded(x, ref sprtRingTop); + Addressables.LoadAssetAsync("Codenade.Inputbinder/Icons/ring-bottom.png").Completed += (x) => AssetLoaded(x, ref sprtRingBottom); + Addressables.LoadAssetAsync("Codenade.Inputbinder/Icons/ring-both.png").Completed += (x) => AssetLoaded(x, ref sprtRingBoth); + } + else + QLog.Error("Page1ListPopulator could not load Catalog!"); + } + + void AssetLoaded(AsyncOperationHandle hOp, ref Sprite sprt) + { + if (hOp.Status == AsyncOperationStatus.Succeeded) + sprt = hOp.Result; + else + QLog.Error("Page1ListPopulator could not load Asset!"); + if (sprtRing is object && sprtRingTop is object && sprtRingBottom is object && sprtRingBoth is object) + { + _value.transform.parent.Find("Icon").GetComponent().sprite = sprtRingTop; + foreach (var img in waitingForBottom) + img.sprite = sprtRingBottom; + foreach (var img in waitingForBoth) + img.sprite = sprtRingBoth; + } + } + } + + + private unsafe void ValueUpdate(InputAction.CallbackContext ctx) + { + object originalValue = ctx.control.ReadValueFromStateAsObject(System.Reflection.Pointer.Unbox(_currentStatePointerInfo.Invoke(ctx.control, null))); + if (originalValue is object) + { + _value.text = originalValue.ToString(); + int idx = 0; + foreach (var i in _intermediates) + { + if (idx == _intermediates.Length - 1) + originalValue = $"{ctx.control.GetMinValue()} {_action.ReadValueAsObject()} {ctx.control.GetMaxValue()}"; + else + originalValue = ProcessorUtilities.Process(_processors[idx], originalValue, ctx.control); + i.text = originalValue?.ToString() ?? string.Empty; + idx++; + } + } + else + { + _value.text = string.Empty; + foreach (var lbl in _intermediates) + lbl.text = string.Empty; + } + } + private void OnEnable() { Reload(); + if (GlobalConfiguration.ShowValuesInProcessorsSection) + { + _action.started += ValueUpdate; + _action.performed += ValueUpdate; + _action.canceled += ValueUpdate; + } + } + + private void OnDisable() + { + if (GlobalConfiguration.ShowValuesInProcessorsSection) + { + _action.started -= ValueUpdate; + _action.performed -= ValueUpdate; + _action.canceled -= ValueUpdate; + } } public void Reload() { for (var j = gameObject.transform.childCount - 1; j >= 0; j--) DestroyImmediate(gameObject.transform.GetChild(j).gameObject); - foreach (var p in (Inputbinder.Instance.ActionManager.ProcBindInfo.Binding.overrideProcessors ?? "").Split(';')) + + _action = Inputbinder.Instance.ActionManager.ProcBindInfo.Action; + _processors = (Inputbinder.Instance.ActionManager.ProcBindInfo.Binding.overrideProcessors ?? string.Empty).Split(';'); + if (_processors.Length == 1 && _processors[0] == string.Empty) + _processors = new string[0]; + if (GlobalConfiguration.ShowValuesInProcessorsSection) + _intermediates = new TextMeshProUGUI[_processors.Length]; + else + _intermediates = new TextMeshProUGUI[0]; + + int idx = 0; + foreach (var p in _processors) { - if (p.IsNullOrEmpty() || p.IndexOf('(') < 0 || p.IndexOf(')') < 0) + if (p == string.Empty) continue; var temp = Instantiate(Inputbinder.Instance.BindingUI.Assets[BindingUI.PrefabKeys.ProcessorGroup], gameObject.transform); var strt = p.IndexOf('('); @@ -26,8 +138,59 @@ public void Reload() infoGroup.GetChild("ProcessorName").GetComponent().text = name; infoGroup.GetChild("ProcessorValues").GetComponent().text = values; temp.GetChild("ProcessorEditButton").AddComponent().Initialize(name); - temp.GetChild("ProcessorRemoveButton").AddComponent().Initialize(name); + var procRemove = temp.GetChild("ProcessorRemoveButton").AddComponent(); + procRemove.Initialize(name); + procRemove.OnRemove += ProcRemove_OnRemove; + if (GlobalConfiguration.ShowValuesInProcessorsSection) + { + var intermediateValueGameObject = Instantiate(_value.transform.parent.gameObject, gameObject.transform); + intermediateValueGameObject.name = p + "_Intermediate"; + _intermediates[idx] = intermediateValueGameObject.transform.Find("Value").GetComponent(); + if (idx == _processors.Length - 1) + { + var img = _intermediates[idx].transform.parent.Find("Icon").GetComponent(); + if (sprtRingBottom == null) + waitingForBottom.Add(img); + else + img.sprite = sprtRingBottom; + } + else + { + var img = _intermediates[idx].transform.parent.Find("Icon").GetComponent(); + if (sprtRingBoth == null) + waitingForBoth.Add(img); + else + img.sprite = sprtRingBoth; + } + } + idx++; + } + _value.text = string.Empty; + foreach (var lbl in _intermediates) + lbl.text = string.Empty; + } + + private void ProcRemove_OnRemove(string toRemove) + { + if (!GlobalConfiguration.ShowValuesInProcessorsSection) + return; + var newProcessors = new List(); + var newIntermediates = new List(); + var idx = 0; + foreach (var proc in _processors) + { + if (proc != toRemove) + { + newProcessors.Add(proc); + newIntermediates.Add(_intermediates[idx]); + } + else + Destroy(_intermediates[idx].transform.parent.gameObject); + idx++; } + _processors = newProcessors.ToArray(); + _intermediates = newIntermediates.ToArray(); + _intermediates[^1].transform.parent.Find("Icon").GetComponent().sprite = sprtRingBottom; } } } diff --git a/ksp2-inputbinder/ui/ProcRemoveBehaviour.cs b/ksp2-inputbinder/ui/ProcRemoveBehaviour.cs index 976b31e..4ff8bd4 100644 --- a/ksp2-inputbinder/ui/ProcRemoveBehaviour.cs +++ b/ksp2-inputbinder/ui/ProcRemoveBehaviour.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using System; +using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI; @@ -6,6 +7,7 @@ namespace Codenade.Inputbinder { internal class ProcRemoveBehaviour : MonoBehaviour { + internal event Action OnRemove; private string _processorName; private void Awake() @@ -33,8 +35,11 @@ private void OnClick() if (_processorName == "") return; var binding = Inputbinder.Instance.ActionManager.ProcBindInfo.Binding; - if (ProcessorUtilities.ExtractSingleProcessor(binding.overrideProcessors ?? "", _processorName, out var toReplace)) - binding.overrideProcessors = binding.overrideProcessors.Replace(toReplace, "").Trim(';'); + if (ProcessorUtilities.ExtractSingleProcessor(binding.overrideProcessors ?? "", _processorName, out var toRemove)) + { + OnRemove?.Invoke(toRemove); + binding.overrideProcessors = binding.overrideProcessors.Remove(binding.overrideProcessors.IndexOf(toRemove), toRemove.Length).Trim(';').Replace(";;", ";"); + } else return; if (binding.overrideProcessors == "")