From adf2c8d95a927b9deec820393e4ecd3f48d27be1 Mon Sep 17 00:00:00 2001 From: siyao Date: Tue, 13 Jul 2021 15:57:10 +0800 Subject: [PATCH 01/20] add touch --- .../Assets/Materials.meta | 8 ++++ .../Assets/Scene/ImageTest.unity | 47 +++++++++++++++++-- .../WidgetsSample/MobileTouchSample.cs.meta | 11 +++++ .../Editor/UIWidgetsEditorPanel.cs | 1 + .../Runtime/engine/UIWidgetsPanel.cs | 11 +++++ com.unity.uiwidgets/Scripts/node_modules.meta | 8 ++++ 6 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta create mode 100644 Samples/UIWidgetsSamples_2019_4/Assets/WidgetsSample/MobileTouchSample.cs.meta create mode 100644 com.unity.uiwidgets/Scripts/node_modules.meta diff --git a/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta b/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta new file mode 100644 index 000000000..fb3533cae --- /dev/null +++ b/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78131615b01837e4ca2d2b318e272475 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/UIWidgetsSamples_2019_4/Assets/Scene/ImageTest.unity b/Samples/UIWidgetsSamples_2019_4/Assets/Scene/ImageTest.unity index 52a7c3c07..497cd9947 100644 --- a/Samples/UIWidgetsSamples_2019_4/Assets/Scene/ImageTest.unity +++ b/Samples/UIWidgetsSamples_2019_4/Assets/Scene/ImageTest.unity @@ -269,16 +269,15 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Texture: {fileID: 0} + m_Texture: {fileID: 1525330782} m_UVRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 - fonts: [] - devicePixelRatioOverride: 0 hardwareAntiAliasing: 0 + fonts: [] --- !u!222 &847097471 CanvasRenderer: m_ObjectHideFlags: 0 @@ -287,6 +286,48 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 847097468} m_CullTransparentMesh: 0 +--- !u!28 &1525330782 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 0 + m_Height: 0 + m_CompleteImageSize: 0 + m_TextureFormat: 0 + m_MipCount: 1 + m_IsReadable: 1 + m_IgnoreMasterTextureLimit: 0 + m_IsPreProcessed: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 0 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 0 + _typelessdata: + m_StreamData: + offset: 0 + size: 0 + path: --- !u!1 &1548023132 GameObject: m_ObjectHideFlags: 0 diff --git a/Samples/UIWidgetsSamples_2019_4/Assets/WidgetsSample/MobileTouchSample.cs.meta b/Samples/UIWidgetsSamples_2019_4/Assets/WidgetsSample/MobileTouchSample.cs.meta new file mode 100644 index 000000000..0195576d7 --- /dev/null +++ b/Samples/UIWidgetsSamples_2019_4/Assets/WidgetsSample/MobileTouchSample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5573cb4e607a9e48983cecf7876926e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs b/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs index f50660aee..4c77a617c 100644 --- a/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs +++ b/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs @@ -28,6 +28,7 @@ float _currentDevicePixelRatio { } void Update() { + _wrapper.onEditorUpdate(); } diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index ba17216d5..dd25872eb 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -181,6 +181,8 @@ protected virtual void Update() { CollectGarbageOnDemand(); #endif + + Input_Update(); } @@ -431,13 +433,22 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po } void Input_OnEnable() { + Input.touchRawProcess += LogTouch; + _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } + public static int count = 0; + public void LogTouch(Input.ProcessRawTouchesParam param) { + _wrapper.OnDrag(new Vector2(param.x, param.y), (int) param.pointerId); + } + void Input_OnDisable() { + Input.touchRawProcess -= LogTouch; } void Input_Update() { + Debug.Log($"count {count}"); //we only process hover events for desktop applications if (_inputMode == UIWidgetsInputMode.Mouse) { if (_isEntered) { diff --git a/com.unity.uiwidgets/Scripts/node_modules.meta b/com.unity.uiwidgets/Scripts/node_modules.meta new file mode 100644 index 000000000..050c11d96 --- /dev/null +++ b/com.unity.uiwidgets/Scripts/node_modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74fb90dac38da964980b37b5d68c6a95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 17bb61644fc25f062f5eee28bea1aa8e597d6b20 Mon Sep 17 00:00:00 2001 From: siyao Date: Wed, 14 Jul 2021 10:42:38 +0800 Subject: [PATCH 02/20] format --- .../Runtime/engine/UIWidgetsPanel.cs | 68 +++++++++++++------ 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index dd25872eb..688d37b28 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -47,16 +47,18 @@ public interface IUIWidgetsWindow { UIWidgetsWindowType getWindowType(); } + public class Configurations { - private Dictionary _textFonts = new Dictionary(); public void Clear() { _textFonts.Clear(); } + public void AddFont(string family, TextFont font) { - _textFonts[key: family] = font; + _textFonts[key: family] = font; } + public object fontsToObject() { Dictionary settings = _textFonts; if (settings == null || settings.Count == 0) { @@ -72,7 +74,7 @@ public object fontsToObject() { for (var j = 0; j < setting.Value.fonts.Length; j++) { var fontDic = new Dictionary(); var fileExist = false; - + if (setting.Value.fonts[j].asset.Length > 0) { var assetPath = setting.Value.fonts[j].asset; var assetAbsolutePath = Path.Combine(Application.streamingAssetsPath, assetPath); @@ -81,11 +83,13 @@ public object fontsToObject() { #else if (!File.Exists(assetAbsolutePath)) { #endif - Debug.LogError($"The font asset (family: \"{setting.Key}\", path: \"{assetPath}\") is not found"); + Debug.LogError( + $"The font asset (family: \"{setting.Key}\", path: \"{assetPath}\") is not found"); } else { fileExist = true; } + fontDic.Add("asset", value: setting.Value.fonts[j].asset); } @@ -176,17 +180,17 @@ protected virtual void Update() { UIWidgetsMessageManager.instance?.AddChannelMessageDelegate("ViewportMetricsChanged", _handleViewMetricsChanged); } - + #if !UNITY_EDITOR CollectGarbageOnDemand(); #endif - Input_Update(); } #region OnDemandGC + #if !UNITY_EDITOR // 8 MB const long kCollectAfterAllocating = 8 * 1024 * 1024; @@ -235,6 +239,7 @@ void CollectGarbageOnDemand() lastFrameMemory = mem; } #endif + #endregion #if !UNITY_EDITOR && UNITY_ANDROID @@ -265,7 +270,7 @@ protected void OnEnable() { //the hook API cannot be automatically called on IOS, so we need try hook it here Hooks.tryHook(); #endif - + #if !UNITY_EDITOR TryEnableOnDemandGC(); Application.lowMemory += () => { @@ -276,7 +281,7 @@ protected void OnEnable() { #endif base.OnEnable(); - + D.assert(_wrapper == null); _configurations = new Configurations(); _wrapper = new UIWidgetsPanelWrapper(); @@ -286,6 +291,7 @@ protected void OnEnable() { AddFont(family: font.family, font: font); } } + _wrapper.Initiate(this, width: _currentWidth, height: _currentHeight, dpr: _currentDevicePixelRatio, _configurations: _configurations); _configurations.Clear(); @@ -357,9 +363,9 @@ public void mainEntry() { protected virtual void onEnable() { } - + protected void AddFont(string family, TextFont font) { - _configurations.AddFont(family,font); + _configurations.AddFont(family, font); } protected void AddFont(string family, List assets, List weights) { @@ -378,13 +384,12 @@ protected void AddFont(string family, List assets, List weights) { textFont.fonts = fonts; AddFont(family: family, font: textFont); } - + protected virtual void main() { } } - enum UIWidgetsInputMode - { + enum UIWidgetsInputMode { Mouse, Touch } @@ -433,22 +438,35 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po } void Input_OnEnable() { - Input.touchRawProcess += LogTouch; + Input.touchRawProcess += ProcessRawTouch; _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } - public static int count = 0; - public void LogTouch(Input.ProcessRawTouchesParam param) { - _wrapper.OnDrag(new Vector2(param.x, param.y), (int) param.pointerId); + public void ProcessRawTouch(Input.ProcessRawTouchesParam param) { + var position = _getPointerPosition(new Vector2(param.x, param.y)); + var pointerId = -1 - param.pointerId; + switch (param.phase) { + case 0: + _wrapper.OnPointerDown(position, pointerId); + break; + case 1: + _wrapper.OnDrag(position, pointerId); + break; + + case 3: + _wrapper.OnPointerUp(position, pointerId); + break; + default: + break; + } } void Input_OnDisable() { - Input.touchRawProcess -= LogTouch; + Input.touchRawProcess -= ProcessRawTouch; } void Input_Update() { - Debug.Log($"count {count}"); //we only process hover events for desktop applications if (_inputMode == UIWidgetsInputMode.Mouse) { if (_isEntered) { @@ -468,7 +486,7 @@ void Input_Update() { } } } - + #if UNITY_ANDROID && !UNITY_EDITOR if (Input.GetKeyDown(KeyCode.Escape)) { using (Isolate.getScope(anyIsolate)) { @@ -489,6 +507,7 @@ void _onMouseMove() { if (_inputMode != UIWidgetsInputMode.Mouse) { return; } + var pos = _getPointerPosition(Input.mousePosition); _wrapper.OnMouseMove(pos); } @@ -497,6 +516,7 @@ void _onScroll() { if (_inputMode != UIWidgetsInputMode.Mouse) { return; } + var pos = _getPointerPosition(Input.mousePosition); _wrapper.OnMouseScroll(Input.mouseScrollDelta, pos); } @@ -505,6 +525,7 @@ public void OnPointerEnter(PointerEventData eventData) { if (_inputMode != UIWidgetsInputMode.Mouse) { return; } + D.assert(eventData.pointerId < 0); _isEntered = true; _lastMousePosition = Input.mousePosition; @@ -514,24 +535,31 @@ public void OnPointerExit(PointerEventData eventData) { if (_inputMode != UIWidgetsInputMode.Mouse) { return; } + D.assert(eventData.pointerId < 0); _isEntered = false; _wrapper.OnPointerLeave(); } public void OnPointerDown(PointerEventData eventData) { +#if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnPointerDown(pos, pointerId); +#endif } public void OnPointerUp(PointerEventData eventData) { +#if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnPointerUp(pos, pointerId); +#endif } public void OnDrag(PointerEventData eventData) { +#if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnDrag(pos, pointerId); +#endif } } } \ No newline at end of file From b9725341bd6fdb6af4044e07fb6d9bcc17a65dee Mon Sep 17 00:00:00 2001 From: siyao Date: Wed, 14 Jul 2021 15:51:12 +0800 Subject: [PATCH 03/20] fix --- .../Editor/UIWidgetsEditorPanel.cs | 1 - .../Runtime/engine/UIWidgetsPanel.cs | 46 +++++++++++++------ 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs b/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs index 4c77a617c..f50660aee 100644 --- a/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs +++ b/com.unity.uiwidgets/Editor/UIWidgetsEditorPanel.cs @@ -28,7 +28,6 @@ float _currentDevicePixelRatio { } void Update() { - _wrapper.onEditorUpdate(); } diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index 688d37b28..ab1fdc5f4 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -438,23 +438,32 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po } void Input_OnEnable() { - Input.touchRawProcess += ProcessRawTouch; - +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) + Input.RawTouchEvent += ProcessRawTouch; +#endif _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } - public void ProcessRawTouch(Input.ProcessRawTouchesParam param) { + enum TouchPhase { + Began = 0, + Moved = 1, + Stationary = 2, + Ended = 3, + Canceled = 4 + } + + void ProcessRawTouch(Input.RawTouchEventParam param) { var position = _getPointerPosition(new Vector2(param.x, param.y)); var pointerId = -1 - param.pointerId; - switch (param.phase) { - case 0: + switch ((TouchPhase)param.phase) { + case TouchPhase.Began: _wrapper.OnPointerDown(position, pointerId); break; - case 1: + case TouchPhase.Moved: _wrapper.OnDrag(position, pointerId); break; - case 3: + case TouchPhase.Ended: _wrapper.OnPointerUp(position, pointerId); break; default: @@ -463,7 +472,9 @@ public void ProcessRawTouch(Input.ProcessRawTouchesParam param) { } void Input_OnDisable() { - Input.touchRawProcess -= ProcessRawTouch; +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) + Input.RawTouchEvent -= ProcessRawTouch; +#endif } void Input_Update() { @@ -540,26 +551,31 @@ public void OnPointerExit(PointerEventData eventData) { _isEntered = false; _wrapper.OnPointerLeave(); } - - public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) + public void OnPointerDown(PointerEventData eventData) { _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnPointerDown(pos, pointerId); -#endif } public void OnPointerUp(PointerEventData eventData) { -#if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnPointerUp(pos, pointerId); -#endif } public void OnDrag(PointerEventData eventData) { -#if UNITY_EDITOR || (!UNITY_IOS && !UNITY_ANDROID) _convertPointerData(eventData, out var pos, out var pointerId); _wrapper.OnDrag(pos, pointerId); -#endif } +#else + public void OnPointerDown(PointerEventData eventData) { + } + + public void OnPointerUp(PointerEventData eventData) { + } + + public void OnDrag(PointerEventData eventData) { + } +#endif } } \ No newline at end of file From ec1cf5ae2de3cb13b1bc363b94c179dae2f09e4d Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 11:48:26 +0800 Subject: [PATCH 04/20] remove unused file --- com.unity.uiwidgets/Scripts/node_modules.meta | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 com.unity.uiwidgets/Scripts/node_modules.meta diff --git a/com.unity.uiwidgets/Scripts/node_modules.meta b/com.unity.uiwidgets/Scripts/node_modules.meta deleted file mode 100644 index 050c11d96..000000000 --- a/com.unity.uiwidgets/Scripts/node_modules.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 74fb90dac38da964980b37b5d68c6a95 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From 76123f4d3e0ff334d6c6fff08718e2a610cc5369 Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 11:49:32 +0800 Subject: [PATCH 05/20] remove unused file --- Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta diff --git a/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta b/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta deleted file mode 100644 index fb3533cae..000000000 --- a/Samples/UIWidgetsSamples_2019_4/Assets/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 78131615b01837e4ca2d2b318e272475 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From 6e607fe5b4b900d493f60f3084e5d22cbed36ffa Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 14:39:08 +0800 Subject: [PATCH 06/20] refine rawTouch code --- com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index 790d3ccb7..8344d429c 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -495,6 +495,7 @@ void Input_OnEnable() { _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) enum TouchPhase { Began = 0, Moved = 1, @@ -521,6 +522,7 @@ void ProcessRawTouch(Input.RawTouchEventParam param) { break; } } +#endif void Input_OnDisable() { #if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) From 2a6a0b56e8a0422bc0be5587938b30bbeb830d2a Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 15:04:28 +0800 Subject: [PATCH 07/20] fix vsync issue on plugin side --- .../Runtime/Plugins/Android/libUIWidgets.so | 4 ++-- .../Runtime/Plugins/ios/libUIWidgets.a | 4 ++-- .../Runtime/Plugins/osx/libUIWidgets.dylib | 4 ++-- .../platform/unity/android/uiwidgets_panel.cc | 6 ++--- .../platform/unity/android/uiwidgets_panel.h | 2 +- .../unity/android/uiwidgets_system.cc | 21 ++++++++--------- .../platform/unity/android/uiwidgets_system.h | 4 ++-- .../unity/darwin/ios/uiwidgets_panel.h | 2 +- .../unity/darwin/ios/uiwidgets_panel.mm | 8 +++---- .../unity/darwin/ios/uiwidgets_system.h | 4 ++-- .../unity/darwin/ios/uiwidgets_system.mm | 21 ++++++++--------- .../unity/darwin/macos/uiwidgets_panel.h | 2 +- .../unity/darwin/macos/uiwidgets_panel.mm | 8 +++---- .../unity/darwin/macos/uiwidgets_system.h | 4 ++-- .../unity/darwin/macos/uiwidgets_system.mm | 21 ++++++++--------- .../platform/unity/windows/uiwidgets_panel.cc | 8 +++---- .../platform/unity/windows/uiwidgets_panel.h | 2 +- .../unity/windows/uiwidgets_system.cc | 23 ++++++++----------- .../platform/unity/windows/uiwidgets_system.h | 4 ++-- engine/third_party/Unity/IUnityUIWidgets.h | 3 ++- 20 files changed, 71 insertions(+), 84 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so index c88a98e81..c7161bdd3 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6ccafa51268ea0c08a9bd2f8e11e2ffd46c51e2a8e505dd32097bb7446cea4f -size 76134244 +oid sha256:917638efd208c99ee412d1fd9a1b82b68c505075336ca119852a2663cc2006d1 +size 76885544 diff --git a/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a b/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a index 6a6a87441..82bd42a56 100644 --- a/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a +++ b/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb733c8fc7b56b2149622789824b4eb8587a0b96c75aa3f3940164b68a986add -size 248175688 +oid sha256:f8d2e445e4568f6dfc899e2ad5afe1cf6910dfa694c4dc3702dcbfc423797c89 +size 247973136 diff --git a/com.unity.uiwidgets/Runtime/Plugins/osx/libUIWidgets.dylib b/com.unity.uiwidgets/Runtime/Plugins/osx/libUIWidgets.dylib index d246adc57..24d326370 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/osx/libUIWidgets.dylib +++ b/com.unity.uiwidgets/Runtime/Plugins/osx/libUIWidgets.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:762e99c33194bace2204531df5834490ac0dd3308970068f8a5be2952a13bf03 -size 21824248 +oid sha256:022b89ac98717f037386b126a063658db557d321d029b6d9b6a7e8e90ffb39e0 +size 21821784 diff --git a/engine/src/shell/platform/unity/android/uiwidgets_panel.cc b/engine/src/shell/platform/unity/android/uiwidgets_panel.cc index aaa158595..abc25c9ad 100644 --- a/engine/src/shell/platform/unity/android/uiwidgets_panel.cc +++ b/engine/src/shell/platform/unity/android/uiwidgets_panel.cc @@ -213,7 +213,7 @@ namespace uiwidgets ProcessMessages(); // drain pending vsync batons - ProcessVSync(); + ProcessVSync(0); process_events_ = false; @@ -292,7 +292,7 @@ namespace uiwidgets return std::chrono::nanoseconds(task_runner_->ProcessTasks().count()); } - void UIWidgetsPanel::ProcessVSync() + void UIWidgetsPanel::ProcessVSync(double frame_duration) { std::vector batons; vsync_batons_.swap(batons); @@ -302,7 +302,7 @@ namespace uiwidgets reinterpret_cast(engine_)->OnVsyncEvent( baton, fml::TimePoint::Now(), fml::TimePoint::Now() + - fml::TimeDelta::FromNanoseconds(1000000000 / 60)); + fml::TimeDelta::FromNanoseconds(1000000000 * frame_duration)); } } diff --git a/engine/src/shell/platform/unity/android/uiwidgets_panel.h b/engine/src/shell/platform/unity/android/uiwidgets_panel.h index c989648a3..12197c7d1 100644 --- a/engine/src/shell/platform/unity/android/uiwidgets_panel.h +++ b/engine/src/shell/platform/unity/android/uiwidgets_panel.h @@ -52,7 +52,7 @@ class UIWidgetsPanel : public fml::RefCountedThreadSafe { std::chrono::nanoseconds ProcessMessages(); - void ProcessVSync(); + void ProcessVSync(double frame_duration); void VSyncCallback(intptr_t baton); diff --git a/engine/src/shell/platform/unity/android/uiwidgets_system.cc b/engine/src/shell/platform/unity/android/uiwidgets_system.cc index 8c5fc64ad..c5a364f1e 100644 --- a/engine/src/shell/platform/unity/android/uiwidgets_system.cc +++ b/engine/src/shell/platform/unity/android/uiwidgets_system.cc @@ -21,16 +21,7 @@ void UIWidgetsSystem::UnregisterPanel(UIWidgetsPanel* panel) { } void UIWidgetsSystem::Wait(std::chrono::nanoseconds max_duration) { - Update(); - - std::chrono::nanoseconds wait_duration = - std::max(std::chrono::nanoseconds(0), - next_uiwidgets_event_time_ - TimePoint::clock::now()); - - wait_duration = std::min(max_duration, wait_duration); - - //TODO: find a proper api similar to MsgWaitForMultipleObjects on Windows - // which will notify os to wait for the given period of time + //do nothing } void UIWidgetsSystem::Update() { @@ -45,9 +36,15 @@ void UIWidgetsSystem::Update() { next_uiwidgets_event_time_ = next_event_time; } -void UIWidgetsSystem::VSync() { +void UIWidgetsSystem::VSync(double frame_duration) { + //use default frame_duration if undefined in Unity engine + if (frame_duration <= 0) + { + frame_duration = 1.0 / 60; + } + for (auto* uiwidgets_panel : uiwidgets_panels_) { - uiwidgets_panel->ProcessVSync(); + uiwidgets_panel->ProcessVSync(frame_duration); } } diff --git a/engine/src/shell/platform/unity/android/uiwidgets_system.h b/engine/src/shell/platform/unity/android/uiwidgets_system.h index 1ccaca95d..3df124025 100644 --- a/engine/src/shell/platform/unity/android/uiwidgets_system.h +++ b/engine/src/shell/platform/unity/android/uiwidgets_system.h @@ -54,7 +54,7 @@ class UIWidgetsSystem { GetInstancePtr()->Wait(std::chrono::nanoseconds(max_duration)); } - UIWIDGETS_CALLBACK(void) _VSync() { GetInstancePtr()->VSync(); } + UIWIDGETS_CALLBACK(void) _VSync(double frame_duration) { GetInstancePtr()->VSync(frame_duration); } UIWIDGETS_CALLBACK(void) _WakeUp() { GetInstancePtr()->WakeUp(); } @@ -69,7 +69,7 @@ class UIWidgetsSystem { void Update(); void Wait(std::chrono::nanoseconds max_duration); - void VSync(); + void VSync(double frame_duration); void WakeUp(); void GfxWorkerCallback(int eventId, void* data); diff --git a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.h b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.h index 164716e30..904de658b 100644 --- a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.h +++ b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.h @@ -55,7 +55,7 @@ class UIWidgetsPanel : public fml::RefCountedThreadSafe { std::chrono::nanoseconds ProcessMessages(); - void ProcessVSync(); + void ProcessVSync(double frame_duration); void VSyncCallback(intptr_t baton); diff --git a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.mm b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.mm index 50694724c..999ff0d0e 100644 --- a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.mm +++ b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_panel.mm @@ -190,7 +190,7 @@ ProcessMessages(); // drain pending vsync batons - ProcessVSync(); + ProcessVSync(0); process_events_ = false; @@ -240,7 +240,7 @@ return std::chrono::nanoseconds(task_runner_->ProcessTasks().count()); } -void UIWidgetsPanel::ProcessVSync() { +void UIWidgetsPanel::ProcessVSync(double frame_duration) { std::vector batons; vsync_batons_.swap(batons); @@ -248,7 +248,7 @@ reinterpret_cast(engine_)->OnVsyncEvent( baton, fml::TimePoint::Now(), fml::TimePoint::Now() + - fml::TimeDelta::FromNanoseconds(1000000000 / 60)); + fml::TimeDelta::FromNanoseconds(1000000000 * frame_duration)); } } @@ -437,7 +437,7 @@ panel->ProcessMessages(); //_ProcessVSync - panel->ProcessVSync(); + panel->ProcessVSync(0); //_Wait panel->ProcessMessages(); diff --git a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.h b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.h index 086d9eac9..032427ccb 100644 --- a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.h +++ b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.h @@ -50,7 +50,7 @@ class UIWidgetsSystem { GetInstancePtr()->Wait(std::chrono::nanoseconds(max_duration)); } - UIWIDGETS_CALLBACK(void) _VSync() { GetInstancePtr()->VSync(); } + UIWIDGETS_CALLBACK(void) _VSync(double frame_duration) { GetInstancePtr()->VSync(frame_duration); } UIWIDGETS_CALLBACK(void) _WakeUp() { GetInstancePtr()->WakeUp(); } @@ -60,7 +60,7 @@ class UIWidgetsSystem { void Update(); void Wait(std::chrono::nanoseconds max_duration); - void VSync(); + void VSync(double frame_duration); void WakeUp(); void GfxWorkerCallback(int eventId, void* data); diff --git a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.mm b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.mm index 835f25a1d..ecefb7c7a 100644 --- a/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.mm +++ b/engine/src/shell/platform/unity/darwin/ios/uiwidgets_system.mm @@ -21,16 +21,7 @@ } void UIWidgetsSystem::Wait(std::chrono::nanoseconds max_duration) { - Update(); - - std::chrono::nanoseconds wait_duration = - std::max(std::chrono::nanoseconds(0), - next_uiwidgets_event_time_ - TimePoint::clock::now()); - - wait_duration = std::min(max_duration, wait_duration); - - //TODO: find a proper api similar to MsgWaitForMultipleObjects on Windows - // which will notify os to wait for the given period of time + //do nothing } void UIWidgetsSystem::Update() { @@ -48,12 +39,18 @@ next_uiwidgets_event_time_ = next_event_time; } -void UIWidgetsSystem::VSync() { +void UIWidgetsSystem::VSync(double frame_duration) { + //use default frame_duration if undefined in Unity engine + if (frame_duration <= 0) + { + frame_duration = 1.0 / 60; + } + for (auto* uiwidgets_panel : uiwidgets_panels_) { if (!uiwidgets_panel->NeedUpdateByPlayerLoop()) { continue; } - uiwidgets_panel->ProcessVSync(); + uiwidgets_panel->ProcessVSync(frame_duration); } } diff --git a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.h b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.h index 646ac34f1..c411cfed2 100644 --- a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.h +++ b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.h @@ -52,7 +52,7 @@ class UIWidgetsPanel : public fml::RefCountedThreadSafe { std::chrono::nanoseconds ProcessMessages(); - void ProcessVSync(); + void ProcessVSync(double frame_duration); void VSyncCallback(intptr_t baton); diff --git a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.mm b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.mm index b7571857c..327edf6ae 100644 --- a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.mm +++ b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_panel.mm @@ -190,7 +190,7 @@ ProcessMessages(); // drain pending vsync batons - ProcessVSync(); + ProcessVSync(0); process_events_ = false; @@ -240,7 +240,7 @@ return std::chrono::nanoseconds(task_runner_->ProcessTasks().count()); } -void UIWidgetsPanel::ProcessVSync() { +void UIWidgetsPanel::ProcessVSync(double frame_duration) { std::vector batons; vsync_batons_.swap(batons); @@ -248,7 +248,7 @@ reinterpret_cast(engine_)->OnVsyncEvent( baton, fml::TimePoint::Now(), fml::TimePoint::Now() + - fml::TimeDelta::FromNanoseconds(1000000000 / 60)); + fml::TimeDelta::FromNanoseconds(1000000000 * frame_duration)); } } @@ -512,7 +512,7 @@ static uint64_t ConvertToUIWidgetsButton(int button) { panel->ProcessMessages(); //_ProcessVSync - panel->ProcessVSync(); + panel->ProcessVSync(0); //_Wait panel->ProcessMessages(); diff --git a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.h b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.h index 086d9eac9..032427ccb 100644 --- a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.h +++ b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.h @@ -50,7 +50,7 @@ class UIWidgetsSystem { GetInstancePtr()->Wait(std::chrono::nanoseconds(max_duration)); } - UIWIDGETS_CALLBACK(void) _VSync() { GetInstancePtr()->VSync(); } + UIWIDGETS_CALLBACK(void) _VSync(double frame_duration) { GetInstancePtr()->VSync(frame_duration); } UIWIDGETS_CALLBACK(void) _WakeUp() { GetInstancePtr()->WakeUp(); } @@ -60,7 +60,7 @@ class UIWidgetsSystem { void Update(); void Wait(std::chrono::nanoseconds max_duration); - void VSync(); + void VSync(double frame_duration); void WakeUp(); void GfxWorkerCallback(int eventId, void* data); diff --git a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.mm b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.mm index 835f25a1d..ecefb7c7a 100644 --- a/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.mm +++ b/engine/src/shell/platform/unity/darwin/macos/uiwidgets_system.mm @@ -21,16 +21,7 @@ } void UIWidgetsSystem::Wait(std::chrono::nanoseconds max_duration) { - Update(); - - std::chrono::nanoseconds wait_duration = - std::max(std::chrono::nanoseconds(0), - next_uiwidgets_event_time_ - TimePoint::clock::now()); - - wait_duration = std::min(max_duration, wait_duration); - - //TODO: find a proper api similar to MsgWaitForMultipleObjects on Windows - // which will notify os to wait for the given period of time + //do nothing } void UIWidgetsSystem::Update() { @@ -48,12 +39,18 @@ next_uiwidgets_event_time_ = next_event_time; } -void UIWidgetsSystem::VSync() { +void UIWidgetsSystem::VSync(double frame_duration) { + //use default frame_duration if undefined in Unity engine + if (frame_duration <= 0) + { + frame_duration = 1.0 / 60; + } + for (auto* uiwidgets_panel : uiwidgets_panels_) { if (!uiwidgets_panel->NeedUpdateByPlayerLoop()) { continue; } - uiwidgets_panel->ProcessVSync(); + uiwidgets_panel->ProcessVSync(frame_duration); } } diff --git a/engine/src/shell/platform/unity/windows/uiwidgets_panel.cc b/engine/src/shell/platform/unity/windows/uiwidgets_panel.cc index 9cb129676..324ba9646 100644 --- a/engine/src/shell/platform/unity/windows/uiwidgets_panel.cc +++ b/engine/src/shell/platform/unity/windows/uiwidgets_panel.cc @@ -212,7 +212,7 @@ void UIWidgetsPanel::OnDisable() { ProcessMessages(); // drain pending vsync batons - ProcessVSync(); + ProcessVSync(0); process_events_ = false; @@ -273,7 +273,7 @@ std::chrono::nanoseconds UIWidgetsPanel::ProcessMessages() { return std::chrono::nanoseconds(task_runner_->ProcessTasks().count()); } -void UIWidgetsPanel::ProcessVSync() { +void UIWidgetsPanel::ProcessVSync(double frame_duration) { std::vector batons; vsync_batons_.swap(batons); @@ -281,7 +281,7 @@ void UIWidgetsPanel::ProcessVSync() { reinterpret_cast(engine_)->OnVsyncEvent( baton, fml::TimePoint::Now(), fml::TimePoint::Now() + - fml::TimeDelta::FromNanoseconds(1000000000 / 60)); + fml::TimeDelta::FromNanoseconds(1000000000 * frame_duration)); } } @@ -558,7 +558,7 @@ UIWidgetsPanel_onEditorUpdate(UIWidgetsPanel* panel) { panel->ProcessMessages(); //_ProcessVSync - panel->ProcessVSync(); + panel->ProcessVSync(0); //_Wait panel->ProcessMessages(); diff --git a/engine/src/shell/platform/unity/windows/uiwidgets_panel.h b/engine/src/shell/platform/unity/windows/uiwidgets_panel.h index 8292048b4..d9ed73921 100644 --- a/engine/src/shell/platform/unity/windows/uiwidgets_panel.h +++ b/engine/src/shell/platform/unity/windows/uiwidgets_panel.h @@ -51,7 +51,7 @@ class UIWidgetsPanel : public fml::RefCountedThreadSafe { std::chrono::nanoseconds ProcessMessages(); - void ProcessVSync(); + void ProcessVSync(double frame_duration); void VSyncCallback(intptr_t baton); diff --git a/engine/src/shell/platform/unity/windows/uiwidgets_system.cc b/engine/src/shell/platform/unity/windows/uiwidgets_system.cc index ca588499e..bbe87d56a 100644 --- a/engine/src/shell/platform/unity/windows/uiwidgets_system.cc +++ b/engine/src/shell/platform/unity/windows/uiwidgets_system.cc @@ -21,18 +21,7 @@ void UIWidgetsSystem::UnregisterPanel(UIWidgetsPanel* panel) { } void UIWidgetsSystem::Wait(std::chrono::nanoseconds max_duration) { - Update(); - - std::chrono::nanoseconds wait_duration = - std::max(std::chrono::nanoseconds(0), - next_uiwidgets_event_time_ - TimePoint::clock::now()); - - wait_duration = std::min(max_duration, wait_duration); - wait_duration = std::max(std::chrono::nanoseconds(0), wait_duration); - - ::MsgWaitForMultipleObjects(0, nullptr, FALSE, - static_cast(wait_duration.count() / 1000000), - QS_ALLINPUT); + //do nothing } void UIWidgetsSystem::Update() { @@ -50,12 +39,18 @@ void UIWidgetsSystem::Update() { next_uiwidgets_event_time_ = next_event_time; } -void UIWidgetsSystem::VSync() { +void UIWidgetsSystem::VSync(double frame_duration) { + //use default frame_duration if undefined in Unity engine + if (frame_duration <= 0) + { + frame_duration = 1.0 / 60; + } + for (auto* uiwidgets_panel : uiwidgets_panels_) { if (!uiwidgets_panel->NeedUpdateByPlayerLoop()) { continue; } - uiwidgets_panel->ProcessVSync(); + uiwidgets_panel->ProcessVSync(frame_duration); } } diff --git a/engine/src/shell/platform/unity/windows/uiwidgets_system.h b/engine/src/shell/platform/unity/windows/uiwidgets_system.h index 086d9eac9..032427ccb 100644 --- a/engine/src/shell/platform/unity/windows/uiwidgets_system.h +++ b/engine/src/shell/platform/unity/windows/uiwidgets_system.h @@ -50,7 +50,7 @@ class UIWidgetsSystem { GetInstancePtr()->Wait(std::chrono::nanoseconds(max_duration)); } - UIWIDGETS_CALLBACK(void) _VSync() { GetInstancePtr()->VSync(); } + UIWIDGETS_CALLBACK(void) _VSync(double frame_duration) { GetInstancePtr()->VSync(frame_duration); } UIWIDGETS_CALLBACK(void) _WakeUp() { GetInstancePtr()->WakeUp(); } @@ -60,7 +60,7 @@ class UIWidgetsSystem { void Update(); void Wait(std::chrono::nanoseconds max_duration); - void VSync(); + void VSync(double frame_duration); void WakeUp(); void GfxWorkerCallback(int eventId, void* data); diff --git a/engine/third_party/Unity/IUnityUIWidgets.h b/engine/third_party/Unity/IUnityUIWidgets.h index a6fe80822..576e7694b 100644 --- a/engine/third_party/Unity/IUnityUIWidgets.h +++ b/engine/third_party/Unity/IUnityUIWidgets.h @@ -10,12 +10,13 @@ namespace UnityUIWidgets { typedef void (*VoidCallback)(); typedef void (*VoidCallbackLong)(long); +typedef void (*VoidCallbackDouble)(double); UNITY_DECLARE_INTERFACE(IUnityUIWidgets) { virtual ~IUnityUIWidgets() {} virtual void SetUpdateCallback(VoidCallback callback) = 0; - virtual void SetVSyncCallback(VoidCallback callback) = 0; + virtual void SetVSyncCallback(VoidCallbackDouble callback) = 0; virtual void SetWaitCallback(VoidCallbackLong callback) = 0; virtual void SetWakeUpCallback(VoidCallback callback) = 0; virtual void IssuePluginEventAndData(UnityRenderingEventAndData callback, From 7cfffcafa2cf36d994c71e3f82682744c8b35b66 Mon Sep 17 00:00:00 2001 From: xingweizhu Date: Tue, 10 Aug 2021 16:01:58 +0800 Subject: [PATCH 08/20] update windows plugin --- com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll index a95ba16af..ddfb9b53d 100644 --- a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll +++ b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb3695a41f0c758d7655abdf5ba3134e9d18a7efbf61478a9bd7573a05aec32f -size 11259392 +oid sha256:7af95a16b49a0f22c409b1220c329f887f4bedd20dcee5178a4f18b0672b47d5 +size 11258880 From dc1dbd7fb78b1c512ebd5c4a39a95122a9ad3650 Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 16:25:50 +0800 Subject: [PATCH 09/20] update arm64 plugin --- .../Runtime/Plugins/Android/arm64/libUIWidgets.so | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so index 90191da66..022b7c9e8 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:298743ab66e408b7fb63f390aa65246c99a313d18f66d814a139a91073e33d25 -size 83589944 +oid sha256:1cba13af2c2bc178aa42ad3a57a011f2d144d628df69928ac72f04caacf42d1c +size 84337232 From 288c2c97f7dd02768e30c3c93043d9fee503f547 Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 16:56:38 +0800 Subject: [PATCH 10/20] build a test plugin for android --- com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so index c7161bdd3..f2e9ebdd1 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:917638efd208c99ee412d1fd9a1b82b68c505075336ca119852a2663cc2006d1 -size 76885544 +oid sha256:eeaa4f2c6007f81e8eebad67a59725ba0b7c60c5d924fd0bb5b2645fdca99958 +size 76885796 From 3850dac1026d53ad0de690d74cd033ae69ce8b81 Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 17:47:02 +0800 Subject: [PATCH 11/20] revert test plugin --- com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so index f2e9ebdd1..830509858 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeaa4f2c6007f81e8eebad67a59725ba0b7c60c5d924fd0bb5b2645fdca99958 -size 76885796 +oid sha256:911b2612fe330c338e408eed264be279b43c659b58852468106a4b9c73206b50 +size 76885544 From f6f88580ea2fe9996ef51eb9d9eeb81eb7910130 Mon Sep 17 00:00:00 2001 From: Xingwei Zhu Date: Tue, 10 Aug 2021 19:00:44 +0800 Subject: [PATCH 12/20] revert to release build after validation on windows --- com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so | 2 +- engine/src/shell/platform/unity/android/uiwidgets_system.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so index 830509858..c7161bdd3 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:911b2612fe330c338e408eed264be279b43c659b58852468106a4b9c73206b50 +oid sha256:917638efd208c99ee412d1fd9a1b82b68c505075336ca119852a2663cc2006d1 size 76885544 diff --git a/engine/src/shell/platform/unity/android/uiwidgets_system.cc b/engine/src/shell/platform/unity/android/uiwidgets_system.cc index c5a364f1e..63f4723c9 100644 --- a/engine/src/shell/platform/unity/android/uiwidgets_system.cc +++ b/engine/src/shell/platform/unity/android/uiwidgets_system.cc @@ -42,7 +42,7 @@ void UIWidgetsSystem::VSync(double frame_duration) { { frame_duration = 1.0 / 60; } - + for (auto* uiwidgets_panel : uiwidgets_panels_) { uiwidgets_panel->ProcessVSync(frame_duration); } From 41236bdf2239c8bdd9138b6e7ac7117b03728083 Mon Sep 17 00:00:00 2001 From: xingweizhu Date: Tue, 10 Aug 2021 19:04:46 +0800 Subject: [PATCH 13/20] upload latest windows plugin --- com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll index ddfb9b53d..b941d6c9c 100644 --- a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll +++ b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7af95a16b49a0f22c409b1220c329f887f4bedd20dcee5178a4f18b0672b47d5 +oid sha256:dc95d3416ba92c432151ce15d0739cdadea5396d492a4e36685116bae3b372a8 size 11258880 From 40d6676460348140678d3658551009656d629967 Mon Sep 17 00:00:00 2001 From: siyao Date: Mon, 22 Nov 2021 10:42:36 +0800 Subject: [PATCH 14/20] update engine --- com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs | 11 ++++------- com.unity.uiwidgets/package.json | 1 + 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index ab1fdc5f4..af932918e 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -438,9 +438,8 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po } void Input_OnEnable() { -#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) - Input.RawTouchEvent += ProcessRawTouch; -#endif + UnityEngine.UIWidgets.InitUIWidgets.init(); + UnityEngine.UIWidgets.RawTouchEvent += ProcessRawTouch; _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } @@ -452,7 +451,7 @@ enum TouchPhase { Canceled = 4 } - void ProcessRawTouch(Input.RawTouchEventParam param) { + void ProcessRawTouch(UnityEngine.UIWidgets.RawTouchEventParam param) { var position = _getPointerPosition(new Vector2(param.x, param.y)); var pointerId = -1 - param.pointerId; switch ((TouchPhase)param.phase) { @@ -472,9 +471,7 @@ void ProcessRawTouch(Input.RawTouchEventParam param) { } void Input_OnDisable() { -#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) - Input.RawTouchEvent -= ProcessRawTouch; -#endif + UnityEngine.UIWidgets.RawTouchEvent -= ProcessRawTouch; } void Input_Update() { diff --git a/com.unity.uiwidgets/package.json b/com.unity.uiwidgets/package.json index a6fa5ed7a..79ebb07c7 100644 --- a/com.unity.uiwidgets/package.json +++ b/com.unity.uiwidgets/package.json @@ -5,5 +5,6 @@ "unity": "2019.4", "description": "UIWidgets allows you to build beautiful cross-platform apps through Unity", "dependencies": { + "com.unity.modules.uiwidgets": "1.0.0" } } From 4e7389b676e80a981048cdd6117491de41d8ebfc Mon Sep 17 00:00:00 2001 From: siyao Date: Wed, 24 Nov 2021 17:36:16 +0800 Subject: [PATCH 15/20] fix --- com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index 978610fa2..b1b712f65 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -491,8 +491,10 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po } void Input_OnEnable() { +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) UnityEngine.UIWidgets.InitUIWidgets.init(); UnityEngine.UIWidgets.RawTouchEvent += ProcessRawTouch; +#endif _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } @@ -526,7 +528,9 @@ void ProcessRawTouch(UnityEngine.UIWidgets.RawTouchEventParam param) { #endif void Input_OnDisable() { +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) UnityEngine.UIWidgets.RawTouchEvent -= ProcessRawTouch; +#endif } void Input_Update() { From 67ee89bdeef0b6866e5f066c43c79f852e2cda18 Mon Sep 17 00:00:00 2001 From: siyao Date: Thu, 25 Nov 2021 13:42:45 +0800 Subject: [PATCH 16/20] ios plugin --- com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a b/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a index 82bd42a56..d4cb8c86a 100644 --- a/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a +++ b/com.unity.uiwidgets/Runtime/Plugins/ios/libUIWidgets.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8d2e445e4568f6dfc899e2ad5afe1cf6910dfa694c4dc3702dcbfc423797c89 -size 247973136 +oid sha256:87e0abacac35679936b702eecee8a92e1ba08d37a5b29e8d14ca60e0b6e23c21 +size 244006568 From 778bfa8973f3381351ddea7c486877731ec44bad Mon Sep 17 00:00:00 2001 From: siyao Date: Fri, 26 Nov 2021 15:29:38 +0800 Subject: [PATCH 17/20] android plugin --- .../Runtime/Plugins/Android/arm64/libUIWidgets.so | 4 ++-- com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so index 022b7c9e8..84545d216 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/arm64/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cba13af2c2bc178aa42ad3a57a011f2d144d628df69928ac72f04caacf42d1c -size 84337232 +oid sha256:17c8a9b1eb40bfb70c7192a13aef015cc080f6fb977be8cea08c2c754e0d97bb +size 83590064 diff --git a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so index c7161bdd3..29d2a539b 100755 --- a/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so +++ b/com.unity.uiwidgets/Runtime/Plugins/Android/libUIWidgets.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:917638efd208c99ee412d1fd9a1b82b68c505075336ca119852a2663cc2006d1 -size 76885544 +oid sha256:65113cd66375bbf443cd1f55e892efc470ec2cab8b4f6974269907af3fb7045b +size 76134272 From 522e6bd65c8fea1494d4d2670106aebd83b91506 Mon Sep 17 00:00:00 2001 From: siyao Date: Fri, 26 Nov 2021 16:34:12 +0800 Subject: [PATCH 18/20] win plugin --- com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll index b941d6c9c..1cf9cc64c 100644 --- a/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll +++ b/com.unity.uiwidgets/Runtime/Plugins/x86_64/libUIWidgets.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc95d3416ba92c432151ce15d0739cdadea5396d492a4e36685116bae3b372a8 -size 11258880 +oid sha256:ed6946393b28423ab1552bddf7b25b9fa7100b9ee95638185c6c4627f00f5623 +size 11260928 From 12d2e94216e7fbaafad5f035da36f15fe8bf9597 Mon Sep 17 00:00:00 2001 From: siyao Date: Mon, 29 Nov 2021 17:41:06 +0800 Subject: [PATCH 19/20] udpate --- com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index b1b712f65..f582161a9 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -492,7 +492,7 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po void Input_OnEnable() { #if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) - UnityEngine.UIWidgets.InitUIWidgets.init(); + UnityEngine.UIWidgets.InitUIWidgets.Init(); UnityEngine.UIWidgets.RawTouchEvent += ProcessRawTouch; #endif _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; From d87c64f39d5db2cb271421025dc862133b0a1b21 Mon Sep 17 00:00:00 2001 From: siyao Date: Fri, 3 Dec 2021 10:40:54 +0800 Subject: [PATCH 20/20] cache RawTouch and dispatch during Input_Update --- .../Runtime/engine/UIWidgetsPanel.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs index f582161a9..607e1fec7 100644 --- a/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs +++ b/com.unity.uiwidgets/Runtime/engine/UIWidgetsPanel.cs @@ -493,7 +493,7 @@ void _convertPointerData(PointerEventData evt, out Vector2? position, out int po void Input_OnEnable() { #if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) UnityEngine.UIWidgets.InitUIWidgets.Init(); - UnityEngine.UIWidgets.RawTouchEvent += ProcessRawTouch; + UnityEngine.UIWidgets.RawTouchEvent += CacheRawTouch; #endif _inputMode = Input.mousePresent ? UIWidgetsInputMode.Mouse : UIWidgetsInputMode.Touch; } @@ -507,6 +507,10 @@ enum TouchPhase { Canceled = 4 } + void CacheRawTouch(UnityEngine.UIWidgets.RawTouchEventParam param) { + rawTouchEventParams.Enqueue(param); + } + void ProcessRawTouch(UnityEngine.UIWidgets.RawTouchEventParam param) { var position = _getPointerPosition(new Vector2(param.x, param.y)); var pointerId = -1 - param.pointerId; @@ -525,15 +529,23 @@ void ProcessRawTouch(UnityEngine.UIWidgets.RawTouchEventParam param) { break; } } + + Queue rawTouchEventParams = + new Queue(); #endif void Input_OnDisable() { -#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) - UnityEngine.UIWidgets.RawTouchEvent -= ProcessRawTouch; +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) + UnityEngine.UIWidgets.RawTouchEvent -= CacheRawTouch; #endif } void Input_Update() { +#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID) + while (rawTouchEventParams.isNotEmpty()) { + ProcessRawTouch(rawTouchEventParams.Dequeue()); + } +#endif //we only process hover events for desktop applications if (_inputMode == UIWidgetsInputMode.Mouse) { if (_isEntered) {