From 6bca1d0c079b3cca4e603aae502a183cbc8e7832 Mon Sep 17 00:00:00 2001 From: tverona1 Date: Sun, 8 Sep 2019 14:28:45 -0700 Subject: [PATCH] Support for renaming apps - Adds support for renaming apps: By pressing A or X on the controller, you can choose an alternate app name / icon. You can reset these changes back to default in Settings. --- Assets/Plugins/Android/AppInfo.java | 80 +- Assets/Resources/OVRBuildConfig.asset | 2 +- Assets/Scenes/QuestAppLauncher.unity | 2470 ++++++++++++++++- Assets/Scripts/AppEntry.cs | 3 + Assets/Scripts/AppProcessor.cs | 114 +- Assets/Scripts/AssetsDownloader.cs | 2 +- Assets/Scripts/Config.cs | 1 - Assets/Scripts/GridPopulation.cs | 80 +- Assets/Scripts/HideAppHandler.cs | 40 + Assets/Scripts/HideAppHandler.cs.meta | 11 + Assets/Scripts/IEnumeratorAwaitExtensions.cs | 147 + .../IEnumeratorAwaitExtensions.cs.meta | 11 + Assets/Scripts/OnInteraction.cs | 54 +- Assets/Scripts/RenameHandler.cs | 167 ++ Assets/Scripts/RenameHandler.cs.meta | 11 + Assets/Scripts/SettingsHandler.cs | 20 +- ProjectSettings/ProjectSettings.asset | 2 +- 17 files changed, 3134 insertions(+), 81 deletions(-) create mode 100644 Assets/Scripts/HideAppHandler.cs create mode 100644 Assets/Scripts/HideAppHandler.cs.meta create mode 100644 Assets/Scripts/IEnumeratorAwaitExtensions.cs create mode 100644 Assets/Scripts/IEnumeratorAwaitExtensions.cs.meta create mode 100644 Assets/Scripts/RenameHandler.cs create mode 100644 Assets/Scripts/RenameHandler.cs.meta diff --git a/Assets/Plugins/Android/AppInfo.java b/Assets/Plugins/Android/AppInfo.java index 83b248a..35b22d7 100644 --- a/Assets/Plugins/Android/AppInfo.java +++ b/Assets/Plugins/Android/AppInfo.java @@ -23,6 +23,7 @@ import java.util.Calendar; import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; import android.os.Bundle; import android.util.Log; import android.graphics.Bitmap; @@ -152,7 +153,6 @@ public class AppInfo extends UnityPlayerActivity { } public static void unzip(String zipFileName, String targetPath) { - File outDir = new File(targetPath); // Create target path if not exist @@ -181,9 +181,85 @@ public class AppInfo extends UnityPlayerActivity { } } } + + stream.closeEntry(); } } catch (Exception e) { - System.out.println(e); + e.printStackTrace(); + } + } + + public static void addFileToZip(String zipFilePath, String sourceFilePath, String entryName) + { + Log.v(TAG, "Adding to zip: " + sourceFilePath + " to " + zipFilePath + " with entry name " + entryName); + + File zipFile = new File(zipFilePath); + File tempZipFile; + byte[] buffer = new byte[8192]; + + try { + // Create temporary zip file in same location as zip file + tempZipFile = File.createTempFile(zipFile.getName(), null, new File(zipFile.getParent())); + } catch (Exception e) { + e.printStackTrace(); + return; + } + + try (FileOutputStream fos = new FileOutputStream(tempZipFile); + BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length); + ZipOutputStream zos = new ZipOutputStream(bos)) { + + if (zipFile.exists()) { + try (FileInputStream fis = new FileInputStream(zipFilePath); + BufferedInputStream bis = new BufferedInputStream(fis); + ZipInputStream zin = new ZipInputStream(bis)) { + + // Copy contents of input zip file to temp zip file + ZipEntry ze = null; + while ((ze = zin.getNextEntry()) != null) { + if (ze.getName().equalsIgnoreCase(entryName)) { + // The file we're trying to add already exists, so skip it + continue; + } + + zos.putNextEntry(ze); + int len; + while ((len = zin.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + zos.closeEntry(); + } + } + } + + // Add our new file + zos.putNextEntry(new ZipEntry(entryName)); + try (FileInputStream fileFis = new FileInputStream(sourceFilePath); + BufferedInputStream fileBis = new BufferedInputStream(fileFis)) { + int len; + while ((len = fileBis.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + } + zos.closeEntry(); + zos.finish(); + zos.close(); + bos.close(); + fos.close(); + + // Copy temp file to original zip file + if (zipFile.exists()) { + zipFile.delete(); + } + if (!tempZipFile.renameTo(zipFile)) { + throw new Exception("Could not rename file " + tempZipFile.getName() + " to " + zipFile.getName()); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (tempZipFile.exists()) { + tempZipFile.delete(); + } } } diff --git a/Assets/Resources/OVRBuildConfig.asset b/Assets/Resources/OVRBuildConfig.asset index cf5cd6c..f2d36f8 100644 --- a/Assets/Resources/OVRBuildConfig.asset +++ b/Assets/Resources/OVRBuildConfig.asset @@ -12,6 +12,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 20553fac56ec59645857c0732b787431, type: 3} m_Name: OVRBuildConfig m_EditorClassIdentifier: - androidSDKPath: + androidSDKPath: C:\Users\tvero\AppData\Local\Android\Sdk gradlePath: jdkPath: diff --git a/Assets/Scenes/QuestAppLauncher.unity b/Assets/Scenes/QuestAppLauncher.unity index 1cecaed..4aa7795 100644 --- a/Assets/Scenes/QuestAppLauncher.unity +++ b/Assets/Scenes/QuestAppLauncher.unity @@ -374,6 +374,83 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_IsOn: 1 +--- !u!1 &34138275 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 34138276} + - component: {fileID: 34138278} + - component: {fileID: 34138277} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &34138276 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34138275} + m_LocalRotation: {x: 0, 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: 780347000} + - {fileID: 127404528} + m_Father: {fileID: 519013808} + 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: 800, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &34138277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34138275} + 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.011764706, g: 0.101960786, b: 0.21960784, 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_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 &34138278 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34138275} + m_CullTransparentMesh: 0 --- !u!1 &61603938 GameObject: m_ObjectHideFlags: 0 @@ -981,6 +1058,69 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_IsOn: 0 +--- !u!1 &127404527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 127404528} + - component: {fileID: 127404529} + m_Layer: 5 + m_Name: VerticalLayout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &127404528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127404527} + m_LocalRotation: {x: -0, 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: 703634711} + - {fileID: 504416153} + m_Father: {fileID: 34138276} + 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: 800, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &127404529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 127404527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 --- !u!1 &129491541 GameObject: m_ObjectHideFlags: 0 @@ -1015,8 +1155,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 100, y: -175} - m_SizeDelta: {x: 200, y: 50} + m_AnchoredPosition: {x: 0, y: -175} + m_SizeDelta: {x: 0, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &129491543 MonoBehaviour: @@ -1038,7 +1178,7 @@ MonoBehaviour: m_Calls: [] m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_text: Hide apps by selecting and pressing B or Y on your controller. + m_text: Hide apps by selecting app and pressing B or Y m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -1104,13 +1244,13 @@ MonoBehaviour: m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 - m_margin: {x: 3.513392, y: 0, z: -1298.6443, w: 0} + m_margin: {x: 3.513392, y: 0, z: -900, w: 0} m_textInfo: textComponent: {fileID: 129491543} - characterCount: 62 + characterCount: 46 spriteCount: 0 - spaceCount: 11 - wordCount: 12 + spaceCount: 9 + wordCount: 10 linkCount: 0 lineCount: 1 pageCount: 1 @@ -1851,6 +1991,163 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_IsOn: 0 +--- !u!1 &249785785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 249785786} + - component: {fileID: 249785788} + - component: {fileID: 249785787} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &249785786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 249785785} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1569708396} + 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 &249785787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 249785785} + 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: 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_text: Rename + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 64 + m_fontSizeBase: 64 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 86 + m_fontStyle: 0 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 249785787} + characterCount: 6 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &249785788 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 249785785} + m_CullTransparentMesh: 0 --- !u!1 &259498116 GameObject: m_ObjectHideFlags: 0 @@ -3421,6 +3718,226 @@ MonoBehaviour: m_ChildControlHeight: 0 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 +--- !u!1 &483929307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 483929308} + - component: {fileID: 483929310} + - component: {fileID: 483929309} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &483929308 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483929307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1350515684} + 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: 75, y: -30} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &483929309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483929307} + 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: 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_text: Cancel + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + 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: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 483929309} + characterCount: 6 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &483929310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483929307} + m_CullTransparentMesh: 0 +--- !u!1 &504416152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 504416153} + - component: {fileID: 504416154} + m_Layer: 5 + m_Name: Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &504416153 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 504416152} + m_LocalRotation: {x: -0, 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: 1508987251} + - {fileID: 1350515684} + m_Father: {fileID: 127404528} + 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: 400, y: -240} + m_SizeDelta: {x: 800, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &504416154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 504416152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 --- !u!1 &514308058 GameObject: m_ObjectHideFlags: 0 @@ -3583,6 +4100,110 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 514308058} m_CullTransparentMesh: 0 +--- !u!1 &519013807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519013808} + - component: {fileID: 519013812} + - component: {fileID: 519013811} + - component: {fileID: 519013810} + - component: {fileID: 519013809} + m_Layer: 5 + m_Name: HideApp_Dialog + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &519013808 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519013807} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 34138276} + m_Father: {fileID: 1950750522} + m_RootOrder: 6 + 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 &519013809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519013807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f9275ecafce3994394538da0abe4977, type: 3} + m_Name: + m_EditorClassIdentifier: + text: {fileID: 703634712} +--- !u!65 &519013810 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519013807} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 2800, y: 2000, z: 0} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &519013811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519013807} + 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, g: 0, b: 0, a: 0} + 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_Sprite: {fileID: 10907, 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!222 &519013812 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519013807} + m_CullTransparentMesh: 0 --- !u!1 &572537054 GameObject: m_ObjectHideFlags: 0 @@ -3607,19 +4228,19 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 572537054} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, 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: 1106898771} - {fileID: 129491542} - m_Father: {fileID: 883330324} - m_RootOrder: 6 + m_Father: {fileID: 1993578281} + 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: 150, y: -1750} - m_SizeDelta: {x: 100, y: 100} + m_AnchoredPosition: {x: 450, y: -100} + m_SizeDelta: {x: 900, y: 200} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &572537056 MonoBehaviour: @@ -4415,6 +5036,77 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 684313056} m_CullTransparentMesh: 0 +--- !u!1 &686608799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 686608800} + - component: {fileID: 686608801} + - component: {fileID: 686608802} + m_Layer: 5 + m_Name: Rename_Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &686608800 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686608799} + m_LocalRotation: {x: 0, 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: 1569708396} + - {fileID: 1045416982} + - {fileID: 1623456992} + m_Father: {fileID: 1113839879} + 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: 2802, y: 2000} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &686608801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686608799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &686608802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686608799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f0617ad70a22344684e254e37ddef2e, type: 3} + m_Name: + m_EditorClassIdentifier: + panelContainer: {fileID: 1950750521} + closeRenameButton: {fileID: 1623456991} + renamePanelContainer: {fileID: 686608799} + renameScrollContainer: {fileID: 1045416981} + renameLabel: {fileID: 249785787} + gridPopulation: {fileID: 1860838375} --- !u!1 &696398112 GameObject: m_ObjectHideFlags: 0 @@ -4536,6 +5228,163 @@ Transform: m_Father: {fileID: 1644749161} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: -90.00001, z: 5} +--- !u!1 &703634710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 703634711} + - component: {fileID: 703634713} + - component: {fileID: 703634712} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &703634711 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703634710} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 127404528} + 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: 400, y: -90} + m_SizeDelta: {x: 600, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &703634712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703634710} + 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: 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_text: Hide app? + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 703634712} + characterCount: 9 + spriteCount: 0 + spaceCount: 1 + wordCount: 2 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &703634713 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703634710} + m_CullTransparentMesh: 0 --- !u!1 &715250739 GameObject: m_ObjectHideFlags: 0 @@ -4727,6 +5576,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 730856369} m_CullTransparentMesh: 0 +--- !u!1 &780346999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 780347000} + - component: {fileID: 780347002} + - component: {fileID: 780347001} + m_Layer: 5 + m_Name: Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &780347000 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 780346999} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 34138276} + 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 &780347001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 780346999} + 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, g: 0.68235296, b: 0.9372549, 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_Sprite: {fileID: 21300000, guid: eb604cc485e242f47964afd8b57c3352, 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!222 &780347002 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 780346999} + m_CullTransparentMesh: 0 --- !u!1 &788846825 GameObject: m_ObjectHideFlags: 0 @@ -5422,7 +6346,7 @@ RectTransform: - {fileID: 302656573} - {fileID: 949458750} - {fileID: 585330016} - - {fileID: 572537055} + - {fileID: 1993578281} m_Father: {fileID: 1213035640} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -6387,6 +7311,41 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1026875225} m_CullTransparentMesh: 0 +--- !u!1 &1045416981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1045416982} + m_Layer: 5 + m_Name: Rename_Scroll_Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1045416982 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045416981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 686608800} + 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 &1051081550 GameObject: m_ObjectHideFlags: 0 @@ -7048,8 +8007,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 400, y: -75} - m_SizeDelta: {x: 800, y: 150} + m_AnchoredPosition: {x: 450, y: -75} + m_SizeDelta: {x: 900, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1106898772 MonoBehaviour: @@ -7181,7 +8140,7 @@ BoxCollider: m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 800, y: 150, z: 0.05} + m_Size: {x: 900, y: 150, z: 0.05} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1107460991 GameObject: @@ -7373,6 +8332,7 @@ RectTransform: m_Children: - {fileID: 1950750522} - {fileID: 1213035640} + - {fileID: 686608800} m_Father: {fileID: 0} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -7436,10 +8396,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 054c7813b6beaab439c025873fec9b94, type: 3} m_Name: m_EditorClassIdentifier: - yellowMat: {fileID: 0} - backIdle: {fileID: 0} - backACtive: {fileID: 0} - outText: {fileID: 0} + hideAppHandler: {fileID: 519013809} + renameHandler: {fileID: 686608802} --- !u!114 &1113839884 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7455,6 +8413,7 @@ MonoBehaviour: trackingSpace: {fileID: 881994610} primaryButton: 8192 secondaryButton: 10 + tertiaryButton: 5 excludeLayers: serializedVersion: 2 m_Bits: 0 @@ -7528,6 +8487,22 @@ MonoBehaviour: m_CallState: 2 m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onTertiarySelect: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1113839883} + m_MethodName: OnSelectedPressedAorX + m_Mode: 0 + 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 + m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null activeController: 0 --- !u!1 &1119529390 GameObject: @@ -8805,6 +9780,163 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1226067459} m_Mesh: {fileID: 4300000, guid: 2f2ef4c81a28b3d49a5b57f888743989, type: 3} +--- !u!1 &1239530774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1239530775} + - component: {fileID: 1239530777} + - component: {fileID: 1239530776} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1239530775 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239530774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1508987251} + 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: 75, y: -30} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1239530776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239530774} + 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: 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_text: Ok + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + 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: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1239530776} + characterCount: 2 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1239530777 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239530774} + m_CullTransparentMesh: 0 --- !u!1 &1251844110 GameObject: m_ObjectHideFlags: 0 @@ -9757,6 +10889,179 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1350156235} m_CullTransparentMesh: 0 +--- !u!1 &1350515683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1350515684} + - component: {fileID: 1350515689} + - component: {fileID: 1350515688} + - component: {fileID: 1350515687} + - component: {fileID: 1350515686} + - component: {fileID: 1350515685} + m_Layer: 5 + m_Name: Button_Cancel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1350515684 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + m_LocalRotation: {x: -0, 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: 483929308} + m_Father: {fileID: 504416153} + 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: 600, y: -30} + m_SizeDelta: {x: 150, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1350515685 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!65 &1350515686 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 150, y: 60, z: 0.05} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1350515687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + 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.25490198, g: 0.44313726, b: 0.6901961, a: 1} + m_HighlightedColor: {r: 0.38875046, g: 0.66205376, b: 0.8584906, a: 1} + m_PressedColor: {r: 0.22352941, g: 0.5568628, b: 0.8392157, a: 1} + m_SelectedColor: {r: 0.29307583, g: 0.58710396, b: 0.8396226, 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: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1350515688} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 519013809} + m_MethodName: OnCancel + 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 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1350515688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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!222 &1350515689 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350515683} + m_CullTransparentMesh: 0 --- !u!1 &1352329656 GameObject: m_ObjectHideFlags: 0 @@ -9832,6 +11137,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1352329656} m_CullTransparentMesh: 0 +--- !u!1 &1360386789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1360386790} + - component: {fileID: 1360386792} + - component: {fileID: 1360386791} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1360386790 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360386789} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1678268765} + 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 &1360386791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360386789} + 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, g: 0.68235296, b: 0.9372549, 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_Sprite: {fileID: 21300000, guid: eb604cc485e242f47964afd8b57c3352, 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!222 &1360386792 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360386789} + m_CullTransparentMesh: 0 --- !u!1 &1377309005 GameObject: m_ObjectHideFlags: 0 @@ -10829,6 +12209,179 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_IsOn: 0 +--- !u!1 &1508987250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1508987251} + - component: {fileID: 1508987256} + - component: {fileID: 1508987255} + - component: {fileID: 1508987254} + - component: {fileID: 1508987253} + - component: {fileID: 1508987252} + m_Layer: 5 + m_Name: Button_Ok + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1508987251 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + m_LocalRotation: {x: -0, 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: 1239530775} + m_Father: {fileID: 504416153} + 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: 200, y: -30} + m_SizeDelta: {x: 150, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1508987252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!65 &1508987253 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 150, y: 60, z: 0.05} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1508987254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + 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.25490198, g: 0.44313726, b: 0.6901961, a: 1} + m_HighlightedColor: {r: 0.38875046, g: 0.66205376, b: 0.8584906, a: 1} + m_PressedColor: {r: 0.22352941, g: 0.5568628, b: 0.8392157, a: 1} + m_SelectedColor: {r: 0.29307583, g: 0.58710396, b: 0.8396226, 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: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1508987255} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 519013809} + m_MethodName: OnOk + 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 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1508987255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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!222 &1508987256 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508987250} + m_CullTransparentMesh: 0 --- !u!1 &1524814165 GameObject: m_ObjectHideFlags: 0 @@ -11082,6 +12635,216 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1550751410} m_CullTransparentMesh: 0 +--- !u!1 &1569708395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1569708396} + m_Layer: 5 + m_Name: Rename_Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1569708396 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569708395} + m_LocalRotation: {x: -0, 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: 1678268765} + - {fileID: 249785786} + m_Father: {fileID: 686608800} + 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: 150} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1582988659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1582988660} + - component: {fileID: 1582988665} + - component: {fileID: 1582988664} + - component: {fileID: 1582988663} + - component: {fileID: 1582988662} + - component: {fileID: 1582988661} + m_Layer: 5 + m_Name: Button_ResetRenamedApps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1582988660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + m_LocalRotation: {x: -0, 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: 1748840624} + m_Father: {fileID: 1962314896} + 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: 450, y: -75} + m_SizeDelta: {x: 900, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1582988661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!65 &1582988662 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 900, y: 150, z: 0.05} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1582988663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + 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.25490198, g: 0.44313726, b: 0.6901961, a: 1} + m_HighlightedColor: {r: 0.38875046, g: 0.66205376, b: 0.8584906, a: 1} + m_PressedColor: {r: 0.22352941, g: 0.5568628, b: 0.8392157, a: 1} + m_SelectedColor: {r: 0.29307583, g: 0.58710396, b: 0.8396226, 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: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1582988664} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 883330328} + m_MethodName: DeleteRenameFiles + 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 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1582988664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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!222 &1582988665 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1582988659} + m_CullTransparentMesh: 0 --- !u!1 &1585122602 GameObject: m_ObjectHideFlags: 0 @@ -11625,6 +13388,152 @@ MonoBehaviour: m_EditorClassIdentifier: content: {fileID: 858538435} trackingSpace: {fileID: 881994610} +--- !u!1 &1623456991 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1623456992} + - component: {fileID: 1623456996} + - component: {fileID: 1623456995} + - component: {fileID: 1623456994} + - component: {fileID: 1623456993} + m_Layer: 5 + m_Name: Button_CloseRename + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1623456992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623456991} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 686608800} + 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: -200, y: 85} + m_SizeDelta: {x: 200, y: 180} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!65 &1623456993 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623456991} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 200, y: 180, z: 0.06} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1623456994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623456991} + 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: 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: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1623456995} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 686608802} + m_MethodName: CloseRenamePanel + 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 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1623456995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623456991} + 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.22116412, g: 0.3850043, b: 0.6698113, 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_Sprite: {fileID: 21300000, guid: 81054d9c76358444c81ee213786e5e7e, 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 &1623456996 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623456991} + m_CullTransparentMesh: 0 --- !u!1 &1629901999 GameObject: m_ObjectHideFlags: 0 @@ -11954,6 +13863,239 @@ MonoBehaviour: m_ChildControlHeight: 0 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 +--- !u!1 &1678268764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1678268765} + - component: {fileID: 1678268767} + - component: {fileID: 1678268766} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1678268765 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678268764} + m_LocalRotation: {x: -0, 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: 1360386790} + m_Father: {fileID: 1569708396} + 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 &1678268766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678268764} + 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.24313727, g: 0.427451, b: 0.6627451, 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_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!222 &1678268767 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678268764} + m_CullTransparentMesh: 0 +--- !u!1 &1748840623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1748840624} + - component: {fileID: 1748840626} + - component: {fileID: 1748840625} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1748840624 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748840623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1582988660} + 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: 450, y: -75} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1748840625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748840623} + 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: 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_text: Reset Renamed Apps + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 86 + m_fontSizeBase: 86 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + 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: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1748840625} + characterCount: 18 + spriteCount: 0 + spaceCount: 2 + wordCount: 3 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1748840626 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748840623} + m_CullTransparentMesh: 0 --- !u!1 &1779503884 GameObject: m_ObjectHideFlags: 0 @@ -12081,6 +14223,163 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1779503884} m_CullTransparentMesh: 0 +--- !u!1 &1779527564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1779527565} + - component: {fileID: 1779527567} + - component: {fileID: 1779527566} + m_Layer: 5 + m_Name: Rename_Apps_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1779527565 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779527564} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1962314896} + 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: 0, y: -175} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1779527566 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779527564} + 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: 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_text: Rename apps by selecting app and pressing A or X + 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 257 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 3.513392, y: 0, z: -946.4956, w: 0} + m_textInfo: + textComponent: {fileID: 1779527566} + characterCount: 48 + spriteCount: 0 + spaceCount: 9 + wordCount: 10 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1779527567 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1779527564} + m_CullTransparentMesh: 0 --- !u!1 &1792480198 GameObject: m_ObjectHideFlags: 0 @@ -13157,6 +15456,8 @@ MonoBehaviour: topTabContainerContent: {fileID: 858538434} leftTabContainerContent: {fileID: 627993404} rightTabContainerContent: {fileID: 2026974423} + renamePanelContainer: {fileID: 686608799} + scrollRenameContainer: {fileID: 1045416981} trackingSpace: {fileID: 154827158} downloadStatusIndicator: {fileID: 788846829} prefabCell: {fileID: 4824380111246446992, guid: 8767e935b90413e48ae368ff87547352, @@ -13858,6 +16159,7 @@ RectTransform: - {fileID: 1659874982} - {fileID: 471654430} - {fileID: 1599647392} + - {fileID: 519013808} m_Father: {fileID: 1113839879} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -13879,6 +16181,69 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_AllowSwitchOff: 0 +--- !u!1 &1962314895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1962314896} + - component: {fileID: 1962314897} + m_Layer: 5 + m_Name: RenameAppSetting + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1962314896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962314895} + m_LocalRotation: {x: -0, 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: 1582988660} + - {fileID: 1779527565} + m_Father: {fileID: 1993578281} + 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: 1425, y: -100} + m_SizeDelta: {x: 900, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1962314897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962314895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + 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 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 --- !u!1 &1964751871 GameObject: m_ObjectHideFlags: 0 @@ -14018,6 +16383,69 @@ MonoBehaviour: m_ChildControlHeight: 0 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 +--- !u!1 &1993578280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1993578281} + - component: {fileID: 1993578282} + m_Layer: 5 + m_Name: Horizontal_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1993578281 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993578280} + m_LocalRotation: {x: -0, 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: 572537055} + - {fileID: 1962314896} + m_Father: {fileID: 883330324} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 100, y: -1800} + m_SizeDelta: {x: 0, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1993578282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993578280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 75 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 --- !u!1 &2009369171 GameObject: m_ObjectHideFlags: 0 @@ -14052,7 +16480,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 400, y: -75} + m_AnchoredPosition: {x: 450, y: -75} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2009369173 diff --git a/Assets/Scripts/AppEntry.cs b/Assets/Scripts/AppEntry.cs index 3d75f0a..e21c3d7 100644 --- a/Assets/Scripts/AppEntry.cs +++ b/Assets/Scripts/AppEntry.cs @@ -8,6 +8,9 @@ public class AppEntry : MonoBehaviour public string packageId; public string appName; + public string externalIconPath; + public int installedApkIndex; + public bool isRenameMode; // Start is called before the first frame update void Start() diff --git a/Assets/Scripts/AppProcessor.cs b/Assets/Scripts/AppProcessor.cs index dddf27c..1326323 100644 --- a/Assets/Scripts/AppProcessor.cs +++ b/Assets/Scripts/AppProcessor.cs @@ -16,7 +16,7 @@ namespace QuestAppLauncher /// public class ProcessedApp { - public int Index; + public int Index = -1; public string PackageName; public string AppName; public string AutoTabName; @@ -32,7 +32,7 @@ namespace QuestAppLauncher /// Class used to deserialize appnames.json entries /// [Serializable] - class JsonAppNamesEntry + public class JsonAppNamesEntry { public string Name; public string Category; @@ -43,6 +43,10 @@ namespace QuestAppLauncher const string AppNameOverrideTxtFileSearch = "appnames*.txt"; const string AppNameOverrideJsonFileSearch = "appnames*.json"; + // Rename file names + public const string RenameJsonFileName = "appnames_rename.json"; + public const string RenameIconPackFileName = "iconpack_rename.zip"; + // Icon pack search string const string IconPackSearch = "iconpack*.zip"; @@ -66,7 +70,14 @@ namespace QuestAppLauncher public static readonly string[] Auto_Tabs = { Tab_Quest, Tab_Go, Tab_2D }; - public static Dictionary ProcessApps(Config config) + /// + /// Entry point for app processing: Applies app name overrides (from appnames.txt/json) and app icons (from individual jpgs or icon packs). + /// Handles extraction of icon packs if zip file modified. Returns a list of processed apps. + /// + /// Application config + /// Whether in rename mode. If so, returns all apps found, not just installed ones. + /// Dictionary of processed apps + public static Dictionary ProcessApps(Config config, bool isRenameMode = false) { var persistentDataPath = UnityEngine.Application.persistentDataPath; Debug.Log("Persistent data path: " + persistentDataPath); @@ -78,7 +89,6 @@ namespace QuestAppLauncher using (AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) using (AndroidJavaObject currentActivity = unity.GetStatic("currentActivity")) { - // Get # of installed apps int numApps = currentActivity.Call("getSize"); Debug.Log("# installed apps: " + numApps); @@ -91,12 +101,16 @@ namespace QuestAppLauncher processedLastTimeUsed = true; } - // Add current package name to excludedPackageNames to filter it out - excludedPackageNames.Add(currentActivity.Call("getPackageName")); + if (!isRenameMode) + { + // Add current package name to excludedPackageNames to filter it out + excludedPackageNames.Add(currentActivity.Call("getPackageName")); + } - // This is a file containing packageNames that will be excluded + // This is a file containing packageNames that will be excluded. + // Skip this if in rename mode. var excludedPackageNamesFilePath = Path.Combine(persistentDataPath, ExcludedPackagesFile); - if (File.Exists(excludedPackageNamesFilePath)) + if (!isRenameMode && File.Exists(excludedPackageNamesFilePath)) { Debug.Log("Found file: " + excludedPackageNamesFilePath); string[] excludedPackages = File.ReadAllLines(excludedPackageNamesFilePath); @@ -151,16 +165,16 @@ namespace QuestAppLauncher } // Process app name overrides files (both downloaded & manually created) - ProcessAppNameOverrideFiles(apps, AssetsDownloader.GetOrCreateDownloadPath()); - ProcessAppNameOverrideFiles(apps, persistentDataPath); + ProcessAppNameOverrideFiles(isRenameMode, apps, AssetsDownloader.GetOrCreateDownloadPath()); + ProcessAppNameOverrideFiles(isRenameMode, apps, persistentDataPath); // Extract icon packs (both downloaded & manually created) ExtractIconPacks(currentActivity, AssetsDownloader.GetOrCreateDownloadPath()); ExtractIconPacks(currentActivity, persistentDataPath); // Process extracted icons (both downloaded & manually created) - ProcessExtractedIcons(apps, AssetsDownloader.GetOrCreateDownloadPath()); - ProcessExtractedIcons(apps, persistentDataPath); + ProcessExtractedIcons(isRenameMode, apps, AssetsDownloader.GetOrCreateDownloadPath()); + ProcessExtractedIcons(isRenameMode, apps, persistentDataPath); // Process any individual icons var iconOverridePath = persistentDataPath; @@ -173,25 +187,32 @@ namespace QuestAppLauncher return apps; } - private static void ProcessAppNameOverrideFiles(Dictionary apps, string path) + private static void ProcessAppNameOverrideFiles(bool isRenameMode, Dictionary apps, string path) { // Process appname*.json files, sorted by name foreach (var filePath in Directory.GetFiles( path, AppNameOverrideJsonFileSearch).OrderBy(f => f)) { - ProcessAppNameOverrideJsonFile(apps, filePath); + ProcessAppNameOverrideJsonFile(isRenameMode, apps, filePath); } // Process appname*.txt files, sorted by name foreach (var filePath in Directory.GetFiles( path, AppNameOverrideTxtFileSearch).OrderBy(f => f)) { - ProcessAppNameOverrideTxtFile(apps, filePath); + ProcessAppNameOverrideTxtFile(isRenameMode, apps, filePath); } } - private static void ProcessAppNameOverrideJsonFile(Dictionary apps, string appNameOverrideFilePath) + private static void ProcessAppNameOverrideJsonFile(bool isRenameMode, Dictionary apps, string appNameOverrideFilePath) { + if (isRenameMode && appNameOverrideFilePath.Equals(Path.Combine(UnityEngine.Application.persistentDataPath, RenameJsonFileName), + StringComparison.InvariantCultureIgnoreCase)) + { + // In rename mode, so skip the rename json file itself + return; + } + // Override app names, if any Debug.Log("Found file: " + appNameOverrideFilePath); @@ -207,7 +228,17 @@ namespace QuestAppLauncher if (!apps.ContainsKey(packageName)) { - // App is not installed, so skip + // App is not installed + if (isRenameMode) + { + // If rename mode, just add it + apps[packageName] = new ProcessedApp + { + PackageName = packageName, + AppName = appName, + }; + } + continue; } @@ -264,7 +295,7 @@ namespace QuestAppLauncher } } - private static void ProcessAppNameOverrideTxtFile(Dictionary apps, string appNameOverrideFilePath) + private static void ProcessAppNameOverrideTxtFile(bool isRenameMode, Dictionary apps, string appNameOverrideFilePath) { // Override app names, if any // This is just a file with comma-separated packageName,appName[,category1[, category2]] @@ -295,7 +326,17 @@ namespace QuestAppLauncher if (!apps.ContainsKey(packageName)) { - // App is not installed, so skip + // App is not installed + if (isRenameMode) + { + // If rename mode, so just add it + apps[packageName] = new ProcessedApp + { + PackageName = packageName, + AppName = appName, + }; + } + continue; } @@ -401,7 +442,7 @@ namespace QuestAppLauncher } } - private static void ProcessExtractedIcons(Dictionary apps, string iconsPath) + private static void ProcessExtractedIcons(bool isRenameMode, Dictionary apps, string iconsPath) { // Full path of extraction dir var extractionDirPath = Path.Combine(iconsPath, IconPackExtractionDir); @@ -412,6 +453,13 @@ namespace QuestAppLauncher var dirs = Directory.GetDirectories(extractionDirPath).OrderBy(f => f); foreach (var dir in dirs) { + if (isRenameMode && dir.StartsWith(Path.Combine(UnityEngine.Application.persistentDataPath, RenameIconPackFileName), + StringComparison.InvariantCultureIgnoreCase)) + { + // In rename mode, so skip the extracted rename icon pack itself + continue; + } + ProcessIconsInPath(apps, dir); } } @@ -449,7 +497,7 @@ namespace QuestAppLauncher catch (Exception e) { // Fall back to using the apk icon - Debug.Log(string.Format("Error reading app icon from file [{0}]: {1}", iconPath, e.Message)); + Debug.LogFormat("Error reading app icon from file [{0}]: {1}", iconPath, e.Message); } } @@ -500,6 +548,30 @@ namespace QuestAppLauncher return false; } + /// + /// Static method to delete the rename json and icon pack + /// + /// true if file exists + static public bool DeleteRenameFiles() + { + var ret = false; + var renameJsonFilePath = Path.Combine(UnityEngine.Application.persistentDataPath, RenameJsonFileName); + if (File.Exists(renameJsonFilePath)) + { + File.Delete(renameJsonFilePath); + ret = true; + } + + var renameIconPackFilePath = Path.Combine(UnityEngine.Application.persistentDataPath, RenameIconPackFileName); + if (File.Exists(renameIconPackFilePath)) + { + File.Delete(renameIconPackFilePath); + ret = true; + } + + return ret; + } + /// /// Static method for launching an Android app /// diff --git a/Assets/Scripts/AssetsDownloader.cs b/Assets/Scripts/AssetsDownloader.cs index 8ca6adb..10130f3 100644 --- a/Assets/Scripts/AssetsDownloader.cs +++ b/Assets/Scripts/AssetsDownloader.cs @@ -105,7 +105,7 @@ namespace QuestAppLauncher { // We downloaded new assets, so re-load the scene Debug.Log("Downloaded new assets. Re-populating panel"); - SceneManager.LoadScene(SceneManager.GetActiveScene().name); + SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name); } }); } diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs index e711ad3..9023d1c 100644 --- a/Assets/Scripts/Config.cs +++ b/Assets/Scripts/Config.cs @@ -137,7 +137,6 @@ namespace QuestAppLauncher { Debug.Log(string.Format("Failed to write config: {0}", e.Message)); } - } } } \ No newline at end of file diff --git a/Assets/Scripts/GridPopulation.cs b/Assets/Scripts/GridPopulation.cs index 920c43a..ba29924 100644 --- a/Assets/Scripts/GridPopulation.cs +++ b/Assets/Scripts/GridPopulation.cs @@ -44,6 +44,10 @@ namespace QuestAppLauncher public GameObject leftTabContainerContent; public GameObject rightTabContainerContent; + // Rename panel game objects + public GameObject renamePanelContainer; + public GameObject scrollRenameContainer; + // Tracking space public GameObject trackingSpace; @@ -78,13 +82,21 @@ namespace QuestAppLauncher } #endregion - #region Private Functions + /// + /// Populates rename grid + /// + /// + public async Task PopulateRenameAsync() + { + PopulateAsync(true); + } + #region Private Functions /// /// Populate the grid from installed apps /// /// - private async Task PopulateAsync() + private async Task PopulateAsync(bool isRenameMode = false) { // Load configuration var config = ConfigPersistence.LoadConfig(); @@ -96,7 +108,7 @@ namespace QuestAppLauncher try { - return AppProcessor.ProcessApps(config); + return AppProcessor.ProcessApps(config, isRenameMode); } finally { @@ -105,14 +117,21 @@ namespace QuestAppLauncher }); // Download updates in the background - if (config.autoUpdate && !GlobalState.Instance.CheckedForUpdate) + if (!isRenameMode && config.autoUpdate && !GlobalState.Instance.CheckedForUpdate) { GlobalState.Instance.CheckedForUpdate = true; AssetsDownloader.DownloadAssetsAsync(config, this.downloadStatusIndicator); } // Populate the panel content - await PopulatePanelContentAsync(config, apps); + if (!isRenameMode) + { + await PopulatePanelContentAsync(config, apps); + } + else + { + await PopulateRenamePanelContentAsync(config, apps); + } } private async Task PopulatePanelContentAsync( @@ -168,14 +187,14 @@ namespace QuestAppLauncher // Process the tab containers var gridContents = new Dictionary(StringComparer.OrdinalIgnoreCase); - ProcessTabContainer(config, topTabs, this.topTabContainer, this.topTabContainerContent, true, gridContents); - ProcessTabContainer(config, leftTabs, this.leftTabContainer, this.leftTabContainerContent, false, gridContents); - ProcessTabContainer(config, rightTabs, this.rightTabContainer, this.rightTabContainerContent, false, gridContents); + ProcessTabContainer(config, topTabs, this.panelContainer, this.scrollContainer, this.topTabContainer, this.topTabContainerContent, true, gridContents); + ProcessTabContainer(config, leftTabs, this.panelContainer, this.scrollContainer, this.leftTabContainer, this.leftTabContainerContent, false, gridContents); + ProcessTabContainer(config, rightTabs, this.panelContainer, this.scrollContainer, this.rightTabContainer, this.rightTabContainerContent, false, gridContents); // Set panel size, use any grid content for reference (since they are all the same size) if (gridContents.Count > 0) { - var size = SetGridSize(gridContents.First().Value, config.gridSize.rows, config.gridSize.cols); + var size = SetGridSize(this.panelContainer, gridContents.First().Value, config.gridSize.rows, config.gridSize.cols); // Adjust tab sizes ResizeTabContent(this.topTabContainer.transform, size, topTabs.Count, true); @@ -210,6 +229,28 @@ namespace QuestAppLauncher } } + private async Task PopulateRenamePanelContentAsync( + Config config, Dictionary apps) + { + // Create scroll view + var scrollView = (GameObject)Instantiate(this.prefabScrollView, this.scrollRenameContainer.transform); + scrollView.SetActive(true); + var scrollRectOverride = scrollView.GetComponent(); + scrollRectOverride.trackingSpace = this.trackingSpace.transform; + + var gridContent = scrollRectOverride.content.gameObject; + + // Set panel size + SetGridSize(this.renamePanelContainer, gridContent, config.gridSize.rows, config.gridSize.cols); + + // Populate grid with app information (name & icon) + // Sort alphabetically + foreach (var app in apps.OrderBy(key => key.Value.AppName, StringComparer.InvariantCultureIgnoreCase)) + { + await AddCellToGridAsync(app.Value, gridContent.transform, true); + } + } + private void ResizeTabContent(Transform transform, Vector2 size, int childCount, bool isHorizontal) { var rect = transform.GetComponent(); @@ -235,7 +276,7 @@ namespace QuestAppLauncher transform.gameObject.GetComponent().RefreshScrollContent(childCount); } - private Vector2 SetGridSize(GameObject gridContent, int rows, int cols) + private Vector2 SetGridSize(GameObject panel, GameObject gridContent, int rows, int cols) { // Make sure grid size have sane value cols = Math.Min(cols, 10); @@ -264,7 +305,7 @@ namespace QuestAppLauncher // Adjust grid container rect transform var size = new Vector2(width, height); - var gridTransform = this.panelContainer.GetComponent(); + var gridTransform = panel.GetComponent(); gridTransform.sizeDelta = size; // Adjust grid container Y position to maintain constant height. @@ -277,7 +318,7 @@ namespace QuestAppLauncher return size; } - private void ProcessTabContainer(Config config, List tabs, GameObject tabContainer, + private void ProcessTabContainer(Config config, List tabs, GameObject panel, GameObject scroll, GameObject tabContainer, GameObject tabContainerContent, bool setFirstTabActive, Dictionary gridContents) { // Create scroll views and tabs @@ -286,7 +327,7 @@ namespace QuestAppLauncher Debug.LogFormat("Populating tab '{0}'", tabName); // Create scroll view - var scrollView = (GameObject)Instantiate(this.prefabScrollView, this.scrollContainer.transform); + var scrollView = (GameObject)Instantiate(this.prefabScrollView, scroll.transform); var scrollRectOverride = scrollView.GetComponent(); scrollRectOverride.trackingSpace = this.trackingSpace.transform; @@ -299,7 +340,7 @@ namespace QuestAppLauncher var toggle = tab.GetComponent(); toggle.isOn = setFirstTabActive; - toggle.group = this.panelContainer.GetComponent(); + toggle.group = panel.GetComponent(); toggle.onValueChanged.AddListener(scrollView.SetActive); setFirstTabActive = false; @@ -309,8 +350,14 @@ namespace QuestAppLauncher } } - private async Task AddCellToGridAsync(ProcessedApp app, Transform transform) + private async Task AddCellToGridAsync(ProcessedApp app, Transform transform, bool isRenameMode = false) { + if (app.Index == -1 && string.IsNullOrEmpty(app.IconPath)) + { + // If we have neither app index or icon path, skip this + return; + } + // Get app icon in background var bytesIcon = await Task.Run(() => { @@ -333,6 +380,9 @@ namespace QuestAppLauncher var appEntry = newObj.GetComponent("AppEntry") as AppEntry; appEntry.packageId = app.PackageName; appEntry.appName = app.AppName; + appEntry.isRenameMode = isRenameMode; + appEntry.installedApkIndex = app.Index; + appEntry.externalIconPath = app.IconPath; // Set the icon image if (null != bytesIcon) diff --git a/Assets/Scripts/HideAppHandler.cs b/Assets/Scripts/HideAppHandler.cs new file mode 100644 index 0000000..c533c8a --- /dev/null +++ b/Assets/Scripts/HideAppHandler.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace QuestAppLauncher +{ + public class HideAppHandler : MonoBehaviour + { + public TextMeshProUGUI text; + private AppEntry appEntryToHide; + + public void OnHideApp(AppEntry appEntryToHide) + { + this.appEntryToHide = appEntryToHide; + + // Set dialog text + this.text.text = string.Format("Hide app '{0}'?", appEntryToHide.appName); + + // Launch dialog + this.gameObject.SetActive(true); + } + + public async void OnOk() + { + // Add package name to excluded file + Debug.Log("Hiding: " + this.appEntryToHide.appName + " (package id: " + this.appEntryToHide.packageId + ")"); + AppProcessor.AddAppToExcludedFile(this.appEntryToHide.packageId); + + // Reload the scene - this will force all the tabs to update + await SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name); + } + + public void OnCancel() + { + this.gameObject.SetActive(false); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/HideAppHandler.cs.meta b/Assets/Scripts/HideAppHandler.cs.meta new file mode 100644 index 0000000..6e397ad --- /dev/null +++ b/Assets/Scripts/HideAppHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f9275ecafce3994394538da0abe4977 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/IEnumeratorAwaitExtensions.cs b/Assets/Scripts/IEnumeratorAwaitExtensions.cs new file mode 100644 index 0000000..0790f7e --- /dev/null +++ b/Assets/Scripts/IEnumeratorAwaitExtensions.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using System.Text; +using System.Threading; +using UnityEngine; + +namespace QuestAppLauncher +{ + public class AsyncCoroutineRunner : MonoBehaviour + { + static AsyncCoroutineRunner _instance; + + public static AsyncCoroutineRunner Instance + { + get + { + if (_instance == null) + { + _instance = new GameObject("AsyncCoroutineRunner") + .AddComponent(); + } + + return _instance; + } + } + + void Awake() + { + // Don't show in scene hierarchy + gameObject.hideFlags = HideFlags.HideAndDontSave; + + DontDestroyOnLoad(gameObject); + } + } + + public static class IEnumeratorAwaitExtensions + { + public static SimpleCoroutineAwaiter GetAwaiter(this AsyncOperation instruction) + { + return GetAwaiterReturnSelf(instruction); + } + + static SimpleCoroutineAwaiter GetAwaiterReturnSelf(T instruction) + { + var awaiter = new SimpleCoroutineAwaiter(); + RunOnUnityScheduler(() => AsyncCoroutineRunner.Instance.StartCoroutine( + InstructionWrappers.ReturnSelf(awaiter, instruction))); + return awaiter; + } + + static void RunOnUnityScheduler(Action action) + { + if (SynchronizationContext.Current == SyncContextUtil.UnitySynchronizationContext) + { + action(); + } + else + { + SyncContextUtil.UnitySynchronizationContext.Post(_ => action(), null); + } + } + + public class SimpleCoroutineAwaiter : INotifyCompletion + { + bool _isDone; + Exception _exception; + Action _continuation; + T _result; + + public bool IsCompleted + { + get { return _isDone; } + } + + public T GetResult() + { + Debug.Assert(_isDone); + + if (_exception != null) + { + ExceptionDispatchInfo.Capture(_exception).Throw(); + } + + return _result; + } + + public void Complete(T result, Exception e) + { + Debug.Assert(!_isDone); + + _isDone = true; + _exception = e; + _result = result; + + // Always trigger the continuation on the unity thread when awaiting on unity yield + // instructions + if (_continuation != null) + { + RunOnUnityScheduler(_continuation); + } + } + + void INotifyCompletion.OnCompleted(Action continuation) + { + Debug.Assert(_continuation == null); + Debug.Assert(!_isDone); + + _continuation = continuation; + } + } + + static class InstructionWrappers + { + public static IEnumerator ReturnSelf( + SimpleCoroutineAwaiter awaiter, T instruction) + { + yield return instruction; + awaiter.Complete(instruction, null); + } + } + + public static class SyncContextUtil + { + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + static void Install() + { + UnitySynchronizationContext = SynchronizationContext.Current; + UnityThreadId = Thread.CurrentThread.ManagedThreadId; + } + + public static int UnityThreadId + { + get; private set; + } + + public static SynchronizationContext UnitySynchronizationContext + { + get; private set; + } + } + } +} diff --git a/Assets/Scripts/IEnumeratorAwaitExtensions.cs.meta b/Assets/Scripts/IEnumeratorAwaitExtensions.cs.meta new file mode 100644 index 0000000..d044b51 --- /dev/null +++ b/Assets/Scripts/IEnumeratorAwaitExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e90d336a3fcd1ce46bda7a08309b4e83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/OnInteraction.cs b/Assets/Scripts/OnInteraction.cs index 5fee2e4..52e53a8 100644 --- a/Assets/Scripts/OnInteraction.cs +++ b/Assets/Scripts/OnInteraction.cs @@ -1,16 +1,17 @@ using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; +using System.Threading.Tasks; namespace QuestAppLauncher { public class OnInteraction : MonoBehaviour { - protected Material oldHoverMat; - public Material yellowMat; - public Material backIdle; - public Material backACtive; - public UnityEngine.UI.Text outText; + // Hide app handler + public HideAppHandler hideAppHandler; + + // Rename app handler + public RenameHandler renameHandler; public void OnHoverEnter(Transform t) { @@ -32,28 +33,51 @@ namespace QuestAppLauncher } } - public void OnSelected(Transform t) + public async void OnSelected(Transform t) { var appEntry = t.gameObject.GetComponent("AppEntry") as AppEntry; if (null != appEntry) { - // Launch app - Debug.Log("Launching: " + appEntry.appName + " (package id: " + appEntry.packageId + ")"); - AppProcessor.LaunchApp(appEntry.packageId); + if (appEntry.isRenameMode) + { + this.renameHandler.Rename(appEntry); + } + else + { + await Task.Run(() => + { + AndroidJNI.AttachCurrentThread(); + + try + { + // Launch app + Debug.Log("Launching: " + appEntry.appName + " (package id: " + appEntry.packageId + ")"); + AppProcessor.LaunchApp(appEntry.packageId); + } + finally + { + AndroidJNI.DetachCurrentThread(); + } + }); + } } } public void OnSelectedPressedBorY(Transform t) { var appEntry = t.gameObject.GetComponent("AppEntry") as AppEntry; - if (null != appEntry) + if (null != appEntry && !appEntry.isRenameMode) { - // Add package name to excluded file - Debug.Log("Hiding: " + appEntry.appName + " (package id: " + appEntry.packageId + ")"); - AppProcessor.AddAppToExcludedFile(appEntry.packageId); + this.hideAppHandler.OnHideApp(appEntry); + } + } - // Remove ourselves from the gridview - Destroy(t.gameObject); + public void OnSelectedPressedAorX(Transform t) + { + var appEntry = t.gameObject.GetComponent("AppEntry") as AppEntry; + if (null != appEntry && !appEntry.isRenameMode) + { + this.renameHandler.OpenRenamePanel(appEntry); } } diff --git a/Assets/Scripts/RenameHandler.cs b/Assets/Scripts/RenameHandler.cs new file mode 100644 index 0000000..a66b9b2 --- /dev/null +++ b/Assets/Scripts/RenameHandler.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using TMPro; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.UI; + +namespace QuestAppLauncher +{ + public class RenameHandler : MonoBehaviour + { + // Referenced gameobjects + public GameObject panelContainer; + public GameObject closeRenameButton; + public GameObject renamePanelContainer; + public GameObject renameScrollContainer; + public TextMeshProUGUI renameLabel; + public GridPopulation gridPopulation; + + // Whether the rename grid has already been populated + private bool isPopulated = false; + + // App entry of the app to rename + private AppEntry appToRename; + + /// + /// Opens the rename panel. + /// + /// App to rename + public async void OpenRenamePanel(AppEntry appToRename) + { + Debug.Log("Open Rename Panel"); + this.panelContainer.SetActive(false); + this.closeRenameButton.SetActive(true); + this.renamePanelContainer.SetActive(true); + + this.appToRename = appToRename; + + this.renameLabel.text = string.Format("Pick entry to rename app '{0}' (package '{1}')", appToRename.appName, appToRename.packageId); + + // Only populate once. + // This will be reset in the next scene load (by design, since we may download new assets). + if (!this.isPopulated) + { + await gridPopulation.PopulateRenameAsync(); + this.isPopulated = true; + } + } + + /// + /// Opens the rename dialog + /// + /// + public async void Rename(AppEntry appTarget) + { + Debug.Assert(null != this.appToRename, "App to rename is null"); + var filePath = appTarget.externalIconPath; + bool cleanupFile = false; + + // If icon path is null, extract icon from apk + if (null == filePath) + { + filePath = Path.Combine(AssetsDownloader.GetOrCreateDownloadPath(), this.appToRename.packageId + ".jpg"); + cleanupFile = true; + + var bytes = appTarget.sprite.GetComponent().sprite.texture.EncodeToJPG(); + using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None, + bufferSize: 4096, useAsync: true)) + { + await fileStream.WriteAsync(bytes, 0, bytes.Length); + }; + } + + await Task.Run(() => + { + AndroidJNI.AttachCurrentThread(); + + try + { + // Add to json file + AddToRenameJsonFile(this.appToRename.packageId, appTarget.appName); + + // Add icon to zip + using (AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) + using (AndroidJavaObject currentActivity = unity.GetStatic("currentActivity")) + { + var renameIconPackFilePath = Path.Combine(UnityEngine.Application.persistentDataPath, AppProcessor.RenameIconPackFileName); + currentActivity.CallStatic("addFileToZip", renameIconPackFilePath, filePath, this.appToRename.packageId + ".jpg"); + } + } + finally + { + AndroidJNI.DetachCurrentThread(); + } + }); + + if (cleanupFile && File.Exists(filePath)) + { + File.Delete(filePath); + } + + // Reload the scene + await SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name); + } + + /// + /// Closes the rename panel + /// + public void CloseRenamePanel() + { + Debug.Log("Close Rename Panel"); + this.panelContainer.SetActive(true); + this.closeRenameButton.SetActive(false); + this.renamePanelContainer.SetActive(false); + } + + /// + /// Adds app to rename to json file + /// + /// Package id of app + /// App name + private void AddToRenameJsonFile(string packageId, string appName) + { + var renameJsonFilePath = Path.Combine(UnityEngine.Application.persistentDataPath, AppProcessor.RenameJsonFileName); + Dictionary jsonAppNames = null; + + if (File.Exists(renameJsonFilePath)) + { + // Read rename json file + try + { + var json = File.ReadAllText(renameJsonFilePath, Encoding.UTF8); + jsonAppNames = JsonConvert.DeserializeObject>(json); + } + catch (Exception e) + { + // On exception, we'll keep going & just overwrite existing file contents + Debug.LogFormat("Failed to process json rename app file: {0}", e.Message); + } + } + + // Add entry + if (null == jsonAppNames) + { + jsonAppNames = new Dictionary(); + } + + jsonAppNames[packageId] = new AppProcessor.JsonAppNamesEntry { Name = appName }; + + // Persist + try + { + File.WriteAllText(renameJsonFilePath, JsonConvert.SerializeObject(jsonAppNames, Formatting.Indented)); + } + catch (Exception e) + { + Debug.Log(string.Format("Failed to write json rename app file: {0}", e.Message)); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/RenameHandler.cs.meta b/Assets/Scripts/RenameHandler.cs.meta new file mode 100644 index 0000000..a2b3024 --- /dev/null +++ b/Assets/Scripts/RenameHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f0617ad70a22344684e254e37ddef2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SettingsHandler.cs b/Assets/Scripts/SettingsHandler.cs index e7631f9..f3d85f2 100644 --- a/Assets/Scripts/SettingsHandler.cs +++ b/Assets/Scripts/SettingsHandler.cs @@ -39,6 +39,7 @@ namespace QuestAppLauncher public GameObject usageStatsPermText; private bool deletedHiddenAppsFile = false; + private bool deletedRenameFiles = false; private Config config = null; @@ -50,6 +51,9 @@ namespace QuestAppLauncher this.closeSettingsButton.SetActive(true); this.settingsContainer.SetActive(true); + this.deletedHiddenAppsFile = false; + this.deletedRenameFiles = false; + // Load config this.config = ConfigPersistence.LoadConfig(); @@ -138,6 +142,16 @@ namespace QuestAppLauncher } } + public void DeleteRenameFiles() + { + Debug.Log("Delete Rename files"); + + if (!this.deletedRenameFiles) + { + this.deletedRenameFiles = AppProcessor.DeleteRenameFiles(); + } + } + public void UpdateGridColText() { var cols = gridCols.GetComponent().value; @@ -211,7 +225,7 @@ namespace QuestAppLauncher }); } - private void PersistConfig() + private async void PersistConfig() { bool saveConfig = false; @@ -317,10 +331,10 @@ namespace QuestAppLauncher } // If we touched the config file or we deleted the hidden apps file, re-populate the grid - if (saveConfig || deletedHiddenAppsFile) + if (saveConfig || this.deletedHiddenAppsFile || this.deletedRenameFiles) { Debug.Log("Re-populating panel"); - SceneManager.LoadScene(SceneManager.GetActiveScene().name); + await SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name); } } } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 5bdc669..62dee6e 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -120,7 +120,7 @@ PlayerSettings: 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 0.9.1 + bundleVersion: 0.10 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0