From 3b4ec2ba92aa2b2c8e5949aabd9a42635225d944 Mon Sep 17 00:00:00 2001 From: Katboi01 Date: Sun, 3 Dec 2023 19:42:12 +0100 Subject: [PATCH] Added download progress indicator --- Assets/Scenes/FateNew.unity | 539 ++++++++++++++++++++++ Assets/Scripts/FateAssetManager.cs | 37 +- Assets/Scripts/FateModelBuilder.cs | 15 +- Assets/Scripts/FateViewerMain.cs | 92 ++-- Assets/Scripts/UIController.cs | 1 + Assets/Scripts/UIDownloadProgress.cs | 22 + Assets/Scripts/UIDownloadProgress.cs.meta | 11 + Packages/manifest.json | 6 +- Packages/packages-lock.json | 8 +- ProjectSettings/ProjectSettings.asset | 6 +- ProjectSettings/ProjectVersion.txt | 4 +- 11 files changed, 676 insertions(+), 65 deletions(-) create mode 100644 Assets/Scripts/UIDownloadProgress.cs create mode 100644 Assets/Scripts/UIDownloadProgress.cs.meta diff --git a/Assets/Scenes/FateNew.unity b/Assets/Scenes/FateNew.unity index 94c0035..b2366b4 100644 --- a/Assets/Scenes/FateNew.unity +++ b/Assets/Scenes/FateNew.unity @@ -1852,6 +1852,41 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 168637574} m_CullTransparentMesh: 1 +--- !u!1 &168833443 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 168833444} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &168833444 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168833443} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 834154608} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &175956194 GameObject: m_ObjectHideFlags: 0 @@ -2376,6 +2411,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 240971854} m_CullTransparentMesh: 1 +--- !u!1 &252697933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 252697934} + - component: {fileID: 252697936} + - component: {fileID: 252697935} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &252697934 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252697933} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 834154608} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &252697935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252697933} + 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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + 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 &252697936 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252697933} + m_CullTransparentMesh: 1 --- !u!1 &255280555 GameObject: m_ObjectHideFlags: 0 @@ -3667,6 +3777,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 322154411} m_CullTransparentMesh: 1 +--- !u!1 &358173615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 358173616} + - component: {fileID: 358173618} + - component: {fileID: 358173617} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &358173616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358173615} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 815202162} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &358173617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358173615} + 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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &358173618 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358173615} + m_CullTransparentMesh: 1 --- !u!1 &393246413 GameObject: m_ObjectHideFlags: 0 @@ -13679,6 +13864,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 814772307} m_CullTransparentMesh: 1 +--- !u!1 &815202161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 815202162} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &815202162 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 815202161} + m_LocalRotation: {x: -0, 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: 358173616} + m_Father: {fileID: 834154608} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &817349587 GameObject: m_ObjectHideFlags: 0 @@ -14160,6 +14381,96 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 829969186} m_CullTransparentMesh: 1 +--- !u!1 &834154607 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 834154608} + - component: {fileID: 834154609} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &834154608 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 834154607} + m_LocalRotation: {x: 0, 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: 252697934} + - {fileID: 815202162} + - {fileID: 168833444} + m_Father: {fileID: 923374609} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -40, y: 80} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &834154609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 834154607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 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: 0} + m_FillRect: {fileID: 358173616} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &835771903 GameObject: m_ObjectHideFlags: 0 @@ -15166,6 +15477,98 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 922663354} m_CullTransparentMesh: 1 +--- !u!1 &923374608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923374609} + - component: {fileID: 923374611} + - component: {fileID: 923374610} + - component: {fileID: 923374612} + m_Layer: 5 + m_Name: DownloadProgress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &923374609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923374608} + m_LocalRotation: {x: 0, 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: 834154608} + - {fileID: 1345195447} + m_Father: {fileID: 1795849913} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 110} + m_SizeDelta: {x: 800, y: 140} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &923374610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923374608} + 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: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &923374611 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923374608} + m_CullTransparentMesh: 1 +--- !u!114 &923374612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923374608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69eb9a32154d0fb47a8cead9419d7a24, type: 3} + m_Name: + m_EditorClassIdentifier: + ProgressLabel: {fileID: 1345195448} + ProgressSlider: {fileID: 834154609} --- !u!1 &925091078 GameObject: m_ObjectHideFlags: 0 @@ -19785,6 +20188,140 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1340416476} m_CullTransparentMesh: 1 +--- !u!1 &1345195446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1345195447} + - component: {fileID: 1345195449} + - component: {fileID: 1345195448} + 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 &1345195447 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1345195446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 923374609} + 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: 40} + m_SizeDelta: {x: 0, y: -80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1345195448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1345195446} + 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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Downloading: ' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 38f9c70d045080845a18307715f00e15, type: 2} + m_sharedMaterial: {fileID: 3861585161733349673, guid: 38f9c70d045080845a18307715f00e15, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + 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_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1345195449 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1345195446} + m_CullTransparentMesh: 1 --- !u!1 &1347856242 GameObject: m_ObjectHideFlags: 0 @@ -22715,6 +23252,7 @@ MonoBehaviour: LoadedCharaButton: {fileID: 6579709008394472268} BackgroundDropdown: {fileID: 1464018681} BodyAnimationDropdown: {fileID: 2082327791} + DownloadProgress: {fileID: 923374612} MeshesListContent: {fileID: 6144536939855760294} ServantList: {fileID: 5584442607537429347} EnemiesList: {fileID: 1924500984} @@ -24520,6 +25058,7 @@ RectTransform: - {fileID: 1030230481} - {fileID: 83053481} - {fileID: 922663355} + - {fileID: 923374609} m_Father: {fileID: 1269587798} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scripts/FateAssetManager.cs b/Assets/Scripts/FateAssetManager.cs index e8422a7..ca212f9 100644 --- a/Assets/Scripts/FateAssetManager.cs +++ b/Assets/Scripts/FateAssetManager.cs @@ -31,10 +31,18 @@ public class FateAssetManager : MonoBehaviour callback(outTex); } - public static IEnumerator DownloadText(string url, System.Action callback) + public static IEnumerator DownloadText(string url, System.Action callback, System.Action onProgress = null) { UnityWebRequest www = UnityWebRequest.Get(url); - yield return www.SendWebRequest(); + + var request = www.SendWebRequest(); + + while (!request.isDone) + { + onProgress?.Invoke(request.progress); + yield return 0; + } + if (www.result != UnityWebRequest.Result.Success) { Debug.Log(url); @@ -48,22 +56,29 @@ public class FateAssetManager : MonoBehaviour } } - public static IEnumerator DownloadBundle(string url, System.Action callback) + public static IEnumerator DownloadBundle(string url, System.Action callback, System.Action onProgress = null) { Error.Log(Color.green, $"Downloading bundle from {url}"); - UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle(url); - yield return www.SendWebRequest(); - AssetBundle bundlea = null; + UnityWebRequest www = UnityWebRequest.Get(url); + + var request = www.SendWebRequest(); + + while (!request.isDone) + { + onProgress?.Invoke(request.progress); + yield return 0; + } + if (www.result != UnityWebRequest.Result.Success) { - Error.Log(Color.red, www.error); + Debug.Log(url); + Debug.Log(www.error); + callback(null); } else { - bundlea = DownloadHandlerAssetBundle.GetContent(www); + var bytes = www.downloadHandler.data; + callback(AssetBundle.LoadFromMemory(bytes)); } - - callback(bundlea); } - } diff --git a/Assets/Scripts/FateModelBuilder.cs b/Assets/Scripts/FateModelBuilder.cs index dc742d0..4203320 100644 --- a/Assets/Scripts/FateModelBuilder.cs +++ b/Assets/Scripts/FateModelBuilder.cs @@ -53,10 +53,17 @@ public class FateModelBuilder : MonoBehaviour AssetBundle assetBundle = null; string url = $"{urlBase}/{idNum}"; - yield return FateAssetManager.DownloadBundle(url, (cb) => - { - assetBundle = cb; - }); + yield return FateAssetManager.DownloadBundle(url, + (cb) => + { + assetBundle = cb; + UIController.Instance.DownloadProgress.SetProgress($"", 1); + }, + (progress) => + { + UIController.Instance.DownloadProgress.SetProgress($"Servants/{idNum}", progress); + } + ); if (assetBundle == null) { diff --git a/Assets/Scripts/FateViewerMain.cs b/Assets/Scripts/FateViewerMain.cs index df8d473..9fe7323 100644 --- a/Assets/Scripts/FateViewerMain.cs +++ b/Assets/Scripts/FateViewerMain.cs @@ -161,23 +161,30 @@ public class FateViewerMain : MonoBehaviour { url = $"{AAAPI}NA/basic_servant.json"; } - yield return FateAssetManager.DownloadText(url, (txt) => - { - txt = $"{{\"Entries\": {txt} }}"; - Servants = Newtonsoft.Json.JsonConvert.DeserializeObject(txt); - foreach (var servant in Servants.Entries) + yield return FateAssetManager.DownloadText(url, + (txt) => { - servant.costumes = servant.costume.Select(c => c.Value).ToList(); - if (servant.costumes.FirstOrDefault(c => c.battleCharaId == servant.id) == null) - servant.costumes.Insert(0, new BasicServant.Costume() - { - battleCharaId = servant.id, - id = 0, - shortName = servant.name, - }); + txt = $"{{\"Entries\": {txt} }}"; + Servants = Newtonsoft.Json.JsonConvert.DeserializeObject(txt); + foreach (var servant in Servants.Entries) + { + servant.costumes = servant.costume.Select(c => c.Value).ToList(); + if (servant.costumes.FirstOrDefault(c => c.battleCharaId == servant.id) == null) + servant.costumes.Insert(0, new BasicServant.Costume() + { + battleCharaId = servant.id, + id = 0, + shortName = servant.name, + }); + } + Servants.Entries = Servants.Entries.OrderBy(e => e.collectionNo).ToList(); + UIController.Instance.DownloadProgress.SetProgress("", 1); + }, + (progress) => + { + UIController.Instance.DownloadProgress.SetProgress("servant list", progress); } - Servants.Entries = Servants.Entries.OrderBy(e => e.collectionNo).ToList(); - }); + ); if (Servants.Entries.Count > 0) { @@ -201,36 +208,43 @@ public class FateViewerMain : MonoBehaviour { string url = $"{AAAPI}JP/basic_svt_lang_en.json"; Dictionary> entries = new Dictionary>(); - yield return FateAssetManager.DownloadText(url, (txt) => - { - txt = $"{{\"Entries\": {txt} }}"; - Enemies = Newtonsoft.Json.JsonConvert.DeserializeObject(txt); - Enemies.Entries = Enemies.Entries.Where(e => e.type == "enemy").ToList(); - Enemies.Entries = Enemies.Entries.OrderBy(e => e.name).ToList(); - foreach (var enemy in Enemies.Entries) + yield return FateAssetManager.DownloadText(url, + (txt) => { - enemy.costumes = enemy.costume.Select(c => c.Value).ToList(); - foreach (var costume in enemy.costumes) + txt = $"{{\"Entries\": {txt} }}"; + Enemies = Newtonsoft.Json.JsonConvert.DeserializeObject(txt); + Enemies.Entries = Enemies.Entries.Where(e => e.type == "enemy").ToList(); + Enemies.Entries = Enemies.Entries.OrderBy(e => e.name).ToList(); + foreach (var enemy in Enemies.Entries) { - var cos = new BasicServant.Costume() + enemy.costumes = enemy.costume.Select(c => c.Value).ToList(); + foreach (var costume in enemy.costumes) { - name = costume.name, - shortName = costume.shortName, - id = costume.id, - battleCharaId = costume.battleCharaId - }; - if (entries.ContainsKey(enemy.name)) - { - if (!entries[enemy.name].Any(c => c.battleCharaId == costume.battleCharaId)) - entries[enemy.name].Add(cos); - } - else - { - entries[enemy.name] = new List() { cos }; + var cos = new BasicServant.Costume() + { + name = costume.name, + shortName = costume.shortName, + id = costume.id, + battleCharaId = costume.battleCharaId + }; + if (entries.ContainsKey(enemy.name)) + { + if (!entries[enemy.name].Any(c => c.battleCharaId == costume.battleCharaId)) + entries[enemy.name].Add(cos); + } + else + { + entries[enemy.name] = new List() { cos }; + } } } + UIController.Instance.DownloadProgress.SetProgress("", 1); + }, + (progress) => + { + UIController.Instance.DownloadProgress.SetProgress("enemy list", progress); } - }); + ); if (entries.Count() > 0) { diff --git a/Assets/Scripts/UIController.cs b/Assets/Scripts/UIController.cs index a0e68a2..e9cbdee 100644 --- a/Assets/Scripts/UIController.cs +++ b/Assets/Scripts/UIController.cs @@ -15,6 +15,7 @@ public class UIController : MonoBehaviour public GameObject LoadedCharaButton; public Dropdown BackgroundDropdown; public Dropdown BodyAnimationDropdown; + public UIDownloadProgress DownloadProgress; public Transform MeshesListContent; public ScrollRect ServantList; public ScrollRect EnemiesList; diff --git a/Assets/Scripts/UIDownloadProgress.cs b/Assets/Scripts/UIDownloadProgress.cs new file mode 100644 index 0000000..ce4948d --- /dev/null +++ b/Assets/Scripts/UIDownloadProgress.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.UI; + +public class UIDownloadProgress : MonoBehaviour +{ + public TMPro.TMP_Text ProgressLabel; + public Slider ProgressSlider; + + public void SetProgress(string itemName, float progress) + { + if(progress == 1) + { + gameObject.SetActive(false); + } + else + { + gameObject.SetActive(true); + ProgressLabel.text = "Downloading: " + itemName; + ProgressSlider.value = progress; + } + } +} diff --git a/Assets/Scripts/UIDownloadProgress.cs.meta b/Assets/Scripts/UIDownloadProgress.cs.meta new file mode 100644 index 0000000..3f52e26 --- /dev/null +++ b/Assets/Scripts/UIDownloadProgress.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69eb9a32154d0fb47a8cead9419d7a24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index 95a105c..f1dae63 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,10 +1,10 @@ { "dependencies": { - "com.unity.collab-proxy": "1.17.0", - "com.unity.ide.rider": "2.0.7", + "com.unity.collab-proxy": "1.17.6", + "com.unity.ide.rider": "3.0.16", "com.unity.ide.visualstudio": "2.0.16", "com.unity.ide.vscode": "1.2.5", - "com.unity.test-framework": "1.1.31", + "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", "com.unity.timeline": "1.4.8", "com.unity.ugui": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 78c7a00..fbe9818 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,7 +1,7 @@ { "dependencies": { "com.unity.collab-proxy": { - "version": "1.17.0", + "version": "1.17.6", "depth": 0, "source": "registry", "dependencies": { @@ -17,11 +17,11 @@ "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "2.0.7", + "version": "3.0.16", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.1" + "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com" }, @@ -51,7 +51,7 @@ "url": "https://packages.unity.com" }, "com.unity.test-framework": { - "version": "1.1.31", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 97cf67b..d727899 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 22 + serializedVersion: 23 productGUID: 6b0381207982d8f4d9fbf1024de2a6af AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -134,7 +134,7 @@ PlayerSettings: 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 2.4.2 + bundleVersion: 2.4.3 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 @@ -532,6 +532,7 @@ PlayerSettings: switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 + switchUseLegacyFmodPriorities: 1 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 @@ -724,6 +725,7 @@ PlayerSettings: m_VersionName: apiCompatibilityLevel: 6 activeInputHandler: 0 + windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 02c6295..05fd649 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.3.37f1 -m_EditorVersionWithRevision: 2020.3.37f1 (8c66806a0c04) +m_EditorVersion: 2020.3.42f1 +m_EditorVersionWithRevision: 2020.3.42f1 (7ade1201f527)